ZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9SRUFETUUgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvUkVBRE1FCmluZGV4IGRhYmVkMmYuLjdjZGUwYTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9SRUFETUUKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL1JFQURNRQpAQCAtMSwxNSArMSwxNCBAQAogVGhpcyBsYXllciBkZXBlbmRzIG9uOgogCiBVUkk6IGdpdDovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL29lLWNvcmUuZ2l0Ci1icmFuY2g6IHJvY2tvCiticmFuY2g6IG1hc3RlcgogcmV2aXNpb246IEhFQUQKIAotU2VuZCBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIHdpdGggJ1ttZXRhLW9lXVtyb2Nrb10nIGluIHRoZSBzdWJqZWN0JworU2VuZCBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIHdpdGggJ1ttZXRhLW9lXScgaW4gdGhlIHN1YmplY3QnCiAKIFdoZW4gc2VuZGluZyBzaW5nbGUgcGF0Y2hlcywgcGxlYXNlIHVzZSBzb21ldGhpbmcgbGlrZToKLSdnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1vZV1bcm9ja29dW1BBVENIJworJ2dpdCBzZW5kLWVtYWlsIC1NIC0xIC0tdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgLS1zdWJqZWN0LXByZWZpeD1tZXRhLW9lXVtQQVRDSCcKIAogWW91IGFyZSBlbmNvdXJhZ2VkIHRvIGZvcmsgdGhlIG1pcnJvciBvbiBnaXRodWIgaHR0cHM6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9tZXRhLW9lLyB0byBzaGFyZSB5b3VyIHBhdGNoZXMsIHRoaXMgaXMgcHJlZmVycmVkIGZvciBwYXRjaCBzZXRzIGNvbnNpc3Rpbmcgb2YgbW9yZSB0aGFuIG9uZSBwYXRjaC4gT3RoZXIgc2VydmljZXMgbGlrZSBnaXRvcmlvdXMsIHJlcG8ub3IuY3ogb3Igc2VsZiBob3N0ZWQgc2V0dXBzIGFyZSBvZiBjb3Vyc2UgYWNjZXB0ZWQgYXMgd2VsbCwgJ2dpdCBmZXRjaCA8cmVtb3RlPicgd29ya3MgdGhlIHNhbWUgb24gYWxsIG9mIHRoZW0uIFdlIHJlY29tbWVuZCBnaXRodWIgYmVjYXVzZSBpdCBpcyBmcmVlLCBlYXN5IHRvIHVzZSwgaGFzIGJlZW4gcHJvdmVuIHRvIGJlIHJlbGlhYmxlIGFuZCBoYXMgYSByZWFsbHkgZ29vZCB3ZWIgR1VJLgogCi1yb2NrbyBCcmFuY2ggTWFpbnRhaW5lcjoKLUFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CitNYWluIGxheWVyIG1haW50YWluZXI6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY2xhc3Nlcy9naXR2ZXIuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jbGFzc2VzL2dpdHZlci5iYmNsYXNzCmluZGV4IDM4MDM3NGEuLjA3ZjQ0YzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jbGFzc2VzL2dpdHZlci5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jbGFzc2VzL2dpdHZlci5iYmNsYXNzCkBAIC0zNiw3ICszNiw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuICIwLjAiCiAKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6Ci0gICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZShzdHIoZXhjKSkKKyAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoc3RyKGV4YykpCiAKICAgICBpZiB2ZXIgYW5kIHRhZ2FkanVzdDoKICAgICAgICAgdmVyID0gdGFnYWRqdXN0KHZlcikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jbGFzc2VzL21lc29uLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY2xhc3Nlcy9tZXNvbi5iYmNsYXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDliYzI0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jbGFzc2VzL21lc29uLmJiY2xhc3MKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotaW5oZXJpdCBweXRob24zbmF0aXZlCi0KLURFUEVORFNfYXBwZW5kID0gIiBtZXNvbi1uYXRpdmUgbmluamEtbmF0aXZlIgotCi0jIEFzIE1lc29uIGVuZm9yY2VzIG91dC1vZi10cmVlIGJ1aWxkcyB3ZSBjYW4ganVzdCB1c2UgY2xlYW5kaXJzCi1CID0gIiR7V09SS0RJUn0vYnVpbGQiCi1kb19jb25maWd1cmVbY2xlYW5kaXJzXSA9ICIke0J9IgotCi0jIFdoZXJlIHRoZSBtZXNvbi5idWlsZCBidWlsZCBjb25maWd1cmF0aW9uIGlzCi1NRVNPTl9TT1VSQ0VQQVRIID0gIiR7U30iCi0KLSMgVGhlc2UgdmFyaWFibGVzIGluIHRoZSBlbnZpcm9ubWVudCBvdmVycmlkZSB0aGUgKm5hdGl2ZSogdG9vbHMsIG5vdCB0aGUgY3Jvc3MuCi1leHBvcnQgQ1BQRkxBR1MgPSAiJHtCVUlMRF9DUFBGTEFHU30iCi1leHBvcnQgQ0MgPSAiJHtCVUlMRF9DQ30iCi1leHBvcnQgQ0ZMQUdTID0gIiR7QlVJTERfQ0ZMQUdTfSIKLWV4cG9ydCBDWFggPSAiJHtCVUlMRF9DWFh9IgotZXhwb3J0IENYWEZMQUdTID0gIiR7QlVJTERfQ1hYRkxBR1N9IgotZXhwb3J0IExEID0gIiR7QlVJTERfTER9IgotZXhwb3J0IExERkxBR1MgPSAiJHtCVUlMRF9MREZMQUdTfSIKLWV4cG9ydCBBUiA9ICIke0JVSUxEX0FSfSIKLWV4cG9ydCBQS0dfQ09ORklHID0gInBrZy1jb25maWctbmF0aXZlIgotCi1kZWYgbm9wcmVmaXgodmFyLCBkKToKLSAgICByZXR1cm4gZC5nZXRWYXIodmFyLCBUcnVlKS5yZXBsYWNlKGQuZ2V0VmFyKCdwcmVmaXgnLCBUcnVlKSArICcvJywgJycsIDEpCi0KLU1FU09OT1BUUyA9ICIgLS1wcmVmaXggJHtwcmVmaXh9IFwKLSAgICAgICAgICAgICAgLS1iaW5kaXIgJHtAbm9wcmVmaXgoJ2JpbmRpcicsIGQpfSBcCi0gICAgICAgICAgICAgIC0tc2JpbmRpciAke0Bub3ByZWZpeCgnc2JpbmRpcicsIGQpfSBcCi0gICAgICAgICAgICAgIC0tZGF0YWRpciAke0Bub3ByZWZpeCgnZGF0YWRpcicsIGQpfSBcCi0gICAgICAgICAgICAgIC0tbGliZGlyICR7QG5vcHJlZml4KCdsaWJkaXInLCBkKX0gXAotICAgICAgICAgICAgICAtLWxpYmV4ZWNkaXIgJHtAbm9wcmVmaXgoJ2xpYmV4ZWNkaXInLCBkKX0gXAotICAgICAgICAgICAgICAtLWluY2x1ZGVkaXIgJHtAbm9wcmVmaXgoJ2luY2x1ZGVkaXInLCBkKX0gXAotICAgICAgICAgICAgICAtLW1hbmRpciAke0Bub3ByZWZpeCgnbWFuZGlyJywgZCl9IFwKLSAgICAgICAgICAgICAgLS1pbmZvZGlyICR7QG5vcHJlZml4KCdpbmZvZGlyJywgZCl9IFwKLSAgICAgICAgICAgICAgLS1zeXNjb25mZGlyICR7c3lzY29uZmRpcn0gXAotICAgICAgICAgICAgICAtLWxvY2Fsc3RhdGVkaXIgJHtsb2NhbHN0YXRlZGlyfSBcCi0gICAgICAgICAgICAgIC0tc2hhcmVkc3RhdGVkaXIgJHtzaGFyZWRzdGF0ZWRpcn0iCi0KLU1FU09OX0NfQVJHUyA9ICIke1RBUkdFVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9IgotTUVTT05fTElOS19BUkdTID0gIiR7TUVTT05fQ19BUkdTfSAke0xERkxBR1N9IgotCi1NRVNPTl9IT1NUX0VORElBTiA9ICIke0BiYi51dGlscy5jb250YWlucygnU0lURUlORk9fRU5ESUFOTkVTUycsICdiZScsICdiaWcnLCAnbGl0dGxlJywgZCl9IgotTUVTT05fVEFSR0VUX0VORElBTiA9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdiaWdlbmRpYW4nLCAnYmlnJywgJ2xpdHRsZScsIGQpfSIKLQotRVhUUkFfT0VNRVNPTiArPSAiJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSIKLQotTUVTT05fQ1JPU1NfRklMRSA9ICIiCi1NRVNPTl9DUk9TU19GSUxFX2NsYXNzLXRhcmdldCA9ICItLWNyb3NzLWZpbGUgJHtXT1JLRElSfS9tZXNvbi5jcm9zcyIKLQotZGVmIG1lc29uX2FycmF5KHZhciwgZCk6Ci0gICAgcmV0dXJuICInLCAnIi5qb2luKGQuZ2V0VmFyKHZhciwgVHJ1ZSkuc3BsaXQoKSkuam9pbigoIiciLCAiJyIpKQotCi1hZGR0YXNrIHdyaXRlX2NvbmZpZyBiZWZvcmUgZG9fY29uZmlndXJlCi1kb193cml0ZV9jb25maWdbdmFyZGVwc10gKz0gIk1FU09OX0NfQVJHUyBUT09MQ0hBSU5fT1BUSU9OUyIKLWRvX3dyaXRlX2NvbmZpZygpIHsKLSAgICAjIFRoaXMgbmVlZHMgdG8gYmUgUHkgdG8gc3BsaXQgdGhlIGFyZ3MgaW50byBzaW5nbGUtZWxlbWVudCBsaXN0cwotICAgIGNhdCA+JHtXT1JLRElSfS9tZXNvbi5jcm9zcyA8PEVPRgotW2JpbmFyaWVzXQotYyA9ICcke0hPU1RfUFJFRklYfWdjYycKLWNwcCA9ICcke0hPU1RfUFJFRklYfWcrKycKLWFyID0gJyR7SE9TVF9QUkVGSVh9YXInCi1sZCA9ICcke0hPU1RfUFJFRklYfWxkJwotc3RyaXAgPSAnJHtIT1NUX1BSRUZJWH1zdHJpcCcKLXJlYWRlbGYgPSAnJHtIT1NUX1BSRUZJWH1yZWFkZWxmJwotcGtnY29uZmlnID0gJ3BrZy1jb25maWcnCi0KLVtwcm9wZXJ0aWVzXQotbmVlZHNfZXhlX3dyYXBwZXIgPSB0cnVlCi1jX2FyZ3MgPSBbJHtAbWVzb25fYXJyYXkoJ01FU09OX0NfQVJHUycsIGQpfV0KLWNfbGlua19hcmdzID0gWyR7QG1lc29uX2FycmF5KCdNRVNPTl9MSU5LX0FSR1MnLCBkKX1dCi1jcHBfYXJncyA9IFske0BtZXNvbl9hcnJheSgnTUVTT05fQ19BUkdTJywgZCl9XQotY3BwX2xpbmtfYXJncyA9IFske0BtZXNvbl9hcnJheSgnTUVTT05fTElOS19BUkdTJywgZCl9XQotCi1baG9zdF9tYWNoaW5lXQotc3lzdGVtID0gJyR7SE9TVF9PU30nCi1jcHVfZmFtaWx5ID0gJyR7SE9TVF9BUkNIfScKLWNwdSA9ICcke0hPU1RfQVJDSH0nCi1lbmRpYW4gPSAnJHtNRVNPTl9IT1NUX0VORElBTn0nCi0KLVt0YXJnZXRfbWFjaGluZV0KLXN5c3RlbSA9ICcke1RBUkdFVF9PU30nCi1jcHVfZmFtaWx5ID0gJyR7VEFSR0VUX0FSQ0h9JwotY3B1ID0gJyR7VEFSR0VUX0FSQ0h9JwotZW5kaWFuID0gJyR7TUVTT05fVEFSR0VUX0VORElBTn0nCi1FT0YKLX0KLQotQ09ORklHVVJFX0ZJTEVTID0gIm1lc29uLmJ1aWxkIgotCi1tZXNvbl9kb19jb25maWd1cmUoKSB7Ci0gICAgaWYgISBtZXNvbiAke01FU09OT1BUU30gIiR7TUVTT05fU09VUkNFUEFUSH0iICIke0J9IiAke01FU09OX0NST1NTX0ZJTEV9ICR7RVhUUkFfT0VNRVNPTn07IHRoZW4KLSAgICAgICAgY2F0ICR7Qn0vbWVzb24tbG9ncy9tZXNvbi1sb2cudHh0Ci0gICAgICAgIGJiZmF0YWxfbG9nIG1lc29uIGZhaWxlZAotICAgIGZpCi19Ci0KLWRvX2NvbXBpbGVbcHJvZ3Jlc3NdID0gIm91dG9mOl5cWyhcZCspLyhcZCspXF1ccysiCi1tZXNvbl9kb19jb21waWxlKCkgewotICAgIG5pbmphICR7UEFSQUxMRUxfTUFLRX0KLX0KLQotbWVzb25fZG9faW5zdGFsbCgpIHsKLSAgICBERVNURElSPScke0R9JyBuaW5qYSAke1BBUkFMTEVMX01BS0VJTlNUfSBpbnN0YWxsCi19Ci0KLUVYUE9SVF9GVU5DVElPTlMgZG9fY29uZmlndXJlIGRvX2NvbXBpbGUgZG9faW5zdGFsbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jb25mL2xheWVyLmNvbmYKaW5kZXggZDg0YmQwOS4uMWE0MzU3NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NvbmYvbGF5ZXIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY29uZi9sYXllci5jb25mCkBAIC0yOSw2ICsyOSw4IEBACiAKIExBWUVSREVQRU5EU19vcGVuZW1iZWRkZWQtbGF5ZXIgPSAiY29yZSIKIAorTEFZRVJTRVJJRVNfQ09NUEFUX29wZW5lbWJlZGRlZC1sYXllciA9ICJzdW1vIgorCiBMSUNFTlNFX1BBVEggKz0gIiR7TEFZRVJESVJ9L2xpY2Vuc2VzIgogCiBTSUdHRU5fRVhDTFVERVJFQ0lQRVNfQUJJU0FGRSArPSAiIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9nbG1hcmsyL2ZpbGVzL0ZpeC1jb25maWd1cmUtZm9yLXNxcnQtY2hlY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvZ2xtYXJrMi9maWxlcy9GaXgtY29uZmlndXJlLWZvci1zcXJ0LWNoZWNrLnBhdGNoCmluZGV4IGZkZTgyMzguLjdkZTA1ZWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9nbG1hcmsyL2ZpbGVzL0ZpeC1jb25maWd1cmUtZm9yLXNxcnQtY2hlY2sucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2dsbWFyazIvZmlsZXMvRml4LWNvbmZpZ3VyZS1mb3Itc3FydC1jaGVjay5wYXRjaApAQCAtMSwxMyArMSwyMSBAQAotSW5kZXg6IGdpdC93c2NyaXB0Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvd3NjcmlwdAkyMDE2LTA3LTI5IDEzOjE1OjQ0Ljk1NDI0OTc5NiAtMDUwMAotKysrIGdpdC93c2NyaXB0CTIwMTYtMDctMjkgMTU6NTI6MDYuMTk2NzY4ODY1IC0wNTAwCi1AQCAtOTAsNyArOTAsNyBAQAotICAgICAgICAgY3R4LmNoZWNrX2N4eChsaWIgPSBsaWIsIHVzZWxpYl9zdG9yZSA9IHVzZWxpYikKK0Zyb20gOWZiMjk4YzM5OGY4OGE2M2Q3MTQzMmJlMTQxMGQ1MmZhZTA4OTA2MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRvbSBIb2Noc3RlaW4gPHRvbS5ob2Noc3RlaW5AbnhwLmNvbT4KK0RhdGU6IE1vbiwgOCBBdWcgMjAxNiAxMTozOTo1NCAtMDUwMAorCistLS0KKyB3c2NyaXB0IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvd3NjcmlwdCBiL3dzY3JpcHQKK2luZGV4IGNhODQzZjQuLmViNGEyNmEgMTAwNjQ0CistLS0gYS93c2NyaXB0CisrKysgYi93c2NyaXB0CitAQCAtODQsNyArODQsNyBAQCBkZWYgY29uZmlndXJlKGN0eCk6CisgICAgICAgICBjdHguY2hlY2tfY2MobGliID0gbGliLCB1c2VsaWJfc3RvcmUgPSB1c2VsaWIpCiAgCiAgICAgICMgQ2hlY2sgcmVxdWlyZWQgZnVuY3Rpb25zCiAtICAgIHJlcV9mdW5jcyA9IFsoJ21lbXNldCcsICdzdHJpbmcuaCcsIFtdKSAsKCdzcXJ0JywgJ21hdGguaCcsIFsnbSddKV0KICsgICAgcmVxX2Z1bmNzID0gWygnbWVtc2V0JywgJ3N0cmluZy5oJywgW10pXQogICAgICBmb3IgZnVuYywgaGVhZGVyLCB1c2VsaWIgaW4gcmVxX2Z1bmNzOgotICAgICAgICAgY3R4LmNoZWNrX2N4eChmdW5jdGlvbl9uYW1lID0gZnVuYywgaGVhZGVyX25hbWUgPSBoZWFkZXIsCisgICAgICAgICBjdHguY2hlY2tfY2MoZnVuY3Rpb25fbmFtZSA9IGZ1bmMsIGhlYWRlcl9uYW1lID0gaGVhZGVyLAogICAgICAgICAgICAgICAgICAgICAgICB1c2VsaWIgPSB1c2VsaWIsIG1hbmRhdG9yeSA9IFRydWUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvaXBlcmYyL2lwZXJmMl8yLjAuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvaXBlcmYyL2lwZXJmMl8yLjAuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMyMmQwNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pcGVyZjIvaXBlcmYyXzIuMC4xMC5iYgpAQCAtMCwwICsxLDE5IEBACitERVNDUklQVElPTiA9ICJJcGVyZiBpcyBhIHRvb2wgdG8gbWVhc3VyZSBtYXhpbXVtIFRDUCBiYW5kd2lkdGgsIGFsbG93aW5nIHRoZSB0dW5pbmcgb2YgdmFyaW91cyBwYXJhbWV0ZXJzIGFuZCBVRFAgY2hhcmFjdGVyaXN0aWNzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvaXBlcmYyLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lMTM2YTdiMjU2MGQ4MGJjYmYwZDliM2UxMzU2ZWNmZiIKKworU1JDX1VSSSA9ICIgJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2lwZXJmMi9pcGVyZi0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwOTdjZjA3NTRiYzFhZmExNjU5NzVjMDZhOTFlNjkwNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZmU0MzQ4ZGNjYTMxM2I3NGUwYWE5YzM0YThjY2Q3MTNiODRhNTYxNWI4NTc4ZjRhYTk0Y2VkY2U5ODkxZWYyIgorCitTID0gIiR7V09SS0RJUn0vaXBlcmYtJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1leGVjLXByZWZpeD0ke1NUQUdJTkdfRElSX0hPU1R9JHtsYXlvdXRfZXhlY19wcmVmaXh9IgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ2lwdjYnLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pcGVyZjMvaXBlcmYzLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItdmFyaW91cy1zdGQtYzk5LWludC10eXBlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pcGVyZjMvaXBlcmYzLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItdmFyaW91cy1zdGQtYzk5LWludC10eXBlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWUzNjIwOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvaXBlcmYzL2lwZXJmMy8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZm9yLXZhcmlvdXMtc3RkLWM5OS1pbnQtdHlwZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIGJlNjUzNzExZmI5MmQyNDMwYjNlY2M1NDZiNGUzYWQ5MjdkMTllYzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAxNCBKdWwgMjAxNyAxMjo1OTo0MiAtMDcwMAotU3ViamVjdDogW1BBVENIIDEvMl0gaW5jbHVkZSBzdGRpbnQuaCBmb3IgdmFyaW91cyBzdGQgYzk5IGludCB0eXBlcwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL2Nqc29uLmggfCAyICsrCi0gc3JjL3RpbWVyLmggfCAxICsKLSAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Nqc29uLmggYi9zcmMvY2pzb24uaAotaW5kZXggZmI4Y2QzYi4uNjljZDI3MiAxMDA2NDQKLS0tLSBhL3NyYy9janNvbi5oCi0rKysgYi9zcmMvY2pzb24uaAotQEAgLTIzLDYgKzIzLDggQEAKLSAjaWZuZGVmIGNKU09OX19oCi0gI2RlZmluZSBjSlNPTl9faAotIAotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSsKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiCi0gewotZGlmZiAtLWdpdCBhL3NyYy90aW1lci5oIGIvc3JjL3RpbWVyLmgKLWluZGV4IDBmOWM1ZWIuLjBiMTk1YmUgMTAwNjQ0Ci0tLS0gYS9zcmMvdGltZXIuaAotKysrIGIvc3JjL3RpbWVyLmgKLUBAIC0zMSw2ICszMSw3IEBACi0gI2RlZmluZSBfX1RJTUVSX0gKLSAKLSAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gCi0gLyogVGltZXJDbGllbnREYXRhIGlzIGFuIG9wYXF1ZSB2YWx1ZSB0aGF0IHRhZ3MgYWxvbmcgd2l0aCBhIHRpbWVyLiAgVGhlCi0gKiogY2xpZW50IGNhbiB1c2UgaXQgZm9yIHdoYXRldmVyLCBhbmQgaXQgZ2V0cyBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrIHdoZW4KLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pcGVyZjMvaXBlcmYzXzMuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pcGVyZjMvaXBlcmYzXzMuMi5iYgppbmRleCA0ZDFiMGM0Li4yZWQwODExIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvaXBlcmYzL2lwZXJmM18zLjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2lwZXJmMy9pcGVyZjNfMy4yLmJiCkBAIC0xNSw3ICsxNSw2IEBACiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9lc25ldC9pcGVyZi5naXQgXAogICAgICAgICAgICBmaWxlOi8vYXV0b21ha2UtZm9yZWlnbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZm9yLXZhcmlvdXMtc3RkLWM5OS1pbnQtdHlwZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1SZW1vdmUtcGctZnJvbS1wcm9maWxlX0NGTEFHUy5wYXRjaCBcCiAgICAgICAgICAgICIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmMtYmVuY2gvbGliYy1iZW5jaF8yMDExMDIwNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJjLWJlbmNoL2xpYmMtYmVuY2hfMjAxMTAyMDYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjUzNGM3MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJjLWJlbmNoL2xpYmMtYmVuY2hfMjAxMTAyMDYuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJUZXN0cyB0byBjb21wYXJlIHN0YW5kYXJkIGZ1bmN0aW9ucyBvZiBkaWZmZXJlbnQgbGliYyBpbXBsZW1lbnRhdGlvbnMiCitERVNDUklQVElPTiA9ICJsaWJjLWJlbmNoIGlzIGEgc2V0IG9mIHRpbWUtIGFuZCBtZW1vcnktZWZmaWNpZW5jeSB0ZXN0cyB0byBjb21wYXJlIFwKK2ltcGxlbWVudGF0aW9ucyBvZiB2YXJpb3VzIEMvUE9TSVggc3RhbmRhcmQgbGlicmFyeSBmdW5jdGlvbnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ldGFsYWJzLm5ldC9saWJjLWJlbmNoLmh0bWwiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTWFrZWZpbGU7bWQ1PWUxMmYxMTNkYTI3ZGZlOWNmYjZjMmM1MzdkYThkOGRmIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZXRhbGFicy5uZXQvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gImY3NjNkZTkwZjk1ZmU2OGU0ZTAzZTViNmY0OTY5OGFjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY4MjUyNjBhYTVmMTVmNGZiYzc5NTdlYzU3OGU5Yzg1OWNiYmUyMTBlMDI1ZWM3NGM0YTBkMDU2Nzc1MjM3OTQiCisKK2RvX2luc3RhbGwgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSAke0J9L2xpYmMtYmVuY2ggJHtEfSR7YmluZGlyfQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpbnBhY2svbGlucGFja18xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGlucGFjay9saW5wYWNrXzEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWQ5NWNkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpbnBhY2svbGlucGFja18xLjAuYmIKQEAgLTAsMCArMSwyMCBAQAorREVTQ1JJUFRJT04gPSAiTElOUEFDSyBCZW5jaG1hcmtzIGFyZSBhIG1lYXN1cmUgb2YgYSBzeXN0ZW0ncyBmbG9hdGluZyBwb2ludCBjb21wdXRpbmcgcG93ZXIiCitTVU1NQVJZID0gIkxJTlBBQ0sgaXMgYSBzb2Z0d2FyZSBsaWJyYXJ5IGZvciBwZXJmb3JtaW5nIG51bWVyaWNhbCBsaW5lYXIgYWxnZWJyYSBvbiBkaWdpdGFsIGNvbXB1dGVycyIKKworTElDRU5TRSA9ICJQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSJmaWxlOi8vJHtXT1JLRElSfS9saW5wYWNrbmV3LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9YWEwMjVlM2JjNDQxOTBjNzFlNGM1ZTNiMDg0ZmVkODciCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5uZXRsaWIub3JnL2JlbmNobWFyay9saW5wYWNrYy5uZXc7ZG93bmxvYWRmaWxlbmFtZT1saW5wYWNrbmV3LmMiCitTUkNfVVJJW21kNXN1bV0gPSAiMWM1ZDBiNmEzMTI2NDY4NWQyZTY1MWM5MjBlM2NkZjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTYzZjJlYzg2NTEyOTU5ZjFmZDkyNmJmYWZiODU5MDViMmQ3Yjc0MDI5NDJmZmFlM2FmMzc0ZDQ4NzQ1ZTk3ZSIKKworUyA9ICIke1dPUktESVJ9IgorCitkb19jb21waWxlICgpIHsKKwkke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSAtbyBsaW5wYWNrIGxpbnBhY2tuZXcuYyAtbG0KK30KKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtRG0gMDc1NSBsaW5wYWNrICR7RH0ke2JpbmRpcn0vbGlucGFjaworfQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS8wMDAxLUNoZWNrLWZvci1tdXNsLWRlZmluZS1ndWFyZC1iZWZvcmUtcmVkZWZpbmluZy1zb2NrbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS8wMDAxLUNoZWNrLWZvci1tdXNsLWRlZmluZS1ndWFyZC1iZWZvcmUtcmVkZWZpbmluZy1zb2NrbGUucGF0Y2gKaW5kZXggMjA3OTFiZi4uZDcxNjk0OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvMDAwMS1DaGVjay1mb3ItbXVzbC1kZWZpbmUtZ3VhcmQtYmVmb3JlLXJlZGVmaW5pbmctc29ja2xlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5LzAwMDEtQ2hlY2stZm9yLW11c2wtZGVmaW5lLWd1YXJkLWJlZm9yZS1yZWRlZmluaW5nLXNvY2tsZS5wYXRjaApAQCAtMSwxMiArMSwxMyBAQAotRnJvbSAzMWQ1OGVkN2U2NTUyNzgxZjQxNTUwMWU5NmQ3Y2M3NGY4M2I5MTBkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhYzE2NTdlMTFjYmIwNTQ1YmRmNGQxMTI0ZGVmOGMwMTM5NThlZDdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTIgSnVsIDIwMTcgMTg6MDg6NTEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIENoZWNrIGZvciBtdXNsIGRlZmluZSBndWFyZCBiZWZvcmUgcmVkZWZpbmluZyBzb2NrbGVuX3QKK1N1YmplY3Q6IFtQQVRDSF0gQ2hlY2sgZm9yIG11c2wgZGVmaW5lIGd1YXJkIGJlZm9yZSByZWRlZmluaW5nIHNvY2tsZW5fdAogCiBtdXNsIHVzZXMgX19ERUZJTkVEX3NvY2tsZW5fdCBzbyBjaGVjayBmb3IgdGhhdCBhcyB3ZWxsCiBhbG9uZyB3aXRoIEhBVkVfc29ja2xlbl90CiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHNyYy9iZW5jaC5oIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQpAQCAtMjQsNiArMjUsMyBAQAogIHR5cGVkZWYgaW50IHNvY2tsZW5fdDsKICAjZW5kaWYKICAKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5LzAwMDEtbGF0X2h0dHAuYy1BZGQtcHJpbnRmLWZvcm1hdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5LzAwMDEtbGF0X2h0dHAuYy1BZGQtcHJpbnRmLWZvcm1hdC5wYXRjaAppbmRleCAxOGVkNDNkLi45NDNiM2VjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS8wMDAxLWxhdF9odHRwLmMtQWRkLXByaW50Zi1mb3JtYXQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvMDAwMS1sYXRfaHR0cC5jLUFkZC1wcmludGYtZm9ybWF0LnBhdGNoCkBAIC0xLDkgKzEsMTAgQEAKLUZyb20gNmZhYTZhY2RmMjBhYTZmNzM4ZWVkMTQ4M2I3ZGNlZWQ5NDI4NmFkYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2MwNWZhNTM1M2FkOTFhY2FlNmU1ZThhMDFmNjVkNTQ5MzVlZjc3OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDI3IEp1biAyMDE3IDE0OjM5OjEwIC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIGxhdF9odHRwLmM6IEFkZCBwcmludGYgZm9ybWF0CiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHNyYy9sYXRfaHR0cC5jIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQpAQCAtMjEsNiArMjIsMyBAQAogIAl9CiAgCXdyaXRlKHNvY2ssIGJ1Ziwgc3RybGVuKGJ1ZikpOwogIAl3aGlsZSAoKG4gPSByZWFkKHNvY2ssIGJ1ZiwgWEZFUlNJWkUpKSA+IDApIHsKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5LzAwMDItYnVpbGQtQWRqdXN0LUNGTEFHUy1MREZMQUdTLXRvLWFwcGVuZC12YWx1ZXMtcGFzc2VkLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5LzAwMDItYnVpbGQtQWRqdXN0LUNGTEFHUy1MREZMQUdTLXRvLWFwcGVuZC12YWx1ZXMtcGFzc2VkLS5wYXRjaAppbmRleCBkNWM4ZjVmLi4zNTNkODBiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS8wMDAyLWJ1aWxkLUFkanVzdC1DRkxBR1MtTERGTEFHUy10by1hcHBlbmQtdmFsdWVzLXBhc3NlZC0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvMDAwMi1idWlsZC1BZGp1c3QtQ0ZMQUdTLUxERkxBR1MtdG8tYXBwZW5kLXZhbHVlcy1wYXNzZWQtLnBhdGNoCkBAIC0xLDEzICsxLDEzIEBACi1Gcm9tIDc2ZjNhOWFiYzJmZjk2MTU1NDI1ZWY5N2Q4YzU1MjBjZmJjOGZlNmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGIyN2MyNTNiZmI3OGZhM2M1ZjQxNmU2Y2FlZTEwMTA5OGE0YjU4Y2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxMiBKdWwgMjAxNyAxODowOTo0NiAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvMl0gYnVpbGQ6IEFkanVzdCBDRkxBR1MvTERGTEFHUyB0byBhcHBlbmQgdmFsdWVzIHBhc3NlZCBmcm9tCi0gZW52CitTdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkOiBBZGp1c3QgQ0ZMQUdTL0xERkxBR1MgdG8gYXBwZW5kIHZhbHVlcyBwYXNzZWQgZnJvbSBlbnYKIAogRm9yIG11c2wgd2UgaGF2ZSB0byBwYXNzIGFkZGl0aW9uYWwgYXJndW1lbnRzIHZpYSBjZmxhZ3MgYW5kIGxkZmxhZ3MKIHRvIGxpbmsgaW4gbGlicmlycGMsIG1ha2Ugcm9vbSBmb3IgdGhvc2UgY2hhbmdlcyB0byB0YWtlIGVmZmVjdAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBzY3JpcHRzL2J1aWxkIHwgIDIgKy0KICBzcmMvTWFrZWZpbGUgIHwgMTQgKysrKysrKy0tLS0tLS0KQEAgLTcxLDYgKzcxLDMgQEAKICAKICAKICB0YWc6Ci0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS9maXgtbG1iZW5jaC1tZW1vcnktY2hlY2stZmFpbHVyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5L2ZpeC1sbWJlbmNoLW1lbW9yeS1jaGVjay1mYWlsdXJlLnBhdGNoCmluZGV4IDU0OWExMTQuLmNiYWI1YzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5L2ZpeC1sbWJlbmNoLW1lbW9yeS1jaGVjay1mYWlsdXJlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5L2ZpeC1sbWJlbmNoLW1lbW9yeS1jaGVjay1mYWlsdXJlLnBhdGNoCkBAIC0xLDQgKzEsNyBAQAotbG1iZW5jaDogQ2FuJ3QgcHJvY2VlZCBvbiBzb21lIHRhcmdldHMKK0Zyb20gNjUxODA5NzZjOTk2MzQzMmQxNjZiNDdhMGI2OTIyNjBhNjljMGQ0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFFpbmdtaW5nIFN1IDxxaW5nbWluZy5zdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxOSBBdWcgMjAxNCAwNToxNjoxNyAtMDQwMAorU3ViamVjdDogW1BBVENIXSBsbWJlbmNoOiBDYW4ndCBwcm9jZWVkIG9uIHNvbWUgdGFyZ2V0cwogCiBsbWJlbmNoIGNhbid0IHByb2NlZWQgb24gc29tZSB0YXJnZXRzLiAgVGhlIG1lbW9yeSBjaGVjayBmYWlscyBiZWNhdXNlIHRoZQogbWVtb3J5IGxhdGVuY3kgb2YgZWFjaCBwYWdlIGlzIGxvbmdlciB0aGVuIDEwdXMsIHdoaWNoIGlzIGEgdGltZSBsaW1pdCBzZXQKQEAgLTI1LDEzICsyOCwxOSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CiAKKy0tLQorIHNjcmlwdHMvY29uZmlnLXJ1biB8IDEyICsrKysrKystLS0KKyBzcmMvTWFrZWZpbGUgICAgICAgfCAgNCArKy0tCisgc3JjL21lbXNpemUuYyAgICAgIHwgNjYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCA1NCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKKwogZGlmZiAtLWdpdCBhL3NjcmlwdHMvY29uZmlnLXJ1biBiL3NjcmlwdHMvY29uZmlnLXJ1bgotaW5kZXggZTFmN2I2ZC4uMzFiOTI1NiAxMDA3NTUKK2luZGV4IDkxOGNiZGYuLjA5NmVkMTIgMTAwNzU1CiAtLS0gYS9zY3JpcHRzL2NvbmZpZy1ydW4KICsrKyBiL3NjcmlwdHMvY29uZmlnLXJ1bgotQEAgLTIxNCw2ICsyMTQsMTIgQEAgVGhlIGJpZ2dlciB0aGUgcmFuZ2UsIHRoZSBtb3JlIGFjY3VyYXRlIHRoZSByZXN1bHRzLCBidXQgbGFyZ2VyIHNpemVzCitAQCAtMTk3LDYgKzE5NywxMiBAQCBUaGUgYmlnZ2VyIHRoZSByYW5nZSwgdGhlIG1vcmUgYWNjdXJhdGUgdGhlIHJlc3VsdHMsIGJ1dCBsYXJnZXIgc2l6ZXMKICB0YWtlIHNvbWV3aGF0IGxvbmdlciB0byBydW4gdGhlIGJlbmNobWFyay4KLQorIAogIEVPRgogKwogKyMgQnkgZGVmYXVsdCwgdXNlIDUxMk0gbWVtb3J5IGFzIHRoZSB1cHBlciBsaW1pdCBmb3IgbG1iZW5jaCB0ZXN0CkBAIC00MCwxMiArNDksMTIgQEAKICtmaQogKwogIGVjaG8gJEVDSE9OICJNQiBbZGVmYXVsdCAkTUJdOiAkRUNIT0MiCi0gI3JlYWQgVE1QCi0gVE1QPSIiCi1AQCAtNzE4LDEwICs3MjQsMTAgQEAgY2FzZSAkTUFJTCBpbgotCQk7OworIHJlYWQgVE1QCisgaWYgWyBYJFRNUCAhPSBYIF0KK0BAIC02ODcsMTAgKzY5MywxMCBAQCBjYXNlICRNQUlMIGluCisgCQk7OwogIGVzYWMKLQorIAogLUlORk89YC4uL3NjcmlwdHMvaW5mb2AKICtJTkZPPWAuLi9zY3JpcHRzL2hvc3RpbmZvYAogIGlmIFsgJE1BSUwgPSB5ZXMgXQpAQCAtNTQsOCArNjMsOCBAQAogKwl0aGVuCWNwIC4uL3NjcmlwdHMvaG9zdGluZm8tdGVtcGxhdGUgJElORk8KICAJCWNobW9kICt3ICRJTkZPCiAgCQlSRVVTRT1ubwotIAllbHNlCi1AQCAtNzY1LDcgKzc3MSw3IEBAIEVPRgorIAllbHNlCQorQEAgLTczMyw3ICs3MzksNyBAQCBFT0YKICAJCXRoZW4JRURJVE9SPSRUTVAKICAJCWZpCiAgCQlpZiBbIFgkRURJVE9SICE9ICJub25lIiBdCkBAIC02NSwxMCArNzQsMTAgQEAKICAJZmkKICBmaQogZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZSBiL3NyYy9NYWtlZmlsZQotaW5kZXggZDFmMGRjNi4uNTA5ODk5OCAxMDA2NDQKK2luZGV4IGM3ZTRlM2MuLmQ5ZWZkNTQgMTAwNjQ0CiAtLS0gYS9zcmMvTWFrZWZpbGUKICsrKyBiL3NyYy9NYWtlZmlsZQotQEAgLTQ5LDcgKzQ5LDcgQEAgVEFSR0VUPWAuLi9zY3JpcHRzL3RhcmdldGAKK0BAIC01MCw3ICs1MCw3IEBAIFRBUkdFVD1gLi4vc2NyaXB0cy90YXJnZXRgCiAgQklORElSPS4uL2Jpbi8kKE9TKQogIENPTkZJRz0uLi9iaW4vJChPUykvYC4uL3NjcmlwdHMvY29uZmlnYAogIFVUSUxTPS4uL3NjcmlwdHMvdGFyZ2V0IC4uL3NjcmlwdHMvb3MgLi4vc2NyaXB0cy9nbnUtb3MgLi4vc2NyaXB0cy9jb21waWxlciBcCkBAIC03OSwyMSArODgsMjEgQEAKICBJTlNUQUxMPWNwCiBAQCAtMjQwLDcgKzI0MCw3IEBAICRPL2dldG9wdC5vIDogZ2V0b3B0LmMgJChJTkNTKQogIAkkKENPTVBJTEUpIC1jIGdldG9wdC5jIC1vICRPL2dldG9wdC5vCi0KKyAKICAkKFVUSUxTKSA6CiAtCS1jZCAuLi9zY3JpcHRzOyBtYWtlIGdldAogKwktY2QgLi4vc2NyaXB0czsgY3AgaW5mbyBob3N0aW5mbzsgY3AgaW5mby10ZW1wbGF0ZSBob3N0aW5mby10ZW1wbGF0ZQotCisgCiAgIyBEbyBub3QgcmVtb3ZlIHRoZSBuZXh0IGxpbmUsICQoTUFLRSkgZGVwZW5kIG5lZWRzIGl0CiAgIyBNQUtFREVQRU5EIGZvbGxvd3MKIGRpZmYgLS1naXQgYS9zcmMvbWVtc2l6ZS5jIGIvc3JjL21lbXNpemUuYwotaW5kZXggZWIyNWEwOS4uY2Y5ZmUwYyAxMDA2NDQKK2luZGV4IGViMjVhMDkuLjgyZDdmYWYgMTAwNjQ0CiAtLS0gYS9zcmMvbWVtc2l6ZS5jCiArKysgYi9zcmMvbWVtc2l6ZS5jCiBAQCAtMTQsOSArMTQsMTIgQEAgY2hhcgkqaWQgPSAiJElkJFxuIjsKLQorIAogICNkZWZpbmUJQ0hLKHgpCWlmICgoeCkgPT0gLTEpIHsgcGVycm9yKCJ4Iik7IGV4aXQoMSk7IH0KLQorIAogLSNpZm5kZWYJVE9PX0xPTkcKIC0jZGVmaW5lCVRPT19MT05HCTEwCS8qIHVzZWNzICovCiAtI2VuZGlmCkBAIC0xMDMsMTIgKzExMiwxMiBAQAogKwogKyNkZWZpbmUJTUVNT1JZX1NJWkVfMU1CICgxMDI0ICogMTAyNCkKICsjZGVmaW5lCU1FTU9SWV9TSVpFXzhNQiAoOCAqIDEwMjQgKiAxMDI0KQotCisgCiAgaW50CWFsYXJtX3RyaWdnZXJlZCA9IDA7Ci0KKyAKIEBAIC0zNSwxMCArMzgsMTAgQEAgbWFpbihpbnQgYWMsIGNoYXIgKiphdikKICAJc2l6ZV90CWRlbHRhOwotCisgCiAgCWlmIChhYyA9PSAyKSB7CiAtCQltYXggPSBzaXplID0gYnl0ZXMoYXZbMV0pICogMTAyNCAqIDEwMjQ7CiArCQltYXggPSBzaXplID0gYnl0ZXMoYXZbMV0pICogTUVNT1JZX1NJWkVfMU1COwpAQCAtMTcwLDcgKzE3OSw3IEBACiArCQl0aW1lX2VhY2hfcGFnZSA9IDE7CiArCS8vU2V0IHRoZSB1cGVyIGxpbWl0IG9mIHRpbWUgc3BlbmRpbmcgb24gb25lIHBhZ2UKICsgICAgICAgIHRvb19sb25nID0gMTAgKiB0aW1lX2VhY2hfcGFnZTsKLQorIAogLQlyYW5nZSA9IDEwMjQgKiAxMDI0OwogLQlpbmNyID0gMTAyNCAqIDEwMjQ7CiAtCXRvdWNoUmFuZ2Uod2hlcmUsIHJhbmdlLCBwYWdlc2l6ZSk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS9sbWJlbmNoX3Jlc3VsdF9odG1sX3JlcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5L2xtYmVuY2hfcmVzdWx0X2h0bWxfcmVwb3J0LnBhdGNoCmluZGV4IGNkYTJmMGMuLjMwNzA4YzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5L2xtYmVuY2hfcmVzdWx0X2h0bWxfcmVwb3J0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5L2xtYmVuY2hfcmVzdWx0X2h0bWxfcmVwb3J0LnBhdGNoCkBAIC0xLDQgKzEsNyBAQAotbG1iZW5jaDogRml4ICJtYWtlIGh0bWwiIGdyYXBoIGZhaWx1cmUKK0Zyb20gYjIxY2E5ZjM5MTE2MjhmYjY2ZjMwOGM2OTE2NDg1YmJiY2ZiMjlhNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IExpbiBZdSA8bGluLnl1QHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE5IEF1ZyAyMDE0IDA1OjE2OjE2IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGxtYmVuY2g6IEZpeCAibWFrZSBodG1sIiBncmFwaCBmYWlsdXJlCiAKIFRoZSBodG1sLWxpc3QgcGVybCBzY3JpcHQgY2Fubm90IHBhcnNlIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSByZXN1bHQKIGZpbGVzIGFib3V0IHRoZSBsbWJlbmNoIHZlcnNpb24uCkBAIC0xNCw2ICsxNywxMSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CiAKKy0tLQorIHJlc3VsdHMvTWFrZWZpbGUgIHwgMSArCisgc2NyaXB0cy9odG1sLWxpc3QgfCA3ICsrLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKwogZGlmZiAtLWdpdCBhL3Jlc3VsdHMvTWFrZWZpbGUgYi9yZXN1bHRzL01ha2VmaWxlCiBpbmRleCAwOTM1Mzc2Li4xZWY5YTE1IDEwMDY0NAogLS0tIGEvcmVzdWx0cy9NYWtlZmlsZQpAQCAtMzgsNyArNDYsNyBAQAogKzxoMj48YSBocmVmPXN1bW1hcnkub3V0PlN1bW1hcnkgb2YgcmVzdWx0czwvYT48L2gyPgogIDxocj4KICBFT0YKLQorIAogQEAgLTQ3LDcgKzQ3LDcgQEAgZm9yZWFjaCAkb3MgKEBvcykgewogIAkJb3BlbihGLCAkZmlsZSk7CiAgCQkkXyA9IDxGPjsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5L29iZXktcmFubGliLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvb2JleS1yYW5saWIucGF0Y2gKaW5kZXggNDFhM2IzMi4uZmE1ZTZkYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvb2JleS1yYW5saWIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvb2JleS1yYW5saWIucGF0Y2gKQEAgLTEsMTYgKzEsMjIgQEAKK0Zyb20gMTgyYTVkM2RiYTNmNDQwYmJmMzU1NTFkYTZkMjFhYjFjOTkwZWI1OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5vb3IgQWhzYW4gPG5vb3JfYWhzYW5AbWVudG9yLmNvbT4KK0RhdGU6IE1vbiwgMjkgQXVnIDIwMTEgMTY6MTc6NTEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gbG1iZW5jaDogQWRkIHZlcnNpb24gMy4wLWE5IChpbml0aWFsIHJlY2lwZSkKKwogSW4gc29tZSBjYXNlcyB0aGUgaG9zdCBtYXkgaGF2ZSB0b28gb2xkIG9mIGEgcmFubGliIHRvIHdvcmsuICBTaW5jZSBpdCdzCiBub3QgZXhhY3RseSBhIGdyZWF0IGlkZWEgdG8gbm90IGJlIHVzaW5nIHRoZSBjcm9zcyByYW5saWIgYW55aG93LCBmaXggdGhlCiBNYWtlZmlsZSBzbyB3ZSBjYW4gb3ZlcnJpZGUgcmFubGliIGFuZCB0aGVuIG92ZXJyaWRlIGl0CiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbYnVpbGQgc3lzdGVtIHNwZWNpZmljIGNoYW5nZV0KKwogLS0tCi0gc3JjL01ha2VmaWxlIHwgICAgMyArKy0KKyBzcmMvTWFrZWZpbGUgfCAzICsrLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAotSW5kZXg6IGxtYmVuY2gtMy4wLWE5L3NyYy9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxtYmVuY2gtMy4wLWE5Lm9yaWcvc3JjL01ha2VmaWxlCi0rKysgbG1iZW5jaC0zLjAtYTkvc3JjL01ha2VmaWxlCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCitpbmRleCA0OTYyODE1Li5jN2E4Yzc5IDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlCisrKysgYi9zcmMvTWFrZWZpbGUKIEBAIC0zOCw2ICszOCw3IEBAIENDPWAuLi9zY3JpcHRzL2NvbXBpbGVyYAogIE1BS0U9YC4uL3NjcmlwdHMvbWFrZWAKICBBUj1hcgpAQCAtMTksNyArMjUsNyBAQAogIAogICMgYmFzZSBvZiBpbnN0YWxsYXRpb24gbG9jYXRpb24KICBCQVNFPS91c3IvbG9jYWwKLUBAIC0yMTcsNyArMjE4LDcgQEAgJE8vbG1iZW5jaCA6IC4uL3NjcmlwdHMvbG1iZW5jaCB2ZXJzaW9uLgorQEAgLTIxNyw3ICsyMTgsNyBAQCAkTy9sbWJlbmNoIDogLi4vc2NyaXB0cy9sbWJlbmNoIHZlcnNpb24uaAogICRPL2xtYmVuY2guYTogJChMSUJPQkpTKQogIAkvYmluL3JtIC1mICRPL2xtYmVuY2guYQogIAkkKEFSKSAkKEFSQ1JFQVRFKSAkTy9sbWJlbmNoLmEgJChMSUJPQkpTKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvdXBkYXRlLWNvbmZpZy1zY3JpcHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS91cGRhdGUtY29uZmlnLXNjcmlwdC5wYXRjaAppbmRleCBiNDZlMDlhLi40NGJjN2JiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS91cGRhdGUtY29uZmlnLXNjcmlwdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS91cGRhdGUtY29uZmlnLXNjcmlwdC5wYXRjaApAQCAtMSw4ICsxLDE4IEBACitGcm9tIGFjYTFhNTlkODg4NDIxYzFmYzU1MzIyOWI4MDQ5YmU0N2U4YjNkZGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHVucm9uZyBHdW8gPGI0MDI5MEBmcmVlc2NhbGUuY29tPgorRGF0ZTogRnJpLCAxIE1hciAyMDEzIDA5OjUwOjQyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGxtYmVuY2g6IHVwZGF0ZSBjb25maWcgc2NyaXB0CisKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGxtYmVuY2gtMy4wLWE5L3NjcmlwdHMvY29uZmlnCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbG1iZW5jaC0zLjAtYTkvc2NyaXB0cy9jb25maWcJMjAwMC0wMS0zMSAxODoyOTozMS4wMDAwMDAwMDAgLTA2MDAKLSsrKyBsbWJlbmNoLTMuMC1hOS9zY3JpcHRzL2NvbmZpZwkyMDEzLTAzLTAxIDAwOjE5OjQxLjAzMjk4NDMxNSAtMDYwMAorCistLS0KKyBzY3JpcHRzL2NvbmZpZyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NjcmlwdHMvY29uZmlnIGIvc2NyaXB0cy9jb25maWcKK2luZGV4IGI1OGNiNjAuLjI1ZDlkNzcgMTAwNzU1CistLS0gYS9zY3JpcHRzL2NvbmZpZworKysrIGIvc2NyaXB0cy9jb25maWcKIEBAIC0zLDUgKzMsNSBAQAogIFVOQU1FPWB1bmFtZSAtbiAyPi9kZXYvbnVsbGAKICBpZiBbIFgkVU5BTUUgPSBYIF0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5L3VwZGF0ZS1yZXN1bHRzLXNjcmlwdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5L3VwZGF0ZS1yZXN1bHRzLXNjcmlwdC5wYXRjaAppbmRleCA4OTRmMTQ2Li4zMWM0YWVjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS91cGRhdGUtcmVzdWx0cy1zY3JpcHQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvdXBkYXRlLXJlc3VsdHMtc2NyaXB0LnBhdGNoCkBAIC0xLDQ1ICsxLDI0IEBACitGcm9tIDQ5NTUwMjFiYzI4M2JlNDA0ZGY2MmI5N2I4NmFmMzk0M2VmZDI5ZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOb29yIEFoc2FuIDxub29yX2Foc2FuQG1lbnRvci5jb20+CitEYXRlOiBNb24sIDI5IEF1ZyAyMDExIDE2OjE3OjUxICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGxtYmVuY2g6IEFkZCB2ZXJzaW9uIDMuMC1hOSAoaW5pdGlhbCByZWNpcGUpCisKIE5vdyB0aGF0IHdlIGhhdmUgb3VyIGJpbmFyaWVzIGluIC91c3IvYmluIHJhdGhlciB0aGFuIHRoZSBub3JtYWwKIGxtYmVuY2ggaGllcmFyY2h5IHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBzY3JpcHRzIGFzIHdlbGwgdG8gYmVoYXZlIHdlbGwgaGVyZS4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtUaGlzIGlzIHJlbGF0ZWQgdG8gdGhlIE9FLXNwZWNpZmljIGJlaGF2aW9yCi1vZiBpbnN0YWxsaW5nIGludG8gL3Vzci9iaW4sIGV0YywgcmF0aGVyIHRoYW4gZHVtcGluZyBldmVyeXRoaW5nIGludG8gCitvZiBpbnN0YWxsaW5nIGludG8gL3Vzci9iaW4sIGV0YywgcmF0aGVyIHRoYW4gZHVtcGluZyBldmVyeXRoaW5nIGludG8KIC91c3Ivc2hhcmUvbG1iZW5jaCBvciBzaW1pbGFyXQogCi1JbmRleDogbG1iZW5jaC0zLjAtYTkvc2NyaXB0cy9yZXN1bHRzCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbG1iZW5jaC0zLjAtYTkub3JpZy9zY3JpcHRzL3Jlc3VsdHMKLSsrKyBsbWJlbmNoLTMuMC1hOS9zY3JpcHRzL3Jlc3VsdHMKLUBAIC04LDExICs4LDExIEBAIFJFU1VMVFM9cmVzdWx0cy8kT1MKLSBCQVNFPS4uLyRSRVNVTFRTL2B1bmFtZSAtbmAKLSBFWFQ9MAotIAotLWlmIFsgISAtZiAiLi4vYmluLyRPUy8kQ09ORklHIiBdCi0raWYgWyAhIC1mICIkQ09ORklHIiBdCi0gdGhlbgllY2hvICJObyBjb25maWcgZmlsZT8iCi0gCWV4aXQgMQotIGZpCi0tLiAuLi9iaW4vJE9TLyRDT05GSUcKLSsuICRDT05GSUcKLSAKLSBpZiBbICEgLWQgLi4vJFJFU1VMVFMgXQotIHRoZW4JbWtkaXIgLXAgLi4vJFJFU1VMVFMKLUBAIC0yMywxMSArMjMsOSBAQCBkbyAgICAgIEVYVD1gZXhwciAkRVhUICsgMWAKLSAJUkVTVUxUUz0kQkFTRS4kRVhUCi0gZG9uZQotIAotLWNkIC4uL2Jpbi8kT1MgCi0tUEFUSD0uOiR7UEFUSH07IGV4cG9ydCBQQVRICi0gZXhwb3J0IFNZTkNfTUFYCi0gZXhwb3J0IE9VVFBVVAotLWxtYmVuY2ggJENPTkZJRyAyPi4uLyR7UkVTVUxUU30KLStsbWJlbmNoICRDT05GSUcgMj4ke1JFU1VMVFN9Ci0gCi0gaWYgWyBYJE1BSUwgPSBYeWVzIF0KLSB0aGVuCWVjaG8gTWFpbGluZyByZXN1bHRzCi1JbmRleDogbG1iZW5jaC0zLjAtYTkvc2NyaXB0cy9jb25maWctcnVuCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbG1iZW5jaC0zLjAtYTkub3JpZy9zY3JpcHRzL2NvbmZpZy1ydW4KLSsrKyBsbWJlbmNoLTMuMC1hOS9zY3JpcHRzL2NvbmZpZy1ydW4KKy0tLQorIHNjcmlwdHMvY29uZmlnLXJ1biB8IDQwICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzY3JpcHRzL3Jlc3VsdHMgICAgfCAgOCArKystLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zY3JpcHRzL2NvbmZpZy1ydW4gYi9zY3JpcHRzL2NvbmZpZy1ydW4KK2luZGV4IGEyZDViYTQuLjkxOGNiZGYgMTAwNzU1CistLS0gYS9zY3JpcHRzL2NvbmZpZy1ydW4KKysrKyBiL3NjcmlwdHMvY29uZmlnLXJ1bgogQEAgLTEzMiwyMCArMTMyLDIwIEBAIGV4cG9ydCBMTUJFTkNIX1NDSEVECiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIGVjaG8gJEw7IGVjaG8gIiI7CkBAIC04OSw3ICs2OCw3IEBACiAgaWYgWyBgZXhwciAkU1lOQ19NQVggXCogJE1CYCAtZ3QgYGV4cHIgJFRPVEFMX01FTWAgXQogIHRoZW4KICAJTUI9YGV4cHIgJFRPVEFMX01FTSAvICRTWU5DX01BWGAKLUBAIC0yMjMsOCArMjIzLDggQEAgdGhlbgllY2hvIFdhcm5pbmc6IHlvdSBoYXZlIG9ubHkgJHtNQn1NQgorQEAgLTIyMyw4ICsyMjMsOCBAQCB0aGVuCWVjaG8gV2FybmluZzogeW91IGhhdmUgb25seSAke01CfU1CIGF2YWlsYWJsZSBtZW1vcnkuCiAgZmkKICAKICBlY2hvICJIYW5nIG9uLCB3ZSBhcmUgY2FsY3VsYXRpbmcgeW91ciBjYWNoZSBsaW5lIHNpemUuIgpAQCAtMTU4LDMgKzEzNywzNCBAQAogIGVjaG8gRElTS1M9XCIkRElTS1NcIiA+ICRDCiAgZWNobyBESVNLX0RFU0M9XCIkRElTS19ERVNDXCIgPj4gJEMKICBlY2hvIE9VVFBVVD0kT1VUUFVUID4+ICRDCitkaWZmIC0tZ2l0IGEvc2NyaXB0cy9yZXN1bHRzIGIvc2NyaXB0cy9yZXN1bHRzCitpbmRleCBjZDA3YzE1Li5kNWFhNTU4IDEwMDc1NQorLS0tIGEvc2NyaXB0cy9yZXN1bHRzCisrKysgYi9zY3JpcHRzL3Jlc3VsdHMKK0BAIC04LDExICs4LDExIEBAIFJFU1VMVFM9cmVzdWx0cy8kT1MKKyBCQVNFPS4uLyRSRVNVTFRTL2B1bmFtZSAtbmAKKyBFWFQ9MAorIAorLWlmIFsgISAtZiAiLi4vYmluLyRPUy8kQ09ORklHIiBdCisraWYgWyAhIC1mICIkQ09ORklHIiBdCisgdGhlbgllY2hvICJObyBjb25maWcgZmlsZT8iCisgCWV4aXQgMQorIGZpCistLiAuLi9iaW4vJE9TLyRDT05GSUcKKysuICRDT05GSUcKKyAKKyBpZiBbICEgLWQgLi4vJFJFU1VMVFMgXQorIHRoZW4JbWtkaXIgLXAgLi4vJFJFU1VMVFMKK0BAIC0yMywxMSArMjMsOSBAQCBkbyAgICAgIEVYVD1gZXhwciAkRVhUICsgMWAKKyAJUkVTVUxUUz0kQkFTRS4kRVhUCisgZG9uZQorIAorLWNkIC4uL2Jpbi8kT1MgCistUEFUSD0uOiR7UEFUSH07IGV4cG9ydCBQQVRICisgZXhwb3J0IFNZTkNfTUFYCisgZXhwb3J0IE9VVFBVVAorLWxtYmVuY2ggJENPTkZJRyAyPi4uLyR7UkVTVUxUU30KKytsbWJlbmNoICRDT05GSUcgMj4ke1JFU1VMVFN9CisgCisgaWYgWyBYJE1BSUwgPSBYeWVzIF0KKyB0aGVuCWVjaG8gTWFpbGluZyByZXN1bHRzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS91c2UtYmFzZV9saWJkaXItaW5zdGVhZC1vZi1oYXJkY29kZWQtbGliLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvdXNlLWJhc2VfbGliZGlyLWluc3RlYWQtb2YtaGFyZGNvZGVkLWxpYi5wYXRjaAppbmRleCAzMzUxY2U4Li5jNmU5NDY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS91c2UtYmFzZV9saWJkaXItaW5zdGVhZC1vZi1oYXJkY29kZWQtbGliLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5L3VzZS1iYXNlX2xpYmRpci1pbnN0ZWFkLW9mLWhhcmRjb2RlZC1saWIucGF0Y2gKQEAgLTEsMTQgKzEsMTUgQEAKLUZyb20gMGQwOWUzMTk3MDYxNmUwOWJlYjdmMjM4YzJiNTliZmM1NDExNDhmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzNmZGM1OGNhNGViOWUyZjI0ZDg1NGIzYWYzYTRlNWRhYWM1YTMzZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFRpbmcgTGl1IDxiMjg0OTVAZnJlZXNjYWxlLmNvbT4KIERhdGU6IEZyaSwgMjIgTm92IDIwMTMgMTU6MjA6MDggKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gdXNlIGJhc2VfbGliZGlyIGluc3RlYWQgb2YgaGFyZGNvZGVkIC9saWIKIAotVXBzdGVhbSBTdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCitVcHN0cmVhbSBTdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAKIFNpZ25lZC1vZmYtYnk6IFRpbmcgTGl1IDxiMjg0OTVAZnJlZXNjYWxlLmNvbT4KKwogLS0tCi0gc3JjL01ha2VmaWxlIHwgICAgNCArKy0tCi0gMSBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgc3JjL01ha2VmaWxlIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZSBiL3NyYy9NYWtlZmlsZQogaW5kZXggYzdhOGM3OS4uYzdlNGUzYyAxMDA2NDQKQEAgLTI3LDYgKzI4LDMgQEAKICAJY2QgLi4vZG9jOyBlbnYgTUFLRUZMQUdTPSIkKE1BS0VGTEFHUykiIG1ha2UgQ0M9IiR7Q0N9IiBPUz0iJHtPU30iIEJBU0U9IiQoQkFTRSkiIGluc3RhbGwKICAKICAKLS0tIAotMS43LjUuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLzAwMDEtYXZvaWQtZ2NjLW9wdGltaXplLWF3YXktdGhlLWxvb3BzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC8wMDAxLWF2b2lkLWdjYy1vcHRpbWl6ZS1hd2F5LXRoZS1sb29wcy5wYXRjaAppbmRleCAyZDhhMjQ2Li5iOTY0YmVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLzAwMDEtYXZvaWQtZ2NjLW9wdGltaXplLWF3YXktdGhlLWxvb3BzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gvMDAwMS1hdm9pZC1nY2Mtb3B0aW1pemUtYXdheS10aGUtbG9vcHMucGF0Y2gKQEAgLTEsNCArMSw3IEBACi1bUEFUQ0hdIGF2b2lkIGdjYyBvcHRpbWl6ZS1hd2F5IHRoZSBsb29wcworRnJvbSAyNTczOGJiOWM3NWY5NGI0NTEyMDFhY2ZkNmJjYWIxM2JkZWVlNTEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCA1IE1heSAyMDE2IDA5OjUyOjAxICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIFtQQVRDSF0gYXZvaWQgZ2NjIG9wdGltaXplLWF3YXkgdGhlIGxvb3BzCiAKIFVwc3RyZWFtLVN0YXR1czogcGVuZGluZwogCkBAIC0xNSw2ICsxOCw3IEBACiAJI2RlZmluZSBURU4oYSkgYSBhIGEgYSBhIGEgYSBhIGEgYQogCiBTaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHNyYy9sYXRfb3BzLmMgfCAzMCArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKQEAgLTc0LDYgKzc4LDMgQEAKICAJfQogIAl1c2VfaW50KChpbnQpcik7CiAgfQotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoL3JlbmFtZS1saW5lLWJpbmFyeS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gvcmVuYW1lLWxpbmUtYmluYXJ5LnBhdGNoCmluZGV4IDlhNDA1MjEuLmI0MmVlN2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gvcmVuYW1lLWxpbmUtYmluYXJ5LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gvcmVuYW1lLWxpbmUtYmluYXJ5LnBhdGNoCkBAIC0xLDMgKzEsOCBAQAorRnJvbSAxNjgyM2Y1YzNkM2Q1YWRhZDBiNzBlOTA1NWMwOGNiNGUxOGQyNTViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTm9vciBBaHNhbiA8bm9vcl9haHNhbkBtZW50b3IuY29tPgorRGF0ZTogTW9uLCAyOSBBdWcgMjAxMSAxNjoxNzo1MSArMDAwMAorU3ViamVjdDogW1BBVENIXSBsbWJlbmNoOiBBZGQgdmVyc2lvbiAzLjAtYTkgKGluaXRpYWwgcmVjaXBlKQorCiBCb3RoIGxtYmVuY2ggYW5kIHV0aWwtbGludXgtbmcgcGFja2FnZXMgcHJvdmlkZSBvd24gL3Vzci9iaW4vbGluZSBiaW5hcmllcy4KIEV2ZW4gdGhvdWdoIHRoZSBiaW5hcmllcyBuYW1lIGlzIHRoZSBzYW1lLCB0aGVpciBmdW5jdGlvbmFsaXR5IGlzIGRpZmZlcmVudC4KIFRoaXMgcGF0Y2ggcmVuYW1lcyBsbWJlbmNoJ3MgbGluZSBiaW5hcnkgYXMgbG1fbGluZSB0byBhdm9pZCBjb25mbGljdHMgd2l0aApAQCAtNiw4ICsxMSwxNCBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2J1aWxkIHN5c3RlbSBzcGVjaWZpYyBjaGFuZ2VdCiAKLS0tLSBwYXRjaGVzL3NjcmlwdHMvY29uZmlnLXJ1bgkyMDA2LTExLTI2IDE1OjExOjA0LjAwMDAwMDAwMCAtMDUwMAotKysrIHBhdGNoZXMvc2NyaXB0cy9jb25maWctcnVuCTIwMTEtMDQtMDEgMDk6MzU6NTAuMDAwMDAwMDAwIC0wNDAwCistLS0KKyBzY3JpcHRzL2NvbmZpZy1ydW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zY3JpcHRzL2NvbmZpZy1ydW4gYi9zY3JpcHRzL2NvbmZpZy1ydW4KK2luZGV4IGY2MjBjMTUuLmEyZDViYTQgMTAwNzU1CistLS0gYS9zY3JpcHRzL2NvbmZpZy1ydW4KKysrKyBiL3NjcmlwdHMvY29uZmlnLXJ1bgogQEAgLTIyNCw3ICsyMjQsNyBAQCBmaQogIAogIGVjaG8gIkhhbmcgb24sIHdlIGFyZSBjYWxjdWxhdGluZyB5b3VyIGNhY2hlIGxpbmUgc2l6ZS4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvcGhvcm9uaXgtdGVzdC1zdWl0ZS9waG9yb25peC10ZXN0LXN1aXRlXzcuNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL3Bob3Jvbml4LXRlc3Qtc3VpdGUvcGhvcm9uaXgtdGVzdC1zdWl0ZV83LjguMC5iYgpzaW1pbGFyaXR5IGluZGV4IDc4JQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvcGhvcm9uaXgtdGVzdC1zdWl0ZS9waG9yb25peC10ZXN0LXN1aXRlXzcuNC4wLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvcGhvcm9uaXgtdGVzdC1zdWl0ZS9waG9yb25peC10ZXN0LXN1aXRlXzcuOC4wLmJiCmluZGV4IDNjY2Q1ZGIuLjFmOTBhNzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9waG9yb25peC10ZXN0LXN1aXRlL3Bob3Jvbml4LXRlc3Qtc3VpdGVfNy40LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL3Bob3Jvbml4LXRlc3Qtc3VpdGUvcGhvcm9uaXgtdGVzdC1zdWl0ZV83LjguMC5iYgpAQCAtNiw4ICs2LDggQEAKIFNFQ1RJT04gPSAiY29uc29sZS90ZXN0cyIKIAogU1JDX1VSSSA9ICJodHRwOi8vd3d3LnBob3Jvbml4LXRlc3Qtc3VpdGUuY29tL3JlbGVhc2VzLyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4NmZhM2VlZGU0M2ZmZmY4ODk5MmZlMjEzNjhiMTFiNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkZTlhZWMzZWY0Zjk4MDU4MTc1NmZkMGJmN2IzMGRkMWNjYjIwZTdhYWU2MzcwNzhhNTg3NjA2YmY3NWE2YjY3IgorU1JDX1VSSVttZDVzdW1dID0gIjg1MDg0M2JkOTI1MjgyM2U3ZTI0YmMwODQ5NzczMDAwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNkNmM4Njk4NDFmMjhlNGFjMWU4YTVlNGNkYTA1ZmFmY2U5YTUyM2E2YjRmMGYzYTQ3ODA1ZWZkMzA0OTRkODgiCiAKIFMgPSAiJHtXT1JLRElSfS9waG9yb25peC10ZXN0LXN1aXRlIgogCkBAIC0yMyw3ICsyMywxMiBAQAogICAgIGZpCiB9CiAKKyMgSXQgaXMgbm90IGFkdmlzYWJsZSB0byBlbmFibGUgdGhlc2Ugc2VydmljZXMgYnkgZGVmYXVsdCBzaW5jZSB0aGV5IGNhbiBjYXVzZQorIyBjb250aW51YWwgdGFyZ2V0IHJlYm9vdHMgaWYgdGhleSBlbmNvdW50ZXIgbmV0d29yayBwcm9ibGVtcy4KKyMKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKIFNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJwaG9yb21hdGljLWNsaWVudC5zZXJ2aWNlIHBob3JvbWF0aWMtc2VydmVyLnNlcnZpY2UiCisKIFJERVBFTkRTXyR7UE59ICs9ICJiYXNoIHB5dGhvbiBwaHAtY2xpIgogCiBGSUxFU18ke1BOfSArPSAiIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay93aGV0c3RvbmUvd2hldHN0b25lXzEuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay93aGV0c3RvbmUvd2hldHN0b25lXzEuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmFkMDRlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL3doZXRzdG9uZS93aGV0c3RvbmVfMS4yLmJiCkBAIC0wLDAgKzEsMjAgQEAKK0RFU0NSSVBUSU9OID0gIldoZXRzdG9uZSBiZW5jaG1hcmsgaXMgYSBzeW50aGV0aWMgYmVuY2htYXJrIGZvciBldmFsdWF0aW5nIHRoZSBwZXJmb3JtYW5jZSBvZiBjb21wdXRlcnMiCitTVU1NQVJZID0gIkNQVSBiZW5jaG1hcmsgdG8gbWVhc3VyZSBmbG9hdGluZyBwb2ludCBwZXJmb3JtYW5jZSIKKworTElDRU5TRSA9ICJQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSJmaWxlOi8vJHtXT1JLRElSfS93aGV0c3RvbmUuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTUyO21kNT1jNzk1ZWRjMTVlN2UxZDkyY2E4Zjg4YWQ3MTg0NDlmNSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm5ldGxpYi5vcmcvYmVuY2htYXJrL3doZXRzdG9uZS5jIgorU1JDX1VSSVttZDVzdW1dID0gImQ4ZWIyY2Q3MTA0YmI1YTEyZDYxNGFjNmQzZjFmOWZiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMzM2U0Y2VjYTA0MmMxNDZmNjNlZWM2MDU1NzNkMTZhZThiMDcxNjZjYmM0NGExN2JlYzFlYTk3YzZmMWVmYmYiCisKK1MgPSAiJHtXT1JLRElSfSIKKworZG9fY29tcGlsZSAoKSB7CisJJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30gLU9mYXN0IC1vIHdoZXRzdG9uZSB3aGV0c3RvbmUuYyAtbG0KK30KKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtRG0gMDc1NSB3aGV0c3RvbmUgJHtEfSR7YmluZGlyfS93aGV0c3RvbmUKK30KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaXRvb2wvYWNwaXRvb2xfMC41LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvYWNwaXRvb2wvYWNwaXRvb2xfMC41LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2FjcGl0b29sL2FjcGl0b29sXzAuNS4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvYWNwaXRvb2wvYWNwaXRvb2xfMC41LjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3B1ZnJlcXV0aWxzL2NwdWZyZXF1dGlscy8wMDAxLWRvbnQtdW5zZXQtY2ZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2NwdWZyZXF1dGlscy9jcHVmcmVxdXRpbHMvMDAwMS1kb250LXVuc2V0LWNmbGFncy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHVmcmVxdXRpbHMvY3B1ZnJlcXV0aWxzLzAwMDEtZG9udC11bnNldC1jZmxhZ3MucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9jcHVmcmVxdXRpbHMvY3B1ZnJlcXV0aWxzLzAwMDEtZG9udC11bnNldC1jZmxhZ3MucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3B1ZnJlcXV0aWxzL2NwdWZyZXF1dGlsc18wMDguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvY3B1ZnJlcXV0aWxzL2NwdWZyZXF1dGlsc18wMDguYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3B1ZnJlcXV0aWxzL2NwdWZyZXF1dGlsc18wMDguYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9jcHVmcmVxdXRpbHMvY3B1ZnJlcXV0aWxzXzAwOC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lZGFjLXV0aWxzL2VkYWMtdXRpbHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VkYWMtdXRpbHMvZWRhYy11dGlsc19naXQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZWRhYy11dGlscy9lZGFjLXV0aWxzX2dpdC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VkYWMtdXRpbHMvZWRhYy11dGlsc19naXQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZWRhYy11dGlscy9maWxlcy9hZGQtcmVzdGFydC10by1pbml0c2NyaXB0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VkYWMtdXRpbHMvZmlsZXMvYWRkLXJlc3RhcnQtdG8taW5pdHNjcmlwdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lZGFjLXV0aWxzL2ZpbGVzL2FkZC1yZXN0YXJ0LXRvLWluaXRzY3JpcHQucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZGFjLXV0aWxzL2ZpbGVzL2FkZC1yZXN0YXJ0LXRvLWluaXRzY3JpcHQucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZWRhYy11dGlscy9maWxlcy9lZGFjLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWRhYy11dGlscy9maWxlcy9lZGFjLnNlcnZpY2UKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZWRhYy11dGlscy9maWxlcy9lZGFjLnNlcnZpY2UKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZGFjLXV0aWxzL2ZpbGVzL2VkYWMuc2VydmljZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lZGFjLXV0aWxzL2ZpbGVzL21ha2UtaW5pdC1zY3JpcHQtYmUtYWJsZS10by1hdXRvbWF0aWNhbGx5LWxvYWQtRURBQy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWRhYy11dGlscy9maWxlcy9tYWtlLWluaXQtc2NyaXB0LWJlLWFibGUtdG8tYXV0b21hdGljYWxseS1sb2FkLUVEQUMtLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VkYWMtdXRpbHMvZmlsZXMvbWFrZS1pbml0LXNjcmlwdC1iZS1hYmxlLXRvLWF1dG9tYXRpY2FsbHktbG9hZC1FREFDLS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VkYWMtdXRpbHMvZmlsZXMvbWFrZS1pbml0LXNjcmlwdC1iZS1hYmxlLXRvLWF1dG9tYXRpY2FsbHktbG9hZC1FREFDLS5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpYm9vdG1nci9lZmlib290bWdyXzAuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWZpYm9vdG1nci9lZmlib290bWdyXzAuMTUuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaWJvb3RtZ3IvZWZpYm9vdG1ncl8wLjE1LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWZpYm9vdG1nci9lZmlib290bWdyXzAuMTUuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMS1lZml2YXItZHAuaC1BZGQtV3Vua25vd24tYXR0cmlidXRlcy13aGVuLXVzaW5nLWNsYW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvMDAwMS1lZml2YXItZHAuaC1BZGQtV3Vua25vd24tYXR0cmlidXRlcy13aGVuLXVzaW5nLWNsYW5nLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggNjUlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMS1lZml2YXItZHAuaC1BZGQtV3Vua25vd24tYXR0cmlidXRlcy13aGVuLXVzaW5nLWNsYW5nLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWZpdmFyL2VmaXZhci8wMDAxLWVmaXZhci1kcC5oLUFkZC1XdW5rbm93bi1hdHRyaWJ1dGVzLXdoZW4tdXNpbmctY2xhbmcucGF0Y2gKaW5kZXggMWI4ODE1ZS4uYjRjZTEzMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci8wMDAxLWVmaXZhci1kcC5oLUFkZC1XdW5rbm93bi1hdHRyaWJ1dGVzLXdoZW4tdXNpbmctY2xhbmcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvMDAwMS1lZml2YXItZHAuaC1BZGQtV3Vua25vd24tYXR0cmlidXRlcy13aGVuLXVzaW5nLWNsYW5nLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAzZDQzYzVlZmRiNjMyZGE1ZDczODdkY2FkY2U0ZTg3YjgzOTI5YzY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkNjVjMzI1ZGQ4NjgxZWRmMmVlMzMzMmVlYjBhNTQ3MjI5YzdmZmI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMjQgQXVnIDIwMTcgMTU6NTQ6NDcgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gZWZpdmFyLWRwLmg6IEFkZCAtV3Vua25vd24tYXR0cmlidXRlcyB3aGVuIHVzaW5nIGNsYW5nCkBAIC03LDE1ICs3LDE2IEBACiBub25udWxsIHBhcmFtZXRlciAnZHAnIHdpbGwgZXZhbHVhdGUgdG8gJ3RydWUnIG9uIGZpcnN0IGVuY291bnRlcgogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL2luY2x1ZGUvZWZpdmFyL2VmaXZhci1kcC5oIHwgMTIgKysrKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKIAotSW5kZXg6IGdpdC9zcmMvaW5jbHVkZS9lZml2YXIvZWZpdmFyLWRwLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9zcmMvaW5jbHVkZS9lZml2YXIvZWZpdmFyLWRwLmgKLSsrKyBnaXQvc3JjL2luY2x1ZGUvZWZpdmFyL2VmaXZhci1kcC5oCi1AQCAtNzgzLDkgKzc4MywxNCBAQCBleHRlcm4gaW50IGVmaWRwX2FwcGVuZF9pbnN0YW5jZShjb25zdF9lCistLS0KKyBzcmMvaW5jbHVkZS9lZml2YXIvZWZpdmFyLWRwLmggfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZWZpdmFyL2VmaXZhci1kcC5oIGIvc3JjL2luY2x1ZGUvZWZpdmFyL2VmaXZhci1kcC5oCitpbmRleCAzYTUwOWI3Li5jMTQwZThkIDEwMDY0NAorLS0tIGEvc3JjL2luY2x1ZGUvZWZpdmFyL2VmaXZhci1kcC5oCisrKysgYi9zcmMvaW5jbHVkZS9lZml2YXIvZWZpdmFyLWRwLmgKK0BAIC03ODMsOSArNzgzLDE0IEBAIGV4dGVybiBpbnQgZWZpZHBfYXBwZW5kX2luc3RhbmNlKGNvbnN0X2VmaWRwIGRwLCBjb25zdF9lZmlkcCBkcGksIGVmaWRwICpvdXQpOwogICAqIHRob3VnaCBvbGRlciBvciBvdGhlciBjb21waWxlcnMgbWlnaHQganVzdCBpZ25vcmUgdGhhdCBhdHRyaWJ1dGUgaWYgdGhleQogICAqIGRvbid0IHN1cHBvcnQgaXQuICBVZ2guCiAgICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDEtZWZpdmFyLWZpeC1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyLzAwMDEtZWZpdmFyLWZpeC1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDgwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDEtZWZpdmFyLWZpeC1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvMDAwMS1lZml2YXItZml4LWZvci1jcm9zcy1jb21waWxlLnBhdGNoCmluZGV4IDZmNmNhNjQuLjI1MWU1MGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMS1lZml2YXItZml4LWZvci1jcm9zcy1jb21waWxlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyLzAwMDEtZWZpdmFyLWZpeC1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gOWEzYzQ4MGFmNjUzYjM3ZTYyZDFiZTA0ZDQ5ZmU3YTYwYTgwMTY4ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTkxMTVkOWU2ZjBmNjJkNmJiNzM1Y2UzNjk4ODU4ZDFmODlmOGQ3MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgogRGF0ZTogRnJpLCAyNSBTZXAgMjAxNSAxODoxNDozMSArMDgwMAotU3ViamVjdDogW1BBVENIIDEvMl0gZWZpdmFyOiBmaXggZm9yIGNyb3NzIGNvbXBpbGUKK1N1YmplY3Q6IFtQQVRDSF0gZWZpdmFyOiBmaXggZm9yIGNyb3NzIGNvbXBpbGUKIAogSXQgYnVpbGRzIGFuZCBjYWxscyBlbGYgZmlsZSBtYWtlZ3VpZHMgdG8gZ2VuZXJhdGUgYSBoZWFkZXIgZmlsZSB3aGljaAogZG9lc24ndCB3b3JrIGZvciBjcm9zcyBjb21waWxlLiBGaXggaXQuCkBAIC0xNiwxMCArMTYsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCi1pbmRleCA1ZmM3ODg3Li4xODI5ZDIyIDEwMDY0NAoraW5kZXggMGMxNjU5Ny4uZGNjN2ZjOCAxMDA2NDQKIC0tLSBhL3NyYy9NYWtlZmlsZQogKysrIGIvc3JjL01ha2VmaWxlCi1AQCAtMjksOCArMjksOCBAQCBhbGwgOiBkZXBzICQoVEFSR0VUUykKK0BAIC00MCw4ICs0MCw4IEBAIGFiaWNoZWNrIDogJChwYXRzdWJzdCAlLnNvLCUuYWJpY2hlY2ssJChMSUJUQVJHRVRTKSkKICAuL2d1aWQtc3ltYm9scy5jIDogaW5jbHVkZS9lZml2YXIvZWZpdmFyLWd1aWRzLmgKICAuL2d1aWRzLmJpbiA6IGluY2x1ZGUvZWZpdmFyL2VmaXZhci1ndWlkcy5oCiAgLi9uYW1lcy5iaW4gOiBpbmNsdWRlL2VmaXZhci9lZml2YXItZ3VpZHMuaApAQCAtMzAsNiArMzAsMyBAQAogIAkJZ3VpZC1zeW1ib2xzLmMgaW5jbHVkZS9lZml2YXIvZWZpdmFyLWd1aWRzLmgKICAKICBtYWtlZ3VpZHMgOiBDUFBGTEFHUys9LURFRklWQVJfQlVJTERfRU5WSVJPTk1FTlQKLS0tIAotMi40LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci8wMDAxLW1ha2VndWlkcy1Eby1ub3QtdXNlLV9fYnN3YXBfY29uc3RhbnRfLTE2LTMyLW1hY3Jvcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyLzAwMDEtbWFrZWd1aWRzLURvLW5vdC11c2UtX19ic3dhcF9jb25zdGFudF8tMTYtMzItbWFjcm9zLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggOTMlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMS1tYWtlZ3VpZHMtRG8tbm90LXVzZS1fX2Jzd2FwX2NvbnN0YW50Xy0xNi0zMi1tYWNyb3MucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyLzAwMDEtbWFrZWd1aWRzLURvLW5vdC11c2UtX19ic3dhcF9jb25zdGFudF8tMTYtMzItbWFjcm9zLnBhdGNoCmluZGV4IDczYTc3MjEuLjJhNmViMDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwMS1tYWtlZ3VpZHMtRG8tbm90LXVzZS1fX2Jzd2FwX2NvbnN0YW50Xy0xNi0zMi1tYWNyb3MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvMDAwMS1tYWtlZ3VpZHMtRG8tbm90LXVzZS1fX2Jzd2FwX2NvbnN0YW50Xy0xNi0zMi1tYWNyb3MucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDk4YjMzZDQxOTM5OTg2ODdhYTNhNzhjMDk3ZjdiZDRjMzkzZTBjODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGRkNDI5MTI2NWI3YjNkN2Q3ZmZhMWQ4YWRmMzI3ODFhZTI1ZGJmZWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU2F0LCAxNSBKdWwgMjAxNyAwMDoyOTo0MiAtMDcwMAogU3ViamVjdDogW1BBVENIXSBtYWtlZ3VpZHM6IERvIG5vdCB1c2UgX19ic3dhcF9jb25zdGFudF97MTZ8MzJ9IG1hY3JvcwpAQCAtNiw2ICs2LDcgQEAKIG5vdCBhdmFpbGFibGUgb24gbXVzbAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBzcmMvbWFrZWd1aWRzLmMgfCA4ICsrKystLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKQEAgLTMyLDYgKzMzLDMgQEAKICAjZW5kaWZcblwKICAiIiIpOwogIAotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci8wMDAzLWVmaXZhci1maXgtZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWZpdmFyL2VmaXZhci8wMDAzLWVmaXZhci1maXgtZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2gKc2ltaWxhcml0eSBpbmRleCA4NCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci8wMDAzLWVmaXZhci1maXgtZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyLzAwMDMtZWZpdmFyLWZpeC1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaAppbmRleCAzZjQzZjJhLi44MzEwNWZlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDMtZWZpdmFyLWZpeC1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWZpdmFyL2VmaXZhci8wMDAzLWVmaXZhci1maXgtZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDdlYWQyOWNhNmJiNWUyODBhZTA3NTUxY2MzNTIxMjgxZWNmNzM2ODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGRlYTRhNTU3MTQyNDliMjczNGEzNjcwMTEyMGZkMjJjOTFjNjRlYzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBTYXQsIDcgTWF5IDIwMTYgMDI6MDY6NDcgLTA0MDAKIFN1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGU6IGZpeCBlZml2YXIucGMgbm90IGZvdW5kCkBAIC0yMCwxNyArMjAsMTggQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHNyYy9NYWtlZmlsZSB8IDQgKysrLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZSBiL3NyYy9NYWtlZmlsZQotaW5kZXggYzdhMGNhMy4uYWQ5YzQyNyAxMDA2NDQKK2luZGV4IGRjYzdmYzguLjY5MWFhOGEgMTAwNjQ0CiAtLS0gYS9zcmMvTWFrZWZpbGUKICsrKyBiL3NyYy9NYWtlZmlsZQotQEAgLTc4LDcgKzc4LDkgQEAgaW5zdGFsbCA6IGFsbAotIAkJbG4gLWZzICQoeCkuJChWRVJTSU9OKSAkKERFU1RESVIpJChsaWJkaXIpLyQoeCkuJChNQUpPUl9WRVJTSU9OKTtcCi0gCQlsbiAtZnMgJCh4KS4kKFZFUlNJT04pICQoREVTVERJUikkKGxpYmRpcikvJCh4KTsgKQorQEAgLTk0LDcgKzk0LDkgQEAgaW5zdGFsbCA6IGFsbAorIAkJbG4gLWZzICQoeCkuMS4kKFZFUlNJT04pICQoREVTVERJUikkKGxpYmRpcikvJCh4KSA7XAorIAkJKQogIAkkKElOU1RBTEwpIC1kIC1tIDc1NSAkKERFU1RESVIpJChQQ0RJUikKIC0JJChmb3JlYWNoIHgsICQoUENUQVJHRVRTKSwgJChJTlNUQUxMKSAtbSA2NDQgJCh4KSAkKERFU1RESVIpJChQQ0RJUikgOykKICsJJChmb3JlYWNoIHgsICQoUENUQVJHRVRTKSwgJChJTlNUQUxMKSAtbSA2NDQgJChUT1BESVIpL3NyYy8kKHgpLmluICQoREVTVERJUikkKFBDRElSKS8kKHgpIDtcCkBAIC0zOSw2ICs0MCwzIEBACiAgCSQoSU5TVEFMTCkgLWQgLW0gNzU1ICQoREVTVERJUikkKGluY2x1ZGVkaXIpL2VmaXZhcgogIAkkKGZvcmVhY2ggeCwgJCh3aWxkY2FyZCAkKFRPUERJUikvc3JjL2luY2x1ZGUvZWZpdmFyLyouaCksICQoSU5TVEFMTCkgLW0gNjQ0ICQoeCkgJChERVNURElSKSQoaW5jbHVkZWRpcikvZWZpdmFyLyQobm90ZGlyICQoeCkpOykKICAJJChJTlNUQUxMKSAtZCAtbSA3NTUgJChERVNURElSKSQoYmluZGlyKQotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyLzAwMDQtZml4LXVua25vdy1vcHRpb24tZm9yLWdvbGQtbGlua2VyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvMDAwNC1maXgtdW5rbm93LW9wdGlvbi1mb3ItZ29sZC1saW5rZXIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvMDAwNC1maXgtdW5rbm93LW9wdGlvbi1mb3ItZ29sZC1saW5rZXIucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyLzAwMDQtZml4LXVua25vdy1vcHRpb24tZm9yLWdvbGQtbGlua2VyLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyL2FsbG93LW11bHRpLWRlZmluaXRpb25zLWZvci1uYXRpdmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWZpdmFyL2VmaXZhci9hbGxvdy1tdWx0aS1kZWZpbml0aW9ucy1mb3ItbmF0aXZlLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggNjIlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvYWxsb3ctbXVsdGktZGVmaW5pdGlvbnMtZm9yLW5hdGl2ZS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvYWxsb3ctbXVsdGktZGVmaW5pdGlvbnMtZm9yLW5hdGl2ZS5wYXRjaAppbmRleCA4N2Y1NTU1Li5mODhhZjFmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyL2FsbG93LW11bHRpLWRlZmluaXRpb25zLWZvci1uYXRpdmUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvYWxsb3ctbXVsdGktZGVmaW5pdGlvbnMtZm9yLW5hdGl2ZS5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gYzgwMWRjYjAzZDQyZWI1MzNhOWJlYWQwYjM5N2Q3Y2U0ZmM1YTZmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxMCBBdWcgMjAxNiAxNzo0OTo1MCArMDgwMAorU3ViamVjdDogW1BBVENIXSBhbGxvdyBtdWx0aSBkZWZpbml0aW9ucyBmb3IgbmF0aXZlCisKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBJdCBmYWlscyB0byBjcmVhdGUgLnNvIGZpbGUgd2hlbiBidWlsZCBlZml2YXItbmF0aXZlOgpAQCAtOCwxNiArMTMsMjAgQEAKIEFkZCBsaW5rIG9wdGlvbiAnLXogbXVsZGVmcycgdG8gZml4IGl0LgogCiBTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKwogLS0tCisgTWFrZS5ydWxlcyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCiBkaWZmIC0tZ2l0IGEvTWFrZS5ydWxlcyBiL01ha2UucnVsZXMKLWluZGV4IGQ5YzA2MDkuLjg3NGJjZTAgMTAwNjQ0CitpbmRleCA4OGI5YWE3Li43OTkzMzJmIDEwMDY0NAogLS0tIGEvTWFrZS5ydWxlcwogKysrIGIvTWFrZS5ydWxlcwogQEAgLTIwLDYgKzIwLDcgQEAgaW5jbHVkZSAkKFRPUERJUikvTWFrZS52ZXJzaW9uCiAgCSQoQ0NMRCkgJChjY2xkZmxhZ3MpICQoQ1BQRkxBR1MpICQoU09GTEFHUykgXAotIAkgIC1XbCwtc29uYW1lLCRALiQoTUFKT1JfVkVSU0lPTikgXAorIAkgIC1XbCwtc29uYW1lLCRALjEgXAogIAkgIC1XbCwtLXZlcnNpb24tc2NyaXB0PSQoTUFQKSBcCiArCSAgLVdsLC16LG11bGRlZnMgXAogIAkgIC1vICRAICReICQoTERMSUJTKQogIAotICUubyA6ICUuYworICUuYWJpeG1sIDogJS5zbwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci9maXgtY29tcGlsZS1mYWlsdXJlLXdpdGgtaG9zdC1nY2MtNC42LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvZml4LWNvbXBpbGUtZmFpbHVyZS13aXRoLWhvc3QtZ2NjLTQuNi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDg2JQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyL2ZpeC1jb21waWxlLWZhaWx1cmUtd2l0aC1ob3N0LWdjYy00LjYucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyL2ZpeC1jb21waWxlLWZhaWx1cmUtd2l0aC1ob3N0LWdjYy00LjYucGF0Y2gKaW5kZXggZTNmYTJlMS4uZGJjOWE1NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci9maXgtY29tcGlsZS1mYWlsdXJlLXdpdGgtaG9zdC1nY2MtNC42LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyL2ZpeC1jb21waWxlLWZhaWx1cmUtd2l0aC1ob3N0LWdjYy00LjYucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDEzNjEyMjVhYmJhYmE4Nzg5NjBmOTcwZGYzOWE0NTcwYmJjMzk1NTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDNlZGNlNmEwMDE5YmNiOTBmZWJjMWY2NTRiNWIyZTJiYWQ1YzU5YmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUaHUsIDI2IE1heSAyMDE2IDIxOjUwOjAxIC0wNDAwCiBTdWJqZWN0OiBbUEFUQ0hdIGZpeCBjb21waWxlIGZhaWx1cmUgd2l0aCBvbGRlciBob3N0IGdjYyAoPD00LjYpCkBAIC0xNiwxNCArMTYsMTUgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKIC0tLQogIGdjYy5zcGVjcyB8IDQgKystLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBnaXQvZ2NjLnNwZWNzCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvZ2NjLnNwZWNzCi0rKysgZ2l0L2djYy5zcGVjcworZGlmZiAtLWdpdCBhL2djYy5zcGVjcyBiL2djYy5zcGVjcworaW5kZXggNDVkNDNkMS4uZjFjNjk0NCAxMDA2NDQKKy0tLSBhL2djYy5zcGVjcworKysrIGIvZ2NjLnNwZWNzCiBAQCAtMiwxMyArMiwxMyBAQAogICsgLURfR05VX1NPVVJDRQogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvbXVzbC1zdHJuZHVwYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyL211c2wtc3RybmR1cGEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg2NGFjNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyL211c2wtc3RybmR1cGEucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSA4MDAwYjlhZmM4NTg0NzI5MTJhYWNlOTg1MDA0YjQ0ZjhlYjQ2N2UwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTggQXVnIDIwMTcgMDk6NDk6NDkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3VwcG9ydCBtdXNsCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgc3JjL2xpbnV4LmMgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvbGludXguYyBiL3NyYy9saW51eC5jCitpbmRleCAzNGVkNDc5Li4xMzA0ZjJiIDEwMDY0NAorLS0tIGEvc3JjL2xpbnV4LmMKKysrKyBiL3NyYy9saW51eC5jCitAQCAtNDAsNiArNDAsMTAgQEAKKyAjaW5jbHVkZSA8ZWZpdmFyLmg+CisgI2luY2x1ZGUgPGVmaWJvb3QuaD4KKyAKKysjaWYgIWRlZmluZWQoX19HTElCQ19fKQorKyNkZWZpbmUgc3RybmR1cGEoeCxzKSBzdHJuY3B5KGFsbG9jYShzdHJsZW4oeCkrMSkseCxzKQorKyNlbmRpZgorKworICNpbmNsdWRlICJkcC5oIgorICNpbmNsdWRlICJsaW51eC5oIgorICNpbmNsdWRlICJ1dGlsLmgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyXzAuMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWZpdmFyL2VmaXZhcl8wLjMxLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9lZml2YXIvZWZpdmFyXzAuMzEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyXzAuMzEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9mbGFzaHJvbS9mbGFzaHJvbS8wMDAxLXBsYXRmb3JtLUFkZC1yaXNjdi10by1rbm93bi1wbGF0Zm9ybXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZmxhc2hyb20vZmxhc2hyb20vMDAwMS1wbGF0Zm9ybS1BZGQtcmlzY3YtdG8ta25vd24tcGxhdGZvcm1zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiYTY5YTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZmxhc2hyb20vZmxhc2hyb20vMDAwMS1wbGF0Zm9ybS1BZGQtcmlzY3YtdG8ta25vd24tcGxhdGZvcm1zLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gZDJhMjhkY2RiZDEwNTFkMmY0ODMyMGUyZWRhMzM5MzU4MWZlMDUxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDE3IE1hciAyMDE4IDIzOjA4OjI5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHBsYXRmb3JtOiBBZGQgcmlzY3YgdG8ga25vd24gcGxhdGZvcm1zCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL3Jldmlldy5jb3JlYm9vdC5vcmcvIy9jL2ZsYXNocm9tLysvMjUyNjAvXQorIHBsYXRmb3JtLmggfCA1ICsrKystCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcGxhdGZvcm0uaCBiL3BsYXRmb3JtLmgKK2luZGV4IGIyZmRjZDAuLjJjYWRiYjMgMTAwNjQ0CistLS0gYS9wbGF0Zm9ybS5oCisrKysgYi9wbGF0Zm9ybS5oCitAQCAtNjksNiArNjksOSBAQAorICNlbGlmIGRlZmluZWQgKF9fbTY4a19fKQorIAkjZGVmaW5lIF9fRkxBU0hST01fQVJDSF9fICJtNjhrIgorIAkjZGVmaW5lIElTX002OEsgMQorKyNlbGlmIGRlZmluZWQgKF9fcmlzY3YpCisrCSNkZWZpbmUgX19GTEFTSFJPTV9BUkNIX18gInJpc2N2IgorKwkjZGVmaW5lIElTX1JJU0NWIDEKKyAjZWxpZiBkZWZpbmVkIChfX3NoX18pCisgCSNkZWZpbmUgX19GTEFTSFJPTV9BUkNIX18gInNoIgorIAkjZGVmaW5lIElTX1NIIDEKK0BAIC03Nyw3ICs4MCw3IEBACisgCSNkZWZpbmUgSVNfUzM5MCAxCisgI2VuZGlmCisgCistI2lmICEoSVNfWDg2IHx8IElTX01JUFMgfHwgSVNfUFBDIHx8IElTX0FSTSB8fCBJU19TUEFSQyB8fCBJU19BTFBIQSB8fCBJU19IUFBBIHx8IElTX002OEsgfHwgSVNfU0ggfHwgSVNfUzM5MCkKKysjaWYgIShJU19YODYgfHwgSVNfTUlQUyB8fCBJU19QUEMgfHwgSVNfQVJNIHx8IElTX1NQQVJDIHx8IElTX0FMUEhBIHx8IElTX0hQUEEgfHwgSVNfTTY4SyB8fCBJU19SSVNDViB8fCBJU19TSCB8fCBJU19TMzkwKQorICNlcnJvciBVbmtub3duIGFyY2hpdGVjdHVyZQorICNlbmRpZgorIAorLS0gCisyLjE2LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vc3N0MjYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZmxhc2hyb20vZmxhc2hyb20vc3N0MjYucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tL3NzdDI2LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZmxhc2hyb20vZmxhc2hyb20vc3N0MjYucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9mbGFzaHJvbS9mbGFzaHJvbV8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZmxhc2hyb20vZmxhc2hyb21fMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllYWM4NzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZmxhc2hyb20vZmxhc2hyb21fMS4wLmJiCkBAIC0wLDAgKzEsMTkgQEAKK0RFU0NSSVBUSU9OID0gImZsYXNocm9tIGlzIGEgdXRpbGl0eSBmb3IgaWRlbnRpZnlpbmcsIHJlYWRpbmcsIHdyaXRpbmcsIHZlcmlmeWluZyBhbmQgZXJhc2luZyBmbGFzaCBjaGlwcyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitIT01FUEFHRSA9ICJodHRwOi8vZmxhc2hyb20ub3JnIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKK0RFUEVORFMgPSAicGNpdXRpbHMgbGlidXNiIGxpYnVzYi1jb21wYXQiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZC5mbGFzaHJvbS5vcmcvcmVsZWFzZXMvZmxhc2hyb20tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9zc3QyNi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBsYXRmb3JtLUFkZC1yaXNjdi10by1rbm93bi1wbGF0Zm9ybXMucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNDJkOTk5OTkwYzczNWQ4ODY1MzYyN2NlZmNjMTNiOWEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzcwMmZhMjE1YmE1ZmI1YWY4ZTU0Yzg1MmQyMzk4OTljZmExMzg5MTk0YzFlNTFjYjJhMTcwYzRkYzlkZWU2NCIKKworaW5oZXJpdCBwa2djb25maWcKKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIFBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IGluc3RhbGwKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMtY29uZmlnL2ZhbmNvbnRyb2wgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnMtY29uZmlnL2ZhbmNvbnRyb2wKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMtY29uZmlnL2ZhbmNvbnRyb2wKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29ycy1jb25maWcvZmFuY29udHJvbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sbV9zZW5zb3JzL2xtc2Vuc29ycy1jb25maWcvc2Vuc29yZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29ycy1jb25maWcvc2Vuc29yZApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sbV9zZW5zb3JzL2xtc2Vuc29ycy1jb25maWcvc2Vuc29yZApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2xtX3NlbnNvcnMvbG1zZW5zb3JzLWNvbmZpZy9zZW5zb3JkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzLWNvbmZpZy9zZW5zb3JkLmNnaSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29ycy1jb25maWcvc2Vuc29yZC5jZ2kKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMtY29uZmlnL3NlbnNvcmQuY2dpCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnMtY29uZmlnL3NlbnNvcmQuY2dpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzLWNvbmZpZy9zZW5zb3JkLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnMtY29uZmlnL3NlbnNvcmQuY29uZgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sbV9zZW5zb3JzL2xtc2Vuc29ycy1jb25maWcvc2Vuc29yZC5jb25mCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnMtY29uZmlnL3NlbnNvcmQuY29uZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sbV9zZW5zb3JzL2xtc2Vuc29ycy1jb25maWcvc2Vuc29ycy5jb25mIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2xtX3NlbnNvcnMvbG1zZW5zb3JzLWNvbmZpZy9zZW5zb3JzLmNvbmYKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMtY29uZmlnL3NlbnNvcnMuY29uZgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2xtX3NlbnNvcnMvbG1zZW5zb3JzLWNvbmZpZy9zZW5zb3JzLmNvbmYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMtY29uZmlnXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29ycy1jb25maWdfMS4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzLWNvbmZpZ18xLjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29ycy1jb25maWdfMS4wLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzLzAwMDEtbG1zZW5zb3JzLXNlbnNvcnMtZGV0ZWN0LXByaW50LWEtc3BlY2lhbC1tZXNzYWdlLXdoZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29ycy8wMDAxLWxtc2Vuc29ycy1zZW5zb3JzLWRldGVjdC1wcmludC1hLXNwZWNpYWwtbWVzc2FnZS13aGUucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMvMDAwMS1sbXNlbnNvcnMtc2Vuc29ycy1kZXRlY3QtcHJpbnQtYS1zcGVjaWFsLW1lc3NhZ2Utd2hlLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnMvMDAwMS1sbXNlbnNvcnMtc2Vuc29ycy1kZXRlY3QtcHJpbnQtYS1zcGVjaWFsLW1lc3NhZ2Utd2hlLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzLzAwMDEtcHJvZy1Eby1ub3QtbGltaXQtc3lzLWlvLmgtaGVhZGVyLWluY2x1ZGUtdG8tanVzdC1nbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29ycy8wMDAxLXByb2ctRG8tbm90LWxpbWl0LXN5cy1pby5oLWhlYWRlci1pbmNsdWRlLXRvLWp1c3QtZ2wucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMvMDAwMS1wcm9nLURvLW5vdC1saW1pdC1zeXMtaW8uaC1oZWFkZXItaW5jbHVkZS10by1qdXN0LWdsLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnMvMDAwMS1wcm9nLURvLW5vdC1saW1pdC1zeXMtaW8uaC1oZWFkZXItaW5jbHVkZS10by1qdXN0LWdsLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzL2ZhbmNvbnRyb2wuaW5pdCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29ycy9mYW5jb250cm9sLmluaXQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMvZmFuY29udHJvbC5pbml0CnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnMvZmFuY29udHJvbC5pbml0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzL3NlbnNvcmQuaW5pdCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29ycy9zZW5zb3JkLmluaXQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG1fc2Vuc29ycy9sbXNlbnNvcnMvc2Vuc29yZC5pbml0CnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnMvc2Vuc29yZC5pbml0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzXzMuNC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2xtX3NlbnNvcnMvbG1zZW5zb3JzXzMuNC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xtX3NlbnNvcnMvbG1zZW5zb3JzXzMuNC4wLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnNfMy40LjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xzc2NpL2xzc2NzaV8wLjI4LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2xzc2NpL2xzc2NzaV8wLjI4LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sc3NjaS9sc3Njc2lfMC4yOC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2xzc2NpL2xzc2NzaV8wLjI4LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkLzAwMDEtaG9zdGFwZC1Bdm9pZC1rZXktcmVpbnN0YWxsYXRpb24taW4tRlQtaGFuZHNoYWtlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC8wMDAxLWhvc3RhcGQtQXZvaWQta2V5LXJlaW5zdGFsbGF0aW9uLWluLUZULWhhbmRzaGFrZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTM1YTNjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC8wMDAxLWhvc3RhcGQtQXZvaWQta2V5LXJlaW5zdGFsbGF0aW9uLWluLUZULWhhbmRzaGFrZS5wYXRjaApAQCAtMCwwICsxLDE3NyBAQAorRnJvbSAwNDRhZTM1YzU2OTRjMzlhNGFjYTJhMzM1MDJjYzM4OTdlODhmNzllIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0aHkgVmFuaG9lZiA8TWF0aHkuVmFuaG9lZkBjcy5rdWxldXZlbi5iZT4KK0RhdGU6IEZyaSwgMTQgSnVsIDIwMTcgMTU6MTU6MzUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzddIGhvc3RhcGQ6IEF2b2lkIGtleSByZWluc3RhbGxhdGlvbiBpbiBGVCBoYW5kc2hha2UKKworRG8gbm90IHJlaW5zdGFsbCBUSyB0byB0aGUgZHJpdmVyIGR1cmluZyBSZWFzc29jaWF0aW9uIFJlc3BvbnNlIGZyYW1lCitwcm9jZXNzaW5nIGlmIHRoZSBmaXJzdCBhdHRlbXB0IG9mIHNldHRpbmcgdGhlIFRLIHN1Y2NlZWRlZC4gVGhpcyBhdm9pZHMKK2lzc3VlcyByZWxhdGVkIHRvIGNsZWFyaW5nIHRoZSBUWC9SWCBQTiB0aGF0IGNvdWxkIHJlc3VsdCBpbiByZXVzaW5nCitzYW1lIFBOIHZhbHVlcyBmb3IgdHJhbnNtaXR0ZWQgZnJhbWVzIChlLmcuLCBkdWUgdG8gQ0NNIG5vbmNlIHJldXNlIGFuZAorYWxzbyBoaXR0aW5nIHJlcGxheSBwcm90ZWN0aW9uIG9uIHRoZSByZWNlaXZlcikgYW5kIGFjY2VwdGluZyByZXBsYXllZAorZnJhbWVzIG9uIFJYIHNpZGUuCisKK1RoaXMgaXNzdWUgd2FzIGludHJvZHVjZWQgYnkgdGhlIGNvbW1pdAorMGU4NGMyNTQzNGU2YTFmMjgzYzdiNGU2MmU0ODM3MjkwODViNzhkMiAoJ0ZUOiBGaXggUFRLIGNvbmZpZ3VyYXRpb24gaW4KK2F1dGhlbnRpY2F0b3InKSB3aGljaCBhbGxvd2VkIHdwYV9mdF9pbnN0YWxsX3B0aygpIHRvIGJlIGNhbGxlZCBtdWx0aXBsZQordGltZXMgd2l0aCB0aGUgc2FtZSBQVEsuIFdoaWxlIHRoZSBzZWNvbmQgY29uZmlndXJhdGlvbiBhdHRlbXB0IGlzCituZWVkZWQgd2l0aCBzb21lIGRyaXZlcnMsIGl0IG11c3QgYmUgZG9uZSBvbmx5IGlmIHRoZSBmaXJzdCBhdHRlbXB0CitmYWlsZWQuCisKK1NpZ25lZC1vZmYtYnk6IE1hdGh5IFZhbmhvZWYgPE1hdGh5LlZhbmhvZWZAY3Mua3VsZXV2ZW4uYmU+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFpoZW5nIFJ1b3FpbiA8emhlbmdycS5mbnN0QGNuLmZ1aml0c3UuY29tPgorLS0tCisgc3JjL2FwL2llZWU4MDJfMTEuYyAgfCAxNiArKysrKysrKysrKysrLS0tCisgc3JjL2FwL3dwYV9hdXRoLmMgICAgfCAxMSArKysrKysrKysrKworIHNyYy9hcC93cGFfYXV0aC5oICAgIHwgIDMgKystCisgc3JjL2FwL3dwYV9hdXRoX2Z0LmMgfCAxMCArKysrKysrKysrCisgc3JjL2FwL3dwYV9hdXRoX2kuaCAgfCAgMSArCisgNSBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2FwL2llZWU4MDJfMTEuYyBiL3NyYy9hcC9pZWVlODAyXzExLmMKK2luZGV4IDRlMDQxNjkuLjMzMzAzNWYgMTAwNjQ0CistLS0gYS9zcmMvYXAvaWVlZTgwMl8xMS5jCisrKysgYi9zcmMvYXAvaWVlZTgwMl8xMS5jCitAQCAtMTg0MSw2ICsxODQxLDcgQEAgc3RhdGljIGludCBhZGRfYXNzb2NpYXRlZF9zdGEoc3RydWN0IGhvc3RhcGRfZGF0YSAqaGFwZCwKKyB7CisgCXN0cnVjdCBpZWVlODAyMTFfaHRfY2FwYWJpbGl0aWVzIGh0X2NhcDsKKyAJc3RydWN0IGllZWU4MDIxMV92aHRfY2FwYWJpbGl0aWVzIHZodF9jYXA7CisrCWludCBzZXQgPSAxOworIAorIAkvKgorIAkgKiBSZW1vdmUgdGhlIFNUQSBlbnRyeSB0byBlbnN1cmUgdGhlIFNUQSBQUyBzdGF0ZSBnZXRzIGNsZWFyZWQgYW5kCitAQCAtMTg0OCw5ICsxODQ5LDE4IEBAIHN0YXRpYyBpbnQgYWRkX2Fzc29jaWF0ZWRfc3RhKHN0cnVjdCBob3N0YXBkX2RhdGEgKmhhcGQsCisgCSAqIEZULW92ZXItdGhlLURTLCB3aGVyZSBhIHN0YXRpb24gcmUtYXNzb2NpYXRlcyBiYWNrIHRvIHRoZSBzYW1lIEFQIGJ1dAorIAkgKiBza2lwcyB0aGUgYXV0aGVudGljYXRpb24gZmxvdywgb3IgaWYgd29ya2luZyB3aXRoIGEgZHJpdmVyIHRoYXQKKyAJICogZG9lcyBub3Qgc3VwcG9ydCBmdWxsIEFQIGNsaWVudCBzdGF0ZS4KKysJICoKKysJICogU2tpcCB0aGlzIGlmIHRoZSBTVEEgaGFzIGFscmVhZHkgY29tcGxldGVkIEZUIHJlYXNzb2NpYXRpb24gYW5kIHRoZQorKwkgKiBUSyBoYXMgYmVlbiBjb25maWd1cmVkIHNpbmNlIHRoZSBUWC9SWCBQTiBtdXN0IG5vdCBiZSByZXNldCB0byAwIGZvcgorKwkgKiB0aGUgc2FtZSBrZXkuCisgCSAqLworLQlpZiAoIXN0YS0+YWRkZWRfdW5hc3NvYykKKysJaWYgKCFzdGEtPmFkZGVkX3VuYXNzb2MgJiYKKysJICAgICghKHN0YS0+ZmxhZ3MgJiBXTEFOX1NUQV9BVVRIT1JJWkVEKSB8fAorKwkgICAgICF3cGFfYXV0aF9zdGFfZnRfdGtfYWxyZWFkeV9zZXQoc3RhLT53cGFfc20pKSkgeworIAkJaG9zdGFwZF9kcnZfc3RhX3JlbW92ZShoYXBkLCBzdGEtPmFkZHIpOworKwkJd3BhX2F1dGhfc21fZXZlbnQoc3RhLT53cGFfc20sIFdQQV9EUlZfU1RBX1JFTU9WRUQpOworKwkJc2V0ID0gMDsKKysJfQorIAorICNpZmRlZiBDT05GSUdfSUVFRTgwMjExTgorIAlpZiAoc3RhLT5mbGFncyAmIFdMQU5fU1RBX0hUKQorQEAgLTE4NzMsMTEgKzE4ODMsMTEgQEAgc3RhdGljIGludCBhZGRfYXNzb2NpYXRlZF9zdGEoc3RydWN0IGhvc3RhcGRfZGF0YSAqaGFwZCwKKyAJCQkgICAgc3RhLT5mbGFncyAmIFdMQU5fU1RBX1ZIVCA/ICZ2aHRfY2FwIDogTlVMTCwKKyAJCQkgICAgc3RhLT5mbGFncyB8IFdMQU5fU1RBX0FTU09DLCBzdGEtPnFvc2luZm8sCisgCQkJICAgIHN0YS0+dmh0X29wbW9kZSwgc3RhLT5wMnBfaWUgPyAxIDogMCwKKy0JCQkgICAgc3RhLT5hZGRlZF91bmFzc29jKSkgeworKwkJCSAgICBzZXQpKSB7CisgCQlob3N0YXBkX2xvZ2dlcihoYXBkLCBzdGEtPmFkZHIsCisgCQkJICAgICAgIEhPU1RBUERfTU9EVUxFX0lFRUU4MDIxMSwgSE9TVEFQRF9MRVZFTF9OT1RJQ0UsCisgCQkJICAgICAgICJDb3VsZCBub3QgJXMgU1RBIHRvIGtlcm5lbCBkcml2ZXIiLAorLQkJCSAgICAgICBzdGEtPmFkZGVkX3VuYXNzb2MgPyAic2V0IiA6ICJhZGQiKTsKKysJCQkgICAgICAgc2V0ID8gInNldCIgOiAiYWRkIik7CisgCisgCQlpZiAoc3RhLT5hZGRlZF91bmFzc29jKSB7CisgCQkJaG9zdGFwZF9kcnZfc3RhX3JlbW92ZShoYXBkLCBzdGEtPmFkZHIpOworZGlmZiAtLWdpdCBhL3NyYy9hcC93cGFfYXV0aC5jIGIvc3JjL2FwL3dwYV9hdXRoLmMKK2luZGV4IDM1ODcwODYuLjcwNzk3MWQgMTAwNjQ0CistLS0gYS9zcmMvYXAvd3BhX2F1dGguYworKysrIGIvc3JjL2FwL3dwYV9hdXRoLmMKK0BAIC0xNzQ1LDYgKzE3NDUsOSBAQCBpbnQgd3BhX2F1dGhfc21fZXZlbnQoc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSwgZW51bSB3cGFfZXZlbnQgZXZlbnQpCisgI2Vsc2UgLyogQ09ORklHX0lFRUU4MDIxMVIgKi8KKyAJCWJyZWFrOworICNlbmRpZiAvKiBDT05GSUdfSUVFRTgwMjExUiAqLworKwljYXNlIFdQQV9EUlZfU1RBX1JFTU9WRUQ6CisrCQlzbS0+dGtfYWxyZWFkeV9zZXQgPSBGQUxTRTsKKysJCXJldHVybiAwOworIAl9CisgCisgI2lmZGVmIENPTkZJR19JRUVFODAyMTFSCitAQCAtMzI1MCw2ICszMjUzLDE0IEBAIGludCB3cGFfYXV0aF9zdGFfd3BhX3ZlcnNpb24oc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSkKKyB9CisgCisgCisraW50IHdwYV9hdXRoX3N0YV9mdF90a19hbHJlYWR5X3NldChzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtKQorK3sKKysJaWYgKCFzbSB8fCAhd3BhX2tleV9tZ210X2Z0KHNtLT53cGFfa2V5X21nbXQpKQorKwkJcmV0dXJuIDA7CisrCXJldHVybiBzbS0+dGtfYWxyZWFkeV9zZXQ7CisrfQorKworKworIGludCB3cGFfYXV0aF9zdGFfY2xlYXJfcG1rc2Eoc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSwKKyAJCQkgICAgIHN0cnVjdCByc25fcG1rc2FfY2FjaGVfZW50cnkgKmVudHJ5KQorIHsKK2RpZmYgLS1naXQgYS9zcmMvYXAvd3BhX2F1dGguaCBiL3NyYy9hcC93cGFfYXV0aC5oCitpbmRleCAwZGU4ZDk3Li45NzQ2MWIwIDEwMDY0NAorLS0tIGEvc3JjL2FwL3dwYV9hdXRoLmgKKysrKyBiL3NyYy9hcC93cGFfYXV0aC5oCitAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgd3BhX3JlY2VpdmUoc3RydWN0IHdwYV9hdXRoZW50aWNhdG9yICp3cGFfYXV0aCwKKyAJCSB1OCAqZGF0YSwgc2l6ZV90IGRhdGFfbGVuKTsKKyBlbnVtIHdwYV9ldmVudCB7CisgCVdQQV9BVVRILCBXUEFfQVNTT0MsIFdQQV9ESVNBU1NPQywgV1BBX0RFQVVUSCwgV1BBX1JFQVVUSCwKKy0JV1BBX1JFQVVUSF9FQVBPTCwgV1BBX0FTU09DX0ZUCisrCVdQQV9SRUFVVEhfRUFQT0wsIFdQQV9BU1NPQ19GVCwgV1BBX0RSVl9TVEFfUkVNT1ZFRAorIH07Cisgdm9pZCB3cGFfcmVtb3ZlX3B0ayhzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtKTsKKyBpbnQgd3BhX2F1dGhfc21fZXZlbnQoc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSwgZW51bSB3cGFfZXZlbnQgZXZlbnQpOworQEAgLTI4MCw2ICsyODAsNyBAQCBpbnQgd3BhX2F1dGhfcGFpcndpc2Vfc2V0KHN0cnVjdCB3cGFfc3RhdGVfbWFjaGluZSAqc20pOworIGludCB3cGFfYXV0aF9nZXRfcGFpcndpc2Uoc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSk7CisgaW50IHdwYV9hdXRoX3N0YV9rZXlfbWdtdChzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtKTsKKyBpbnQgd3BhX2F1dGhfc3RhX3dwYV92ZXJzaW9uKHN0cnVjdCB3cGFfc3RhdGVfbWFjaGluZSAqc20pOworK2ludCB3cGFfYXV0aF9zdGFfZnRfdGtfYWxyZWFkeV9zZXQoc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSk7CisgaW50IHdwYV9hdXRoX3N0YV9jbGVhcl9wbWtzYShzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtLAorIAkJCSAgICAgc3RydWN0IHJzbl9wbWtzYV9jYWNoZV9lbnRyeSAqZW50cnkpOworIHN0cnVjdCByc25fcG1rc2FfY2FjaGVfZW50cnkgKgorZGlmZiAtLWdpdCBhL3NyYy9hcC93cGFfYXV0aF9mdC5jIGIvc3JjL2FwL3dwYV9hdXRoX2Z0LmMKK2luZGV4IDQyMjQyYTUuLmU2M2I5OWEgMTAwNjQ0CistLS0gYS9zcmMvYXAvd3BhX2F1dGhfZnQuYworKysrIGIvc3JjL2FwL3dwYV9hdXRoX2Z0LmMKK0BAIC03ODAsNiArNzgwLDE0IEBAIHZvaWQgd3BhX2Z0X2luc3RhbGxfcHRrKHN0cnVjdCB3cGFfc3RhdGVfbWFjaGluZSAqc20pCisgCQlyZXR1cm47CisgCX0KKyAKKysJaWYgKHNtLT50a19hbHJlYWR5X3NldCkgeworKwkJLyogTXVzdCBhdm9pZCBUSyByZWNvbmZpZ3VyYXRpb24gdG8gcHJldmVudCBjbGVhcmluZyBvZiBUWC9SWAorKwkJICogUE4gaW4gdGhlIGRyaXZlciAqLworKwkJd3BhX3ByaW50ZihNU0dfREVCVUcsCisrCQkJICAgIkZUOiBEbyBub3QgcmUtaW5zdGFsbCBzYW1lIFBUSyB0byB0aGUgZHJpdmVyIik7CisrCQlyZXR1cm47CisrCX0KKysKKyAJLyogRklYOiBhZGQgU1RBIGVudHJ5IHRvIGtlcm5lbC9kcml2ZXIgaGVyZT8gVGhlIHNldF9rZXkgd2lsbCBmYWlsCisgCSAqIG1vc3QgbGlrZWx5IHdpdGhvdXQgdGhpcy4uIEF0IHRoZSBtb21lbnQsIFNUQSBlbnRyeSBpcyBhZGRlZCBvbmx5CisgCSAqIGFmdGVyIGFzc29jaWF0aW9uIGhhcyBiZWVuIGNvbXBsZXRlZC4gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZAorQEAgLTc5Miw2ICs4MDAsNyBAQCB2b2lkIHdwYV9mdF9pbnN0YWxsX3B0ayhzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtKQorIAorIAkvKiBGSVg6IE1MTUUtU2V0UHJvdGVjdGlvbi5SZXF1ZXN0KFRBLCBUeF9SeCkgKi8KKyAJc20tPnBhaXJ3aXNlX3NldCA9IFRSVUU7CisrCXNtLT50a19hbHJlYWR5X3NldCA9IFRSVUU7CisgfQorIAorIAorQEAgLTg5OCw2ICs5MDcsNyBAQCBzdGF0aWMgaW50IHdwYV9mdF9wcm9jZXNzX2F1dGhfcmVxKHN0cnVjdCB3cGFfc3RhdGVfbWFjaGluZSAqc20sCisgCisgCXNtLT5wYWlyd2lzZSA9IHBhaXJ3aXNlOworIAlzbS0+UFRLX3ZhbGlkID0gVFJVRTsKKysJc20tPnRrX2FscmVhZHlfc2V0ID0gRkFMU0U7CisgCXdwYV9mdF9pbnN0YWxsX3B0ayhzbSk7CisgCisgCWJ1ZmxlbiA9IDIgKyBzaXplb2Yoc3RydWN0IHJzbl9tZGllKSArIDIgKyBzaXplb2Yoc3RydWN0IHJzbl9mdGllKSArCitkaWZmIC0tZ2l0IGEvc3JjL2FwL3dwYV9hdXRoX2kuaCBiL3NyYy9hcC93cGFfYXV0aF9pLmgKK2luZGV4IDcyYjdlYjMuLjdmZDhmMDUgMTAwNjQ0CistLS0gYS9zcmMvYXAvd3BhX2F1dGhfaS5oCisrKysgYi9zcmMvYXAvd3BhX2F1dGhfaS5oCitAQCAtNjUsNiArNjUsNyBAQCBzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgeworIAlzdHJ1Y3Qgd3BhX3B0ayBQVEs7CisgCUJvb2xlYW4gUFRLX3ZhbGlkOworIAlCb29sZWFuIHBhaXJ3aXNlX3NldDsKKysJQm9vbGVhbiB0a19hbHJlYWR5X3NldDsKKyAJaW50IGtleWNvdW50OworIAlCb29sZWFuIFBhaXI7CisgCXN0cnVjdCB3cGFfa2V5X3JlcGxheV9jb3VudGVyIHsKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkLzAwMDItUHJldmVudC1yZWluc3RhbGxhdGlvbi1vZi1hbi1hbHJlYWR5LWluLXVzZS1ncm91cC1rZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGQvMDAwMi1QcmV2ZW50LXJlaW5zdGFsbGF0aW9uLW9mLWFuLWFscmVhZHktaW4tdXNlLWdyb3VwLWtlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNTdiY2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkLzAwMDItUHJldmVudC1yZWluc3RhbGxhdGlvbi1vZi1hbi1hbHJlYWR5LWluLXVzZS1ncm91cC1rZS5wYXRjaApAQCAtMCwwICsxLDI1MyBAQAorRnJvbSBjNjIzY2M5NzNkZTUyNWY3NDExZGZmZTQzOGU5NTdiYTg2ZWY0NzMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0aHkgVmFuaG9lZiA8TWF0aHkuVmFuaG9lZkBjcy5rdWxldXZlbi5iZT4KK0RhdGU6IFdlZCwgMTIgSnVsIDIwMTcgMTY6MDM6MjQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzddIFByZXZlbnQgcmVpbnN0YWxsYXRpb24gb2YgYW4gYWxyZWFkeSBpbi11c2UgZ3JvdXAga2V5CisKK1RyYWNrIHRoZSBjdXJyZW50IEdUSyBhbmQgSUdUSyB0aGF0IGlzIGluIHVzZSBhbmQgd2hlbiByZWNlaXZpbmcgYQorKHBvc3NpYmx5IHJldHJhbnNtaXR0ZWQpIEdyb3VwIE1lc3NhZ2UgMSBvciBXTk0tU2xlZXAgTW9kZSBSZXNwb25zZSwgZG8KK25vdCBpbnN0YWxsIHRoZSBnaXZlbiBrZXkgaWYgaXQgaXMgYWxyZWFkeSBpbiB1c2UuIFRoaXMgcHJldmVudHMgYW4KK2F0dGFja2VyIGZyb20gdHJ5aW5nIHRvIHRyaWNrIHRoZSBjbGllbnQgaW50byByZXNldHRpbmcgb3IgbG93ZXJpbmcgdGhlCitzZXF1ZW5jZSBjb3VudGVyIGFzc29jaWF0ZWQgdG8gdGhlIGdyb3VwIGtleS4KKworU2lnbmVkLW9mZi1ieTogTWF0aHkgVmFuaG9lZiA8TWF0aHkuVmFuaG9lZkBjcy5rdWxldXZlbi5iZT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogWmhlbmcgUnVvcWluIDx6aGVuZ3JxLmZuc3RAY24uZnVqaXRzdS5jb20+CistLS0KKyBzcmMvY29tbW9uL3dwYV9jb21tb24uaCB8ICAxMSArKysrKworIHNyYy9yc25fc3VwcC93cGEuYyAgICAgIHwgMTE2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9yc25fc3VwcC93cGFfaS5oICAgIHwgICA0ICsrCisgMyBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vd3BhX2NvbW1vbi5oIGIvc3JjL2NvbW1vbi93cGFfY29tbW9uLmgKK2luZGV4IGFmMWQwZjAuLmQyMDAyODUgMTAwNjQ0CistLS0gYS9zcmMvY29tbW9uL3dwYV9jb21tb24uaAorKysrIGIvc3JjL2NvbW1vbi93cGFfY29tbW9uLmgKK0BAIC0yMTcsNiArMjE3LDE3IEBAIHN0cnVjdCB3cGFfcHRrIHsKKyAJc2l6ZV90IHRrX2xlbjsKKyB9OworIAorK3N0cnVjdCB3cGFfZ3RrIHsKKysJdTggZ3RrW1dQQV9HVEtfTUFYX0xFTl07CisrCXNpemVfdCBndGtfbGVuOworK307CisrCisrI2lmZGVmIENPTkZJR19JRUVFODAyMTFXCisrc3RydWN0IHdwYV9pZ3RrIHsKKysJdTggaWd0a1tXUEFfSUdUS19NQVhfTEVOXTsKKysJc2l6ZV90IGlndGtfbGVuOworK307CisrI2VuZGlmIC8qIENPTkZJR19JRUVFODAyMTFXICovCisgCisgLyogV1BBIElFIHZlcnNpb24gMQorICAqIDAwLTUwLWYyOjEgKE9VSTpPVUkgdHlwZSkKK2RpZmYgLS1naXQgYS9zcmMvcnNuX3N1cHAvd3BhLmMgYi9zcmMvcnNuX3N1cHAvd3BhLmMKK2luZGV4IDNjNDc4NzkuLjk1YmQ3YmUgMTAwNjQ0CistLS0gYS9zcmMvcnNuX3N1cHAvd3BhLmMKKysrKyBiL3NyYy9yc25fc3VwcC93cGEuYworQEAgLTcxNCw2ICs3MTQsMTUgQEAgc3RhdGljIGludCB3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2d0ayhzdHJ1Y3Qgd3BhX3NtICpzbSwKKyAJY29uc3QgdTggKl9ndGsgPSBnZC0+Z3RrOworIAl1OCBndGtfYnVmWzMyXTsKKyAKKysJLyogRGV0ZWN0IHBvc3NpYmxlIGtleSByZWluc3RhbGxhdGlvbiAqLworKwlpZiAoc20tPmd0ay5ndGtfbGVuID09IChzaXplX3QpIGdkLT5ndGtfbGVuICYmCisrCSAgICBvc19tZW1jbXAoc20tPmd0ay5ndGssIGdkLT5ndGssIHNtLT5ndGsuZ3RrX2xlbikgPT0gMCkgeworKwkJd3BhX2RiZyhzbS0+Y3R4LT5tc2dfY3R4LCBNU0dfREVCVUcsCisrCQkJIldQQTogTm90IHJlaW5zdGFsbGluZyBhbHJlYWR5IGluLXVzZSBHVEsgdG8gdGhlIGRyaXZlciAoa2V5aWR4PSVkIHR4PSVkIGxlbj0lZCkiLAorKwkJCWdkLT5rZXlpZHgsIGdkLT50eCwgZ2QtPmd0a19sZW4pOworKwkJcmV0dXJuIDA7CisrCX0KKysKKyAJd3BhX2hleGR1bXBfa2V5KE1TR19ERUJVRywgIldQQTogR3JvdXAgS2V5IiwgZ2QtPmd0aywgZ2QtPmd0a19sZW4pOworIAl3cGFfZGJnKHNtLT5jdHgtPm1zZ19jdHgsIE1TR19ERUJVRywKKyAJCSJXUEE6IEluc3RhbGxpbmcgR1RLIHRvIHRoZSBkcml2ZXIgKGtleWlkeD0lZCB0eD0lZCBsZW49JWQpIiwKK0BAIC03NDgsNiArNzU3LDkgQEAgc3RhdGljIGludCB3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2d0ayhzdHJ1Y3Qgd3BhX3NtICpzbSwKKyAJfQorIAlvc19tZW1zZXQoZ3RrX2J1ZiwgMCwgc2l6ZW9mKGd0a19idWYpKTsKKyAKKysJc20tPmd0ay5ndGtfbGVuID0gZ2QtPmd0a19sZW47CisrCW9zX21lbWNweShzbS0+Z3RrLmd0aywgZ2QtPmd0aywgc20tPmd0ay5ndGtfbGVuKTsKKysKKyAJcmV0dXJuIDA7CisgfQorIAorQEAgLTg1NCw2ICs4NjYsNDggQEAgc3RhdGljIGludCB3cGFfc3VwcGxpY2FudF9wYWlyd2lzZV9ndGsoc3RydWN0IHdwYV9zbSAqc20sCisgfQorIAorIAorKyNpZmRlZiBDT05GSUdfSUVFRTgwMjExVworK3N0YXRpYyBpbnQgd3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9pZ3RrKHN0cnVjdCB3cGFfc20gKnNtLAorKwkJCQkgICAgICAgY29uc3Qgc3RydWN0IHdwYV9pZ3RrX2tkZSAqaWd0aykKKyt7CisrCXNpemVfdCBsZW4gPSB3cGFfY2lwaGVyX2tleV9sZW4oc20tPm1nbXRfZ3JvdXBfY2lwaGVyKTsKKysJdTE2IGtleWlkeCA9IFdQQV9HRVRfTEUxNihpZ3RrLT5rZXlpZCk7CisrCisrCS8qIERldGVjdCBwb3NzaWJsZSBrZXkgcmVpbnN0YWxsYXRpb24gKi8KKysJaWYgKHNtLT5pZ3RrLmlndGtfbGVuID09IGxlbiAmJgorKwkgICAgb3NfbWVtY21wKHNtLT5pZ3RrLmlndGssIGlndGstPmlndGssIHNtLT5pZ3RrLmlndGtfbGVuKSA9PSAwKSB7CisrCQl3cGFfZGJnKHNtLT5jdHgtPm1zZ19jdHgsIE1TR19ERUJVRywKKysJCQkiV1BBOiBOb3QgcmVpbnN0YWxsaW5nIGFscmVhZHkgaW4tdXNlIElHVEsgdG8gdGhlIGRyaXZlciAoa2V5aWR4PSVkKSIsCisrCQkJa2V5aWR4KTsKKysJCXJldHVybiAgMDsKKysJfQorKworKwl3cGFfZGJnKHNtLT5jdHgtPm1zZ19jdHgsIE1TR19ERUJVRywKKysJCSJXUEE6IElHVEsga2V5aWQgJWQgcG4gJTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4IiwKKysJCWtleWlkeCwgTUFDMlNUUihpZ3RrLT5wbikpOworKwl3cGFfaGV4ZHVtcF9rZXkoTVNHX0RFQlVHLCAiV1BBOiBJR1RLIiwgaWd0ay0+aWd0aywgbGVuKTsKKysJaWYgKGtleWlkeCA+IDQwOTUpIHsKKysJCXdwYV9tc2coc20tPmN0eC0+bXNnX2N0eCwgTVNHX1dBUk5JTkcsCisrCQkJIldQQTogSW52YWxpZCBJR1RLIEtleUlEICVkIiwga2V5aWR4KTsKKysJCXJldHVybiAtMTsKKysJfQorKwlpZiAod3BhX3NtX3NldF9rZXkoc20sIHdwYV9jaXBoZXJfdG9fYWxnKHNtLT5tZ210X2dyb3VwX2NpcGhlciksCisrCQkJICAgYnJvYWRjYXN0X2V0aGVyX2FkZHIsCisrCQkJICAga2V5aWR4LCAwLCBpZ3RrLT5wbiwgc2l6ZW9mKGlndGstPnBuKSwKKysJCQkgICBpZ3RrLT5pZ3RrLCBsZW4pIDwgMCkgeworKwkJd3BhX21zZyhzbS0+Y3R4LT5tc2dfY3R4LCBNU0dfV0FSTklORywKKysJCQkiV1BBOiBGYWlsZWQgdG8gY29uZmlndXJlIElHVEsgdG8gdGhlIGRyaXZlciIpOworKwkJcmV0dXJuIC0xOworKwl9CisrCisrCXNtLT5pZ3RrLmlndGtfbGVuID0gbGVuOworKwlvc19tZW1jcHkoc20tPmlndGsuaWd0aywgaWd0ay0+aWd0aywgc20tPmlndGsuaWd0a19sZW4pOworKworKwlyZXR1cm4gMDsKKyt9CisrI2VuZGlmIC8qIENPTkZJR19JRUVFODAyMTFXICovCisrCisrCisgc3RhdGljIGludCBpZWVlODAyMTF3X3NldF9rZXlzKHN0cnVjdCB3cGFfc20gKnNtLAorIAkJCSAgICAgICBzdHJ1Y3Qgd3BhX2VhcG9sX2llX3BhcnNlICppZSkKKyB7CitAQCAtODY0LDMwICs5MTgsMTQgQEAgc3RhdGljIGludCBpZWVlODAyMTF3X3NldF9rZXlzKHN0cnVjdCB3cGFfc20gKnNtLAorIAlpZiAoaWUtPmlndGspIHsKKyAJCXNpemVfdCBsZW47CisgCQljb25zdCBzdHJ1Y3Qgd3BhX2lndGtfa2RlICppZ3RrOworLQkJdTE2IGtleWlkeDsKKysKKyAJCWxlbiA9IHdwYV9jaXBoZXJfa2V5X2xlbihzbS0+bWdtdF9ncm91cF9jaXBoZXIpOworIAkJaWYgKGllLT5pZ3RrX2xlbiAhPSBXUEFfSUdUS19LREVfUFJFRklYX0xFTiArIGxlbikKKyAJCQlyZXR1cm4gLTE7CisrCisgCQlpZ3RrID0gKGNvbnN0IHN0cnVjdCB3cGFfaWd0a19rZGUgKikgaWUtPmlndGs7CistCQlrZXlpZHggPSBXUEFfR0VUX0xFMTYoaWd0ay0+a2V5aWQpOworLQkJd3BhX2RiZyhzbS0+Y3R4LT5tc2dfY3R4LCBNU0dfREVCVUcsICJXUEE6IElHVEsga2V5aWQgJWQgIgorLQkJCSJwbiAlMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngiLAorLQkJCWtleWlkeCwgTUFDMlNUUihpZ3RrLT5wbikpOworLQkJd3BhX2hleGR1bXBfa2V5KE1TR19ERUJVRywgIldQQTogSUdUSyIsCistCQkJCWlndGstPmlndGssIGxlbik7CistCQlpZiAoa2V5aWR4ID4gNDA5NSkgeworLQkJCXdwYV9tc2coc20tPmN0eC0+bXNnX2N0eCwgTVNHX1dBUk5JTkcsCistCQkJCSJXUEE6IEludmFsaWQgSUdUSyBLZXlJRCAlZCIsIGtleWlkeCk7CistCQkJcmV0dXJuIC0xOworLQkJfQorLQkJaWYgKHdwYV9zbV9zZXRfa2V5KHNtLCB3cGFfY2lwaGVyX3RvX2FsZyhzbS0+bWdtdF9ncm91cF9jaXBoZXIpLAorLQkJCQkgICBicm9hZGNhc3RfZXRoZXJfYWRkciwKKy0JCQkJICAga2V5aWR4LCAwLCBpZ3RrLT5wbiwgc2l6ZW9mKGlndGstPnBuKSwKKy0JCQkJICAgaWd0ay0+aWd0aywgbGVuKSA8IDApIHsKKy0JCQl3cGFfbXNnKHNtLT5jdHgtPm1zZ19jdHgsIE1TR19XQVJOSU5HLAorLQkJCQkiV1BBOiBGYWlsZWQgdG8gY29uZmlndXJlIElHVEsgdG8gdGhlIGRyaXZlciIpOworKwkJaWYgKHdwYV9zdXBwbGljYW50X2luc3RhbGxfaWd0ayhzbSwgaWd0aykgPCAwKQorIAkJCXJldHVybiAtMTsKKy0JCX0KKyAJfQorIAorIAlyZXR1cm4gMDsKK0BAIC0yMzA3LDcgKzIzNDUsNyBAQCB2b2lkIHdwYV9zbV9kZWluaXQoc3RydWN0IHdwYV9zbSAqc20pCisgICovCisgdm9pZCB3cGFfc21fbm90aWZ5X2Fzc29jKHN0cnVjdCB3cGFfc20gKnNtLCBjb25zdCB1OCAqYnNzaWQpCisgeworLQlpbnQgY2xlYXJfcHRrID0gMTsKKysJaW50IGNsZWFyX2tleXMgPSAxOworIAorIAlpZiAoc20gPT0gTlVMTCkKKyAJCXJldHVybjsKK0BAIC0yMzMzLDExICsyMzcxLDExIEBAIHZvaWQgd3BhX3NtX25vdGlmeV9hc3NvYyhzdHJ1Y3Qgd3BhX3NtICpzbSwgY29uc3QgdTggKmJzc2lkKQorIAkJLyogUHJlcGFyZSBmb3IgdGhlIG5leHQgdHJhbnNpdGlvbiAqLworIAkJd3BhX2Z0X3ByZXBhcmVfYXV0aF9yZXF1ZXN0KHNtLCBOVUxMKTsKKyAKKy0JCWNsZWFyX3B0ayA9IDA7CisrCQljbGVhcl9rZXlzID0gMDsKKyAJfQorICNlbmRpZiAvKiBDT05GSUdfSUVFRTgwMjExUiAqLworIAorLQlpZiAoY2xlYXJfcHRrKSB7CisrCWlmIChjbGVhcl9rZXlzKSB7CisgCQkvKgorIAkJICogSUVFRSA4MDIuMTEsIDguNC4xMDogRGVsZXRlIFBUSyBTQSBvbiAocmUpYXNzb2NpYXRpb24gaWYKKyAJCSAqIHRoaXMgaXMgbm90IHBhcnQgb2YgYSBGYXN0IEJTUyBUcmFuc2l0aW9uLgorQEAgLTIzNDcsNiArMjM4NSwxMCBAQCB2b2lkIHdwYV9zbV9ub3RpZnlfYXNzb2Moc3RydWN0IHdwYV9zbSAqc20sIGNvbnN0IHU4ICpic3NpZCkKKyAJCW9zX21lbXNldCgmc20tPnB0aywgMCwgc2l6ZW9mKHNtLT5wdGspKTsKKyAJCXNtLT50cHRrX3NldCA9IDA7CisgCQlvc19tZW1zZXQoJnNtLT50cHRrLCAwLCBzaXplb2Yoc20tPnRwdGspKTsKKysJCW9zX21lbXNldCgmc20tPmd0aywgMCwgc2l6ZW9mKHNtLT5ndGspKTsKKysjaWZkZWYgQ09ORklHX0lFRUU4MDIxMVcKKysJCW9zX21lbXNldCgmc20tPmlndGssIDAsIHNpemVvZihzbS0+aWd0aykpOworKyNlbmRpZiAvKiBDT05GSUdfSUVFRTgwMjExVyAqLworIAl9CisgCisgI2lmZGVmIENPTkZJR19URExTCitAQCAtMjg3Nyw2ICsyOTE5LDEwIEBAIHZvaWQgd3BhX3NtX2Ryb3Bfc2Eoc3RydWN0IHdwYV9zbSAqc20pCisgCW9zX21lbXNldChzbS0+cG1rLCAwLCBzaXplb2Yoc20tPnBtaykpOworIAlvc19tZW1zZXQoJnNtLT5wdGssIDAsIHNpemVvZihzbS0+cHRrKSk7CisgCW9zX21lbXNldCgmc20tPnRwdGssIDAsIHNpemVvZihzbS0+dHB0aykpOworKwlvc19tZW1zZXQoJnNtLT5ndGssIDAsIHNpemVvZihzbS0+Z3RrKSk7CisrI2lmZGVmIENPTkZJR19JRUVFODAyMTFXCisrCW9zX21lbXNldCgmc20tPmlndGssIDAsIHNpemVvZihzbS0+aWd0aykpOworKyNlbmRpZiAvKiBDT05GSUdfSUVFRTgwMjExVyAqLworICNpZmRlZiBDT05GSUdfSUVFRTgwMjExUgorIAlvc19tZW1zZXQoc20tPnh4a2V5LCAwLCBzaXplb2Yoc20tPnh4a2V5KSk7CisgCW9zX21lbXNldChzbS0+cG1rX3IwLCAwLCBzaXplb2Yoc20tPnBta19yMCkpOworQEAgLTI5NDksMjkgKzI5OTUsMTEgQEAgaW50IHdwYV93bm1zbGVlcF9pbnN0YWxsX2tleShzdHJ1Y3Qgd3BhX3NtICpzbSwgdTggc3ViZWxlbV9pZCwgdTggKmJ1ZikKKyAJCW9zX21lbXNldCgmZ2QsIDAsIHNpemVvZihnZCkpOworICNpZmRlZiBDT05GSUdfSUVFRTgwMjExVworIAl9IGVsc2UgaWYgKHN1YmVsZW1faWQgPT0gV05NX1NMRUVQX1NVQkVMRU1fSUdUSykgeworLQkJc3RydWN0IHdwYV9pZ3RrX2tkZSBpZ2Q7CistCQl1MTYga2V5aWR4OworLQorLQkJb3NfbWVtc2V0KCZpZ2QsIDAsIHNpemVvZihpZ2QpKTsKKy0JCWtleWxlbiA9IHdwYV9jaXBoZXJfa2V5X2xlbihzbS0+bWdtdF9ncm91cF9jaXBoZXIpOworLQkJb3NfbWVtY3B5KGlnZC5rZXlpZCwgYnVmICsgMiwgMik7CistCQlvc19tZW1jcHkoaWdkLnBuLCBidWYgKyA0LCA2KTsKKy0KKy0JCWtleWlkeCA9IFdQQV9HRVRfTEUxNihpZ2Qua2V5aWQpOworLQkJb3NfbWVtY3B5KGlnZC5pZ3RrLCBidWYgKyAxMCwga2V5bGVuKTsKKy0KKy0JCXdwYV9oZXhkdW1wX2tleShNU0dfREVCVUcsICJJbnN0YWxsIElHVEsgKFdOTSBTTEVFUCkiLAorLQkJCQlpZ2QuaWd0aywga2V5bGVuKTsKKy0JCWlmICh3cGFfc21fc2V0X2tleShzbSwgd3BhX2NpcGhlcl90b19hbGcoc20tPm1nbXRfZ3JvdXBfY2lwaGVyKSwKKy0JCQkJICAgYnJvYWRjYXN0X2V0aGVyX2FkZHIsCistCQkJCSAgIGtleWlkeCwgMCwgaWdkLnBuLCBzaXplb2YoaWdkLnBuKSwKKy0JCQkJICAgaWdkLmlndGssIGtleWxlbikgPCAwKSB7CistCQkJd3BhX3ByaW50ZihNU0dfREVCVUcsICJGYWlsZWQgdG8gaW5zdGFsbCB0aGUgSUdUSyBpbiAiCistCQkJCSAgICJXTk0gbW9kZSIpOworLQkJCW9zX21lbXNldCgmaWdkLCAwLCBzaXplb2YoaWdkKSk7CisrCQljb25zdCBzdHJ1Y3Qgd3BhX2lndGtfa2RlICppZ3RrOworKworKwkJaWd0ayA9IChjb25zdCBzdHJ1Y3Qgd3BhX2lndGtfa2RlICopIChidWYgKyAyKTsKKysJCWlmICh3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2lndGsoc20sIGlndGspIDwgMCkKKyAJCQlyZXR1cm4gLTE7CistCQl9CistCQlvc19tZW1zZXQoJmlnZCwgMCwgc2l6ZW9mKGlnZCkpOworICNlbmRpZiAvKiBDT05GSUdfSUVFRTgwMjExVyAqLworIAl9IGVsc2UgeworIAkJd3BhX3ByaW50ZihNU0dfREVCVUcsICJVbmtub3duIGVsZW1lbnQgaWQiKTsKK2RpZmYgLS1naXQgYS9zcmMvcnNuX3N1cHAvd3BhX2kuaCBiL3NyYy9yc25fc3VwcC93cGFfaS5oCitpbmRleCBmNjUzYmE2Li5hZmM5ZTM3IDEwMDY0NAorLS0tIGEvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKKysrKyBiL3NyYy9yc25fc3VwcC93cGFfaS5oCitAQCAtMzEsNiArMzEsMTAgQEAgc3RydWN0IHdwYV9zbSB7CisgCXU4IHJ4X3JlcGxheV9jb3VudGVyW1dQQV9SRVBMQVlfQ09VTlRFUl9MRU5dOworIAlpbnQgcnhfcmVwbGF5X2NvdW50ZXJfc2V0OworIAl1OCByZXF1ZXN0X2NvdW50ZXJbV1BBX1JFUExBWV9DT1VOVEVSX0xFTl07CisrCXN0cnVjdCB3cGFfZ3RrIGd0azsKKysjaWZkZWYgQ09ORklHX0lFRUU4MDIxMVcKKysJc3RydWN0IHdwYV9pZ3RrIGlndGs7CisrI2VuZGlmIC8qIENPTkZJR19JRUVFODAyMTFXICovCisgCisgCXN0cnVjdCBlYXBvbF9zbSAqZWFwb2w7IC8qIEVBUE9MIHN0YXRlIG1hY2hpbmUgZnJvbSB1cHBlciBsZXZlbCBjb2RlICovCisgCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC8wMDAzLUV4dGVuZC1wcm90ZWN0aW9uLW9mLUdUSy1JR1RLLXJlaW5zdGFsbGF0aW9uLW9mLVdOTS0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkLzAwMDMtRXh0ZW5kLXByb3RlY3Rpb24tb2YtR1RLLUlHVEstcmVpbnN0YWxsYXRpb24tb2YtV05NLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzliYmY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC8wMDAzLUV4dGVuZC1wcm90ZWN0aW9uLW9mLUdUSy1JR1RLLXJlaW5zdGFsbGF0aW9uLW9mLVdOTS0ucGF0Y2gKQEAgLTAsMCArMSwxODcgQEAKK0Zyb20gYTZjYWFiODA2MGFiNjA4NzZlMjMzMzA2ZjVjNTg2NDUxMTY5ZWJhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvdW5pIE1hbGluZW4gPGpAdzEuZmk+CitEYXRlOiBTdW4sIDEgT2N0IDIwMTcgMTI6MTI6MjQgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzddIEV4dGVuZCBwcm90ZWN0aW9uIG9mIEdUSy9JR1RLIHJlaW5zdGFsbGF0aW9uIG9mIFdOTS1TbGVlcAorIE1vZGUgY2FzZXMKKworVGhpcyBleHRlbmRzIHRoZSBwcm90ZWN0aW9uIHRvIHRyYWNrIGxhc3QgY29uZmlndXJlZCBHVEsvSUdUSyB2YWx1ZQorc2VwYXJhdGVseSBmcm9tIEVBUE9MLUtleSBmcmFtZXMgYW5kIFdOTS1TbGVlcCBNb2RlIGZyYW1lcyB0byBjb3ZlciBhCitjb3JuZXIgY2FzZSB3aGVyZSB0aGVzZSB0d28gZGlmZmVyZW50IG1lY2hhbmlzbXMgbWF5IGdldCB1c2VkIHdoZW4gdGhlCitHVEsvSUdUSyBoYXMgY2hhbmdlZCBhbmQgdHJhY2tpbmcgYSBzaW5nbGUgdmFsdWUgaXMgbm90IHN1ZmZpY2llbnQgdG8KK2RldGVjdCBhIHBvc3NpYmxlIGtleSByZWNvbmZpZ3VyYXRpb24uCisKK1NpZ25lZC1vZmYtYnk6IEpvdW5pIE1hbGluZW4gPGpAdzEuZmk+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFpoZW5nIFJ1b3FpbiA8emhlbmdycS5mbnN0QGNuLmZ1aml0c3UuY29tPgorLS0tCisgc3JjL3Jzbl9zdXBwL3dwYS5jICAgfCA1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCisgc3JjL3Jzbl9zdXBwL3dwYV9pLmggfCAgMiArKworIDIgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcnNuX3N1cHAvd3BhLmMgYi9zcmMvcnNuX3N1cHAvd3BhLmMKK2luZGV4IDk1YmQ3YmUuLjdhMmM2OGQgMTAwNjQ0CistLS0gYS9zcmMvcnNuX3N1cHAvd3BhLmMKKysrKyBiL3NyYy9yc25fc3VwcC93cGEuYworQEAgLTcwOSwxNCArNzA5LDE3IEBAIHN0cnVjdCB3cGFfZ3RrX2RhdGEgeworIAorIHN0YXRpYyBpbnQgd3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9ndGsoc3RydWN0IHdwYV9zbSAqc20sCisgCQkJCSAgICAgIGNvbnN0IHN0cnVjdCB3cGFfZ3RrX2RhdGEgKmdkLAorLQkJCQkgICAgICBjb25zdCB1OCAqa2V5X3JzYykKKysJCQkJICAgICAgY29uc3QgdTggKmtleV9yc2MsIGludCB3bm1fc2xlZXApCisgeworIAljb25zdCB1OCAqX2d0ayA9IGdkLT5ndGs7CisgCXU4IGd0a19idWZbMzJdOworIAorIAkvKiBEZXRlY3QgcG9zc2libGUga2V5IHJlaW5zdGFsbGF0aW9uICovCistCWlmIChzbS0+Z3RrLmd0a19sZW4gPT0gKHNpemVfdCkgZ2QtPmd0a19sZW4gJiYKKy0JICAgIG9zX21lbWNtcChzbS0+Z3RrLmd0aywgZ2QtPmd0aywgc20tPmd0ay5ndGtfbGVuKSA9PSAwKSB7CisrCWlmICgoc20tPmd0ay5ndGtfbGVuID09IChzaXplX3QpIGdkLT5ndGtfbGVuICYmCisrCSAgICAgb3NfbWVtY21wKHNtLT5ndGsuZ3RrLCBnZC0+Z3RrLCBzbS0+Z3RrLmd0a19sZW4pID09IDApIHx8CisrCSAgICAoc20tPmd0a193bm1fc2xlZXAuZ3RrX2xlbiA9PSAoc2l6ZV90KSBnZC0+Z3RrX2xlbiAmJgorKwkgICAgIG9zX21lbWNtcChzbS0+Z3RrX3dubV9zbGVlcC5ndGssIGdkLT5ndGssCisrCQkgICAgICAgc20tPmd0a193bm1fc2xlZXAuZ3RrX2xlbikgPT0gMCkpIHsKKyAJCXdwYV9kYmcoc20tPmN0eC0+bXNnX2N0eCwgTVNHX0RFQlVHLAorIAkJCSJXUEE6IE5vdCByZWluc3RhbGxpbmcgYWxyZWFkeSBpbi11c2UgR1RLIHRvIHRoZSBkcml2ZXIgKGtleWlkeD0lZCB0eD0lZCBsZW49JWQpIiwKKyAJCQlnZC0+a2V5aWR4LCBnZC0+dHgsIGdkLT5ndGtfbGVuKTsKK0BAIC03NTcsOCArNzYwLDE0IEBAIHN0YXRpYyBpbnQgd3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9ndGsoc3RydWN0IHdwYV9zbSAqc20sCisgCX0KKyAJb3NfbWVtc2V0KGd0a19idWYsIDAsIHNpemVvZihndGtfYnVmKSk7CisgCistCXNtLT5ndGsuZ3RrX2xlbiA9IGdkLT5ndGtfbGVuOworLQlvc19tZW1jcHkoc20tPmd0ay5ndGssIGdkLT5ndGssIHNtLT5ndGsuZ3RrX2xlbik7CisrCWlmICh3bm1fc2xlZXApIHsKKysJCXNtLT5ndGtfd25tX3NsZWVwLmd0a19sZW4gPSBnZC0+Z3RrX2xlbjsKKysJCW9zX21lbWNweShzbS0+Z3RrX3dubV9zbGVlcC5ndGssIGdkLT5ndGssCisrCQkJICBzbS0+Z3RrX3dubV9zbGVlcC5ndGtfbGVuKTsKKysJfSBlbHNlIHsKKysJCXNtLT5ndGsuZ3RrX2xlbiA9IGdkLT5ndGtfbGVuOworKwkJb3NfbWVtY3B5KHNtLT5ndGsuZ3RrLCBnZC0+Z3RrLCBzbS0+Z3RrLmd0a19sZW4pOworKwl9CisgCisgCXJldHVybiAwOworIH0KK0BAIC04NTIsNyArODYxLDcgQEAgc3RhdGljIGludCB3cGFfc3VwcGxpY2FudF9wYWlyd2lzZV9ndGsoc3RydWN0IHdwYV9zbSAqc20sCisgCSAgICAod3BhX3N1cHBsaWNhbnRfY2hlY2tfZ3JvdXBfY2lwaGVyKHNtLCBzbS0+Z3JvdXBfY2lwaGVyLAorIAkJCQkJICAgICAgIGd0a19sZW4sIGd0a19sZW4sCisgCQkJCQkgICAgICAgJmdkLmtleV9yc2NfbGVuLCAmZ2QuYWxnKSB8fAorLQkgICAgIHdwYV9zdXBwbGljYW50X2luc3RhbGxfZ3RrKHNtLCAmZ2QsIGtleV9yc2MpKSkgeworKwkgICAgIHdwYV9zdXBwbGljYW50X2luc3RhbGxfZ3RrKHNtLCAmZ2QsIGtleV9yc2MsIDApKSkgeworIAkJd3BhX2RiZyhzbS0+Y3R4LT5tc2dfY3R4LCBNU0dfREVCVUcsCisgCQkJIlJTTjogRmFpbGVkIHRvIGluc3RhbGwgR1RLIik7CisgCQlvc19tZW1zZXQoJmdkLCAwLCBzaXplb2YoZ2QpKTsKK0BAIC04NjgsMTQgKzg3NywxOCBAQCBzdGF0aWMgaW50IHdwYV9zdXBwbGljYW50X3BhaXJ3aXNlX2d0ayhzdHJ1Y3Qgd3BhX3NtICpzbSwKKyAKKyAjaWZkZWYgQ09ORklHX0lFRUU4MDIxMVcKKyBzdGF0aWMgaW50IHdwYV9zdXBwbGljYW50X2luc3RhbGxfaWd0ayhzdHJ1Y3Qgd3BhX3NtICpzbSwKKy0JCQkJICAgICAgIGNvbnN0IHN0cnVjdCB3cGFfaWd0a19rZGUgKmlndGspCisrCQkJCSAgICAgICBjb25zdCBzdHJ1Y3Qgd3BhX2lndGtfa2RlICppZ3RrLAorKwkJCQkgICAgICAgaW50IHdubV9zbGVlcCkKKyB7CisgCXNpemVfdCBsZW4gPSB3cGFfY2lwaGVyX2tleV9sZW4oc20tPm1nbXRfZ3JvdXBfY2lwaGVyKTsKKyAJdTE2IGtleWlkeCA9IFdQQV9HRVRfTEUxNihpZ3RrLT5rZXlpZCk7CisgCisgCS8qIERldGVjdCBwb3NzaWJsZSBrZXkgcmVpbnN0YWxsYXRpb24gKi8KKy0JaWYgKHNtLT5pZ3RrLmlndGtfbGVuID09IGxlbiAmJgorLQkgICAgb3NfbWVtY21wKHNtLT5pZ3RrLmlndGssIGlndGstPmlndGssIHNtLT5pZ3RrLmlndGtfbGVuKSA9PSAwKSB7CisrCWlmICgoc20tPmlndGsuaWd0a19sZW4gPT0gbGVuICYmCisrCSAgICAgb3NfbWVtY21wKHNtLT5pZ3RrLmlndGssIGlndGstPmlndGssIHNtLT5pZ3RrLmlndGtfbGVuKSA9PSAwKSB8fAorKwkgICAgKHNtLT5pZ3RrX3dubV9zbGVlcC5pZ3RrX2xlbiA9PSBsZW4gJiYKKysJICAgICBvc19tZW1jbXAoc20tPmlndGtfd25tX3NsZWVwLmlndGssIGlndGstPmlndGssCisrCQkgICAgICAgc20tPmlndGtfd25tX3NsZWVwLmlndGtfbGVuKSA9PSAwKSkgeworIAkJd3BhX2RiZyhzbS0+Y3R4LT5tc2dfY3R4LCBNU0dfREVCVUcsCisgCQkJIldQQTogTm90IHJlaW5zdGFsbGluZyBhbHJlYWR5IGluLXVzZSBJR1RLIHRvIHRoZSBkcml2ZXIgKGtleWlkeD0lZCkiLAorIAkJCWtleWlkeCk7CitAQCAtOTAwLDggKzkxMywxNCBAQCBzdGF0aWMgaW50IHdwYV9zdXBwbGljYW50X2luc3RhbGxfaWd0ayhzdHJ1Y3Qgd3BhX3NtICpzbSwKKyAJCXJldHVybiAtMTsKKyAJfQorIAorLQlzbS0+aWd0ay5pZ3RrX2xlbiA9IGxlbjsKKy0Jb3NfbWVtY3B5KHNtLT5pZ3RrLmlndGssIGlndGstPmlndGssIHNtLT5pZ3RrLmlndGtfbGVuKTsKKysJaWYgKHdubV9zbGVlcCkgeworKwkJc20tPmlndGtfd25tX3NsZWVwLmlndGtfbGVuID0gbGVuOworKwkJb3NfbWVtY3B5KHNtLT5pZ3RrX3dubV9zbGVlcC5pZ3RrLCBpZ3RrLT5pZ3RrLAorKwkJCSAgc20tPmlndGtfd25tX3NsZWVwLmlndGtfbGVuKTsKKysJfSBlbHNlIHsKKysJCXNtLT5pZ3RrLmlndGtfbGVuID0gbGVuOworKwkJb3NfbWVtY3B5KHNtLT5pZ3RrLmlndGssIGlndGstPmlndGssIHNtLT5pZ3RrLmlndGtfbGVuKTsKKysJfQorIAorIAlyZXR1cm4gMDsKKyB9CitAQCAtOTI0LDcgKzk0Myw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExd19zZXRfa2V5cyhzdHJ1Y3Qgd3BhX3NtICpzbSwKKyAJCQlyZXR1cm4gLTE7CisgCisgCQlpZ3RrID0gKGNvbnN0IHN0cnVjdCB3cGFfaWd0a19rZGUgKikgaWUtPmlndGs7CistCQlpZiAod3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9pZ3RrKHNtLCBpZ3RrKSA8IDApCisrCQlpZiAod3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9pZ3RrKHNtLCBpZ3RrLCAwKSA8IDApCisgCQkJcmV0dXJuIC0xOworIAl9CisgCitAQCAtMTU3NCw3ICsxNTkzLDcgQEAgc3RhdGljIHZvaWQgd3BhX3N1cHBsaWNhbnRfcHJvY2Vzc18xX29mXzIoc3RydWN0IHdwYV9zbSAqc20sCisgCWlmICh3cGFfc3VwcGxpY2FudF9yc2NfcmVsYXhhdGlvbihzbSwga2V5LT5rZXlfcnNjKSkKKyAJCWtleV9yc2MgPSBudWxsX3JzYzsKKyAKKy0JaWYgKHdwYV9zdXBwbGljYW50X2luc3RhbGxfZ3RrKHNtLCAmZ2QsIGtleV9yc2MpIHx8CisrCWlmICh3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2d0ayhzbSwgJmdkLCBrZXlfcnNjLCAwKSB8fAorIAkgICAgd3BhX3N1cHBsaWNhbnRfc2VuZF8yX29mXzIoc20sIGtleSwgdmVyLCBrZXlfaW5mbykgPCAwKQorIAkJZ290byBmYWlsZWQ7CisgCW9zX21lbXNldCgmZ2QsIDAsIHNpemVvZihnZCkpOworQEAgLTIzODYsOCArMjQwNSwxMCBAQCB2b2lkIHdwYV9zbV9ub3RpZnlfYXNzb2Moc3RydWN0IHdwYV9zbSAqc20sIGNvbnN0IHU4ICpic3NpZCkKKyAJCXNtLT50cHRrX3NldCA9IDA7CisgCQlvc19tZW1zZXQoJnNtLT50cHRrLCAwLCBzaXplb2Yoc20tPnRwdGspKTsKKyAJCW9zX21lbXNldCgmc20tPmd0aywgMCwgc2l6ZW9mKHNtLT5ndGspKTsKKysJCW9zX21lbXNldCgmc20tPmd0a193bm1fc2xlZXAsIDAsIHNpemVvZihzbS0+Z3RrX3dubV9zbGVlcCkpOworICNpZmRlZiBDT05GSUdfSUVFRTgwMjExVworIAkJb3NfbWVtc2V0KCZzbS0+aWd0aywgMCwgc2l6ZW9mKHNtLT5pZ3RrKSk7CisrCQlvc19tZW1zZXQoJnNtLT5pZ3RrX3dubV9zbGVlcCwgMCwgc2l6ZW9mKHNtLT5pZ3RrX3dubV9zbGVlcCkpOworICNlbmRpZiAvKiBDT05GSUdfSUVFRTgwMjExVyAqLworIAl9CisgCitAQCAtMjkyMCw4ICsyOTQxLDEwIEBAIHZvaWQgd3BhX3NtX2Ryb3Bfc2Eoc3RydWN0IHdwYV9zbSAqc20pCisgCW9zX21lbXNldCgmc20tPnB0aywgMCwgc2l6ZW9mKHNtLT5wdGspKTsKKyAJb3NfbWVtc2V0KCZzbS0+dHB0aywgMCwgc2l6ZW9mKHNtLT50cHRrKSk7CisgCW9zX21lbXNldCgmc20tPmd0aywgMCwgc2l6ZW9mKHNtLT5ndGspKTsKKysJb3NfbWVtc2V0KCZzbS0+Z3RrX3dubV9zbGVlcCwgMCwgc2l6ZW9mKHNtLT5ndGtfd25tX3NsZWVwKSk7CisgI2lmZGVmIENPTkZJR19JRUVFODAyMTFXCisgCW9zX21lbXNldCgmc20tPmlndGssIDAsIHNpemVvZihzbS0+aWd0aykpOworKwlvc19tZW1zZXQoJnNtLT5pZ3RrX3dubV9zbGVlcCwgMCwgc2l6ZW9mKHNtLT5pZ3RrX3dubV9zbGVlcCkpOworICNlbmRpZiAvKiBDT05GSUdfSUVFRTgwMjExVyAqLworICNpZmRlZiBDT05GSUdfSUVFRTgwMjExUgorIAlvc19tZW1zZXQoc20tPnh4a2V5LCAwLCBzaXplb2Yoc20tPnh4a2V5KSk7CitAQCAtMjk4Niw3ICszMDA5LDcgQEAgaW50IHdwYV93bm1zbGVlcF9pbnN0YWxsX2tleShzdHJ1Y3Qgd3BhX3NtICpzbSwgdTggc3ViZWxlbV9pZCwgdTggKmJ1ZikKKyAKKyAJCXdwYV9oZXhkdW1wX2tleShNU0dfREVCVUcsICJJbnN0YWxsIEdUSyAoV05NIFNMRUVQKSIsCisgCQkJCWdkLmd0aywgZ2QuZ3RrX2xlbik7CistCQlpZiAod3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9ndGsoc20sICZnZCwga2V5X3JzYykpIHsKKysJCWlmICh3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2d0ayhzbSwgJmdkLCBrZXlfcnNjLCAxKSkgeworIAkJCW9zX21lbXNldCgmZ2QsIDAsIHNpemVvZihnZCkpOworIAkJCXdwYV9wcmludGYoTVNHX0RFQlVHLCAiRmFpbGVkIHRvIGluc3RhbGwgdGhlIEdUSyBpbiAiCisgCQkJCSAgICJXTk0gbW9kZSIpOworQEAgLTI5OTgsNyArMzAyMSw3IEBAIGludCB3cGFfd25tc2xlZXBfaW5zdGFsbF9rZXkoc3RydWN0IHdwYV9zbSAqc20sIHU4IHN1YmVsZW1faWQsIHU4ICpidWYpCisgCQljb25zdCBzdHJ1Y3Qgd3BhX2lndGtfa2RlICppZ3RrOworIAorIAkJaWd0ayA9IChjb25zdCBzdHJ1Y3Qgd3BhX2lndGtfa2RlICopIChidWYgKyAyKTsKKy0JCWlmICh3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2lndGsoc20sIGlndGspIDwgMCkKKysJCWlmICh3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2lndGsoc20sIGlndGssIDEpIDwgMCkKKyAJCQlyZXR1cm4gLTE7CisgI2VuZGlmIC8qIENPTkZJR19JRUVFODAyMTFXICovCisgCX0gZWxzZSB7CitkaWZmIC0tZ2l0IGEvc3JjL3Jzbl9zdXBwL3dwYV9pLmggYi9zcmMvcnNuX3N1cHAvd3BhX2kuaAoraW5kZXggYWZjOWUzNy4uOWE1NDYzMSAxMDA2NDQKKy0tLSBhL3NyYy9yc25fc3VwcC93cGFfaS5oCisrKysgYi9zcmMvcnNuX3N1cHAvd3BhX2kuaAorQEAgLTMyLDggKzMyLDEwIEBAIHN0cnVjdCB3cGFfc20geworIAlpbnQgcnhfcmVwbGF5X2NvdW50ZXJfc2V0OworIAl1OCByZXF1ZXN0X2NvdW50ZXJbV1BBX1JFUExBWV9DT1VOVEVSX0xFTl07CisgCXN0cnVjdCB3cGFfZ3RrIGd0azsKKysJc3RydWN0IHdwYV9ndGsgZ3RrX3dubV9zbGVlcDsKKyAjaWZkZWYgQ09ORklHX0lFRUU4MDIxMVcKKyAJc3RydWN0IHdwYV9pZ3RrIGlndGs7CisrCXN0cnVjdCB3cGFfaWd0ayBpZ3RrX3dubV9zbGVlcDsKKyAjZW5kaWYgLyogQ09ORklHX0lFRUU4MDIxMVcgKi8KKyAKKyAJc3RydWN0IGVhcG9sX3NtICplYXBvbDsgLyogRUFQT0wgc3RhdGUgbWFjaGluZSBmcm9tIHVwcGVyIGxldmVsIGNvZGUgKi8KKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkLzAwMDQtUHJldmVudC1pbnN0YWxsYXRpb24tb2YtYW4tYWxsLXplcm8tVEsucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkLzAwMDQtUHJldmVudC1pbnN0YWxsYXRpb24tb2YtYW4tYWxsLXplcm8tVEsucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTEwMzYyNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGQvMDAwNC1QcmV2ZW50LWluc3RhbGxhdGlvbi1vZi1hbi1hbGwtemVyby1USy5wYXRjaApAQCAtMCwwICsxLDgyIEBACitGcm9tIGFiZjk0MTY0N2YyZGMzM2IwYjU5NjEyZjUyNWUxYjI5MjMzMWNjOWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXRoeSBWYW5ob2VmIDxNYXRoeS5WYW5ob2VmQGNzLmt1bGV1dmVuLmJlPgorRGF0ZTogRnJpLCAyOSBTZXAgMjAxNyAwNDoyMjo1MSArMDIwMAorU3ViamVjdDogW1BBVENIIDQvN10gUHJldmVudCBpbnN0YWxsYXRpb24gb2YgYW4gYWxsLXplcm8gVEsKKworUHJvcGVybHkgdHJhY2sgd2hldGhlciBhIFBUSyBoYXMgYWxyZWFkeSBiZWVuIGluc3RhbGxlZCB0byB0aGUgZHJpdmVyCithbmQgdGhlIFRLIHBhcnQgY2xlYXJlZCBmcm9tIG1lbW9yeS4gVGhpcyBwcmV2ZW50cyBhbiBhdHRhY2tlciBmcm9tCit0cnlpbmcgdG8gdHJpY2sgdGhlIGNsaWVudCBpbnRvIGluc3RhbGxpbmcgYW4gYWxsLXplcm8gVEsuCisKK1RoaXMgZml4ZXMgdGhlIGVhcmxpZXIgZml4IGluIGNvbW1pdAorYWQwMGQ2NGU3ZDg4MjdiM2NlYmQ2NjVhMGNlYjA4YWRhYmYxNWUxZSAoJ0ZpeCBUSyBjb25maWd1cmF0aW9uIHRvIHRoZQorZHJpdmVyIGluIEVBUE9MLUtleSAzLzQgcmV0cnkgY2FzZScpIHdoaWNoIGRpZCBub3QgdGFrZSBpbnRvIGFjY291bnQKK3Bvc3NpYmlsaXR5IG9mIGFuIGV4dHJhIG1lc3NhZ2UgMS80IHNob3dpbmcgdXAgYmV0d2VlbiByZXRyaWVzIG9mCittZXNzYWdlIDMvNC4KKworU2lnbmVkLW9mZi1ieTogTWF0aHkgVmFuaG9lZiA8TWF0aHkuVmFuaG9lZkBjcy5rdWxldXZlbi5iZT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogWmhlbmcgUnVvcWluIDx6aGVuZ3JxLmZuc3RAY24uZnVqaXRzdS5jb20+CistLS0KKyBzcmMvY29tbW9uL3dwYV9jb21tb24uaCB8IDEgKworIHNyYy9yc25fc3VwcC93cGEuYyAgICAgIHwgNSArKy0tLQorIHNyYy9yc25fc3VwcC93cGFfaS5oICAgIHwgMSAtCisgMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY29tbW9uL3dwYV9jb21tb24uaCBiL3NyYy9jb21tb24vd3BhX2NvbW1vbi5oCitpbmRleCBkMjAwMjg1Li4xMDIxY2NiIDEwMDY0NAorLS0tIGEvc3JjL2NvbW1vbi93cGFfY29tbW9uLmgKKysrKyBiL3NyYy9jb21tb24vd3BhX2NvbW1vbi5oCitAQCAtMjE1LDYgKzIxNSw3IEBAIHN0cnVjdCB3cGFfcHRrIHsKKyAJc2l6ZV90IGtja19sZW47CisgCXNpemVfdCBrZWtfbGVuOworIAlzaXplX3QgdGtfbGVuOworKwlpbnQgaW5zdGFsbGVkOyAvKiAxIGlmIGtleSBoYXMgYWxyZWFkeSBiZWVuIGluc3RhbGxlZCB0byBkcml2ZXIgKi8KKyB9OworIAorIHN0cnVjdCB3cGFfZ3RrIHsKK2RpZmYgLS1naXQgYS9zcmMvcnNuX3N1cHAvd3BhLmMgYi9zcmMvcnNuX3N1cHAvd3BhLmMKK2luZGV4IDdhMmM2OGQuLjA1NTBhNDEgMTAwNjQ0CistLS0gYS9zcmMvcnNuX3N1cHAvd3BhLmMKKysrKyBiL3NyYy9yc25fc3VwcC93cGEuYworQEAgLTUxMCw3ICs1MTAsNiBAQCBzdGF0aWMgdm9pZCB3cGFfc3VwcGxpY2FudF9wcm9jZXNzXzFfb2ZfNChzdHJ1Y3Qgd3BhX3NtICpzbSwKKyAJCW9zX21lbXNldChidWYsIDAsIHNpemVvZihidWYpKTsKKyAJfQorIAlzbS0+dHB0a19zZXQgPSAxOworLQlzbS0+dGtfdG9fc2V0ID0gMTsKKyAKKyAJa2RlID0gc20tPmFzc29jX3dwYV9pZTsKKyAJa2RlX2xlbiA9IHNtLT5hc3NvY193cGFfaWVfbGVuOworQEAgLTYxNSw3ICs2MTQsNyBAQCBzdGF0aWMgaW50IHdwYV9zdXBwbGljYW50X2luc3RhbGxfcHRrKHN0cnVjdCB3cGFfc20gKnNtLAorIAllbnVtIHdwYV9hbGcgYWxnOworIAljb25zdCB1OCAqa2V5X3JzYzsKKyAKKy0JaWYgKCFzbS0+dGtfdG9fc2V0KSB7CisrCWlmIChzbS0+cHRrLmluc3RhbGxlZCkgeworIAkJd3BhX2RiZyhzbS0+Y3R4LT5tc2dfY3R4LCBNU0dfREVCVUcsCisgCQkJIldQQTogRG8gbm90IHJlLWluc3RhbGwgc2FtZSBQVEsgdG8gdGhlIGRyaXZlciIpOworIAkJcmV0dXJuIDA7CitAQCAtNjU5LDcgKzY1OCw3IEBAIHN0YXRpYyBpbnQgd3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9wdGsoc3RydWN0IHdwYV9zbSAqc20sCisgCisgCS8qIFRLIGlzIG5vdCBuZWVkZWQgYW55bW9yZSBpbiBzdXBwbGljYW50ICovCisgCW9zX21lbXNldChzbS0+cHRrLnRrLCAwLCBXUEFfVEtfTUFYX0xFTik7CistCXNtLT50a190b19zZXQgPSAwOworKwlzbS0+cHRrLmluc3RhbGxlZCA9IDE7CisgCisgCWlmIChzbS0+d3BhX3B0a19yZWtleSkgeworIAkJZWxvb3BfY2FuY2VsX3RpbWVvdXQod3BhX3NtX3Jla2V5X3B0aywgc20sIE5VTEwpOworZGlmZiAtLWdpdCBhL3NyYy9yc25fc3VwcC93cGFfaS5oIGIvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKK2luZGV4IDlhNTQ2MzEuLjQxZjM3MWYgMTAwNjQ0CistLS0gYS9zcmMvcnNuX3N1cHAvd3BhX2kuaAorKysrIGIvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKK0BAIC0yNCw3ICsyNCw2IEBAIHN0cnVjdCB3cGFfc20geworIAlzdHJ1Y3Qgd3BhX3B0ayBwdGssIHRwdGs7CisgCWludCBwdGtfc2V0LCB0cHRrX3NldDsKKyAJdW5zaWduZWQgaW50IG1zZ18zX29mXzRfb2s6MTsKKy0JdW5zaWduZWQgaW50IHRrX3RvX3NldDoxOworIAl1OCBzbm9uY2VbV1BBX05PTkNFX0xFTl07CisgCXU4IGFub25jZVtXUEFfTk9OQ0VfTEVOXTsgLyogQU5vbmNlIGZyb20gdGhlIGxhc3QgMS80IG1zZyAqLworIAlpbnQgcmVuZXdfc25vbmNlOworLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGQvMDAwNS1GaXgtUFRLLXJla2V5aW5nLXRvLWdlbmVyYXRlLWEtbmV3LUFOb25jZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGQvMDAwNS1GaXgtUFRLLXJla2V5aW5nLXRvLWdlbmVyYXRlLWEtbmV3LUFOb25jZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGUxZGYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC8wMDA1LUZpeC1QVEstcmVrZXlpbmctdG8tZ2VuZXJhdGUtYS1uZXctQU5vbmNlLnBhdGNoCkBAIC0wLDAgKzEsNjcgQEAKK0Zyb20gODA0YjlkNzI4MDhjZGRkODIyZTdkY2VjNGQ2MGY0MGMxYWNlZGE4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvdW5pIE1hbGluZW4gPGpAdzEuZmk+CitEYXRlOiBTdW4sIDEgT2N0IDIwMTcgMTI6MzI6NTcgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCA1LzddIEZpeCBQVEsgcmVrZXlpbmcgdG8gZ2VuZXJhdGUgYSBuZXcgQU5vbmNlCisKK1RoZSBBdXRoZW50aWNhdG9yIHN0YXRlIG1hY2hpbmUgcGF0aCBmb3IgUFRLIHJla2V5aW5nIGVuZGVkIHVwIGJ5cGFzc2luZwordGhlIEFVVEhFTlRJQ0FUSU9OMiBzdGF0ZSB3aGVyZSBhIG5ldyBBTm9uY2UgaXMgZ2VuZXJhdGVkIHdoZW4gZ29pbmcKK2RpcmVjdGx5IHRvIHRoZSBQVEtTVEFSVCBzdGF0ZSBzaW5jZSB0aGVyZSBpcyBubyBuZWVkIHRvIHRyeSB0bworZGV0ZXJtaW5lIHRoZSBQTUsgYWdhaW4gaW4gc3VjaCBhIGNhc2UuIFRoaXMgaXMgZmFyIGZyb20gaWRlYWwgc2luY2UgdGhlCituZXcgUFRLIHdvdWxkIGRlcGVuZCBvbiBhIG5ldyBub25jZSBvbmx5IGZyb20gdGhlIHN1cHBsaWNhbnQuCisKK0ZpeCB0aGlzIGJ5IGdlbmVyYXRpbmcgYSBuZXcgQU5vbmNlIHdoZW4gbW92aW5nIHRvIHRoZSBQVEtTVEFSVCBzdGF0ZQorZm9yIHRoZSBwdXJwb3NlIG9mIHN0YXJ0aW5nIG5ldyA0LXdheSBoYW5kc2hha2UgdG8gcmVrZXkgUFRLLgorCitTaWduZWQtb2ZmLWJ5OiBKb3VuaSBNYWxpbmVuIDxqQHcxLmZpPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBaaGVuZyBSdW9xaW4gPHpoZW5ncnEuZm5zdEBjbi5mdWppdHN1LmNvbT4KKy0tLQorIHNyYy9hcC93cGFfYXV0aC5jIHwgMjQgKysrKysrKysrKysrKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYXAvd3BhX2F1dGguYyBiL3NyYy9hcC93cGFfYXV0aC5jCitpbmRleCA3MDc5NzFkLi5iZjEwY2MxIDEwMDY0NAorLS0tIGEvc3JjL2FwL3dwYV9hdXRoLmMKKysrKyBiL3NyYy9hcC93cGFfYXV0aC5jCitAQCAtMTkwMSw2ICsxOTAxLDIxIEBAIFNNX1NUQVRFKFdQQV9QVEssIEFVVEhFTlRJQ0FUSU9OMikKKyB9CisgCisgCisrc3RhdGljIGludCB3cGFfYXV0aF9zbV9wdGtfdXBkYXRlKHN0cnVjdCB3cGFfc3RhdGVfbWFjaGluZSAqc20pCisreworKwlpZiAocmFuZG9tX2dldF9ieXRlcyhzbS0+QU5vbmNlLCBXUEFfTk9OQ0VfTEVOKSkgeworKwkJd3BhX3ByaW50ZihNU0dfRVJST1IsCisrCQkJICAgIldQQTogRmFpbGVkIHRvIGdldCByYW5kb20gZGF0YSBmb3IgQU5vbmNlIik7CisrCQlzbS0+RGlzY29ubmVjdCA9IFRSVUU7CisrCQlyZXR1cm4gLTE7CisrCX0KKysJd3BhX2hleGR1bXAoTVNHX0RFQlVHLCAiV1BBOiBBc3NpZ24gbmV3IEFOb25jZSIsIHNtLT5BTm9uY2UsCisrCQkgICAgV1BBX05PTkNFX0xFTik7CisrCXNtLT5UaW1lb3V0Q3RyID0gMDsKKysJcmV0dXJuIDA7CisrfQorKworKworIFNNX1NUQVRFKFdQQV9QVEssIElOSVRQTUspCisgeworIAl1OCBtc2tbMiAqIFBNS19MRU5dOworQEAgLTI0NTgsOSArMjQ3MywxMiBAQCBTTV9TVEVQKFdQQV9QVEspCisgCQlTTV9FTlRFUihXUEFfUFRLLCBBVVRIRU5USUNBVElPTik7CisgCWVsc2UgaWYgKHNtLT5SZUF1dGhlbnRpY2F0aW9uUmVxdWVzdCkKKyAJCVNNX0VOVEVSKFdQQV9QVEssIEFVVEhFTlRJQ0FUSU9OMik7CistCWVsc2UgaWYgKHNtLT5QVEtSZXF1ZXN0KQorLQkJU01fRU5URVIoV1BBX1BUSywgUFRLU1RBUlQpOworLQllbHNlIHN3aXRjaCAoc20tPndwYV9wdGtfc3RhdGUpIHsKKysJZWxzZSBpZiAoc20tPlBUS1JlcXVlc3QpIHsKKysJCWlmICh3cGFfYXV0aF9zbV9wdGtfdXBkYXRlKHNtKSA8IDApCisrCQkJU01fRU5URVIoV1BBX1BUSywgRElTQ09OTkVDVEVEKTsKKysJCWVsc2UKKysJCQlTTV9FTlRFUihXUEFfUFRLLCBQVEtTVEFSVCk7CisrCX0gZWxzZSBzd2l0Y2ggKHNtLT53cGFfcHRrX3N0YXRlKSB7CisgCWNhc2UgV1BBX1BUS19JTklUSUFMSVpFOgorIAkJYnJlYWs7CisgCWNhc2UgV1BBX1BUS19ESVNDT05ORUNUOgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGQvMDAwNi1URExTLVJlamVjdC1UUEstVEstcmVjb25maWd1cmF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC8wMDA2LVRETFMtUmVqZWN0LVRQSy1USy1yZWNvbmZpZ3VyYXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJjN2Q1MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGQvMDAwNi1URExTLVJlamVjdC1UUEstVEstcmVjb25maWd1cmF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMTM1IEBACitGcm9tIDdmZDI2ZGIyZDgxNDdlZDY2MmRiMTkyYzQxZDdiYzE1NzUyYTYwMWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb3VuaSBNYWxpbmVuIDxqQHcxLmZpPgorRGF0ZTogRnJpLCAyMiBTZXAgMjAxNyAxMTowMzoxNSArMDMwMAorU3ViamVjdDogW1BBVENIIDYvN10gVERMUzogUmVqZWN0IFRQSy1USyByZWNvbmZpZ3VyYXRpb24KKworRG8gbm90IHRyeSB0byByZWNvbmZpZ3VyZSB0aGUgc2FtZSBUUEstVEsgdG8gdGhlIGRyaXZlciBhZnRlciBpdCBoYXMKK2JlZW4gc3VjY2Vzc2Z1bGx5IGNvbmZpZ3VyZWQuIFRoaXMgaXMgYW4gZXhwbGljaXQgY2hlY2sgdG8gYXZvaWQgaXNzdWVzCityZWxhdGVkIHRvIHJlc2V0dGluZyB0aGUgVFgvUlggcGFja2V0IG51bWJlci4gVGhlcmUgd2FzIGFscmVhZHkgYSBjaGVjaworZm9yIHRoaXMgZm9yIFRQSyBNMiAocmV0cmllcyBvZiB0aGF0IG1lc3NhZ2UgYXJlIGlnbm9yZWQgY29tcGxldGVseSksIHNvCit0aGF0IGJlaGF2aW9yIGRvZXMgbm90IGdldCBtb2RpZmllZC4KKworRm9yIFRQSyBNMywgdGhlIFRQSy1USyBjb3VsZCBoYXZlIGJlZW4gcmVjb25maWd1cmVkLCBidXQgdGhhdCB3YXMKK2ZvbGxvd2VkIGJ5IGltbWVkaWF0ZSB0ZWFyZG93biBvZiB0aGUgbGluayBkdWUgdG8gYW4gaXNzdWUgaW4gdXBkYXRpbmcKK3RoZSBTVEEgZW50cnkuIEZ1cnRoZXJtb3JlLCBmb3IgVERMUyB3aXRoIGFueSByZWFsIHNlY3VyaXR5IChpLmUuLAoraWdub3Jpbmcgb3Blbi9XRVApLCB0aGUgVFBLIG1lc3NhZ2UgZXhjaGFuZ2UgaXMgcHJvdGVjdGVkIG9uIHRoZSBBUCBwYXRoCithbmQgc2ltcGxlIHJlcGxheSBhdHRhY2tzIGFyZSBub3QgZmVhc2libGUuCisKK0FzIGFuIGFkZGl0aW9uYWwgY29ybmVyIGNhc2UsIG1ha2Ugc3VyZSB0aGUgbG9jYWwgbm9uY2UgZ2V0cyB1cGRhdGVkIGlmCit0aGUgcGVlciB1c2VzIGEgdmVyeSB1bmxpa2VseSAicmFuZG9tIG5vbmNlIiBvZiBhbGwgemVyb3MuCisKK1NpZ25lZC1vZmYtYnk6IEpvdW5pIE1hbGluZW4gPGpAdzEuZmk+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFpoZW5nIFJ1b3FpbiA8emhlbmdycS5mbnN0QGNuLmZ1aml0c3UuY29tPgorLS0tCisgc3JjL3Jzbl9zdXBwL3RkbHMuYyB8IDM4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcnNuX3N1cHAvdGRscy5jIGIvc3JjL3Jzbl9zdXBwL3RkbHMuYworaW5kZXggZTQyNDE2OC4uOWViOTczOCAxMDA2NDQKKy0tLSBhL3NyYy9yc25fc3VwcC90ZGxzLmMKKysrKyBiL3NyYy9yc25fc3VwcC90ZGxzLmMKK0BAIC0xMTIsNiArMTEyLDcgQEAgc3RydWN0IHdwYV90ZGxzX3BlZXIgeworIAkJdTggdGtbMTZdOyAvKiBUUEstVEs7IGFzc3VtaW5nIG9ubHkgQ0NNUCB3aWxsIGJlIHVzZWQgKi8KKyAJfSB0cGs7CisgCWludCB0cGtfc2V0OworKwlpbnQgdGtfc2V0OyAvKiBUUEstVEsgY29uZmlndXJlZCB0byB0aGUgZHJpdmVyICovCisgCWludCB0cGtfc3VjY2VzczsKKyAJaW50IHRwa19pbl9wcm9ncmVzczsKKyAKK0BAIC0xOTIsNiArMTkzLDIwIEBAIHN0YXRpYyBpbnQgd3BhX3RkbHNfc2V0X2tleShzdHJ1Y3Qgd3BhX3NtICpzbSwgc3RydWN0IHdwYV90ZGxzX3BlZXIgKnBlZXIpCisgCXU4IHJzY1s2XTsKKyAJZW51bSB3cGFfYWxnIGFsZzsKKyAKKysJaWYgKHBlZXItPnRrX3NldCkgeworKwkJLyoKKysJCSAqIFRoaXMgc2FtZSBUUEstVEsgaGFzIGFscmVhZHkgYmVlbiBjb25maWd1cmVkIHRvIHRoZSBkcml2ZXIKKysJCSAqIGFuZCB0aGlzIG5ldyBjb25maWd1cmF0aW9uIGF0dGVtcHQgKGxpa2VseSBkdWUgdG8gYW4KKysJCSAqIHVuZXhwZWN0ZWQgcmV0cmFuc21pdHRlZCBmcmFtZSkgd291bGQgcmVzdWx0IGluIGNsZWFyaW5nCisrCQkgKiB0aGUgVFgvUlggc2VxdWVuY2UgbnVtYmVyIHdoaWNoIGNhbiBicmVhayBzZWN1cml0eSwgc28gbXVzdAorKwkJICogbm90IGFsbG93IHRoYXQgdG8gaGFwcGVuLgorKwkJICovCisrCQl3cGFfcHJpbnRmKE1TR19JTkZPLCAiVERMUzogVFBLLVRLIGZvciB0aGUgcGVlciAiIE1BQ1NUUgorKwkJCSAgICIgaGFzIGFscmVhZHkgYmVlbiBjb25maWd1cmVkIHRvIHRoZSBkcml2ZXIgLSBkbyBub3QgcmVjb25maWd1cmUiLAorKwkJCSAgIE1BQzJTVFIocGVlci0+YWRkcikpOworKwkJcmV0dXJuIC0xOworKwl9CisrCisgCW9zX21lbXNldChyc2MsIDAsIDYpOworIAorIAlzd2l0Y2ggKHBlZXItPmNpcGhlcikgeworQEAgLTIwOSwxMiArMjI0LDE1IEBAIHN0YXRpYyBpbnQgd3BhX3RkbHNfc2V0X2tleShzdHJ1Y3Qgd3BhX3NtICpzbSwgc3RydWN0IHdwYV90ZGxzX3BlZXIgKnBlZXIpCisgCQlyZXR1cm4gLTE7CisgCX0KKyAKKysJd3BhX3ByaW50ZihNU0dfREVCVUcsICJURExTOiBDb25maWd1cmUgcGFpcndpc2Uga2V5IGZvciBwZWVyICIgTUFDU1RSLAorKwkJICAgTUFDMlNUUihwZWVyLT5hZGRyKSk7CisgCWlmICh3cGFfc21fc2V0X2tleShzbSwgYWxnLCBwZWVyLT5hZGRyLCAtMSwgMSwKKyAJCQkgICByc2MsIHNpemVvZihyc2MpLCBwZWVyLT50cGsudGssIGtleV9sZW4pIDwgMCkgeworIAkJd3BhX3ByaW50ZihNU0dfV0FSTklORywgIlRETFM6IEZhaWxlZCB0byBzZXQgVFBLIHRvIHRoZSAiCisgCQkJICAgImRyaXZlciIpOworIAkJcmV0dXJuIC0xOworIAl9CisrCXBlZXItPnRrX3NldCA9IDE7CisgCXJldHVybiAwOworIH0KKyAKK0BAIC02OTYsNyArNzE0LDcgQEAgc3RhdGljIHZvaWQgd3BhX3RkbHNfcGVlcl9jbGVhcihzdHJ1Y3Qgd3BhX3NtICpzbSwgc3RydWN0IHdwYV90ZGxzX3BlZXIgKnBlZXIpCisgCXBlZXItPmNpcGhlciA9IDA7CisgCXBlZXItPnFvc19pbmZvID0gMDsKKyAJcGVlci0+d21tX2NhcGFibGUgPSAwOworLQlwZWVyLT50cGtfc2V0ID0gcGVlci0+dHBrX3N1Y2Nlc3MgPSAwOworKwlwZWVyLT50a19zZXQgPSBwZWVyLT50cGtfc2V0ID0gcGVlci0+dHBrX3N1Y2Nlc3MgPSAwOworIAlwZWVyLT5jaGFuX3N3aXRjaF9lbmFibGVkID0gMDsKKyAJb3NfbWVtc2V0KCZwZWVyLT50cGssIDAsIHNpemVvZihwZWVyLT50cGspKTsKKyAJb3NfbWVtc2V0KHBlZXItPmlub25jZSwgMCwgV1BBX05PTkNFX0xFTik7CitAQCAtMTE1OSw2ICsxMTc3LDcgQEAgc2tpcF9yc25pZToKKyAJCXdwYV90ZGxzX3BlZXJfZnJlZShzbSwgcGVlcik7CisgCQlyZXR1cm4gLTE7CisgCX0KKysJcGVlci0+dGtfc2V0ID0gMDsgLyogQSBuZXcgbm9uY2UgcmVzdWx0cyBpbiBhIG5ldyBUSyAqLworIAl3cGFfaGV4ZHVtcChNU0dfREVCVUcsICJURExTOiBJbml0aWF0b3IgTm9uY2UgZm9yIFRQSyBoYW5kc2hha2UiLAorIAkJICAgIHBlZXItPmlub25jZSwgV1BBX05PTkNFX0xFTik7CisgCW9zX21lbWNweShmdGllLT5Tbm9uY2UsIHBlZXItPmlub25jZSwgV1BBX05PTkNFX0xFTik7CitAQCAtMTc1MSw2ICsxNzcwLDE5IEBAIHN0YXRpYyBpbnQgd3BhX3RkbHNfYWRkc2V0X3BlZXIoc3RydWN0IHdwYV9zbSAqc20sIHN0cnVjdCB3cGFfdGRsc19wZWVyICpwZWVyLAorIH0KKyAKKyAKKytzdGF0aWMgaW50IHRkbHNfbm9uY2Vfc2V0KGNvbnN0IHU4ICpub25jZSkKKyt7CisrCWludCBpOworKworKwlmb3IgKGkgPSAwOyBpIDwgV1BBX05PTkNFX0xFTjsgaSsrKSB7CisrCQlpZiAobm9uY2VbaV0pCisrCQkJcmV0dXJuIDE7CisrCX0KKysKKysJcmV0dXJuIDA7CisrfQorKworKworIHN0YXRpYyBpbnQgd3BhX3RkbHNfcHJvY2Vzc190cGtfbTEoc3RydWN0IHdwYV9zbSAqc20sIGNvbnN0IHU4ICpzcmNfYWRkciwKKyAJCQkJICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbikKKyB7CitAQCAtMjAwNCw3ICsyMDM2LDggQEAgc2tpcF9yc246CisgCXBlZXItPnJzbmllX2lfbGVuID0ga2RlLnJzbl9pZV9sZW47CisgCXBlZXItPmNpcGhlciA9IGNpcGhlcjsKKyAKKy0JaWYgKG9zX21lbWNtcChwZWVyLT5pbm9uY2UsIGZ0aWUtPlNub25jZSwgV1BBX05PTkNFX0xFTikgIT0gMCkgeworKwlpZiAob3NfbWVtY21wKHBlZXItPmlub25jZSwgZnRpZS0+U25vbmNlLCBXUEFfTk9OQ0VfTEVOKSAhPSAwIHx8CisrCSAgICAhdGRsc19ub25jZV9zZXQocGVlci0+aW5vbmNlKSkgeworIAkJLyoKKyAJCSAqIFRoZXJlIGlzIG5vIHBvaW50IGluIHVwZGF0aW5nIHRoZSBSTm9uY2UgZm9yIGV2ZXJ5IG9idGFpbmVkCisgCQkgKiBUUEsgTTEgZnJhbWUgKGUuZy4sIHJldHJhbnNtaXNzaW9uIGR1ZSB0byB0aW1lb3V0KSB3aXRoIHRoZQorQEAgLTIwMjAsNiArMjA1Myw3IEBAIHNraXBfcnNuOgorIAkJCQkiVERMUzogRmFpbGVkIHRvIGdldCByYW5kb20gZGF0YSBmb3IgcmVzcG9uZGVyIG5vbmNlIik7CisgCQkJZ290byBlcnJvcjsKKyAJCX0KKysJCXBlZXItPnRrX3NldCA9IDA7IC8qIEEgbmV3IG5vbmNlIHJlc3VsdHMgaW4gYSBuZXcgVEsgKi8KKyAJfQorIAorICNpZiAwCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC8wMDA3LUZULURvLW5vdC1hbGxvdy1tdWx0aXBsZS1SZWFzc29jaWF0aW9uLVJlc3BvbnNlLWZyYW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkLzAwMDctRlQtRG8tbm90LWFsbG93LW11bHRpcGxlLVJlYXNzb2NpYXRpb24tUmVzcG9uc2UtZnJhbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDk3OGM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC8wMDA3LUZULURvLW5vdC1hbGxvdy1tdWx0aXBsZS1SZWFzc29jaWF0aW9uLVJlc3BvbnNlLWZyYW0ucGF0Y2gKQEAgLTAsMCArMSw4NSBAQAorRnJvbSBhNDJlYjY3YzQyZjg0NWZhZjI2NmIwNjMzZDUyZTE3ZjJhODJmNTExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm91bmkgTWFsaW5lbiA8akB3MS5maT4KK0RhdGU6IEZyaSwgMjIgU2VwIDIwMTcgMTI6MDY6MzcgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCA3LzddIEZUOiBEbyBub3QgYWxsb3cgbXVsdGlwbGUgUmVhc3NvY2lhdGlvbiBSZXNwb25zZSBmcmFtZXMKKworVGhlIGRyaXZlciBpcyBleHBlY3RlZCB0byBub3QgcmVwb3J0IGEgc2Vjb25kIGFzc29jaWF0aW9uIGV2ZW50IHdpdGhvdXQKK3RoZSBzdGF0aW9uIGhhdmluZyBleHBsaWNpdGx5IHJlcXVlc3QgYSBuZXcgYXNzb2NpYXRpb24uIEFzIHN1Y2gsIHRoaXMKK2Nhc2Ugc2hvdWxkIG5vdCBiZSByZWFjaGFibGUuIEhvd2V2ZXIsIHNpbmNlIHJlY29uZmlndXJpbmcgdGhlIHNhbWUKK3BhaXJ3aXNlIG9yIGdyb3VwIGtleXMgdG8gdGhlIGRyaXZlciBjb3VsZCByZXN1bHQgaW4gbm9uY2UgcmV1c2UgaXNzdWVzLAorYmUgZXh0cmEgY2FyZWZ1bCBoZXJlIGFuZCBkbyBhbiBhZGRpdGlvbmFsIHN0YXRlIGNoZWNrIHRvIGF2b2lkIHRoaXMKK2V2ZW4gaWYgdGhlIGxvY2FsIGRyaXZlciBlbmRzIHVwIHNvbWVob3cgYWNjZXB0aW5nIGFuIHVuZXhwZWN0ZWQKK1JlYXNzb2NpYXRpb24gUmVzcG9uc2UgZnJhbWUuCisKK1NpZ25lZC1vZmYtYnk6IEpvdW5pIE1hbGluZW4gPGpAdzEuZmk+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFpoZW5nIFJ1b3FpbiA8emhlbmdycS5mbnN0QGNuLmZ1aml0c3UuY29tPgorLS0tCisgc3JjL3Jzbl9zdXBwL3dwYS5jICAgIHwgMyArKysKKyBzcmMvcnNuX3N1cHAvd3BhX2Z0LmMgfCA4ICsrKysrKysrCisgc3JjL3Jzbl9zdXBwL3dwYV9pLmggIHwgMSArCisgMyBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvcnNuX3N1cHAvd3BhLmMgYi9zcmMvcnNuX3N1cHAvd3BhLmMKK2luZGV4IDA1NTBhNDEuLjJhNTNjNmYgMTAwNjQ0CistLS0gYS9zcmMvcnNuX3N1cHAvd3BhLmMKKysrKyBiL3NyYy9yc25fc3VwcC93cGEuYworQEAgLTI0NDAsNiArMjQ0MCw5IEBAIHZvaWQgd3BhX3NtX25vdGlmeV9kaXNhc3NvYyhzdHJ1Y3Qgd3BhX3NtICpzbSkKKyAjaWZkZWYgQ09ORklHX1RETFMKKyAJd3BhX3RkbHNfZGlzYXNzb2Moc20pOworICNlbmRpZiAvKiBDT05GSUdfVERMUyAqLworKyNpZmRlZiBDT05GSUdfSUVFRTgwMjExUgorKwlzbS0+ZnRfcmVhc3NvY19jb21wbGV0ZWQgPSAwOworKyNlbmRpZiAvKiBDT05GSUdfSUVFRTgwMjExUiAqLworIAorIAkvKiBLZXlzIGFyZSBub3QgbmVlZGVkIGluIHRoZSBXUEEgc3RhdGUgbWFjaGluZSBhbnltb3JlICovCisgCXdwYV9zbV9kcm9wX3NhKHNtKTsKK2RpZmYgLS1naXQgYS9zcmMvcnNuX3N1cHAvd3BhX2Z0LmMgYi9zcmMvcnNuX3N1cHAvd3BhX2Z0LmMKK2luZGV4IDIwNTc5M2UuLmQ0NWJiNDUgMTAwNjQ0CistLS0gYS9zcmMvcnNuX3N1cHAvd3BhX2Z0LmMKKysrKyBiL3NyYy9yc25fc3VwcC93cGFfZnQuYworQEAgLTE1Myw2ICsxNTMsNyBAQCBzdGF0aWMgdTggKiB3cGFfZnRfZ2VuX3JlcV9pZXMoc3RydWN0IHdwYV9zbSAqc20sIHNpemVfdCAqbGVuLAorIAl1MTYgY2FwYWI7CisgCisgCXNtLT5mdF9jb21wbGV0ZWQgPSAwOworKwlzbS0+ZnRfcmVhc3NvY19jb21wbGV0ZWQgPSAwOworIAorIAlidWZfbGVuID0gMiArIHNpemVvZihzdHJ1Y3QgcnNuX21kaWUpICsgMiArIHNpemVvZihzdHJ1Y3QgcnNuX2Z0aWUpICsKKyAJCTIgKyBzbS0+cjBraF9pZF9sZW4gKyByaWNfaWVzX2xlbiArIDEwMDsKK0BAIC02ODEsNiArNjgyLDExIEBAIGludCB3cGFfZnRfdmFsaWRhdGVfcmVhc3NvY19yZXNwKHN0cnVjdCB3cGFfc20gKnNtLCBjb25zdCB1OCAqaWVzLAorIAkJcmV0dXJuIC0xOworIAl9CisgCisrCWlmIChzbS0+ZnRfcmVhc3NvY19jb21wbGV0ZWQpIHsKKysJCXdwYV9wcmludGYoTVNHX0RFQlVHLCAiRlQ6IFJlYXNzb2NpYXRpb24gaGFzIGFscmVhZHkgYmVlbiBjb21wbGV0ZWQgZm9yIHRoaXMgRlQgcHJvdG9jb2wgaW5zdGFuY2UgLSBpZ25vcmUgdW5leHBlY3RlZCByZXRyYW5zbWlzc2lvbiIpOworKwkJcmV0dXJuIDA7CisrCX0KKysKKyAJaWYgKHdwYV9mdF9wYXJzZV9pZXMoaWVzLCBpZXNfbGVuLCAmcGFyc2UpIDwgMCkgeworIAkJd3BhX3ByaW50ZihNU0dfREVCVUcsICJGVDogRmFpbGVkIHRvIHBhcnNlIElFcyIpOworIAkJcmV0dXJuIC0xOworQEAgLTc4MSw2ICs3ODcsOCBAQCBpbnQgd3BhX2Z0X3ZhbGlkYXRlX3JlYXNzb2NfcmVzcChzdHJ1Y3Qgd3BhX3NtICpzbSwgY29uc3QgdTggKmllcywKKyAJCXJldHVybiAtMTsKKyAJfQorIAorKwlzbS0+ZnRfcmVhc3NvY19jb21wbGV0ZWQgPSAxOworKworIAlpZiAod3BhX2Z0X3Byb2Nlc3NfZ3RrX3N1YmVsZW0oc20sIHBhcnNlLmd0aywgcGFyc2UuZ3RrX2xlbikgPCAwKQorIAkJcmV0dXJuIC0xOworIAorZGlmZiAtLWdpdCBhL3NyYy9yc25fc3VwcC93cGFfaS5oIGIvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKK2luZGV4IDQxZjM3MWYuLjU2Zjg4ZGMgMTAwNjQ0CistLS0gYS9zcmMvcnNuX3N1cHAvd3BhX2kuaAorKysrIGIvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKK0BAIC0xMjgsNiArMTI4LDcgQEAgc3RydWN0IHdwYV9zbSB7CisgCXNpemVfdCByMGtoX2lkX2xlbjsKKyAJdTggcjFraF9pZFtGVF9SMUtIX0lEX0xFTl07CisgCWludCBmdF9jb21wbGV0ZWQ7CisrCWludCBmdF9yZWFzc29jX2NvbXBsZXRlZDsKKyAJaW50IG92ZXJfdGhlX2RzX2luX3Byb2dyZXNzOworIAl1OCB0YXJnZXRfYXBbRVRIX0FMRU5dOyAvKiBvdmVyLXRoZS1EUyB0YXJnZXQgQVAgKi8KKyAJaW50IHNldF9wdGtfYWZ0ZXJfYXNzb2M7CistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC9rZXktcmVwbGF5LWN2ZS1tdWx0aXBsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGQva2V5LXJlcGxheS1jdmUtbXVsdGlwbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5NGRhOGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC9rZXktcmVwbGF5LWN2ZS1tdWx0aXBsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk4NCArMCwwIEBACi1UaGUgV1BBMiBmb3VyLXdheSBoYW5kc2hha2UgcHJvdG9jb2wgaXMgdnVsbmVyYWJsZSB0byByZXBsYXkgYXR0YWNrcyB3aGljaCBjYW4KLXJlc3VsdCBpbiB1bmF1dGhlbnRpY2F0ZWQgY2xpZW50cyBnYWluaW5nIGFjY2VzcyB0byB0aGUgbmV0d29yay4KLQotQmFja3BvcnQgYSBudW1iZXIgb2YgcGF0Y2hlcyBmcm9tIHVwc3RyZWFtIHRvIGZpeCB0aGlzLgotCi1DVkU6IENWRS0yMDE3LTEzMDc3Ci1DVkU6IENWRS0yMDE3LTEzMDc4Ci1DVkU6IENWRS0yMDE3LTEzMDc5Ci1DVkU6IENWRS0yMDE3LTEzMDgwCi1DVkU6IENWRS0yMDE3LTEzMDgxCi1DVkU6IENWRS0yMDE3LTEzMDgyCi1DVkU6IENWRS0yMDE3LTEzMDg2Ci1DVkU6IENWRS0yMDE3LTEzMDg3Ci1DVkU6IENWRS0yMDE3LTEzMDg4Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gY2Y0Y2FiODA0YzdhZmQ1YzQ1NTA1NTI4YThkMTZlNDYxNjMyNDNhMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdGh5IFZhbmhvZWYgPE1hdGh5LlZhbmhvZWZAY3Mua3VsZXV2ZW4uYmU+Ci1EYXRlOiBGcmksIDE0IEp1bCAyMDE3IDE1OjE1OjM1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMS84XSBob3N0YXBkOiBBdm9pZCBrZXkgcmVpbnN0YWxsYXRpb24gaW4gRlQgaGFuZHNoYWtlCi0KLURvIG5vdCByZWluc3RhbGwgVEsgdG8gdGhlIGRyaXZlciBkdXJpbmcgUmVhc3NvY2lhdGlvbiBSZXNwb25zZSBmcmFtZQotcHJvY2Vzc2luZyBpZiB0aGUgZmlyc3QgYXR0ZW1wdCBvZiBzZXR0aW5nIHRoZSBUSyBzdWNjZWVkZWQuIFRoaXMgYXZvaWRzCi1pc3N1ZXMgcmVsYXRlZCB0byBjbGVhcmluZyB0aGUgVFgvUlggUE4gdGhhdCBjb3VsZCByZXN1bHQgaW4gcmV1c2luZwotc2FtZSBQTiB2YWx1ZXMgZm9yIHRyYW5zbWl0dGVkIGZyYW1lcyAoZS5nLiwgZHVlIHRvIENDTSBub25jZSByZXVzZSBhbmQKLWFsc28gaGl0dGluZyByZXBsYXkgcHJvdGVjdGlvbiBvbiB0aGUgcmVjZWl2ZXIpIGFuZCBhY2NlcHRpbmcgcmVwbGF5ZWQKLWZyYW1lcyBvbiBSWCBzaWRlLgotCi1UaGlzIGlzc3VlIHdhcyBpbnRyb2R1Y2VkIGJ5IHRoZSBjb21taXQKLTBlODRjMjU0MzRlNmExZjI4M2M3YjRlNjJlNDgzNzI5MDg1Yjc4ZDIgKCdGVDogRml4IFBUSyBjb25maWd1cmF0aW9uIGluCi1hdXRoZW50aWNhdG9yJykgd2hpY2ggYWxsb3dlZCB3cGFfZnRfaW5zdGFsbF9wdGsoKSB0byBiZSBjYWxsZWQgbXVsdGlwbGUKLXRpbWVzIHdpdGggdGhlIHNhbWUgUFRLLiBXaGlsZSB0aGUgc2Vjb25kIGNvbmZpZ3VyYXRpb24gYXR0ZW1wdCBpcwotbmVlZGVkIHdpdGggc29tZSBkcml2ZXJzLCBpdCBtdXN0IGJlIGRvbmUgb25seSBpZiB0aGUgZmlyc3QgYXR0ZW1wdAotZmFpbGVkLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXRoeSBWYW5ob2VmIDxNYXRoeS5WYW5ob2VmQGNzLmt1bGV1dmVuLmJlPgotLS0tCi0gc3JjL2FwL2llZWU4MDJfMTEuYyAgfCAxNiArKysrKysrKysrKysrLS0tCi0gc3JjL2FwL3dwYV9hdXRoLmMgICAgfCAxMSArKysrKysrKysrKwotIHNyYy9hcC93cGFfYXV0aC5oICAgIHwgIDMgKystCi0gc3JjL2FwL3dwYV9hdXRoX2Z0LmMgfCAxMCArKysrKysrKysrCi0gc3JjL2FwL3dwYV9hdXRoX2kuaCAgfCAgMSArCi0gNSBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2FwL2llZWU4MDJfMTEuYyBiL3NyYy9hcC9pZWVlODAyXzExLmMKLWluZGV4IDRlMDQxNjkuLjMzMzAzNWYgMTAwNjQ0Ci0tLS0gYS9zcmMvYXAvaWVlZTgwMl8xMS5jCi0rKysgYi9zcmMvYXAvaWVlZTgwMl8xMS5jCi1AQCAtMTg0MSw2ICsxODQxLDcgQEAgc3RhdGljIGludCBhZGRfYXNzb2NpYXRlZF9zdGEoc3RydWN0IGhvc3RhcGRfZGF0YSAqaGFwZCwKLSB7Ci0gCXN0cnVjdCBpZWVlODAyMTFfaHRfY2FwYWJpbGl0aWVzIGh0X2NhcDsKLSAJc3RydWN0IGllZWU4MDIxMV92aHRfY2FwYWJpbGl0aWVzIHZodF9jYXA7Ci0rCWludCBzZXQgPSAxOwotIAotIAkvKgotIAkgKiBSZW1vdmUgdGhlIFNUQSBlbnRyeSB0byBlbnN1cmUgdGhlIFNUQSBQUyBzdGF0ZSBnZXRzIGNsZWFyZWQgYW5kCi1AQCAtMTg0OCw5ICsxODQ5LDE4IEBAIHN0YXRpYyBpbnQgYWRkX2Fzc29jaWF0ZWRfc3RhKHN0cnVjdCBob3N0YXBkX2RhdGEgKmhhcGQsCi0gCSAqIEZULW92ZXItdGhlLURTLCB3aGVyZSBhIHN0YXRpb24gcmUtYXNzb2NpYXRlcyBiYWNrIHRvIHRoZSBzYW1lIEFQIGJ1dAotIAkgKiBza2lwcyB0aGUgYXV0aGVudGljYXRpb24gZmxvdywgb3IgaWYgd29ya2luZyB3aXRoIGEgZHJpdmVyIHRoYXQKLSAJICogZG9lcyBub3Qgc3VwcG9ydCBmdWxsIEFQIGNsaWVudCBzdGF0ZS4KLSsJICoKLSsJICogU2tpcCB0aGlzIGlmIHRoZSBTVEEgaGFzIGFscmVhZHkgY29tcGxldGVkIEZUIHJlYXNzb2NpYXRpb24gYW5kIHRoZQotKwkgKiBUSyBoYXMgYmVlbiBjb25maWd1cmVkIHNpbmNlIHRoZSBUWC9SWCBQTiBtdXN0IG5vdCBiZSByZXNldCB0byAwIGZvcgotKwkgKiB0aGUgc2FtZSBrZXkuCi0gCSAqLwotLQlpZiAoIXN0YS0+YWRkZWRfdW5hc3NvYykKLSsJaWYgKCFzdGEtPmFkZGVkX3VuYXNzb2MgJiYKLSsJICAgICghKHN0YS0+ZmxhZ3MgJiBXTEFOX1NUQV9BVVRIT1JJWkVEKSB8fAotKwkgICAgICF3cGFfYXV0aF9zdGFfZnRfdGtfYWxyZWFkeV9zZXQoc3RhLT53cGFfc20pKSkgewotIAkJaG9zdGFwZF9kcnZfc3RhX3JlbW92ZShoYXBkLCBzdGEtPmFkZHIpOwotKwkJd3BhX2F1dGhfc21fZXZlbnQoc3RhLT53cGFfc20sIFdQQV9EUlZfU1RBX1JFTU9WRUQpOwotKwkJc2V0ID0gMDsKLSsJfQotIAotICNpZmRlZiBDT05GSUdfSUVFRTgwMjExTgotIAlpZiAoc3RhLT5mbGFncyAmIFdMQU5fU1RBX0hUKQotQEAgLTE4NzMsMTEgKzE4ODMsMTEgQEAgc3RhdGljIGludCBhZGRfYXNzb2NpYXRlZF9zdGEoc3RydWN0IGhvc3RhcGRfZGF0YSAqaGFwZCwKLSAJCQkgICAgc3RhLT5mbGFncyAmIFdMQU5fU1RBX1ZIVCA/ICZ2aHRfY2FwIDogTlVMTCwKLSAJCQkgICAgc3RhLT5mbGFncyB8IFdMQU5fU1RBX0FTU09DLCBzdGEtPnFvc2luZm8sCi0gCQkJICAgIHN0YS0+dmh0X29wbW9kZSwgc3RhLT5wMnBfaWUgPyAxIDogMCwKLS0JCQkgICAgc3RhLT5hZGRlZF91bmFzc29jKSkgewotKwkJCSAgICBzZXQpKSB7Ci0gCQlob3N0YXBkX2xvZ2dlcihoYXBkLCBzdGEtPmFkZHIsCi0gCQkJICAgICAgIEhPU1RBUERfTU9EVUxFX0lFRUU4MDIxMSwgSE9TVEFQRF9MRVZFTF9OT1RJQ0UsCi0gCQkJICAgICAgICJDb3VsZCBub3QgJXMgU1RBIHRvIGtlcm5lbCBkcml2ZXIiLAotLQkJCSAgICAgICBzdGEtPmFkZGVkX3VuYXNzb2MgPyAic2V0IiA6ICJhZGQiKTsKLSsJCQkgICAgICAgc2V0ID8gInNldCIgOiAiYWRkIik7Ci0gCi0gCQlpZiAoc3RhLT5hZGRlZF91bmFzc29jKSB7Ci0gCQkJaG9zdGFwZF9kcnZfc3RhX3JlbW92ZShoYXBkLCBzdGEtPmFkZHIpOwotZGlmZiAtLWdpdCBhL3NyYy9hcC93cGFfYXV0aC5jIGIvc3JjL2FwL3dwYV9hdXRoLmMKLWluZGV4IDM1ODcwODYuLjcwNzk3MWQgMTAwNjQ0Ci0tLS0gYS9zcmMvYXAvd3BhX2F1dGguYwotKysrIGIvc3JjL2FwL3dwYV9hdXRoLmMKLUBAIC0xNzQ1LDYgKzE3NDUsOSBAQCBpbnQgd3BhX2F1dGhfc21fZXZlbnQoc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSwgZW51bSB3cGFfZXZlbnQgZXZlbnQpCi0gI2Vsc2UgLyogQ09ORklHX0lFRUU4MDIxMVIgKi8KLSAJCWJyZWFrOwotICNlbmRpZiAvKiBDT05GSUdfSUVFRTgwMjExUiAqLwotKwljYXNlIFdQQV9EUlZfU1RBX1JFTU9WRUQ6Ci0rCQlzbS0+dGtfYWxyZWFkeV9zZXQgPSBGQUxTRTsKLSsJCXJldHVybiAwOwotIAl9Ci0gCi0gI2lmZGVmIENPTkZJR19JRUVFODAyMTFSCi1AQCAtMzI1MCw2ICszMjUzLDE0IEBAIGludCB3cGFfYXV0aF9zdGFfd3BhX3ZlcnNpb24oc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSkKLSB9Ci0gCi0gCi0raW50IHdwYV9hdXRoX3N0YV9mdF90a19hbHJlYWR5X3NldChzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtKQotK3sKLSsJaWYgKCFzbSB8fCAhd3BhX2tleV9tZ210X2Z0KHNtLT53cGFfa2V5X21nbXQpKQotKwkJcmV0dXJuIDA7Ci0rCXJldHVybiBzbS0+dGtfYWxyZWFkeV9zZXQ7Ci0rfQotKwotKwotIGludCB3cGFfYXV0aF9zdGFfY2xlYXJfcG1rc2Eoc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSwKLSAJCQkgICAgIHN0cnVjdCByc25fcG1rc2FfY2FjaGVfZW50cnkgKmVudHJ5KQotIHsKLWRpZmYgLS1naXQgYS9zcmMvYXAvd3BhX2F1dGguaCBiL3NyYy9hcC93cGFfYXV0aC5oCi1pbmRleCAwZGU4ZDk3Li45NzQ2MWIwIDEwMDY0NAotLS0tIGEvc3JjL2FwL3dwYV9hdXRoLmgKLSsrKyBiL3NyYy9hcC93cGFfYXV0aC5oCi1AQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgd3BhX3JlY2VpdmUoc3RydWN0IHdwYV9hdXRoZW50aWNhdG9yICp3cGFfYXV0aCwKLSAJCSB1OCAqZGF0YSwgc2l6ZV90IGRhdGFfbGVuKTsKLSBlbnVtIHdwYV9ldmVudCB7Ci0gCVdQQV9BVVRILCBXUEFfQVNTT0MsIFdQQV9ESVNBU1NPQywgV1BBX0RFQVVUSCwgV1BBX1JFQVVUSCwKLS0JV1BBX1JFQVVUSF9FQVBPTCwgV1BBX0FTU09DX0ZUCi0rCVdQQV9SRUFVVEhfRUFQT0wsIFdQQV9BU1NPQ19GVCwgV1BBX0RSVl9TVEFfUkVNT1ZFRAotIH07Ci0gdm9pZCB3cGFfcmVtb3ZlX3B0ayhzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtKTsKLSBpbnQgd3BhX2F1dGhfc21fZXZlbnQoc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSwgZW51bSB3cGFfZXZlbnQgZXZlbnQpOwotQEAgLTI4MCw2ICsyODAsNyBAQCBpbnQgd3BhX2F1dGhfcGFpcndpc2Vfc2V0KHN0cnVjdCB3cGFfc3RhdGVfbWFjaGluZSAqc20pOwotIGludCB3cGFfYXV0aF9nZXRfcGFpcndpc2Uoc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSk7Ci0gaW50IHdwYV9hdXRoX3N0YV9rZXlfbWdtdChzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtKTsKLSBpbnQgd3BhX2F1dGhfc3RhX3dwYV92ZXJzaW9uKHN0cnVjdCB3cGFfc3RhdGVfbWFjaGluZSAqc20pOwotK2ludCB3cGFfYXV0aF9zdGFfZnRfdGtfYWxyZWFkeV9zZXQoc3RydWN0IHdwYV9zdGF0ZV9tYWNoaW5lICpzbSk7Ci0gaW50IHdwYV9hdXRoX3N0YV9jbGVhcl9wbWtzYShzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtLAotIAkJCSAgICAgc3RydWN0IHJzbl9wbWtzYV9jYWNoZV9lbnRyeSAqZW50cnkpOwotIHN0cnVjdCByc25fcG1rc2FfY2FjaGVfZW50cnkgKgotZGlmZiAtLWdpdCBhL3NyYy9hcC93cGFfYXV0aF9mdC5jIGIvc3JjL2FwL3dwYV9hdXRoX2Z0LmMKLWluZGV4IDQyMjQyYTUuLmU2M2I5OWEgMTAwNjQ0Ci0tLS0gYS9zcmMvYXAvd3BhX2F1dGhfZnQuYwotKysrIGIvc3JjL2FwL3dwYV9hdXRoX2Z0LmMKLUBAIC03ODAsNiArNzgwLDE0IEBAIHZvaWQgd3BhX2Z0X2luc3RhbGxfcHRrKHN0cnVjdCB3cGFfc3RhdGVfbWFjaGluZSAqc20pCi0gCQlyZXR1cm47Ci0gCX0KLSAKLSsJaWYgKHNtLT50a19hbHJlYWR5X3NldCkgewotKwkJLyogTXVzdCBhdm9pZCBUSyByZWNvbmZpZ3VyYXRpb24gdG8gcHJldmVudCBjbGVhcmluZyBvZiBUWC9SWAotKwkJICogUE4gaW4gdGhlIGRyaXZlciAqLwotKwkJd3BhX3ByaW50ZihNU0dfREVCVUcsCi0rCQkJICAgIkZUOiBEbyBub3QgcmUtaW5zdGFsbCBzYW1lIFBUSyB0byB0aGUgZHJpdmVyIik7Ci0rCQlyZXR1cm47Ci0rCX0KLSsKLSAJLyogRklYOiBhZGQgU1RBIGVudHJ5IHRvIGtlcm5lbC9kcml2ZXIgaGVyZT8gVGhlIHNldF9rZXkgd2lsbCBmYWlsCi0gCSAqIG1vc3QgbGlrZWx5IHdpdGhvdXQgdGhpcy4uIEF0IHRoZSBtb21lbnQsIFNUQSBlbnRyeSBpcyBhZGRlZCBvbmx5Ci0gCSAqIGFmdGVyIGFzc29jaWF0aW9uIGhhcyBiZWVuIGNvbXBsZXRlZC4gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZAotQEAgLTc5Miw2ICs4MDAsNyBAQCB2b2lkIHdwYV9mdF9pbnN0YWxsX3B0ayhzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtKQotIAotIAkvKiBGSVg6IE1MTUUtU2V0UHJvdGVjdGlvbi5SZXF1ZXN0KFRBLCBUeF9SeCkgKi8KLSAJc20tPnBhaXJ3aXNlX3NldCA9IFRSVUU7Ci0rCXNtLT50a19hbHJlYWR5X3NldCA9IFRSVUU7Ci0gfQotIAotIAotQEAgLTg5OCw2ICs5MDcsNyBAQCBzdGF0aWMgaW50IHdwYV9mdF9wcm9jZXNzX2F1dGhfcmVxKHN0cnVjdCB3cGFfc3RhdGVfbWFjaGluZSAqc20sCi0gCi0gCXNtLT5wYWlyd2lzZSA9IHBhaXJ3aXNlOwotIAlzbS0+UFRLX3ZhbGlkID0gVFJVRTsKLSsJc20tPnRrX2FscmVhZHlfc2V0ID0gRkFMU0U7Ci0gCXdwYV9mdF9pbnN0YWxsX3B0ayhzbSk7Ci0gCi0gCWJ1ZmxlbiA9IDIgKyBzaXplb2Yoc3RydWN0IHJzbl9tZGllKSArIDIgKyBzaXplb2Yoc3RydWN0IHJzbl9mdGllKSArCi1kaWZmIC0tZ2l0IGEvc3JjL2FwL3dwYV9hdXRoX2kuaCBiL3NyYy9hcC93cGFfYXV0aF9pLmgKLWluZGV4IDcyYjdlYjMuLjdmZDhmMDUgMTAwNjQ0Ci0tLS0gYS9zcmMvYXAvd3BhX2F1dGhfaS5oCi0rKysgYi9zcmMvYXAvd3BhX2F1dGhfaS5oCi1AQCAtNjUsNiArNjUsNyBAQCBzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgewotIAlzdHJ1Y3Qgd3BhX3B0ayBQVEs7Ci0gCUJvb2xlYW4gUFRLX3ZhbGlkOwotIAlCb29sZWFuIHBhaXJ3aXNlX3NldDsKLSsJQm9vbGVhbiB0a19hbHJlYWR5X3NldDsKLSAJaW50IGtleWNvdW50OwotIAlCb29sZWFuIFBhaXI7Ci0gCXN0cnVjdCB3cGFfa2V5X3JlcGxheV9jb3VudGVyIHsKLS0tIAotMi43LjQKLQotRnJvbSA5MjdmODkxMDA3YzQwMmZlZmQxZmYzODQ2NDViM2YwNzU5N2MzZWRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0aHkgVmFuaG9lZiA8TWF0aHkuVmFuaG9lZkBjcy5rdWxldXZlbi5iZT4KLURhdGU6IFdlZCwgMTIgSnVsIDIwMTcgMTY6MDM6MjQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzhdIFByZXZlbnQgcmVpbnN0YWxsYXRpb24gb2YgYW4gYWxyZWFkeSBpbi11c2UgZ3JvdXAga2V5Ci0KLVRyYWNrIHRoZSBjdXJyZW50IEdUSyBhbmQgSUdUSyB0aGF0IGlzIGluIHVzZSBhbmQgd2hlbiByZWNlaXZpbmcgYQotKHBvc3NpYmx5IHJldHJhbnNtaXR0ZWQpIEdyb3VwIE1lc3NhZ2UgMSBvciBXTk0tU2xlZXAgTW9kZSBSZXNwb25zZSwgZG8KLW5vdCBpbnN0YWxsIHRoZSBnaXZlbiBrZXkgaWYgaXQgaXMgYWxyZWFkeSBpbiB1c2UuIFRoaXMgcHJldmVudHMgYW4KLWF0dGFja2VyIGZyb20gdHJ5aW5nIHRvIHRyaWNrIHRoZSBjbGllbnQgaW50byByZXNldHRpbmcgb3IgbG93ZXJpbmcgdGhlCi1zZXF1ZW5jZSBjb3VudGVyIGFzc29jaWF0ZWQgdG8gdGhlIGdyb3VwIGtleS4KLQotU2lnbmVkLW9mZi1ieTogTWF0aHkgVmFuaG9lZiA8TWF0aHkuVmFuaG9lZkBjcy5rdWxldXZlbi5iZT4KLS0tLQotIHNyYy9jb21tb24vd3BhX2NvbW1vbi5oIHwgIDExICsrKysrCi0gc3JjL3Jzbl9zdXBwL3dwYS5jICAgICAgfCAxMTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL3Jzbl9zdXBwL3dwYV9pLmggICAgfCAgIDQgKysKLSAzIGZpbGVzIGNoYW5nZWQsIDg3IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi93cGFfY29tbW9uLmggYi9zcmMvY29tbW9uL3dwYV9jb21tb24uaAotaW5kZXggYWYxZDBmMC4uZDIwMDI4NSAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb24vd3BhX2NvbW1vbi5oCi0rKysgYi9zcmMvY29tbW9uL3dwYV9jb21tb24uaAotQEAgLTIxNyw2ICsyMTcsMTcgQEAgc3RydWN0IHdwYV9wdGsgewotIAlzaXplX3QgdGtfbGVuOwotIH07Ci0gCi0rc3RydWN0IHdwYV9ndGsgewotKwl1OCBndGtbV1BBX0dUS19NQVhfTEVOXTsKLSsJc2l6ZV90IGd0a19sZW47Ci0rfTsKLSsKLSsjaWZkZWYgQ09ORklHX0lFRUU4MDIxMVcKLStzdHJ1Y3Qgd3BhX2lndGsgewotKwl1OCBpZ3RrW1dQQV9JR1RLX01BWF9MRU5dOwotKwlzaXplX3QgaWd0a19sZW47Ci0rfTsKLSsjZW5kaWYgLyogQ09ORklHX0lFRUU4MDIxMVcgKi8KLSAKLSAvKiBXUEEgSUUgdmVyc2lvbiAxCi0gICogMDAtNTAtZjI6MSAoT1VJOk9VSSB0eXBlKQotZGlmZiAtLWdpdCBhL3NyYy9yc25fc3VwcC93cGEuYyBiL3NyYy9yc25fc3VwcC93cGEuYwotaW5kZXggM2M0Nzg3OS4uOTViZDdiZSAxMDA2NDQKLS0tLSBhL3NyYy9yc25fc3VwcC93cGEuYwotKysrIGIvc3JjL3Jzbl9zdXBwL3dwYS5jCi1AQCAtNzE0LDYgKzcxNCwxNSBAQCBzdGF0aWMgaW50IHdwYV9zdXBwbGljYW50X2luc3RhbGxfZ3RrKHN0cnVjdCB3cGFfc20gKnNtLAotIAljb25zdCB1OCAqX2d0ayA9IGdkLT5ndGs7Ci0gCXU4IGd0a19idWZbMzJdOwotIAotKwkvKiBEZXRlY3QgcG9zc2libGUga2V5IHJlaW5zdGFsbGF0aW9uICovCi0rCWlmIChzbS0+Z3RrLmd0a19sZW4gPT0gKHNpemVfdCkgZ2QtPmd0a19sZW4gJiYKLSsJICAgIG9zX21lbWNtcChzbS0+Z3RrLmd0aywgZ2QtPmd0aywgc20tPmd0ay5ndGtfbGVuKSA9PSAwKSB7Ci0rCQl3cGFfZGJnKHNtLT5jdHgtPm1zZ19jdHgsIE1TR19ERUJVRywKLSsJCQkiV1BBOiBOb3QgcmVpbnN0YWxsaW5nIGFscmVhZHkgaW4tdXNlIEdUSyB0byB0aGUgZHJpdmVyIChrZXlpZHg9JWQgdHg9JWQgbGVuPSVkKSIsCi0rCQkJZ2QtPmtleWlkeCwgZ2QtPnR4LCBnZC0+Z3RrX2xlbik7Ci0rCQlyZXR1cm4gMDsKLSsJfQotKwotIAl3cGFfaGV4ZHVtcF9rZXkoTVNHX0RFQlVHLCAiV1BBOiBHcm91cCBLZXkiLCBnZC0+Z3RrLCBnZC0+Z3RrX2xlbik7Ci0gCXdwYV9kYmcoc20tPmN0eC0+bXNnX2N0eCwgTVNHX0RFQlVHLAotIAkJIldQQTogSW5zdGFsbGluZyBHVEsgdG8gdGhlIGRyaXZlciAoa2V5aWR4PSVkIHR4PSVkIGxlbj0lZCkiLAotQEAgLTc0OCw2ICs3NTcsOSBAQCBzdGF0aWMgaW50IHdwYV9zdXBwbGljYW50X2luc3RhbGxfZ3RrKHN0cnVjdCB3cGFfc20gKnNtLAotIAl9Ci0gCW9zX21lbXNldChndGtfYnVmLCAwLCBzaXplb2YoZ3RrX2J1ZikpOwotIAotKwlzbS0+Z3RrLmd0a19sZW4gPSBnZC0+Z3RrX2xlbjsKLSsJb3NfbWVtY3B5KHNtLT5ndGsuZ3RrLCBnZC0+Z3RrLCBzbS0+Z3RrLmd0a19sZW4pOwotKwotIAlyZXR1cm4gMDsKLSB9Ci0gCi1AQCAtODU0LDYgKzg2Niw0OCBAQCBzdGF0aWMgaW50IHdwYV9zdXBwbGljYW50X3BhaXJ3aXNlX2d0ayhzdHJ1Y3Qgd3BhX3NtICpzbSwKLSB9Ci0gCi0gCi0rI2lmZGVmIENPTkZJR19JRUVFODAyMTFXCi0rc3RhdGljIGludCB3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2lndGsoc3RydWN0IHdwYV9zbSAqc20sCi0rCQkJCSAgICAgICBjb25zdCBzdHJ1Y3Qgd3BhX2lndGtfa2RlICppZ3RrKQotK3sKLSsJc2l6ZV90IGxlbiA9IHdwYV9jaXBoZXJfa2V5X2xlbihzbS0+bWdtdF9ncm91cF9jaXBoZXIpOwotKwl1MTYga2V5aWR4ID0gV1BBX0dFVF9MRTE2KGlndGstPmtleWlkKTsKLSsKLSsJLyogRGV0ZWN0IHBvc3NpYmxlIGtleSByZWluc3RhbGxhdGlvbiAqLwotKwlpZiAoc20tPmlndGsuaWd0a19sZW4gPT0gbGVuICYmCi0rCSAgICBvc19tZW1jbXAoc20tPmlndGsuaWd0aywgaWd0ay0+aWd0aywgc20tPmlndGsuaWd0a19sZW4pID09IDApIHsKLSsJCXdwYV9kYmcoc20tPmN0eC0+bXNnX2N0eCwgTVNHX0RFQlVHLAotKwkJCSJXUEE6IE5vdCByZWluc3RhbGxpbmcgYWxyZWFkeSBpbi11c2UgSUdUSyB0byB0aGUgZHJpdmVyIChrZXlpZHg9JWQpIiwKLSsJCQlrZXlpZHgpOwotKwkJcmV0dXJuICAwOwotKwl9Ci0rCi0rCXdwYV9kYmcoc20tPmN0eC0+bXNnX2N0eCwgTVNHX0RFQlVHLAotKwkJIldQQTogSUdUSyBrZXlpZCAlZCBwbiAlMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngiLAotKwkJa2V5aWR4LCBNQUMyU1RSKGlndGstPnBuKSk7Ci0rCXdwYV9oZXhkdW1wX2tleShNU0dfREVCVUcsICJXUEE6IElHVEsiLCBpZ3RrLT5pZ3RrLCBsZW4pOwotKwlpZiAoa2V5aWR4ID4gNDA5NSkgewotKwkJd3BhX21zZyhzbS0+Y3R4LT5tc2dfY3R4LCBNU0dfV0FSTklORywKLSsJCQkiV1BBOiBJbnZhbGlkIElHVEsgS2V5SUQgJWQiLCBrZXlpZHgpOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCWlmICh3cGFfc21fc2V0X2tleShzbSwgd3BhX2NpcGhlcl90b19hbGcoc20tPm1nbXRfZ3JvdXBfY2lwaGVyKSwKLSsJCQkgICBicm9hZGNhc3RfZXRoZXJfYWRkciwKLSsJCQkgICBrZXlpZHgsIDAsIGlndGstPnBuLCBzaXplb2YoaWd0ay0+cG4pLAotKwkJCSAgIGlndGstPmlndGssIGxlbikgPCAwKSB7Ci0rCQl3cGFfbXNnKHNtLT5jdHgtPm1zZ19jdHgsIE1TR19XQVJOSU5HLAotKwkJCSJXUEE6IEZhaWxlZCB0byBjb25maWd1cmUgSUdUSyB0byB0aGUgZHJpdmVyIik7Ci0rCQlyZXR1cm4gLTE7Ci0rCX0KLSsKLSsJc20tPmlndGsuaWd0a19sZW4gPSBsZW47Ci0rCW9zX21lbWNweShzbS0+aWd0ay5pZ3RrLCBpZ3RrLT5pZ3RrLCBzbS0+aWd0ay5pZ3RrX2xlbik7Ci0rCi0rCXJldHVybiAwOwotK30KLSsjZW5kaWYgLyogQ09ORklHX0lFRUU4MDIxMVcgKi8KLSsKLSsKLSBzdGF0aWMgaW50IGllZWU4MDIxMXdfc2V0X2tleXMoc3RydWN0IHdwYV9zbSAqc20sCi0gCQkJICAgICAgIHN0cnVjdCB3cGFfZWFwb2xfaWVfcGFyc2UgKmllKQotIHsKLUBAIC04NjQsMzAgKzkxOCwxNCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMXdfc2V0X2tleXMoc3RydWN0IHdwYV9zbSAqc20sCi0gCWlmIChpZS0+aWd0aykgewotIAkJc2l6ZV90IGxlbjsKLSAJCWNvbnN0IHN0cnVjdCB3cGFfaWd0a19rZGUgKmlndGs7Ci0tCQl1MTYga2V5aWR4OwotKwotIAkJbGVuID0gd3BhX2NpcGhlcl9rZXlfbGVuKHNtLT5tZ210X2dyb3VwX2NpcGhlcik7Ci0gCQlpZiAoaWUtPmlndGtfbGVuICE9IFdQQV9JR1RLX0tERV9QUkVGSVhfTEVOICsgbGVuKQotIAkJCXJldHVybiAtMTsKLSsKLSAJCWlndGsgPSAoY29uc3Qgc3RydWN0IHdwYV9pZ3RrX2tkZSAqKSBpZS0+aWd0azsKLS0JCWtleWlkeCA9IFdQQV9HRVRfTEUxNihpZ3RrLT5rZXlpZCk7Ci0tCQl3cGFfZGJnKHNtLT5jdHgtPm1zZ19jdHgsIE1TR19ERUJVRywgIldQQTogSUdUSyBrZXlpZCAlZCAiCi0tCQkJInBuICUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCIsCi0tCQkJa2V5aWR4LCBNQUMyU1RSKGlndGstPnBuKSk7Ci0tCQl3cGFfaGV4ZHVtcF9rZXkoTVNHX0RFQlVHLCAiV1BBOiBJR1RLIiwKLS0JCQkJaWd0ay0+aWd0aywgbGVuKTsKLS0JCWlmIChrZXlpZHggPiA0MDk1KSB7Ci0tCQkJd3BhX21zZyhzbS0+Y3R4LT5tc2dfY3R4LCBNU0dfV0FSTklORywKLS0JCQkJIldQQTogSW52YWxpZCBJR1RLIEtleUlEICVkIiwga2V5aWR4KTsKLS0JCQlyZXR1cm4gLTE7Ci0tCQl9Ci0tCQlpZiAod3BhX3NtX3NldF9rZXkoc20sIHdwYV9jaXBoZXJfdG9fYWxnKHNtLT5tZ210X2dyb3VwX2NpcGhlciksCi0tCQkJCSAgIGJyb2FkY2FzdF9ldGhlcl9hZGRyLAotLQkJCQkgICBrZXlpZHgsIDAsIGlndGstPnBuLCBzaXplb2YoaWd0ay0+cG4pLAotLQkJCQkgICBpZ3RrLT5pZ3RrLCBsZW4pIDwgMCkgewotLQkJCXdwYV9tc2coc20tPmN0eC0+bXNnX2N0eCwgTVNHX1dBUk5JTkcsCi0tCQkJCSJXUEE6IEZhaWxlZCB0byBjb25maWd1cmUgSUdUSyB0byB0aGUgZHJpdmVyIik7Ci0rCQlpZiAod3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9pZ3RrKHNtLCBpZ3RrKSA8IDApCi0gCQkJcmV0dXJuIC0xOwotLQkJfQotIAl9Ci0gCi0gCXJldHVybiAwOwotQEAgLTIzMDcsNyArMjM0NSw3IEBAIHZvaWQgd3BhX3NtX2RlaW5pdChzdHJ1Y3Qgd3BhX3NtICpzbSkKLSAgKi8KLSB2b2lkIHdwYV9zbV9ub3RpZnlfYXNzb2Moc3RydWN0IHdwYV9zbSAqc20sIGNvbnN0IHU4ICpic3NpZCkKLSB7Ci0tCWludCBjbGVhcl9wdGsgPSAxOwotKwlpbnQgY2xlYXJfa2V5cyA9IDE7Ci0gCi0gCWlmIChzbSA9PSBOVUxMKQotIAkJcmV0dXJuOwotQEAgLTIzMzMsMTEgKzIzNzEsMTEgQEAgdm9pZCB3cGFfc21fbm90aWZ5X2Fzc29jKHN0cnVjdCB3cGFfc20gKnNtLCBjb25zdCB1OCAqYnNzaWQpCi0gCQkvKiBQcmVwYXJlIGZvciB0aGUgbmV4dCB0cmFuc2l0aW9uICovCi0gCQl3cGFfZnRfcHJlcGFyZV9hdXRoX3JlcXVlc3Qoc20sIE5VTEwpOwotIAotLQkJY2xlYXJfcHRrID0gMDsKLSsJCWNsZWFyX2tleXMgPSAwOwotIAl9Ci0gI2VuZGlmIC8qIENPTkZJR19JRUVFODAyMTFSICovCi0gCi0tCWlmIChjbGVhcl9wdGspIHsKLSsJaWYgKGNsZWFyX2tleXMpIHsKLSAJCS8qCi0gCQkgKiBJRUVFIDgwMi4xMSwgOC40LjEwOiBEZWxldGUgUFRLIFNBIG9uIChyZSlhc3NvY2lhdGlvbiBpZgotIAkJICogdGhpcyBpcyBub3QgcGFydCBvZiBhIEZhc3QgQlNTIFRyYW5zaXRpb24uCi1AQCAtMjM0Nyw2ICsyMzg1LDEwIEBAIHZvaWQgd3BhX3NtX25vdGlmeV9hc3NvYyhzdHJ1Y3Qgd3BhX3NtICpzbSwgY29uc3QgdTggKmJzc2lkKQotIAkJb3NfbWVtc2V0KCZzbS0+cHRrLCAwLCBzaXplb2Yoc20tPnB0aykpOwotIAkJc20tPnRwdGtfc2V0ID0gMDsKLSAJCW9zX21lbXNldCgmc20tPnRwdGssIDAsIHNpemVvZihzbS0+dHB0aykpOwotKwkJb3NfbWVtc2V0KCZzbS0+Z3RrLCAwLCBzaXplb2Yoc20tPmd0aykpOwotKyNpZmRlZiBDT05GSUdfSUVFRTgwMjExVwotKwkJb3NfbWVtc2V0KCZzbS0+aWd0aywgMCwgc2l6ZW9mKHNtLT5pZ3RrKSk7Ci0rI2VuZGlmIC8qIENPTkZJR19JRUVFODAyMTFXICovCi0gCX0KLSAKLSAjaWZkZWYgQ09ORklHX1RETFMKLUBAIC0yODc3LDYgKzI5MTksMTAgQEAgdm9pZCB3cGFfc21fZHJvcF9zYShzdHJ1Y3Qgd3BhX3NtICpzbSkKLSAJb3NfbWVtc2V0KHNtLT5wbWssIDAsIHNpemVvZihzbS0+cG1rKSk7Ci0gCW9zX21lbXNldCgmc20tPnB0aywgMCwgc2l6ZW9mKHNtLT5wdGspKTsKLSAJb3NfbWVtc2V0KCZzbS0+dHB0aywgMCwgc2l6ZW9mKHNtLT50cHRrKSk7Ci0rCW9zX21lbXNldCgmc20tPmd0aywgMCwgc2l6ZW9mKHNtLT5ndGspKTsKLSsjaWZkZWYgQ09ORklHX0lFRUU4MDIxMVcKLSsJb3NfbWVtc2V0KCZzbS0+aWd0aywgMCwgc2l6ZW9mKHNtLT5pZ3RrKSk7Ci0rI2VuZGlmIC8qIENPTkZJR19JRUVFODAyMTFXICovCi0gI2lmZGVmIENPTkZJR19JRUVFODAyMTFSCi0gCW9zX21lbXNldChzbS0+eHhrZXksIDAsIHNpemVvZihzbS0+eHhrZXkpKTsKLSAJb3NfbWVtc2V0KHNtLT5wbWtfcjAsIDAsIHNpemVvZihzbS0+cG1rX3IwKSk7Ci1AQCAtMjk0OSwyOSArMjk5NSwxMSBAQCBpbnQgd3BhX3dubXNsZWVwX2luc3RhbGxfa2V5KHN0cnVjdCB3cGFfc20gKnNtLCB1OCBzdWJlbGVtX2lkLCB1OCAqYnVmKQotIAkJb3NfbWVtc2V0KCZnZCwgMCwgc2l6ZW9mKGdkKSk7Ci0gI2lmZGVmIENPTkZJR19JRUVFODAyMTFXCi0gCX0gZWxzZSBpZiAoc3ViZWxlbV9pZCA9PSBXTk1fU0xFRVBfU1VCRUxFTV9JR1RLKSB7Ci0tCQlzdHJ1Y3Qgd3BhX2lndGtfa2RlIGlnZDsKLS0JCXUxNiBrZXlpZHg7Ci0tCi0tCQlvc19tZW1zZXQoJmlnZCwgMCwgc2l6ZW9mKGlnZCkpOwotLQkJa2V5bGVuID0gd3BhX2NpcGhlcl9rZXlfbGVuKHNtLT5tZ210X2dyb3VwX2NpcGhlcik7Ci0tCQlvc19tZW1jcHkoaWdkLmtleWlkLCBidWYgKyAyLCAyKTsKLS0JCW9zX21lbWNweShpZ2QucG4sIGJ1ZiArIDQsIDYpOwotLQotLQkJa2V5aWR4ID0gV1BBX0dFVF9MRTE2KGlnZC5rZXlpZCk7Ci0tCQlvc19tZW1jcHkoaWdkLmlndGssIGJ1ZiArIDEwLCBrZXlsZW4pOwotLQotLQkJd3BhX2hleGR1bXBfa2V5KE1TR19ERUJVRywgIkluc3RhbGwgSUdUSyAoV05NIFNMRUVQKSIsCi0tCQkJCWlnZC5pZ3RrLCBrZXlsZW4pOwotLQkJaWYgKHdwYV9zbV9zZXRfa2V5KHNtLCB3cGFfY2lwaGVyX3RvX2FsZyhzbS0+bWdtdF9ncm91cF9jaXBoZXIpLAotLQkJCQkgICBicm9hZGNhc3RfZXRoZXJfYWRkciwKLS0JCQkJICAga2V5aWR4LCAwLCBpZ2QucG4sIHNpemVvZihpZ2QucG4pLAotLQkJCQkgICBpZ2QuaWd0aywga2V5bGVuKSA8IDApIHsKLS0JCQl3cGFfcHJpbnRmKE1TR19ERUJVRywgIkZhaWxlZCB0byBpbnN0YWxsIHRoZSBJR1RLIGluICIKLS0JCQkJICAgIldOTSBtb2RlIik7Ci0tCQkJb3NfbWVtc2V0KCZpZ2QsIDAsIHNpemVvZihpZ2QpKTsKLSsJCWNvbnN0IHN0cnVjdCB3cGFfaWd0a19rZGUgKmlndGs7Ci0rCi0rCQlpZ3RrID0gKGNvbnN0IHN0cnVjdCB3cGFfaWd0a19rZGUgKikgKGJ1ZiArIDIpOwotKwkJaWYgKHdwYV9zdXBwbGljYW50X2luc3RhbGxfaWd0ayhzbSwgaWd0aykgPCAwKQotIAkJCXJldHVybiAtMTsKLS0JCX0KLS0JCW9zX21lbXNldCgmaWdkLCAwLCBzaXplb2YoaWdkKSk7Ci0gI2VuZGlmIC8qIENPTkZJR19JRUVFODAyMTFXICovCi0gCX0gZWxzZSB7Ci0gCQl3cGFfcHJpbnRmKE1TR19ERUJVRywgIlVua25vd24gZWxlbWVudCBpZCIpOwotZGlmZiAtLWdpdCBhL3NyYy9yc25fc3VwcC93cGFfaS5oIGIvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKLWluZGV4IGY2NTNiYTYuLmFmYzllMzcgMTAwNjQ0Ci0tLS0gYS9zcmMvcnNuX3N1cHAvd3BhX2kuaAotKysrIGIvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKLUBAIC0zMSw2ICszMSwxMCBAQCBzdHJ1Y3Qgd3BhX3NtIHsKLSAJdTggcnhfcmVwbGF5X2NvdW50ZXJbV1BBX1JFUExBWV9DT1VOVEVSX0xFTl07Ci0gCWludCByeF9yZXBsYXlfY291bnRlcl9zZXQ7Ci0gCXU4IHJlcXVlc3RfY291bnRlcltXUEFfUkVQTEFZX0NPVU5URVJfTEVOXTsKLSsJc3RydWN0IHdwYV9ndGsgZ3RrOwotKyNpZmRlZiBDT05GSUdfSUVFRTgwMjExVwotKwlzdHJ1Y3Qgd3BhX2lndGsgaWd0azsKLSsjZW5kaWYgLyogQ09ORklHX0lFRUU4MDIxMVcgKi8KLSAKLSAJc3RydWN0IGVhcG9sX3NtICplYXBvbDsgLyogRUFQT0wgc3RhdGUgbWFjaGluZSBmcm9tIHVwcGVyIGxldmVsIGNvZGUgKi8KLSAKLS0tIAotMi43LjQKLQotRnJvbSA4MjgwMjk0ZTc0ODQ2ZWEzNDIzODlhMGNkMTcyMTUwNTBmYTVhZmU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSm91bmkgTWFsaW5lbiA8akB3MS5maT4KLURhdGU6IFN1biwgMSBPY3QgMjAxNyAxMjoxMjoyNCArMDMwMAotU3ViamVjdDogW1BBVENIIDMvOF0gRXh0ZW5kIHByb3RlY3Rpb24gb2YgR1RLL0lHVEsgcmVpbnN0YWxsYXRpb24gb2YgV05NLVNsZWVwCi0gTW9kZSBjYXNlcwotCi1UaGlzIGV4dGVuZHMgdGhlIHByb3RlY3Rpb24gdG8gdHJhY2sgbGFzdCBjb25maWd1cmVkIEdUSy9JR1RLIHZhbHVlCi1zZXBhcmF0ZWx5IGZyb20gRUFQT0wtS2V5IGZyYW1lcyBhbmQgV05NLVNsZWVwIE1vZGUgZnJhbWVzIHRvIGNvdmVyIGEKLWNvcm5lciBjYXNlIHdoZXJlIHRoZXNlIHR3byBkaWZmZXJlbnQgbWVjaGFuaXNtcyBtYXkgZ2V0IHVzZWQgd2hlbiB0aGUKLUdUSy9JR1RLIGhhcyBjaGFuZ2VkIGFuZCB0cmFja2luZyBhIHNpbmdsZSB2YWx1ZSBpcyBub3Qgc3VmZmljaWVudCB0bwotZGV0ZWN0IGEgcG9zc2libGUga2V5IHJlY29uZmlndXJhdGlvbi4KLQotU2lnbmVkLW9mZi1ieTogSm91bmkgTWFsaW5lbiA8akB3MS5maT4KLS0tLQotIHNyYy9yc25fc3VwcC93cGEuYyAgIHwgNTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQotIHNyYy9yc25fc3VwcC93cGFfaS5oIHwgIDIgKysKLSAyIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3Jzbl9zdXBwL3dwYS5jIGIvc3JjL3Jzbl9zdXBwL3dwYS5jCi1pbmRleCA5NWJkN2JlLi43YTJjNjhkIDEwMDY0NAotLS0tIGEvc3JjL3Jzbl9zdXBwL3dwYS5jCi0rKysgYi9zcmMvcnNuX3N1cHAvd3BhLmMKLUBAIC03MDksMTQgKzcwOSwxNyBAQCBzdHJ1Y3Qgd3BhX2d0a19kYXRhIHsKLSAKLSBzdGF0aWMgaW50IHdwYV9zdXBwbGljYW50X2luc3RhbGxfZ3RrKHN0cnVjdCB3cGFfc20gKnNtLAotIAkJCQkgICAgICBjb25zdCBzdHJ1Y3Qgd3BhX2d0a19kYXRhICpnZCwKLS0JCQkJICAgICAgY29uc3QgdTggKmtleV9yc2MpCi0rCQkJCSAgICAgIGNvbnN0IHU4ICprZXlfcnNjLCBpbnQgd25tX3NsZWVwKQotIHsKLSAJY29uc3QgdTggKl9ndGsgPSBnZC0+Z3RrOwotIAl1OCBndGtfYnVmWzMyXTsKLSAKLSAJLyogRGV0ZWN0IHBvc3NpYmxlIGtleSByZWluc3RhbGxhdGlvbiAqLwotLQlpZiAoc20tPmd0ay5ndGtfbGVuID09IChzaXplX3QpIGdkLT5ndGtfbGVuICYmCi0tCSAgICBvc19tZW1jbXAoc20tPmd0ay5ndGssIGdkLT5ndGssIHNtLT5ndGsuZ3RrX2xlbikgPT0gMCkgewotKwlpZiAoKHNtLT5ndGsuZ3RrX2xlbiA9PSAoc2l6ZV90KSBnZC0+Z3RrX2xlbiAmJgotKwkgICAgIG9zX21lbWNtcChzbS0+Z3RrLmd0aywgZ2QtPmd0aywgc20tPmd0ay5ndGtfbGVuKSA9PSAwKSB8fAotKwkgICAgKHNtLT5ndGtfd25tX3NsZWVwLmd0a19sZW4gPT0gKHNpemVfdCkgZ2QtPmd0a19sZW4gJiYKLSsJICAgICBvc19tZW1jbXAoc20tPmd0a193bm1fc2xlZXAuZ3RrLCBnZC0+Z3RrLAotKwkJICAgICAgIHNtLT5ndGtfd25tX3NsZWVwLmd0a19sZW4pID09IDApKSB7Ci0gCQl3cGFfZGJnKHNtLT5jdHgtPm1zZ19jdHgsIE1TR19ERUJVRywKLSAJCQkiV1BBOiBOb3QgcmVpbnN0YWxsaW5nIGFscmVhZHkgaW4tdXNlIEdUSyB0byB0aGUgZHJpdmVyIChrZXlpZHg9JWQgdHg9JWQgbGVuPSVkKSIsCi0gCQkJZ2QtPmtleWlkeCwgZ2QtPnR4LCBnZC0+Z3RrX2xlbik7Ci1AQCAtNzU3LDggKzc2MCwxNCBAQCBzdGF0aWMgaW50IHdwYV9zdXBwbGljYW50X2luc3RhbGxfZ3RrKHN0cnVjdCB3cGFfc20gKnNtLAotIAl9Ci0gCW9zX21lbXNldChndGtfYnVmLCAwLCBzaXplb2YoZ3RrX2J1ZikpOwotIAotLQlzbS0+Z3RrLmd0a19sZW4gPSBnZC0+Z3RrX2xlbjsKLS0Jb3NfbWVtY3B5KHNtLT5ndGsuZ3RrLCBnZC0+Z3RrLCBzbS0+Z3RrLmd0a19sZW4pOwotKwlpZiAod25tX3NsZWVwKSB7Ci0rCQlzbS0+Z3RrX3dubV9zbGVlcC5ndGtfbGVuID0gZ2QtPmd0a19sZW47Ci0rCQlvc19tZW1jcHkoc20tPmd0a193bm1fc2xlZXAuZ3RrLCBnZC0+Z3RrLAotKwkJCSAgc20tPmd0a193bm1fc2xlZXAuZ3RrX2xlbik7Ci0rCX0gZWxzZSB7Ci0rCQlzbS0+Z3RrLmd0a19sZW4gPSBnZC0+Z3RrX2xlbjsKLSsJCW9zX21lbWNweShzbS0+Z3RrLmd0aywgZ2QtPmd0aywgc20tPmd0ay5ndGtfbGVuKTsKLSsJfQotIAotIAlyZXR1cm4gMDsKLSB9Ci1AQCAtODUyLDcgKzg2MSw3IEBAIHN0YXRpYyBpbnQgd3BhX3N1cHBsaWNhbnRfcGFpcndpc2VfZ3RrKHN0cnVjdCB3cGFfc20gKnNtLAotIAkgICAgKHdwYV9zdXBwbGljYW50X2NoZWNrX2dyb3VwX2NpcGhlcihzbSwgc20tPmdyb3VwX2NpcGhlciwKLSAJCQkJCSAgICAgICBndGtfbGVuLCBndGtfbGVuLAotIAkJCQkJICAgICAgICZnZC5rZXlfcnNjX2xlbiwgJmdkLmFsZykgfHwKLS0JICAgICB3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2d0ayhzbSwgJmdkLCBrZXlfcnNjKSkpIHsKLSsJICAgICB3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2d0ayhzbSwgJmdkLCBrZXlfcnNjLCAwKSkpIHsKLSAJCXdwYV9kYmcoc20tPmN0eC0+bXNnX2N0eCwgTVNHX0RFQlVHLAotIAkJCSJSU046IEZhaWxlZCB0byBpbnN0YWxsIEdUSyIpOwotIAkJb3NfbWVtc2V0KCZnZCwgMCwgc2l6ZW9mKGdkKSk7Ci1AQCAtODY4LDE0ICs4NzcsMTggQEAgc3RhdGljIGludCB3cGFfc3VwcGxpY2FudF9wYWlyd2lzZV9ndGsoc3RydWN0IHdwYV9zbSAqc20sCi0gCi0gI2lmZGVmIENPTkZJR19JRUVFODAyMTFXCi0gc3RhdGljIGludCB3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2lndGsoc3RydWN0IHdwYV9zbSAqc20sCi0tCQkJCSAgICAgICBjb25zdCBzdHJ1Y3Qgd3BhX2lndGtfa2RlICppZ3RrKQotKwkJCQkgICAgICAgY29uc3Qgc3RydWN0IHdwYV9pZ3RrX2tkZSAqaWd0aywKLSsJCQkJICAgICAgIGludCB3bm1fc2xlZXApCi0gewotIAlzaXplX3QgbGVuID0gd3BhX2NpcGhlcl9rZXlfbGVuKHNtLT5tZ210X2dyb3VwX2NpcGhlcik7Ci0gCXUxNiBrZXlpZHggPSBXUEFfR0VUX0xFMTYoaWd0ay0+a2V5aWQpOwotIAotIAkvKiBEZXRlY3QgcG9zc2libGUga2V5IHJlaW5zdGFsbGF0aW9uICovCi0tCWlmIChzbS0+aWd0ay5pZ3RrX2xlbiA9PSBsZW4gJiYKLS0JICAgIG9zX21lbWNtcChzbS0+aWd0ay5pZ3RrLCBpZ3RrLT5pZ3RrLCBzbS0+aWd0ay5pZ3RrX2xlbikgPT0gMCkgewotKwlpZiAoKHNtLT5pZ3RrLmlndGtfbGVuID09IGxlbiAmJgotKwkgICAgIG9zX21lbWNtcChzbS0+aWd0ay5pZ3RrLCBpZ3RrLT5pZ3RrLCBzbS0+aWd0ay5pZ3RrX2xlbikgPT0gMCkgfHwKLSsJICAgIChzbS0+aWd0a193bm1fc2xlZXAuaWd0a19sZW4gPT0gbGVuICYmCi0rCSAgICAgb3NfbWVtY21wKHNtLT5pZ3RrX3dubV9zbGVlcC5pZ3RrLCBpZ3RrLT5pZ3RrLAotKwkJICAgICAgIHNtLT5pZ3RrX3dubV9zbGVlcC5pZ3RrX2xlbikgPT0gMCkpIHsKLSAJCXdwYV9kYmcoc20tPmN0eC0+bXNnX2N0eCwgTVNHX0RFQlVHLAotIAkJCSJXUEE6IE5vdCByZWluc3RhbGxpbmcgYWxyZWFkeSBpbi11c2UgSUdUSyB0byB0aGUgZHJpdmVyIChrZXlpZHg9JWQpIiwKLSAJCQlrZXlpZHgpOwotQEAgLTkwMCw4ICs5MTMsMTQgQEAgc3RhdGljIGludCB3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2lndGsoc3RydWN0IHdwYV9zbSAqc20sCi0gCQlyZXR1cm4gLTE7Ci0gCX0KLSAKLS0Jc20tPmlndGsuaWd0a19sZW4gPSBsZW47Ci0tCW9zX21lbWNweShzbS0+aWd0ay5pZ3RrLCBpZ3RrLT5pZ3RrLCBzbS0+aWd0ay5pZ3RrX2xlbik7Ci0rCWlmICh3bm1fc2xlZXApIHsKLSsJCXNtLT5pZ3RrX3dubV9zbGVlcC5pZ3RrX2xlbiA9IGxlbjsKLSsJCW9zX21lbWNweShzbS0+aWd0a193bm1fc2xlZXAuaWd0aywgaWd0ay0+aWd0aywKLSsJCQkgIHNtLT5pZ3RrX3dubV9zbGVlcC5pZ3RrX2xlbik7Ci0rCX0gZWxzZSB7Ci0rCQlzbS0+aWd0ay5pZ3RrX2xlbiA9IGxlbjsKLSsJCW9zX21lbWNweShzbS0+aWd0ay5pZ3RrLCBpZ3RrLT5pZ3RrLCBzbS0+aWd0ay5pZ3RrX2xlbik7Ci0rCX0KLSAKLSAJcmV0dXJuIDA7Ci0gfQotQEAgLTkyNCw3ICs5NDMsNyBAQCBzdGF0aWMgaW50IGllZWU4MDIxMXdfc2V0X2tleXMoc3RydWN0IHdwYV9zbSAqc20sCi0gCQkJcmV0dXJuIC0xOwotIAotIAkJaWd0ayA9IChjb25zdCBzdHJ1Y3Qgd3BhX2lndGtfa2RlICopIGllLT5pZ3RrOwotLQkJaWYgKHdwYV9zdXBwbGljYW50X2luc3RhbGxfaWd0ayhzbSwgaWd0aykgPCAwKQotKwkJaWYgKHdwYV9zdXBwbGljYW50X2luc3RhbGxfaWd0ayhzbSwgaWd0aywgMCkgPCAwKQotIAkJCXJldHVybiAtMTsKLSAJfQotIAotQEAgLTE1NzQsNyArMTU5Myw3IEBAIHN0YXRpYyB2b2lkIHdwYV9zdXBwbGljYW50X3Byb2Nlc3NfMV9vZl8yKHN0cnVjdCB3cGFfc20gKnNtLAotIAlpZiAod3BhX3N1cHBsaWNhbnRfcnNjX3JlbGF4YXRpb24oc20sIGtleS0+a2V5X3JzYykpCi0gCQlrZXlfcnNjID0gbnVsbF9yc2M7Ci0gCi0tCWlmICh3cGFfc3VwcGxpY2FudF9pbnN0YWxsX2d0ayhzbSwgJmdkLCBrZXlfcnNjKSB8fAotKwlpZiAod3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9ndGsoc20sICZnZCwga2V5X3JzYywgMCkgfHwKLSAJICAgIHdwYV9zdXBwbGljYW50X3NlbmRfMl9vZl8yKHNtLCBrZXksIHZlciwga2V5X2luZm8pIDwgMCkKLSAJCWdvdG8gZmFpbGVkOwotIAlvc19tZW1zZXQoJmdkLCAwLCBzaXplb2YoZ2QpKTsKLUBAIC0yMzg2LDggKzI0MDUsMTAgQEAgdm9pZCB3cGFfc21fbm90aWZ5X2Fzc29jKHN0cnVjdCB3cGFfc20gKnNtLCBjb25zdCB1OCAqYnNzaWQpCi0gCQlzbS0+dHB0a19zZXQgPSAwOwotIAkJb3NfbWVtc2V0KCZzbS0+dHB0aywgMCwgc2l6ZW9mKHNtLT50cHRrKSk7Ci0gCQlvc19tZW1zZXQoJnNtLT5ndGssIDAsIHNpemVvZihzbS0+Z3RrKSk7Ci0rCQlvc19tZW1zZXQoJnNtLT5ndGtfd25tX3NsZWVwLCAwLCBzaXplb2Yoc20tPmd0a193bm1fc2xlZXApKTsKLSAjaWZkZWYgQ09ORklHX0lFRUU4MDIxMVcKLSAJCW9zX21lbXNldCgmc20tPmlndGssIDAsIHNpemVvZihzbS0+aWd0aykpOwotKwkJb3NfbWVtc2V0KCZzbS0+aWd0a193bm1fc2xlZXAsIDAsIHNpemVvZihzbS0+aWd0a193bm1fc2xlZXApKTsKLSAjZW5kaWYgLyogQ09ORklHX0lFRUU4MDIxMVcgKi8KLSAJfQotIAotQEAgLTI5MjAsOCArMjk0MSwxMCBAQCB2b2lkIHdwYV9zbV9kcm9wX3NhKHN0cnVjdCB3cGFfc20gKnNtKQotIAlvc19tZW1zZXQoJnNtLT5wdGssIDAsIHNpemVvZihzbS0+cHRrKSk7Ci0gCW9zX21lbXNldCgmc20tPnRwdGssIDAsIHNpemVvZihzbS0+dHB0aykpOwotIAlvc19tZW1zZXQoJnNtLT5ndGssIDAsIHNpemVvZihzbS0+Z3RrKSk7Ci0rCW9zX21lbXNldCgmc20tPmd0a193bm1fc2xlZXAsIDAsIHNpemVvZihzbS0+Z3RrX3dubV9zbGVlcCkpOwotICNpZmRlZiBDT05GSUdfSUVFRTgwMjExVwotIAlvc19tZW1zZXQoJnNtLT5pZ3RrLCAwLCBzaXplb2Yoc20tPmlndGspKTsKLSsJb3NfbWVtc2V0KCZzbS0+aWd0a193bm1fc2xlZXAsIDAsIHNpemVvZihzbS0+aWd0a193bm1fc2xlZXApKTsKLSAjZW5kaWYgLyogQ09ORklHX0lFRUU4MDIxMVcgKi8KLSAjaWZkZWYgQ09ORklHX0lFRUU4MDIxMVIKLSAJb3NfbWVtc2V0KHNtLT54eGtleSwgMCwgc2l6ZW9mKHNtLT54eGtleSkpOwotQEAgLTI5ODYsNyArMzAwOSw3IEBAIGludCB3cGFfd25tc2xlZXBfaW5zdGFsbF9rZXkoc3RydWN0IHdwYV9zbSAqc20sIHU4IHN1YmVsZW1faWQsIHU4ICpidWYpCi0gCi0gCQl3cGFfaGV4ZHVtcF9rZXkoTVNHX0RFQlVHLCAiSW5zdGFsbCBHVEsgKFdOTSBTTEVFUCkiLAotIAkJCQlnZC5ndGssIGdkLmd0a19sZW4pOwotLQkJaWYgKHdwYV9zdXBwbGljYW50X2luc3RhbGxfZ3RrKHNtLCAmZ2QsIGtleV9yc2MpKSB7Ci0rCQlpZiAod3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9ndGsoc20sICZnZCwga2V5X3JzYywgMSkpIHsKLSAJCQlvc19tZW1zZXQoJmdkLCAwLCBzaXplb2YoZ2QpKTsKLSAJCQl3cGFfcHJpbnRmKE1TR19ERUJVRywgIkZhaWxlZCB0byBpbnN0YWxsIHRoZSBHVEsgaW4gIgotIAkJCQkgICAiV05NIG1vZGUiKTsKLUBAIC0yOTk4LDcgKzMwMjEsNyBAQCBpbnQgd3BhX3dubXNsZWVwX2luc3RhbGxfa2V5KHN0cnVjdCB3cGFfc20gKnNtLCB1OCBzdWJlbGVtX2lkLCB1OCAqYnVmKQotIAkJY29uc3Qgc3RydWN0IHdwYV9pZ3RrX2tkZSAqaWd0azsKLSAKLSAJCWlndGsgPSAoY29uc3Qgc3RydWN0IHdwYV9pZ3RrX2tkZSAqKSAoYnVmICsgMik7Ci0tCQlpZiAod3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9pZ3RrKHNtLCBpZ3RrKSA8IDApCi0rCQlpZiAod3BhX3N1cHBsaWNhbnRfaW5zdGFsbF9pZ3RrKHNtLCBpZ3RrLCAxKSA8IDApCi0gCQkJcmV0dXJuIC0xOwotICNlbmRpZiAvKiBDT05GSUdfSUVFRTgwMjExVyAqLwotIAl9IGVsc2UgewotZGlmZiAtLWdpdCBhL3NyYy9yc25fc3VwcC93cGFfaS5oIGIvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKLWluZGV4IGFmYzllMzcuLjlhNTQ2MzEgMTAwNjQ0Ci0tLS0gYS9zcmMvcnNuX3N1cHAvd3BhX2kuaAotKysrIGIvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKLUBAIC0zMiw4ICszMiwxMCBAQCBzdHJ1Y3Qgd3BhX3NtIHsKLSAJaW50IHJ4X3JlcGxheV9jb3VudGVyX3NldDsKLSAJdTggcmVxdWVzdF9jb3VudGVyW1dQQV9SRVBMQVlfQ09VTlRFUl9MRU5dOwotIAlzdHJ1Y3Qgd3BhX2d0ayBndGs7Ci0rCXN0cnVjdCB3cGFfZ3RrIGd0a193bm1fc2xlZXA7Ci0gI2lmZGVmIENPTkZJR19JRUVFODAyMTFXCi0gCXN0cnVjdCB3cGFfaWd0ayBpZ3RrOwotKwlzdHJ1Y3Qgd3BhX2lndGsgaWd0a193bm1fc2xlZXA7Ci0gI2VuZGlmIC8qIENPTkZJR19JRUVFODAyMTFXICovCi0gCi0gCXN0cnVjdCBlYXBvbF9zbSAqZWFwb2w7IC8qIEVBUE9MIHN0YXRlIG1hY2hpbmUgZnJvbSB1cHBlciBsZXZlbCBjb2RlICovCi0tLSAKLTIuNy40Ci0KLUZyb20gOGY4MmJjOTRlODY5N2E5ZDQ3ZmE4Nzc0ZGZkYWFlZGUxMDg0OTEyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdGh5IFZhbmhvZWYgPE1hdGh5LlZhbmhvZWZAY3Mua3VsZXV2ZW4uYmU+Ci1EYXRlOiBGcmksIDI5IFNlcCAyMDE3IDA0OjIyOjUxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggNC84XSBQcmV2ZW50IGluc3RhbGxhdGlvbiBvZiBhbiBhbGwtemVybyBUSwotCi1Qcm9wZXJseSB0cmFjayB3aGV0aGVyIGEgUFRLIGhhcyBhbHJlYWR5IGJlZW4gaW5zdGFsbGVkIHRvIHRoZSBkcml2ZXIKLWFuZCB0aGUgVEsgcGFydCBjbGVhcmVkIGZyb20gbWVtb3J5LiBUaGlzIHByZXZlbnRzIGFuIGF0dGFja2VyIGZyb20KLXRyeWluZyB0byB0cmljayB0aGUgY2xpZW50IGludG8gaW5zdGFsbGluZyBhbiBhbGwtemVybyBUSy4KLQotVGhpcyBmaXhlcyB0aGUgZWFybGllciBmaXggaW4gY29tbWl0Ci1hZDAwZDY0ZTdkODgyN2IzY2ViZDY2NWEwY2ViMDhhZGFiZjE1ZTFlICgnRml4IFRLIGNvbmZpZ3VyYXRpb24gdG8gdGhlCi1kcml2ZXIgaW4gRUFQT0wtS2V5IDMvNCByZXRyeSBjYXNlJykgd2hpY2ggZGlkIG5vdCB0YWtlIGludG8gYWNjb3VudAotcG9zc2liaWxpdHkgb2YgYW4gZXh0cmEgbWVzc2FnZSAxLzQgc2hvd2luZyB1cCBiZXR3ZWVuIHJldHJpZXMgb2YKLW1lc3NhZ2UgMy80LgotCi1TaWduZWQtb2ZmLWJ5OiBNYXRoeSBWYW5ob2VmIDxNYXRoeS5WYW5ob2VmQGNzLmt1bGV1dmVuLmJlPgotLS0tCi0gc3JjL2NvbW1vbi93cGFfY29tbW9uLmggfCAxICsKLSBzcmMvcnNuX3N1cHAvd3BhLmMgICAgICB8IDUgKystLS0KLSBzcmMvcnNuX3N1cHAvd3BhX2kuaCAgICB8IDEgLQotIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi93cGFfY29tbW9uLmggYi9zcmMvY29tbW9uL3dwYV9jb21tb24uaAotaW5kZXggZDIwMDI4NS4uMTAyMWNjYiAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb24vd3BhX2NvbW1vbi5oCi0rKysgYi9zcmMvY29tbW9uL3dwYV9jb21tb24uaAotQEAgLTIxNSw2ICsyMTUsNyBAQCBzdHJ1Y3Qgd3BhX3B0ayB7Ci0gCXNpemVfdCBrY2tfbGVuOwotIAlzaXplX3Qga2VrX2xlbjsKLSAJc2l6ZV90IHRrX2xlbjsKLSsJaW50IGluc3RhbGxlZDsgLyogMSBpZiBrZXkgaGFzIGFscmVhZHkgYmVlbiBpbnN0YWxsZWQgdG8gZHJpdmVyICovCi0gfTsKLSAKLSBzdHJ1Y3Qgd3BhX2d0ayB7Ci1kaWZmIC0tZ2l0IGEvc3JjL3Jzbl9zdXBwL3dwYS5jIGIvc3JjL3Jzbl9zdXBwL3dwYS5jCi1pbmRleCA3YTJjNjhkLi4wNTUwYTQxIDEwMDY0NAotLS0tIGEvc3JjL3Jzbl9zdXBwL3dwYS5jCi0rKysgYi9zcmMvcnNuX3N1cHAvd3BhLmMKLUBAIC01MTAsNyArNTEwLDYgQEAgc3RhdGljIHZvaWQgd3BhX3N1cHBsaWNhbnRfcHJvY2Vzc18xX29mXzQoc3RydWN0IHdwYV9zbSAqc20sCi0gCQlvc19tZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSk7Ci0gCX0KLSAJc20tPnRwdGtfc2V0ID0gMTsKLS0Jc20tPnRrX3RvX3NldCA9IDE7Ci0gCi0gCWtkZSA9IHNtLT5hc3NvY193cGFfaWU7Ci0gCWtkZV9sZW4gPSBzbS0+YXNzb2Nfd3BhX2llX2xlbjsKLUBAIC02MTUsNyArNjE0LDcgQEAgc3RhdGljIGludCB3cGFfc3VwcGxpY2FudF9pbnN0YWxsX3B0ayhzdHJ1Y3Qgd3BhX3NtICpzbSwKLSAJZW51bSB3cGFfYWxnIGFsZzsKLSAJY29uc3QgdTggKmtleV9yc2M7Ci0gCi0tCWlmICghc20tPnRrX3RvX3NldCkgewotKwlpZiAoc20tPnB0ay5pbnN0YWxsZWQpIHsKLSAJCXdwYV9kYmcoc20tPmN0eC0+bXNnX2N0eCwgTVNHX0RFQlVHLAotIAkJCSJXUEE6IERvIG5vdCByZS1pbnN0YWxsIHNhbWUgUFRLIHRvIHRoZSBkcml2ZXIiKTsKLSAJCXJldHVybiAwOwotQEAgLTY1OSw3ICs2NTgsNyBAQCBzdGF0aWMgaW50IHdwYV9zdXBwbGljYW50X2luc3RhbGxfcHRrKHN0cnVjdCB3cGFfc20gKnNtLAotIAotIAkvKiBUSyBpcyBub3QgbmVlZGVkIGFueW1vcmUgaW4gc3VwcGxpY2FudCAqLwotIAlvc19tZW1zZXQoc20tPnB0ay50aywgMCwgV1BBX1RLX01BWF9MRU4pOwotLQlzbS0+dGtfdG9fc2V0ID0gMDsKLSsJc20tPnB0ay5pbnN0YWxsZWQgPSAxOwotIAotIAlpZiAoc20tPndwYV9wdGtfcmVrZXkpIHsKLSAJCWVsb29wX2NhbmNlbF90aW1lb3V0KHdwYV9zbV9yZWtleV9wdGssIHNtLCBOVUxMKTsKLWRpZmYgLS1naXQgYS9zcmMvcnNuX3N1cHAvd3BhX2kuaCBiL3NyYy9yc25fc3VwcC93cGFfaS5oCi1pbmRleCA5YTU0NjMxLi40MWYzNzFmIDEwMDY0NAotLS0tIGEvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKLSsrKyBiL3NyYy9yc25fc3VwcC93cGFfaS5oCi1AQCAtMjQsNyArMjQsNiBAQCBzdHJ1Y3Qgd3BhX3NtIHsKLSAJc3RydWN0IHdwYV9wdGsgcHRrLCB0cHRrOwotIAlpbnQgcHRrX3NldCwgdHB0a19zZXQ7Ci0gCXVuc2lnbmVkIGludCBtc2dfM19vZl80X29rOjE7Ci0tCXVuc2lnbmVkIGludCB0a190b19zZXQ6MTsKLSAJdTggc25vbmNlW1dQQV9OT05DRV9MRU5dOwotIAl1OCBhbm9uY2VbV1BBX05PTkNFX0xFTl07IC8qIEFOb25jZSBmcm9tIHRoZSBsYXN0IDEvNCBtc2cgKi8KLSAJaW50IHJlbmV3X3Nub25jZTsKLS0tIAotMi43LjQKLQotRnJvbSAxMmZhYzA5YjQzN2ExZGM4YTBmMjUzZTI2NTkzNGE4YWFmNGQyZjhiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSm91bmkgTWFsaW5lbiA8akB3MS5maT4KLURhdGU6IFN1biwgMSBPY3QgMjAxNyAxMjozMjo1NyArMDMwMAotU3ViamVjdDogW1BBVENIIDUvOF0gRml4IFBUSyByZWtleWluZyB0byBnZW5lcmF0ZSBhIG5ldyBBTm9uY2UKLQotVGhlIEF1dGhlbnRpY2F0b3Igc3RhdGUgbWFjaGluZSBwYXRoIGZvciBQVEsgcmVrZXlpbmcgZW5kZWQgdXAgYnlwYXNzaW5nCi10aGUgQVVUSEVOVElDQVRJT04yIHN0YXRlIHdoZXJlIGEgbmV3IEFOb25jZSBpcyBnZW5lcmF0ZWQgd2hlbiBnb2luZwotZGlyZWN0bHkgdG8gdGhlIFBUS1NUQVJUIHN0YXRlIHNpbmNlIHRoZXJlIGlzIG5vIG5lZWQgdG8gdHJ5IHRvCi1kZXRlcm1pbmUgdGhlIFBNSyBhZ2FpbiBpbiBzdWNoIGEgY2FzZS4gVGhpcyBpcyBmYXIgZnJvbSBpZGVhbCBzaW5jZSB0aGUKLW5ldyBQVEsgd291bGQgZGVwZW5kIG9uIGEgbmV3IG5vbmNlIG9ubHkgZnJvbSB0aGUgc3VwcGxpY2FudC4KLQotRml4IHRoaXMgYnkgZ2VuZXJhdGluZyBhIG5ldyBBTm9uY2Ugd2hlbiBtb3ZpbmcgdG8gdGhlIFBUS1NUQVJUIHN0YXRlCi1mb3IgdGhlIHB1cnBvc2Ugb2Ygc3RhcnRpbmcgbmV3IDQtd2F5IGhhbmRzaGFrZSB0byByZWtleSBQVEsuCi0KLVNpZ25lZC1vZmYtYnk6IEpvdW5pIE1hbGluZW4gPGpAdzEuZmk+Ci0tLS0KLSBzcmMvYXAvd3BhX2F1dGguYyB8IDI0ICsrKysrKysrKysrKysrKysrKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2FwL3dwYV9hdXRoLmMgYi9zcmMvYXAvd3BhX2F1dGguYwotaW5kZXggNzA3OTcxZC4uYmYxMGNjMSAxMDA2NDQKLS0tLSBhL3NyYy9hcC93cGFfYXV0aC5jCi0rKysgYi9zcmMvYXAvd3BhX2F1dGguYwotQEAgLTE5MDEsNiArMTkwMSwyMSBAQCBTTV9TVEFURShXUEFfUFRLLCBBVVRIRU5USUNBVElPTjIpCi0gfQotIAotIAotK3N0YXRpYyBpbnQgd3BhX2F1dGhfc21fcHRrX3VwZGF0ZShzdHJ1Y3Qgd3BhX3N0YXRlX21hY2hpbmUgKnNtKQotK3sKLSsJaWYgKHJhbmRvbV9nZXRfYnl0ZXMoc20tPkFOb25jZSwgV1BBX05PTkNFX0xFTikpIHsKLSsJCXdwYV9wcmludGYoTVNHX0VSUk9SLAotKwkJCSAgICJXUEE6IEZhaWxlZCB0byBnZXQgcmFuZG9tIGRhdGEgZm9yIEFOb25jZSIpOwotKwkJc20tPkRpc2Nvbm5lY3QgPSBUUlVFOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCXdwYV9oZXhkdW1wKE1TR19ERUJVRywgIldQQTogQXNzaWduIG5ldyBBTm9uY2UiLCBzbS0+QU5vbmNlLAotKwkJICAgIFdQQV9OT05DRV9MRU4pOwotKwlzbS0+VGltZW91dEN0ciA9IDA7Ci0rCXJldHVybiAwOwotK30KLSsKLSsKLSBTTV9TVEFURShXUEFfUFRLLCBJTklUUE1LKQotIHsKLSAJdTggbXNrWzIgKiBQTUtfTEVOXTsKLUBAIC0yNDU4LDkgKzI0NzMsMTIgQEAgU01fU1RFUChXUEFfUFRLKQotIAkJU01fRU5URVIoV1BBX1BUSywgQVVUSEVOVElDQVRJT04pOwotIAllbHNlIGlmIChzbS0+UmVBdXRoZW50aWNhdGlvblJlcXVlc3QpCi0gCQlTTV9FTlRFUihXUEFfUFRLLCBBVVRIRU5USUNBVElPTjIpOwotLQllbHNlIGlmIChzbS0+UFRLUmVxdWVzdCkKLS0JCVNNX0VOVEVSKFdQQV9QVEssIFBUS1NUQVJUKTsKLS0JZWxzZSBzd2l0Y2ggKHNtLT53cGFfcHRrX3N0YXRlKSB7Ci0rCWVsc2UgaWYgKHNtLT5QVEtSZXF1ZXN0KSB7Ci0rCQlpZiAod3BhX2F1dGhfc21fcHRrX3VwZGF0ZShzbSkgPCAwKQotKwkJCVNNX0VOVEVSKFdQQV9QVEssIERJU0NPTk5FQ1RFRCk7Ci0rCQllbHNlCi0rCQkJU01fRU5URVIoV1BBX1BUSywgUFRLU1RBUlQpOwotKwl9IGVsc2Ugc3dpdGNoIChzbS0+d3BhX3B0a19zdGF0ZSkgewotIAljYXNlIFdQQV9QVEtfSU5JVElBTElaRToKLSAJCWJyZWFrOwotIAljYXNlIFdQQV9QVEtfRElTQ09OTkVDVDoKLS0tIAotMi43LjQKLQotRnJvbSA2YzRiZWQ0ZjQ3ZDE5NjBlYzA0OTgxYTlkNTBlNTA3NmFlYTUyMjNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSm91bmkgTWFsaW5lbiA8akB3MS5maT4KLURhdGU6IEZyaSwgMjIgU2VwIDIwMTcgMTE6MDM6MTUgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCA2LzhdIFRETFM6IFJlamVjdCBUUEstVEsgcmVjb25maWd1cmF0aW9uCi0KLURvIG5vdCB0cnkgdG8gcmVjb25maWd1cmUgdGhlIHNhbWUgVFBLLVRLIHRvIHRoZSBkcml2ZXIgYWZ0ZXIgaXQgaGFzCi1iZWVuIHN1Y2Nlc3NmdWxseSBjb25maWd1cmVkLiBUaGlzIGlzIGFuIGV4cGxpY2l0IGNoZWNrIHRvIGF2b2lkIGlzc3VlcwotcmVsYXRlZCB0byByZXNldHRpbmcgdGhlIFRYL1JYIHBhY2tldCBudW1iZXIuIFRoZXJlIHdhcyBhbHJlYWR5IGEgY2hlY2sKLWZvciB0aGlzIGZvciBUUEsgTTIgKHJldHJpZXMgb2YgdGhhdCBtZXNzYWdlIGFyZSBpZ25vcmVkIGNvbXBsZXRlbHkpLCBzbwotdGhhdCBiZWhhdmlvciBkb2VzIG5vdCBnZXQgbW9kaWZpZWQuCi0KLUZvciBUUEsgTTMsIHRoZSBUUEstVEsgY291bGQgaGF2ZSBiZWVuIHJlY29uZmlndXJlZCwgYnV0IHRoYXQgd2FzCi1mb2xsb3dlZCBieSBpbW1lZGlhdGUgdGVhcmRvd24gb2YgdGhlIGxpbmsgZHVlIHRvIGFuIGlzc3VlIGluIHVwZGF0aW5nCi10aGUgU1RBIGVudHJ5LiBGdXJ0aGVybW9yZSwgZm9yIFRETFMgd2l0aCBhbnkgcmVhbCBzZWN1cml0eSAoaS5lLiwKLWlnbm9yaW5nIG9wZW4vV0VQKSwgdGhlIFRQSyBtZXNzYWdlIGV4Y2hhbmdlIGlzIHByb3RlY3RlZCBvbiB0aGUgQVAgcGF0aAotYW5kIHNpbXBsZSByZXBsYXkgYXR0YWNrcyBhcmUgbm90IGZlYXNpYmxlLgotCi1BcyBhbiBhZGRpdGlvbmFsIGNvcm5lciBjYXNlLCBtYWtlIHN1cmUgdGhlIGxvY2FsIG5vbmNlIGdldHMgdXBkYXRlZCBpZgotdGhlIHBlZXIgdXNlcyBhIHZlcnkgdW5saWtlbHkgInJhbmRvbSBub25jZSIgb2YgYWxsIHplcm9zLgotCi1TaWduZWQtb2ZmLWJ5OiBKb3VuaSBNYWxpbmVuIDxqQHcxLmZpPgotLS0tCi0gc3JjL3Jzbl9zdXBwL3RkbHMuYyB8IDM4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvcnNuX3N1cHAvdGRscy5jIGIvc3JjL3Jzbl9zdXBwL3RkbHMuYwotaW5kZXggZTQyNDE2OC4uOWViOTczOCAxMDA2NDQKLS0tLSBhL3NyYy9yc25fc3VwcC90ZGxzLmMKLSsrKyBiL3NyYy9yc25fc3VwcC90ZGxzLmMKLUBAIC0xMTIsNiArMTEyLDcgQEAgc3RydWN0IHdwYV90ZGxzX3BlZXIgewotIAkJdTggdGtbMTZdOyAvKiBUUEstVEs7IGFzc3VtaW5nIG9ubHkgQ0NNUCB3aWxsIGJlIHVzZWQgKi8KLSAJfSB0cGs7Ci0gCWludCB0cGtfc2V0OwotKwlpbnQgdGtfc2V0OyAvKiBUUEstVEsgY29uZmlndXJlZCB0byB0aGUgZHJpdmVyICovCi0gCWludCB0cGtfc3VjY2VzczsKLSAJaW50IHRwa19pbl9wcm9ncmVzczsKLSAKLUBAIC0xOTIsNiArMTkzLDIwIEBAIHN0YXRpYyBpbnQgd3BhX3RkbHNfc2V0X2tleShzdHJ1Y3Qgd3BhX3NtICpzbSwgc3RydWN0IHdwYV90ZGxzX3BlZXIgKnBlZXIpCi0gCXU4IHJzY1s2XTsKLSAJZW51bSB3cGFfYWxnIGFsZzsKLSAKLSsJaWYgKHBlZXItPnRrX3NldCkgewotKwkJLyoKLSsJCSAqIFRoaXMgc2FtZSBUUEstVEsgaGFzIGFscmVhZHkgYmVlbiBjb25maWd1cmVkIHRvIHRoZSBkcml2ZXIKLSsJCSAqIGFuZCB0aGlzIG5ldyBjb25maWd1cmF0aW9uIGF0dGVtcHQgKGxpa2VseSBkdWUgdG8gYW4KLSsJCSAqIHVuZXhwZWN0ZWQgcmV0cmFuc21pdHRlZCBmcmFtZSkgd291bGQgcmVzdWx0IGluIGNsZWFyaW5nCi0rCQkgKiB0aGUgVFgvUlggc2VxdWVuY2UgbnVtYmVyIHdoaWNoIGNhbiBicmVhayBzZWN1cml0eSwgc28gbXVzdAotKwkJICogbm90IGFsbG93IHRoYXQgdG8gaGFwcGVuLgotKwkJICovCi0rCQl3cGFfcHJpbnRmKE1TR19JTkZPLCAiVERMUzogVFBLLVRLIGZvciB0aGUgcGVlciAiIE1BQ1NUUgotKwkJCSAgICIgaGFzIGFscmVhZHkgYmVlbiBjb25maWd1cmVkIHRvIHRoZSBkcml2ZXIgLSBkbyBub3QgcmVjb25maWd1cmUiLAotKwkJCSAgIE1BQzJTVFIocGVlci0+YWRkcikpOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCi0gCW9zX21lbXNldChyc2MsIDAsIDYpOwotIAotIAlzd2l0Y2ggKHBlZXItPmNpcGhlcikgewotQEAgLTIwOSwxMiArMjI0LDE1IEBAIHN0YXRpYyBpbnQgd3BhX3RkbHNfc2V0X2tleShzdHJ1Y3Qgd3BhX3NtICpzbSwgc3RydWN0IHdwYV90ZGxzX3BlZXIgKnBlZXIpCi0gCQlyZXR1cm4gLTE7Ci0gCX0KLSAKLSsJd3BhX3ByaW50ZihNU0dfREVCVUcsICJURExTOiBDb25maWd1cmUgcGFpcndpc2Uga2V5IGZvciBwZWVyICIgTUFDU1RSLAotKwkJICAgTUFDMlNUUihwZWVyLT5hZGRyKSk7Ci0gCWlmICh3cGFfc21fc2V0X2tleShzbSwgYWxnLCBwZWVyLT5hZGRyLCAtMSwgMSwKLSAJCQkgICByc2MsIHNpemVvZihyc2MpLCBwZWVyLT50cGsudGssIGtleV9sZW4pIDwgMCkgewotIAkJd3BhX3ByaW50ZihNU0dfV0FSTklORywgIlRETFM6IEZhaWxlZCB0byBzZXQgVFBLIHRvIHRoZSAiCi0gCQkJICAgImRyaXZlciIpOwotIAkJcmV0dXJuIC0xOwotIAl9Ci0rCXBlZXItPnRrX3NldCA9IDE7Ci0gCXJldHVybiAwOwotIH0KLSAKLUBAIC02OTYsNyArNzE0LDcgQEAgc3RhdGljIHZvaWQgd3BhX3RkbHNfcGVlcl9jbGVhcihzdHJ1Y3Qgd3BhX3NtICpzbSwgc3RydWN0IHdwYV90ZGxzX3BlZXIgKnBlZXIpCi0gCXBlZXItPmNpcGhlciA9IDA7Ci0gCXBlZXItPnFvc19pbmZvID0gMDsKLSAJcGVlci0+d21tX2NhcGFibGUgPSAwOwotLQlwZWVyLT50cGtfc2V0ID0gcGVlci0+dHBrX3N1Y2Nlc3MgPSAwOwotKwlwZWVyLT50a19zZXQgPSBwZWVyLT50cGtfc2V0ID0gcGVlci0+dHBrX3N1Y2Nlc3MgPSAwOwotIAlwZWVyLT5jaGFuX3N3aXRjaF9lbmFibGVkID0gMDsKLSAJb3NfbWVtc2V0KCZwZWVyLT50cGssIDAsIHNpemVvZihwZWVyLT50cGspKTsKLSAJb3NfbWVtc2V0KHBlZXItPmlub25jZSwgMCwgV1BBX05PTkNFX0xFTik7Ci1AQCAtMTE1OSw2ICsxMTc3LDcgQEAgc2tpcF9yc25pZToKLSAJCXdwYV90ZGxzX3BlZXJfZnJlZShzbSwgcGVlcik7Ci0gCQlyZXR1cm4gLTE7Ci0gCX0KLSsJcGVlci0+dGtfc2V0ID0gMDsgLyogQSBuZXcgbm9uY2UgcmVzdWx0cyBpbiBhIG5ldyBUSyAqLwotIAl3cGFfaGV4ZHVtcChNU0dfREVCVUcsICJURExTOiBJbml0aWF0b3IgTm9uY2UgZm9yIFRQSyBoYW5kc2hha2UiLAotIAkJICAgIHBlZXItPmlub25jZSwgV1BBX05PTkNFX0xFTik7Ci0gCW9zX21lbWNweShmdGllLT5Tbm9uY2UsIHBlZXItPmlub25jZSwgV1BBX05PTkNFX0xFTik7Ci1AQCAtMTc1MSw2ICsxNzcwLDE5IEBAIHN0YXRpYyBpbnQgd3BhX3RkbHNfYWRkc2V0X3BlZXIoc3RydWN0IHdwYV9zbSAqc20sIHN0cnVjdCB3cGFfdGRsc19wZWVyICpwZWVyLAotIH0KLSAKLSAKLStzdGF0aWMgaW50IHRkbHNfbm9uY2Vfc2V0KGNvbnN0IHU4ICpub25jZSkKLSt7Ci0rCWludCBpOwotKwotKwlmb3IgKGkgPSAwOyBpIDwgV1BBX05PTkNFX0xFTjsgaSsrKSB7Ci0rCQlpZiAobm9uY2VbaV0pCi0rCQkJcmV0dXJuIDE7Ci0rCX0KLSsKLSsJcmV0dXJuIDA7Ci0rfQotKwotKwotIHN0YXRpYyBpbnQgd3BhX3RkbHNfcHJvY2Vzc190cGtfbTEoc3RydWN0IHdwYV9zbSAqc20sIGNvbnN0IHU4ICpzcmNfYWRkciwKLSAJCQkJICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbikKLSB7Ci1AQCAtMjAwNCw3ICsyMDM2LDggQEAgc2tpcF9yc246Ci0gCXBlZXItPnJzbmllX2lfbGVuID0ga2RlLnJzbl9pZV9sZW47Ci0gCXBlZXItPmNpcGhlciA9IGNpcGhlcjsKLSAKLS0JaWYgKG9zX21lbWNtcChwZWVyLT5pbm9uY2UsIGZ0aWUtPlNub25jZSwgV1BBX05PTkNFX0xFTikgIT0gMCkgewotKwlpZiAob3NfbWVtY21wKHBlZXItPmlub25jZSwgZnRpZS0+U25vbmNlLCBXUEFfTk9OQ0VfTEVOKSAhPSAwIHx8Ci0rCSAgICAhdGRsc19ub25jZV9zZXQocGVlci0+aW5vbmNlKSkgewotIAkJLyoKLSAJCSAqIFRoZXJlIGlzIG5vIHBvaW50IGluIHVwZGF0aW5nIHRoZSBSTm9uY2UgZm9yIGV2ZXJ5IG9idGFpbmVkCi0gCQkgKiBUUEsgTTEgZnJhbWUgKGUuZy4sIHJldHJhbnNtaXNzaW9uIGR1ZSB0byB0aW1lb3V0KSB3aXRoIHRoZQotQEAgLTIwMjAsNiArMjA1Myw3IEBAIHNraXBfcnNuOgotIAkJCQkiVERMUzogRmFpbGVkIHRvIGdldCByYW5kb20gZGF0YSBmb3IgcmVzcG9uZGVyIG5vbmNlIik7Ci0gCQkJZ290byBlcnJvcjsKLSAJCX0KLSsJCXBlZXItPnRrX3NldCA9IDA7IC8qIEEgbmV3IG5vbmNlIHJlc3VsdHMgaW4gYSBuZXcgVEsgKi8KLSAJfQotIAotICNpZiAwCi0tLSAKLTIuNy40Ci0KLU5vdGU6IFtQQVRDSCA3LzhdIG9ubHkgYXBwbGllcyB0byB3cGFfc3VwcGxpY2FudAotCi1Gcm9tIGIzNzJhYjBiN2RhZWE3MTk3NDkxOTRkYzU1NGIyNmU2MzY3NjAzZjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKb3VuaSBNYWxpbmVuIDxqQHcxLmZpPgotRGF0ZTogRnJpLCAyMiBTZXAgMjAxNyAxMjowNjozNyArMDMwMAotU3ViamVjdDogW1BBVENIIDgvOF0gRlQ6IERvIG5vdCBhbGxvdyBtdWx0aXBsZSBSZWFzc29jaWF0aW9uIFJlc3BvbnNlIGZyYW1lcwotCi1UaGUgZHJpdmVyIGlzIGV4cGVjdGVkIHRvIG5vdCByZXBvcnQgYSBzZWNvbmQgYXNzb2NpYXRpb24gZXZlbnQgd2l0aG91dAotdGhlIHN0YXRpb24gaGF2aW5nIGV4cGxpY2l0bHkgcmVxdWVzdCBhIG5ldyBhc3NvY2lhdGlvbi4gQXMgc3VjaCwgdGhpcwotY2FzZSBzaG91bGQgbm90IGJlIHJlYWNoYWJsZS4gSG93ZXZlciwgc2luY2UgcmVjb25maWd1cmluZyB0aGUgc2FtZQotcGFpcndpc2Ugb3IgZ3JvdXAga2V5cyB0byB0aGUgZHJpdmVyIGNvdWxkIHJlc3VsdCBpbiBub25jZSByZXVzZSBpc3N1ZXMsCi1iZSBleHRyYSBjYXJlZnVsIGhlcmUgYW5kIGRvIGFuIGFkZGl0aW9uYWwgc3RhdGUgY2hlY2sgdG8gYXZvaWQgdGhpcwotZXZlbiBpZiB0aGUgbG9jYWwgZHJpdmVyIGVuZHMgdXAgc29tZWhvdyBhY2NlcHRpbmcgYW4gdW5leHBlY3RlZAotUmVhc3NvY2lhdGlvbiBSZXNwb25zZSBmcmFtZS4KLQotU2lnbmVkLW9mZi1ieTogSm91bmkgTWFsaW5lbiA8akB3MS5maT4KLS0tLQotIHNyYy9yc25fc3VwcC93cGEuYyAgICB8IDMgKysrCi0gc3JjL3Jzbl9zdXBwL3dwYV9mdC5jIHwgOCArKysrKysrKwotIHNyYy9yc25fc3VwcC93cGFfaS5oICB8IDEgKwotIDMgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3Jzbl9zdXBwL3dwYS5jIGIvc3JjL3Jzbl9zdXBwL3dwYS5jCi1pbmRleCAwNTUwYTQxLi4yYTUzYzZmIDEwMDY0NAotLS0tIGEvc3JjL3Jzbl9zdXBwL3dwYS5jCi0rKysgYi9zcmMvcnNuX3N1cHAvd3BhLmMKLUBAIC0yNDQwLDYgKzI0NDAsOSBAQCB2b2lkIHdwYV9zbV9ub3RpZnlfZGlzYXNzb2Moc3RydWN0IHdwYV9zbSAqc20pCi0gI2lmZGVmIENPTkZJR19URExTCi0gCXdwYV90ZGxzX2Rpc2Fzc29jKHNtKTsKLSAjZW5kaWYgLyogQ09ORklHX1RETFMgKi8KLSsjaWZkZWYgQ09ORklHX0lFRUU4MDIxMVIKLSsJc20tPmZ0X3JlYXNzb2NfY29tcGxldGVkID0gMDsKLSsjZW5kaWYgLyogQ09ORklHX0lFRUU4MDIxMVIgKi8KLSAKLSAJLyogS2V5cyBhcmUgbm90IG5lZWRlZCBpbiB0aGUgV1BBIHN0YXRlIG1hY2hpbmUgYW55bW9yZSAqLwotIAl3cGFfc21fZHJvcF9zYShzbSk7Ci1kaWZmIC0tZ2l0IGEvc3JjL3Jzbl9zdXBwL3dwYV9mdC5jIGIvc3JjL3Jzbl9zdXBwL3dwYV9mdC5jCi1pbmRleCAyMDU3OTNlLi5kNDViYjQ1IDEwMDY0NAotLS0tIGEvc3JjL3Jzbl9zdXBwL3dwYV9mdC5jCi0rKysgYi9zcmMvcnNuX3N1cHAvd3BhX2Z0LmMKLUBAIC0xNTMsNiArMTUzLDcgQEAgc3RhdGljIHU4ICogd3BhX2Z0X2dlbl9yZXFfaWVzKHN0cnVjdCB3cGFfc20gKnNtLCBzaXplX3QgKmxlbiwKLSAJdTE2IGNhcGFiOwotIAotIAlzbS0+ZnRfY29tcGxldGVkID0gMDsKLSsJc20tPmZ0X3JlYXNzb2NfY29tcGxldGVkID0gMDsKLSAKLSAJYnVmX2xlbiA9IDIgKyBzaXplb2Yoc3RydWN0IHJzbl9tZGllKSArIDIgKyBzaXplb2Yoc3RydWN0IHJzbl9mdGllKSArCi0gCQkyICsgc20tPnIwa2hfaWRfbGVuICsgcmljX2llc19sZW4gKyAxMDA7Ci1AQCAtNjgxLDYgKzY4MiwxMSBAQCBpbnQgd3BhX2Z0X3ZhbGlkYXRlX3JlYXNzb2NfcmVzcChzdHJ1Y3Qgd3BhX3NtICpzbSwgY29uc3QgdTggKmllcywKLSAJCXJldHVybiAtMTsKLSAJfQotIAotKwlpZiAoc20tPmZ0X3JlYXNzb2NfY29tcGxldGVkKSB7Ci0rCQl3cGFfcHJpbnRmKE1TR19ERUJVRywgIkZUOiBSZWFzc29jaWF0aW9uIGhhcyBhbHJlYWR5IGJlZW4gY29tcGxldGVkIGZvciB0aGlzIEZUIHByb3RvY29sIGluc3RhbmNlIC0gaWdub3JlIHVuZXhwZWN0ZWQgcmV0cmFuc21pc3Npb24iKTsKLSsJCXJldHVybiAwOwotKwl9Ci0rCi0gCWlmICh3cGFfZnRfcGFyc2VfaWVzKGllcywgaWVzX2xlbiwgJnBhcnNlKSA8IDApIHsKLSAJCXdwYV9wcmludGYoTVNHX0RFQlVHLCAiRlQ6IEZhaWxlZCB0byBwYXJzZSBJRXMiKTsKLSAJCXJldHVybiAtMTsKLUBAIC03ODEsNiArNzg3LDggQEAgaW50IHdwYV9mdF92YWxpZGF0ZV9yZWFzc29jX3Jlc3Aoc3RydWN0IHdwYV9zbSAqc20sIGNvbnN0IHU4ICppZXMsCi0gCQlyZXR1cm4gLTE7Ci0gCX0KLSAKLSsJc20tPmZ0X3JlYXNzb2NfY29tcGxldGVkID0gMTsKLSsKLSAJaWYgKHdwYV9mdF9wcm9jZXNzX2d0a19zdWJlbGVtKHNtLCBwYXJzZS5ndGssIHBhcnNlLmd0a19sZW4pIDwgMCkKLSAJCXJldHVybiAtMTsKLSAKLWRpZmYgLS1naXQgYS9zcmMvcnNuX3N1cHAvd3BhX2kuaCBiL3NyYy9yc25fc3VwcC93cGFfaS5oCi1pbmRleCA0MWYzNzFmLi41NmY4OGRjIDEwMDY0NAotLS0tIGEvc3JjL3Jzbl9zdXBwL3dwYV9pLmgKLSsrKyBiL3NyYy9yc25fc3VwcC93cGFfaS5oCi1AQCAtMTI4LDYgKzEyOCw3IEBAIHN0cnVjdCB3cGFfc20gewotIAlzaXplX3QgcjBraF9pZF9sZW47Ci0gCXU4IHIxa2hfaWRbRlRfUjFLSF9JRF9MRU5dOwotIAlpbnQgZnRfY29tcGxldGVkOwotKwlpbnQgZnRfcmVhc3NvY19jb21wbGV0ZWQ7Ci0gCWludCBvdmVyX3RoZV9kc19pbl9wcm9ncmVzczsKLSAJdTggdGFyZ2V0X2FwW0VUSF9BTEVOXTsgLyogb3Zlci10aGUtRFMgdGFyZ2V0IEFQICovCi0gCWludCBzZXRfcHRrX2FmdGVyX2Fzc29jOwotLS0gCi0yLjcuNApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZF8yLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkXzIuNi5iYgppbmRleCBjM2ExZWFkLi4yNTBhZGQ4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkXzIuNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkXzIuNi5iYgpAQCAtMSwzNCArMSw0OCBAQAorU1VNTUFSWSA9ICJVc2VyIHNwYWNlIGRhZW1vbiBmb3IgZXh0ZW5kZWQgSUVFRSA4MDIuMTEgbWFuYWdlbWVudCIKIEhPTUVQQUdFID0gImh0dHA6Ly93MS5maS9ob3N0YXBkLyIKIFNFQ1RJT04gPSAia2VybmVsL3VzZXJsYW5kIgotTElDRU5TRSA9ICJHUEx2MiB8IEJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Qn0vUkVBRE1FO21kNT04YWE0ZThjNzhiNTliMTIwMTZjNGNiMmQwYThkYjM1MCIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vaG9zdGFwZC9SRUFETUU7bWQ1PThhYTRlOGM3OGI1OWIxMjAxNmM0Y2IyZDBhOGRiMzUwIgorCiBERVBFTkRTID0gImxpYm5sIG9wZW5zc2wiCi1TVU1NQVJZID0gIlVzZXIgc3BhY2UgZGFlbW9uIGZvciBleHRlbmRlZCBJRUVFIDgwMi4xMSBtYW5hZ2VtZW50IgotCi1pbmhlcml0IHVwZGF0ZS1yYy5kIHN5c3RlbWQKLUlOSVRTQ1JJUFRfTkFNRSA9ICJob3N0YXBkIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiaG9zdGFwZC5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfSA9ICJkaXNhYmxlIgogCiBTUkNfVVJJID0gIiBcCiAgICAgaHR0cDovL3cxLmZpL3JlbGVhc2VzL2hvc3RhcGQtJHtQVn0udGFyLmd6IFwKICAgICBmaWxlOi8vZGVmY29uZmlnIFwKICAgICBmaWxlOi8vaW5pdCBcCiAgICAgZmlsZTovL2hvc3RhcGQuc2VydmljZSBcCi0gICAgZmlsZTovL2tleS1yZXBsYXktY3ZlLW11bHRpcGxlLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1ob3N0YXBkLUF2b2lkLWtleS1yZWluc3RhbGxhdGlvbi1pbi1GVC1oYW5kc2hha2UucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLVByZXZlbnQtcmVpbnN0YWxsYXRpb24tb2YtYW4tYWxyZWFkeS1pbi11c2UtZ3JvdXAta2UucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLUV4dGVuZC1wcm90ZWN0aW9uLW9mLUdUSy1JR1RLLXJlaW5zdGFsbGF0aW9uLW9mLVdOTS0ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA0LVByZXZlbnQtaW5zdGFsbGF0aW9uLW9mLWFuLWFsbC16ZXJvLVRLLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNS1GaXgtUFRLLXJla2V5aW5nLXRvLWdlbmVyYXRlLWEtbmV3LUFOb25jZS5wYXRjaCBcCisgICAgZmlsZTovLzAwMDYtVERMUy1SZWplY3QtVFBLLVRLLXJlY29uZmlndXJhdGlvbi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDctRlQtRG8tbm90LWFsbG93LW11bHRpcGxlLVJlYXNzb2NpYXRpb24tUmVzcG9uc2UtZnJhbS5wYXRjaCBcCiAiCiAKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYWE1NmRjZTliZDhmMWQxOTVlYjYyNTk2ZWFiMzRjNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMTUyNmI5MGMxZDIzYmVjNGIwZjA1MjAzOWNjNDQ1NmMyZmQxOTM0N2I0ZDgzMGQxZDU4YTBhNmFlYTcxMTdkIgorCiBTID0gIiR7V09SS0RJUn0vaG9zdGFwZC0ke1BWfSIKIEIgPSAiJHtXT1JLRElSfS9ob3N0YXBkLSR7UFZ9L2hvc3RhcGQiCiAKLWRvX2NvbmZpZ3VyZSgpIHsKK2luaGVyaXQgdXBkYXRlLXJjLmQgc3lzdGVtZCBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK0NPTkZMSUNUX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuc3NsLW5vLXdlYWstY2lwaGVycyIKKworSU5JVFNDUklQVF9OQU1FID0gImhvc3RhcGQiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJob3N0YXBkLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59ID0gImRpc2FibGUiCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CiAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZGVmY29uZmlnICR7Qn0vLmNvbmZpZwogfQogCiBkb19jb21waWxlKCkgewotICAgIGV4cG9ydCBDRkxBR1M9Ii1NTUQgLU8yIC1XYWxsIC1nIC1JJHtTVEFHSU5HX0lOQ0RJUn0vbGlibmwzIgotICAgIG1ha2UKKyAgICBleHBvcnQgQ0ZMQUdTPSItTU1EIC1PMiAtV2FsbCAtZyIKKyAgICBleHBvcnQgRVhUUkFfQ0ZMQUdTPSIke0NGTEFHU30iCisgICAgbWFrZSBWPTEKIH0KIAogZG9faW5zdGFsbCgpIHsKQEAgLTQyLDcgKzU2LDMgQEAKIH0KIAogQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2hvc3RhcGQuY29uZiIKLQotU1JDX1VSSVttZDVzdW1dID0gImVhYTU2ZGNlOWJkOGYxZDE5NWViNjI1OTZlYWIzNGM3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAxNTI2YjkwYzFkMjNiZWM0YjBmMDUyMDM5Y2M0NDU2YzJmZDE5MzQ3YjRkODMwZDFkNThhMGE2YWVhNzExN2QiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rcmI1L2tyYjUvMDAwMS1hY2xvY2FsLUFkZC1wYXJhbWV0ZXItdG8tZGlzYWJsZS1rZXl1dGlscy1kZXRlY3Rpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1LzAwMDEtYWNsb2NhbC1BZGQtcGFyYW1ldGVyLXRvLWRpc2FibGUta2V5dXRpbHMtZGV0ZWN0aW9uLnBhdGNoCmluZGV4IGYwYzMxMGMuLmNiZDVkNzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rcmI1L2tyYjUvMDAwMS1hY2xvY2FsLUFkZC1wYXJhbWV0ZXItdG8tZGlzYWJsZS1rZXl1dGlscy1kZXRlY3Rpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNS8wMDAxLWFjbG9jYWwtQWRkLXBhcmFtZXRlci10by1kaXNhYmxlLWtleXV0aWxzLWRldGVjdGlvbi5wYXRjaApAQCAtMSwxOCArMSwxOSBAQAotRnJvbSBlY2I2MmYzNDY3ZjQ5M2NjMGQ2NzkzMjNmMDUzNjdlZWJiZjBmYjY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhOWU0MDU3YmZkYTE5MGFkMzY1YjUwM2FmMDU4YjQ2MGFiOGM3NjE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgogRGF0ZTogVHVlLCAxIE9jdCAyMDEzIDIyOjIyOjU3ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIGFjbG9jYWw6IEFkZCBwYXJhbWV0ZXIgdG8gZGlzYWJsZSBrZXl1dGlscyBkZXRlY3Rpb24KIAogU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorCiAtLS0KICBhY2xvY2FsLm00IHwgNCArKysrCiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvYWNsb2NhbC5tNCBiL2FjbG9jYWwubTQKLWluZGV4IDIxMGM0NzMuLjgzYjFmMDIgMTAwNjQ0CitpbmRleCBkNmQxMjc5Li44MGNlNjA0IDEwMDY0NAogLS0tIGEvYWNsb2NhbC5tNAogKysrIGIvYWNsb2NhbC5tNAotQEAgLTE2NTAsMTEgKzE2NTAsMTUgQEAgZmkKK0BAIC0xNjc5LDEyICsxNjc5LDE2IEBAIGZpCiAgZG5sCiAgZG5sIElmIGxpYmtleXV0aWxzIGV4aXN0cyAob24gTGludXgpIGluY2x1ZGUgaXQgYW5kIHVzZSBrZXlyaW5nIGNjYWNoZQogIEFDX0RFRlVOKEtSQjVfQUNfS0VZUklOR19DQ0FDSEUsWwpAQCAtMjgsNiArMjksNCBAQAogK2ZpCiAgXSlkbmwKICBkbmwKLS0tIAotMS44LjMuMgotCisgZG5sIElmIGxpYmtleXV0aWxzIHN1cHBvcnRzIHBlcnNpc3RlbnQga2V5cmluZ3MsIHVzZSB0aGVtCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1L0NWRS0yMDE3LTExNDYyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNS9DVkUtMjAxNy0xMTQ2Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGI4MmYwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1L0NWRS0yMDE3LTExNDYyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDE5ICswLDAgQEAKLUZyb20gNTZmN2IxYmM5NWEyYTNlZWI0MjBlMDY5ZTc2NTVmYjE4MWFkZTVjZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEdyZWcgSHVkc29uIDxnaHVkc29uQG1pdC5lZHU+Ci1EYXRlOiBGcmksIDE0IEp1bCAyMDE3IDEzOjAyOjQ2IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFByZXNlcnZlIEdTUyBjb250ZXh0IG9uIGluaXQvYWNjZXB0IGZhaWx1cmUKLQotQWZ0ZXIgZ3NzX2luaXRfc2VjX2NvbnRleHQoKSBvciBnc3NfYWNjZXB0X3NlY19jb250ZXh0KCkgaGFzIGNyZWF0ZWQgYQotY29udGV4dCwgZG9uJ3QgZGVsZXRlIHRoZSBtZWNoZ2x1ZSBjb250ZXh0IG9uIGZhaWx1cmVzIGZyb20gc3Vic2VxdWVudAotY2FsbHMsIGV2ZW4gaWYgdGhlIG1lY2hhbmlzbSBkZWxldGVzIHRoZSBtZWNoLXNwZWNpZmljIGNvbnRleHQgKHdoaWNoCi1pcyBhbGxvd2VkIGJ5IFJGQyAyNzQ0IGJ1dCBub3QgcHJlZmVycmVkKS4gIENoZWNrIGZvciB1bmlvbiBjb250ZXh0cwotd2l0aCBubyBtZWNoYW5pc20gY29udGV4dCBpbiBlYWNoIEdTUyBmdW5jdGlvbiB3aGljaCBhY2NlcHRzIGEKLWdzc19jdHhfaWRfdC4KLQotQ1ZFLTIwMTctMTE0NjI6Ci0KLVJGQyAyNzQ0IHBlcm1pdHMgYSBHU1MtQVBJIGltcGxlbWVudGF0aW9uIHRvIGRlbGV0ZSBhbiBleGlzdGluZwotc2VjdXJpdHkgY29udGV4dCBvbiBhIHNlY29uZCBvciBzdWJzZXF1ZW50IGNhbGwgdG8KLWdzc19pbml0X3NlY19jb250ZXh0KCkgb3IgZ3NzX2FjY2VwdF9zZWNfY29udGV4dCgpIGlmIHRoZSBjYWxsIHJlc3VsdHMKLWluIGFuIGVycm9yLiAgVGhpcyBBUEkgYmVoYXZpb3IgaGFzIGJlZW4gZm91bmQgdG8gYmUgZGFuZ2Vyb3VzLAotbGVhZGluZyB0byB0aGUgcG9zc2liaWxpdHkgb2YgbWVtb3J5IGVycm9ycyBpbiBzb21lIGNhbGxlcnMuICBGb3IKLXNhZmV0eSwgR1NTLUFQSSBpbXBsZW1lbnRhdGlvbnMgc2hvdWxkIGluc3RlYWQgcHJlc2VydmUgZXhpc3RpbmcKLXNlY3VyaXR5IGNvbnRleHRzIG9uIGVycm9yIHVudGlsIHRoZSBjYWxsZXIgZGVsZXRlcyB0aGVtLgotCi1BbGwgdmVyc2lvbnMgb2YgTUlUIGtyYjUgcHJpb3IgdG8gdGhpcyBjaGFuZ2UgbWF5IGRlbGV0ZSBhY2NlcHRvcgotY29udGV4dHMgb24gZXJyb3IuICBWZXJzaW9ucyAxLjEzLjQgdGhyb3VnaCAxLjEzLjcsIDEuMTQuMSB0aHJvdWdoCi0xLjE0LjUsIGFuZCAxLjE1IHRocm91Z2ggMS4xNS4xIG1heSBhbHNvIGRlbGV0ZSBpbml0aWF0b3IgY29udGV4dHMgb24KLWVycm9yLgotCi10aWNrZXQ6IDg1OTggKG5ldykKLXRhcmdldF92ZXJzaW9uOiAxLjE1LW5leHQKLXRhcmdldF92ZXJzaW9uOiAxLjE0LW5leHQKLXRhZ3M6IHB1bGx1cAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTExNDYyCi0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19hY2NlcHRfc2VjX2NvbnRleHQuYyAgfCAyMiArKysrKysrKysrKysrKystLS0tLS0tCi0gc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19jb21wbGV0ZV9hdXRoX3Rva2VuLmMgfCAgMiArKwotIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfY29udGV4dF90aW1lLmMgICAgICAgIHwgIDIgKysKLSBzcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2RlbGV0ZV9zZWNfY29udGV4dC5jICB8IDE0ICsrKysrKysrLS0tLS0tCi0gc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19leHBfc2VjX2NvbnRleHQuYyAgICAgfCAgMiArKwotIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5pdF9zZWNfY29udGV4dC5jICAgIHwgMTkgKysrKysrKysrKystLS0tLS0tLQotIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5xX2NvbnRleHQuYyAgICAgICAgIHwgIDIgKysKLSBzcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3ByZi5jICAgICAgICAgICAgICAgICB8ICAyICsrCi0gc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19wcm9jZXNzX2NvbnRleHQuYyAgICAgfCAgMiArKwotIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfc2VhbC5jICAgICAgICAgICAgICAgIHwgIDQgKysrKwotIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfc2lnbi5jICAgICAgICAgICAgICAgIHwgIDIgKysKLSBzcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vuc2VhbC5jICAgICAgICAgICAgICB8ICAyICsrCi0gc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ191bndyYXBfYWVhZC5jICAgICAgICAgfCAgMiArKwotIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdW53cmFwX2lvdi5jICAgICAgICAgIHwgIDQgKysrKwotIHNyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdmVyaWZ5LmMgICAgICAgICAgICAgIHwgIDIgKysKLSBzcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3dyYXBfYWVhZC5jICAgICAgICAgICB8ICAyICsrCi0gc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ193cmFwX2lvdi5jICAgICAgICAgICAgfCAgOCArKysrKysrKwotIDE3IGZpbGVzIGNoYW5nZWQsIDcyIGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19hY2NlcHRfc2VjX2NvbnRleHQuYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfYWNjZXB0X3NlY19jb250ZXh0LmMKLWluZGV4IGRkYWY4NzQuLmYyOGUyYjEgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2FjY2VwdF9zZWNfY29udGV4dC5jCi0rKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2FjY2VwdF9zZWNfY29udGV4dC5jCi1AQCAtMjE2LDYgKzIxNiw4IEBAIGdzc19jcmVkX2lkX3QgKgkJZF9jcmVkOwotICAgICB9IGVsc2UgewotIAl1bmlvbl9jdHhfaWQgPSAoZ3NzX3VuaW9uX2N0eF9pZF90KSpjb250ZXh0X2hhbmRsZTsKLSAJc2VsZWN0ZWRfbWVjaCA9IHVuaW9uX2N0eF9pZC0+bWVjaF90eXBlOwotKwlpZiAodW5pb25fY3R4X2lkLT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKLSsJICAgIHJldHVybiAoR1NTX1NfTk9fQ09OVEVYVCk7Ci0gICAgIH0KLSAKLSAgICAgLyogTm93IGNyZWF0ZSBhIG5ldyBjb250ZXh0IGlmIHdlIGRpZG4ndCBnZXQgb25lLiAqLwotQEAgLTIzNCw5ICsyMzYsNiBAQCBnc3NfY3JlZF9pZF90ICoJCWRfY3JlZDsKLSAJICAgIGZyZWUodW5pb25fY3R4X2lkKTsKLSAJICAgIHJldHVybiAoc3RhdHVzKTsKLSAJfQotLQotLQkvKiBzZXQgdGhlIG5ldyBjb250ZXh0IGhhbmRsZSB0byBjYWxsZXIncyBkYXRhICovCi0tCSpjb250ZXh0X2hhbmRsZSA9IChnc3NfY3R4X2lkX3QpdW5pb25fY3R4X2lkOwotICAgICB9Ci0gCi0gICAgIC8qCi1AQCAtMjc3LDggKzI3NiwxMCBAQCBnc3NfY3JlZF9pZF90ICoJCWRfY3JlZDsKLSAJCQkJCWRfY3JlZCA/ICZ0bXBfZF9jcmVkIDogTlVMTCk7Ci0gCi0gCSAgICAvKiBJZiB0aGVyZSdzIG1vcmUgd29yayB0byBkbywga2VlcCBnb2luZy4uLiAqLwotLQkgICAgaWYgKHN0YXR1cyA9PSBHU1NfU19DT05USU5VRV9ORUVERUQpCi0rCSAgICBpZiAoc3RhdHVzID09IEdTU19TX0NPTlRJTlVFX05FRURFRCkgewotKwkJKmNvbnRleHRfaGFuZGxlID0gKGdzc19jdHhfaWRfdCl1bmlvbl9jdHhfaWQ7Ci0gCQlyZXR1cm4gR1NTX1NfQ09OVElOVUVfTkVFREVEOwotKwkgICAgfQotIAotIAkgICAgLyogaWYgdGhlIGNhbGwgZmFpbGVkLCByZXR1cm4gd2l0aCBmYWlsdXJlICovCi0gCSAgICBpZiAoc3RhdHVzICE9IEdTU19TX0NPTVBMRVRFKSB7Ci1AQCAtMzY0LDE0ICszNjUsMjIgQEAgZ3NzX2NyZWRfaWRfdCAqCQlkX2NyZWQ7Ci0gCQkqbWVjaF90eXBlID0gZ3NzaW50X2dldF9wdWJsaWNfb2lkKGFjdHVhbF9tZWNoKTsKLSAJICAgIGlmIChyZXRfZmxhZ3MgIT0gTlVMTCkKLSAJCSpyZXRfZmxhZ3MgPSB0ZW1wX3JldF9mbGFnczsKLS0JICAgIHJldHVybgkoc3RhdHVzKTsKLSsJICAgICpjb250ZXh0X2hhbmRsZSA9IChnc3NfY3R4X2lkX3QpdW5pb25fY3R4X2lkOwotKwkgICAgcmV0dXJuIEdTU19TX0NPTVBMRVRFOwotICAgICB9IGVsc2UgewotIAotIAlzdGF0dXMgPSBHU1NfU19CQURfTUVDSDsKLSAgICAgfQotIAotIGVycm9yX291dDoKLS0gICAgaWYgKHVuaW9uX2N0eF9pZCkgewotKwkvKgotKwkgKiBSRkMgMjc0NCA1LjEgcmVxdWlyZXMgdGhhdCB3ZSBub3QgY3JlYXRlIGEgY29udGV4dCBvbiBhIGZhaWxlZCBmaXJzdAotKwkgKiBjYWxsIHRvIGFjY2VwdCwgYW5kIHJlY29tbWVuZHMgdGhhdCBvbiBhIGZhaWxlZCBzdWJzZXF1ZW50IGNhbGwgd2UKLSsJICogbWFrZSB0aGUgY2FsbGVyIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIGdzc19kZWxldGVfc2VjX2NvbnRleHQuCi0rCSAqIEV2ZW4gaWYgdGhlIG1lY2ggZGVsZXRlZCBpdHMgY29udGV4dCwga2VlcCB0aGUgdW5pb24gY29udGV4dCBhcm91bmQKLSsJICogZm9yIHRoZSBjYWxsZXIgdG8gZGVsZXRlLgotKwkgKi8KLSsgICAgaWYgKHVuaW9uX2N0eF9pZCAmJiAqY29udGV4dF9oYW5kbGUgPT0gR1NTX0NfTk9fQ09OVEVYVCkgewotIAlpZiAodW5pb25fY3R4X2lkLT5tZWNoX3R5cGUpIHsKLSAJICAgIGlmICh1bmlvbl9jdHhfaWQtPm1lY2hfdHlwZS0+ZWxlbWVudHMpCi0gCQlmcmVlKHVuaW9uX2N0eF9pZC0+bWVjaF90eXBlLT5lbGVtZW50cyk7Ci1AQCAtMzg0LDcgKzM5Myw2IEBAIGVycm9yX291dDoKLSAJCQkJCSBHU1NfQ19OT19CVUZGRVIpOwotIAl9Ci0gCWZyZWUodW5pb25fY3R4X2lkKTsKLS0JKmNvbnRleHRfaGFuZGxlID0gR1NTX0NfTk9fQ09OVEVYVDsKLSAgICAgfQotIAotICAgICBpZiAoc3JjX25hbWUpCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19jb21wbGV0ZV9hdXRoX3Rva2VuLmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2NvbXBsZXRlX2F1dGhfdG9rZW4uYwotaW5kZXggOTE4MTU1MS4uNGJjYjQ3ZSAxMDA2NDQKLS0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfY29tcGxldGVfYXV0aF90b2tlbi5jCi0rKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2NvbXBsZXRlX2F1dGhfdG9rZW4uYwotQEAgLTUyLDYgKzUyLDggQEAgZ3NzX2NvbXBsZXRlX2F1dGhfdG9rZW4gKE9NX3VpbnQzMiAqbWlub3Jfc3RhdHVzLAotICAgICAgKi8KLSAKLSAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7Ci0rICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQotKwlyZXR1cm4gR1NTX1NfTk9fQ09OVEVYVDsKLSAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7Ci0gCi0gICAgIGlmIChtZWNoICE9IE5VTEwpIHsKLWRpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2NvbnRleHRfdGltZS5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19jb250ZXh0X3RpbWUuYwotaW5kZXggMmZmOGQwOS4uYzk0N2U3NiAxMDA2NDQKLS0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfY29udGV4dF90aW1lLmMKLSsrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfY29udGV4dF90aW1lLmMKLUBAIC01OCw2ICs1OCw4IEBAIE9NX3VpbnQzMiAqCQl0aW1lX3JlYzsKLSAgICAgICovCi0gCi0gICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpIGNvbnRleHRfaGFuZGxlOwotKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKLSsJcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKLSAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7Ci0gCi0gICAgIGlmIChtZWNoKSB7Ci1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19kZWxldGVfc2VjX2NvbnRleHQuYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfZGVsZXRlX3NlY19jb250ZXh0LmMKLWluZGV4IDRiZjBkZWMuLjU3NGZmMDIgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2RlbGV0ZV9zZWNfY29udGV4dC5jCi0rKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2RlbGV0ZV9zZWNfY29udGV4dC5jCi1AQCAtODcsMTIgKzg3LDE0IEBAIGdzc19idWZmZXJfdAkJb3V0cHV0X3Rva2VuOwotICAgICBpZiAoR1NTSU5UX0NIS19MT09QKGN0eCkpCi0gCXJldHVybiAoR1NTX1NfQ0FMTF9JTkFDQ0VTU0lCTEVfUkVBRCB8IEdTU19TX05PX0NPTlRFWFQpOwotIAotLSAgICBzdGF0dXMgPSBnc3NpbnRfZGVsZXRlX2ludGVybmFsX3NlY19jb250ZXh0KG1pbm9yX3N0YXR1cywKLS0JCQkJCQljdHgtPm1lY2hfdHlwZSwKLS0JCQkJCQkmY3R4LT5pbnRlcm5hbF9jdHhfaWQsCi0tCQkJCQkJb3V0cHV0X3Rva2VuKTsKLS0gICAgaWYgKHN0YXR1cykKLS0JcmV0dXJuIHN0YXR1czsKLSsgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkICE9IEdTU19DX05PX0NPTlRFWFQpIHsKLSsJc3RhdHVzID0gZ3NzaW50X2RlbGV0ZV9pbnRlcm5hbF9zZWNfY29udGV4dChtaW5vcl9zdGF0dXMsCi0rCQkJCQkJICAgIGN0eC0+bWVjaF90eXBlLAotKwkJCQkJCSAgICAmY3R4LT5pbnRlcm5hbF9jdHhfaWQsCi0rCQkJCQkJICAgIG91dHB1dF90b2tlbik7Ci0rCWlmIChzdGF0dXMpCi0rCSAgICByZXR1cm4gc3RhdHVzOwotKyAgICB9Ci0gCi0gICAgIC8qIG5vdyBmcmVlIHVwIHRoZSBzcGFjZSBmb3IgdGhlIHVuaW9uIGNvbnRleHQgc3RydWN0dXJlICovCi0gICAgIGZyZWUoY3R4LT5tZWNoX3R5cGUtPmVsZW1lbnRzKTsKLWRpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2V4cF9zZWNfY29udGV4dC5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19leHBfc2VjX2NvbnRleHQuYwotaW5kZXggYjYzNzQ1Mi4uMWQ3OTkwYiAxMDA2NDQKLS0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfZXhwX3NlY19jb250ZXh0LmMKLSsrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfZXhwX3NlY19jb250ZXh0LmMKLUBAIC05NSw2ICs5NSw4IEBAIGdzc19idWZmZXJfdAkJaW50ZXJwcm9jZXNzX3Rva2VuOwotICAgICAgKi8KLSAKLSAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgKmNvbnRleHRfaGFuZGxlOwotKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKLSsJcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKLSAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7Ci0gICAgIGlmICghbWVjaCkKLSAJcmV0dXJuIEdTU19TX0JBRF9NRUNIOwotZGlmZiAtLWdpdCBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5pdF9zZWNfY29udGV4dC5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19pbml0X3NlY19jb250ZXh0LmMKLWluZGV4IDlmMTU0YjguLmUyZGYxY2UgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX2luaXRfc2VjX2NvbnRleHQuYwotKysrIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19pbml0X3NlY19jb250ZXh0LmMKLUBAIC0xOTIsOCArMTkyLDEzIEBAIE9NX3VpbnQzMiAqCQl0aW1lX3JlYzsKLSAKLSAJLyogY29weSB0aGUgc3VwcGxpZWQgY29udGV4dCBoYW5kbGUgKi8KLSAJdW5pb25fY3R4X2lkLT5pbnRlcm5hbF9jdHhfaWQgPSBHU1NfQ19OT19DT05URVhUOwotLSAgICB9IGVsc2UKLSsgICAgfSBlbHNlIHsKLSAJdW5pb25fY3R4X2lkID0gKGdzc191bmlvbl9jdHhfaWRfdCkqY29udGV4dF9oYW5kbGU7Ci0rCWlmICh1bmlvbl9jdHhfaWQtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKSB7Ci0rCSAgICBzdGF0dXMgPSBHU1NfU19OT19DT05URVhUOwotKwkgICAgZ290byBlbmQ7Ci0rCX0KLSsgICAgfQotIAotICAgICAvKgotICAgICAgKiBnZXQgdGhlIGFwcHJvcHJpYXRlIGNyZWQgaGFuZGxlIGZyb20gdGhlIHVuaW9uIGNyZWQgc3RydWN0LgotQEAgLTIyNCwxNSArMjI5LDEzIEBAIE9NX3VpbnQzMiAqCQl0aW1lX3JlYzsKLSAKLSAgICAgaWYgKHN0YXR1cyAhPSBHU1NfU19DT01QTEVURSAmJiBzdGF0dXMgIT0gR1NTX1NfQ09OVElOVUVfTkVFREVEKSB7Ci0gCS8qCi0tCSAqIFRoZSBzcGVjIHNheXMgdGhlIHByZWZlcnJlZCBtZXRob2QgaXMgdG8gZGVsZXRlIGFsbCBjb250ZXh0IGluZm8gb24KLS0JICogdGhlIGZpcnN0IGNhbGwgdG8gaW5pdCwgYW5kIG9uIGFsbCBzdWJzZXF1ZW50IGNhbGxzIG1ha2UgdGhlIGNhbGxlcgotLQkgKiByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBnc3NfZGVsZXRlX3NlY19jb250ZXh0LiAgSG93ZXZlciwgaWYgdGhlCi0tCSAqIG1lY2hhbmlzbSBkZWNpZGVkIHRvIGRlbGV0ZSB0aGUgaW50ZXJuYWwgY29udGV4dCwgd2Ugc2hvdWxkIGFsc28KLS0JICogZGVsZXRlIHRoZSB1bmlvbiBjb250ZXh0LgotKwkgKiBSRkMgMjc0NCA1LjE5IHJlcXVpcmVzIHRoYXQgd2Ugbm90IGNyZWF0ZSBhIGNvbnRleHQgb24gYSBmYWlsZWQKLSsJICogZmlyc3QgY2FsbCB0byBpbml0LCBhbmQgcmVjb21tZW5kcyB0aGF0IG9uIGEgZmFpbGVkIHN1YnNlcXVlbnQgY2FsbAotKwkgKiB3ZSBtYWtlIHRoZSBjYWxsZXIgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgZ3NzX2RlbGV0ZV9zZWNfY29udGV4dC4KLSsJICogRXZlbiBpZiB0aGUgbWVjaCBkZWxldGVkIGl0cyBjb250ZXh0LCBrZWVwIHRoZSB1bmlvbiBjb250ZXh0IGFyb3VuZAotKwkgKiBmb3IgdGhlIGNhbGxlciB0byBkZWxldGUuCi0gCSAqLwotIAltYXBfZXJyb3IobWlub3Jfc3RhdHVzLCBtZWNoKTsKLS0JaWYgKHVuaW9uX2N0eF9pZC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCi0tCSAgICAqY29udGV4dF9oYW5kbGUgPSBHU1NfQ19OT19DT05URVhUOwotIAlpZiAoKmNvbnRleHRfaGFuZGxlID09IEdTU19DX05PX0NPTlRFWFQpIHsKLSAJICAgIGZyZWUodW5pb25fY3R4X2lkLT5tZWNoX3R5cGUtPmVsZW1lbnRzKTsKLSAJICAgIGZyZWUodW5pb25fY3R4X2lkLT5tZWNoX3R5cGUpOwotZGlmZiAtLWdpdCBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5xX2NvbnRleHQuYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5xX2NvbnRleHQuYwotaW5kZXggNmYxYzcxZS4uNmMwZDk4ZCAxMDA2NDQKLS0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfaW5xX2NvbnRleHQuYwotKysrIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19pbnFfY29udGV4dC5jCi1AQCAtMTA0LDYgKzEwNCw4IEBAIGdzc19pbnF1aXJlX2NvbnRleHQoCi0gICAgICAqLwotIAotICAgICBjdHggPSAoZ3NzX3VuaW9uX2N0eF9pZF90KSBjb250ZXh0X2hhbmRsZTsKLSsgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCi0rCXJldHVybiAoR1NTX1NfTk9fQ09OVEVYVCk7Ci0gICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbSAoY3R4LT5tZWNoX3R5cGUpOwotIAotICAgICBpZiAoIW1lY2ggfHwgIW1lY2gtPmdzc19pbnF1aXJlX2NvbnRleHQgfHwgIW1lY2gtPmdzc19kaXNwbGF5X25hbWUgfHwKLWRpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3ByZi5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19wcmYuYwotaW5kZXggZmNjYTNlNC4uOWUxNjhhZCAxMDA2NDQKLS0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfcHJmLmMKLSsrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfcHJmLmMKLUBAIC01OSw2ICs1OSw4IEBAIGdzc19wc2V1ZG9fcmFuZG9tIChPTV91aW50MzIgKm1pbm9yX3N0YXR1cywKLSAgICAgICovCi0gCi0gICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpIGNvbnRleHRfaGFuZGxlOwotKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKLSsJcmV0dXJuIEdTU19TX05PX0NPTlRFWFQ7Ci0gICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbSAoY3R4LT5tZWNoX3R5cGUpOwotIAotICAgICBpZiAobWVjaCAhPSBOVUxMKSB7Ci1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19wcm9jZXNzX2NvbnRleHQuYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfcHJvY2Vzc19jb250ZXh0LmMKLWluZGV4IGJjMjYwYWUuLjM5NjhiNWQgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Byb2Nlc3NfY29udGV4dC5jCi0rKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Byb2Nlc3NfY29udGV4dC5jCi1AQCAtNjEsNiArNjEsOCBAQCBnc3NfYnVmZmVyX3QJCXRva2VuX2J1ZmZlcjsKLSAgICAgICovCi0gCi0gICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpIGNvbnRleHRfaGFuZGxlOwotKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKLSsJcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKLSAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7Ci0gCi0gICAgIGlmIChtZWNoKSB7Ci1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19zZWFsLmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3NlYWwuYwotaW5kZXggZjE3MjQxYy4uM2RiMWVlMCAxMDA2NDQKLS0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfc2VhbC5jCi0rKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3NlYWwuYwotQEAgLTkyLDYgKzkyLDggQEAgZ3NzX3dyYXAoIE9NX3VpbnQzMiAqbWlub3Jfc3RhdHVzLAotICAgICAgKi8KLSAKLSAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7Ci0rICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQotKyAgICAgICAgcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKLSAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7Ci0gCi0gICAgIGlmIChtZWNoKSB7Ci1AQCAtMjI2LDYgKzIyOCw4IEBAIGdzc193cmFwX3NpemVfbGltaXQoT01fdWludDMyICAqbWlub3Jfc3RhdHVzLAotICAgICAgKi8KLSAKLSAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7Ci0rICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQotKyAgICAgICAgcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKLSAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7Ci0gCi0gICAgIGlmICghbWVjaCkKLWRpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3NpZ24uYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfc2lnbi5jCi1pbmRleCA4NmQ2NDFhLi4wM2ZiZDhjIDEwMDY0NAotLS0tIGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ19zaWduLmMKLSsrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfc2lnbi5jCi1AQCAtOTQsNiArOTQsOCBAQCBnc3NfYnVmZmVyX3QJCW1zZ190b2tlbjsKLSAgICAgICovCi0gCi0gICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpIGNvbnRleHRfaGFuZGxlOwotKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKLSsJcmV0dXJuIChHU1NfU19OT19DT05URVhUKTsKLSAgICAgbWVjaCA9IGdzc2ludF9nZXRfbWVjaGFuaXNtIChjdHgtPm1lY2hfdHlwZSk7Ci0gCi0gICAgIGlmIChtZWNoKSB7Ci1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ191bnNlYWwuYyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdW5zZWFsLmMKLWluZGV4IDNlODA1M2MuLmMyMDg2MzUgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vuc2VhbC5jCi0rKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vuc2VhbC5jCi1AQCAtNzYsNiArNzYsOCBAQCBnc3NfcW9wX3QgKgkJcW9wX3N0YXRlOwotICAgICAgKiBjYWxsIGl0LgotICAgICAgKi8KLSAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7Ci0rICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQotKwlyZXR1cm4gKEdTU19TX05PX0NPTlRFWFQpOwotICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20gKGN0eC0+bWVjaF90eXBlKTsKLSAKLSAgICAgaWYgKG1lY2gpIHsKLWRpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vud3JhcF9hZWFkLmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vud3JhcF9hZWFkLmMKLWluZGV4IGU3OGJmZjIuLjA2ODJiZDggMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vud3JhcF9hZWFkLmMKLSsrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdW53cmFwX2FlYWQuYwotQEAgLTE4Niw2ICsxODYsOCBAQCBnc3NfcW9wX3QJCSpxb3Bfc3RhdGU7Ci0gICAgICAqIGNhbGwgaXQuCi0gICAgICAqLwotICAgICBjdHggPSAoZ3NzX3VuaW9uX2N0eF9pZF90KSBjb250ZXh0X2hhbmRsZTsKLSsgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCi0rCXJldHVybiAoR1NTX1NfTk9fQ09OVEVYVCk7Ci0gICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbSAoY3R4LT5tZWNoX3R5cGUpOwotIAotICAgICBpZiAoIW1lY2gpCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ191bndyYXBfaW92LmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vud3JhcF9pb3YuYwotaW5kZXggYzBkZDMxNC4uNTk5YmUyYyAxMDA2NDQKLS0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdW53cmFwX2lvdi5jCi0rKysgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3Vud3JhcF9pb3YuYwotQEAgLTg5LDYgKzg5LDggQEAgaW50CQkJaW92X2NvdW50OwotICAgICAgKi8KLSAKLSAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7Ci0rICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQotKwlyZXR1cm4gKEdTU19TX05PX0NPTlRFWFQpOwotICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20gKGN0eC0+bWVjaF90eXBlKTsKLSAKLSAgICAgaWYgKG1lY2gpIHsKLUBAIC0xMjgsNiArMTMwLDggQEAgZ3NzX3ZlcmlmeV9taWNfaW92KE9NX3VpbnQzMiAqbWlub3Jfc3RhdHVzLCBnc3NfY3R4X2lkX3QgY29udGV4dF9oYW5kbGUsCi0gCi0gICAgIC8qIFNlbGVjdCB0aGUgYXBwcm9wcmF0ZSB1bmRlcmx5aW5nIG1lY2hhbmlzbSByb3V0aW5lIGFuZCBjYWxsIGl0LiAqLwotICAgICBjdHggPSAoZ3NzX3VuaW9uX2N0eF9pZF90KWNvbnRleHRfaGFuZGxlOwotKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKLSsJcmV0dXJuIEdTU19TX05PX0NPTlRFWFQ7Ci0gICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbShjdHgtPm1lY2hfdHlwZSk7Ci0gICAgIGlmIChtZWNoID09IE5VTEwpCi0gCXJldHVybiBHU1NfU19CQURfTUVDSDsKLWRpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3ZlcmlmeS5jIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ192ZXJpZnkuYwotaW5kZXggMTU3OGFlMS4uODk5NmZjZSAxMDA2NDQKLS0tLSBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdmVyaWZ5LmMKLSsrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfdmVyaWZ5LmMKLUBAIC02NSw2ICs2NSw4IEBAIGdzc19xb3BfdCAqCQlxb3Bfc3RhdGU7Ci0gICAgICAqLwotIAotICAgICBjdHggPSAoZ3NzX3VuaW9uX2N0eF9pZF90KSBjb250ZXh0X2hhbmRsZTsKLSsgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCi0rCXJldHVybiAoR1NTX1NfTk9fQ09OVEVYVCk7Ci0gICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbSAoY3R4LT5tZWNoX3R5cGUpOwotIAotICAgICBpZiAobWVjaCkgewotZGlmZiAtLWdpdCBhL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfd3JhcF9hZWFkLmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3dyYXBfYWVhZC5jCi1pbmRleCA5NmNkZjNjLi43ZmUzYjdiIDEwMDY0NAotLS0tIGEvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ193cmFwX2FlYWQuYwotKysrIGIvc3JjL2xpYi9nc3NhcGkvbWVjaGdsdWUvZ193cmFwX2FlYWQuYwotQEAgLTI1Niw2ICsyNTYsOCBAQCBnc3NfYnVmZmVyX3QJCW91dHB1dF9tZXNzYWdlX2J1ZmZlcjsKLSAgICAgICogY2FsbCBpdC4KLSAgICAgICovCi0gICAgIGN0eCA9IChnc3NfdW5pb25fY3R4X2lkX3QpY29udGV4dF9oYW5kbGU7Ci0rICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQotKwlyZXR1cm4gKEdTU19TX05PX0NPTlRFWFQpOwotICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20gKGN0eC0+bWVjaF90eXBlKTsKLSAgICAgaWYgKCFtZWNoKQotIAlyZXR1cm4gKEdTU19TX0JBRF9NRUNIKTsKLWRpZmYgLS1naXQgYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3dyYXBfaW92LmMgYi9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3dyYXBfaW92LmMKLWluZGV4IDQwY2Q5OGYuLjE0NDQ3YzQgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliL2dzc2FwaS9tZWNoZ2x1ZS9nX3dyYXBfaW92LmMKLSsrKyBiL3NyYy9saWIvZ3NzYXBpL21lY2hnbHVlL2dfd3JhcF9pb3YuYwotQEAgLTkzLDYgKzkzLDggQEAgaW50CQkJaW92X2NvdW50OwotICAgICAgKi8KLSAKLSAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7Ci0rICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQotKwlyZXR1cm4gKEdTU19TX05PX0NPTlRFWFQpOwotICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20gKGN0eC0+bWVjaF90eXBlKTsKLSAKLSAgICAgaWYgKG1lY2gpIHsKLUBAIC0xNTEsNiArMTUzLDggQEAgaW50CQkJaW92X2NvdW50OwotICAgICAgKi8KLSAKLSAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCkgY29udGV4dF9oYW5kbGU7Ci0rICAgIGlmIChjdHgtPmludGVybmFsX2N0eF9pZCA9PSBHU1NfQ19OT19DT05URVhUKQotKwlyZXR1cm4gKEdTU19TX05PX0NPTlRFWFQpOwotICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20gKGN0eC0+bWVjaF90eXBlKTsKLSAKLSAgICAgaWYgKG1lY2gpIHsKLUBAIC0xOTAsNiArMTk0LDggQEAgZ3NzX2dldF9taWNfaW92KE9NX3VpbnQzMiAqbWlub3Jfc3RhdHVzLCBnc3NfY3R4X2lkX3QgY29udGV4dF9oYW5kbGUsCi0gCi0gICAgIC8qIFNlbGVjdCB0aGUgYXBwcm9wcmF0ZSB1bmRlcmx5aW5nIG1lY2hhbmlzbSByb3V0aW5lIGFuZCBjYWxsIGl0LiAqLwotICAgICBjdHggPSAoZ3NzX3VuaW9uX2N0eF9pZF90KWNvbnRleHRfaGFuZGxlOwotKyAgICBpZiAoY3R4LT5pbnRlcm5hbF9jdHhfaWQgPT0gR1NTX0NfTk9fQ09OVEVYVCkKLSsJcmV0dXJuIEdTU19TX05PX0NPTlRFWFQ7Ci0gICAgIG1lY2ggPSBnc3NpbnRfZ2V0X21lY2hhbmlzbShjdHgtPm1lY2hfdHlwZSk7Ci0gICAgIGlmIChtZWNoID09IE5VTEwpCi0gCXJldHVybiBHU1NfU19CQURfTUVDSDsKLUBAIC0yMTgsNiArMjI0LDggQEAgZ3NzX2dldF9taWNfaW92X2xlbmd0aChPTV91aW50MzIgKm1pbm9yX3N0YXR1cywgZ3NzX2N0eF9pZF90IGNvbnRleHRfaGFuZGxlLAotIAotICAgICAvKiBTZWxlY3QgdGhlIGFwcHJvcHJhdGUgdW5kZXJseWluZyBtZWNoYW5pc20gcm91dGluZSBhbmQgY2FsbCBpdC4gKi8KLSAgICAgY3R4ID0gKGdzc191bmlvbl9jdHhfaWRfdCljb250ZXh0X2hhbmRsZTsKLSsgICAgaWYgKGN0eC0+aW50ZXJuYWxfY3R4X2lkID09IEdTU19DX05PX0NPTlRFWFQpCi0rCXJldHVybiBHU1NfU19OT19DT05URVhUOwotICAgICBtZWNoID0gZ3NzaW50X2dldF9tZWNoYW5pc20oY3R4LT5tZWNoX3R5cGUpOwotICAgICBpZiAobWVjaCA9PSBOVUxMKQotIAlyZXR1cm4gR1NTX1NfQkFEX01FQ0g7Ci0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1L2V0Yy9kZWZhdWx0L2tyYjUtYWRtaW4tc2VydmVyIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNS9ldGMvZGVmYXVsdC9rcmI1LWFkbWluLXNlcnZlcgppbmRleCAyODM1OTI5Li5lMDk3MzUzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1L2V0Yy9kZWZhdWx0L2tyYjUtYWRtaW4tc2VydmVyCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rcmI1L2tyYjUvZXRjL2RlZmF1bHQva3JiNS1hZG1pbi1zZXJ2ZXIKQEAgLTEsNiArMSw0IEBACiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkLiAgSWYgeW91IGNoYW5nZSBhbnl0aGluZyBpbiB0aGlzIGZpbGUgb3RoZXIgdGhhbiB0aGUKLSMgdmFsdWVzIG9mIFJVTl9LQURNSU5EIG9yIERBRU1PTl9BUkdTLCBmaXJzdCBydW4gZHBrZy1yZWNvbmZpZ3VyZQorIyB2YWx1ZXMgb2YgREFFTU9OX0FSR1MsIGZpcnN0IHJ1biBkcGtnLXJlY29uZmlndXJlCiAjIGtyYjUtYWRtaW4tc2VydmVyIGFuZCBkaXNhYmxlIG1hbmFnaW5nIHRoZSBrYWRtaW4gY29uZmlndXJhdGlvbiB3aXRoCiAjIGRlYmNvbmYuICBPdGhlcndpc2UsIGNoYW5nZXMgd2lsbCBiZSBvdmVyd3JpdHRlbi4KLQotUlVOX0tBRE1JTkQ9dHJ1ZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNS9maXgtQ1ZFLTIwMTctMTEzNjgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1L2ZpeC1DVkUtMjAxNy0xMTM2OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJlYjdiYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1L2ZpeC1DVkUtMjAxNy0xMTM2OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20va3JiNS9rcmI1L2NvbW1pdC9mZmIzNWJhYWM2OTgxZjllODkxNGY4ZjNiZmZkMzdmMjg0Yjg1OTcwXQotCi1CYWNrcG9ydCBwYXRjaCB0byBmaXggQ1ZFLTIwMTctMTEzNjguCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi1Gcm9tIGZmYjM1YmFhYzY5ODFmOWU4OTE0ZjhmM2JmZmQzN2YyODRiODU5NzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBHcmVnIEh1ZHNvbiA8Z2h1ZHNvbkBtaXQuZWR1PgotRGF0ZTogVGh1LCAxMyBKdWwgMjAxNyAxMjoxNDoyMCAtMDQwMAotU3ViamVjdDogW1BBVENIXSBQcmV2ZW50IEtEQyB1bnNldCBzdGF0dXMgYXNzZXJ0aW9uIGZhaWx1cmVzCi0KLUFzc2lnbiBzdGF0dXMgdmFsdWVzIGlmIFM0VTJTZWxmIHBhZGF0YSBmYWlscyB0byBkZWNvZGUsIGlmIGFuCi1TNFUyUHJveHkgcmVxdWVzdCB1c2VzIGludmFsaWQgS0RDIG9wdGlvbnMsIG9yIGlmIGFuIFM0VTJQcm94eSByZXF1ZXN0Ci11c2VzIGFuIGV2aWRlbmNlIHRpY2tldCB3aGljaCBkb2VzIG5vdCBtYXRjaCB0aGUgY2Fub25pY2FsaXplZCByZXF1ZXN0Ci1zZXJ2ZXIgcHJpbmNpcGFsIG5hbWUuICBSZXBvcnRlZCBieSBTYW11ZWwgQ2FicmVyby4KLQotSWYgYSBzdGF0dXMgdmFsdWUgaXMgbm90IGFzc2lnbmVkIGR1cmluZyBLREMgcHJvY2Vzc2luZywgZGVmYXVsdCB0bwotIlVOS05PV05fUkVBU09OIiByYXRoZXIgdGhhbiBmYWlsaW5nIGFuIGFzc2VydGlvbi4gIFRoaXMgY2hhbmdlIHdpbGwKLXByZXZlbnQgZnV0dXJlIGRlbmlhbCBvZiBzZXJ2aWNlIGJ1Z3MgZHVlIHRvIHNpbWlsYXIgbWlzdGFrZXMsIGFuZAotd2lsbCBhbGxvdyB1cyB0byBvbWl0IGFzc2lnbmluZyBzdGF0dXMgdmFsdWVzIGZvciB1bmxpa2VseSBlcnJvcnMgc3VjaAotYXMgc21hbGwgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMuCi0KLUNWRS0yMDE3LTExMzY4OgotCi1JbiBNSVQga3JiNSAxLjcgYW5kIGxhdGVyLCBhbiBhdXRoZW50aWNhdGVkIGF0dGFja2VyIGNhbiBjYXVzZSBhbgotYXNzZXJ0aW9uIGZhaWx1cmUgaW4ga3JiNWtkYyBieSBzZW5kaW5nIGFuIGludmFsaWQgUzRVMlNlbGYgb3IKLVM0VTJQcm94eSByZXF1ZXN0LgotCi0gIENWU1N2MyBWZWN0b3I6IEFWOk4vQUM6TC9QUjpML1VJOk4vUzpVL0M6Ti9JOk4vQTpIL0U6SC9STDpPL1JDOkMKLQotdGlja2V0OiA4NTk5IChuZXcpCi10YXJnZXRfdmVyc2lvbjogMS4xNS1uZXh0Ci10YXJnZXRfdmVyc2lvbjogMS4xNC1uZXh0Ci10YWdzOiBwdWxsdXAKLS0tLQotIHNyYy9rZGMvZG9fYXNfcmVxLmMgIHwgIDQgKystLQotIHNyYy9rZGMvZG9fdGdzX3JlcS5jIHwgIDMgKystCi0gc3JjL2tkYy9rZGNfdXRpbC5jICAgfCAxMCArKysrKysrKy0tCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2tkYy9kb19hc19yZXEuYyBiL3NyYy9rZGMvZG9fYXNfcmVxLmMKLWluZGV4IDJkM2FkMTMuLjliMjU2YzggMTAwNjQ0Ci0tLS0gYS9zcmMva2RjL2RvX2FzX3JlcS5jCi0rKysgYi9zcmMva2RjL2RvX2FzX3JlcS5jCi1AQCAtMzY2LDggKzM2Niw4IEBAIGZpbmlzaF9wcm9jZXNzX2FzX3JlcShzdHJ1Y3QgYXNfcmVxX3N0YXRlICpzdGF0ZSwga3JiNV9lcnJvcl9jb2RlIGVycmNvZGUpCi0gICAgIGRpZF9sb2cgPSAxOwotIAotIGVncmVzczoKLS0gICAgaWYgKGVycmNvZGUgIT0gMCkKLS0gICAgICAgIGFzc2VydCAoc3RhdGUtPnN0YXR1cyAhPSAwKTsKLSsgICAgaWYgKGVycmNvZGUgIT0gMCAmJiBzdGF0ZS0+c3RhdHVzID09IE5VTEwpCi0rICAgICAgICBzdGF0ZS0+c3RhdHVzID0gIlVOS05PV05fUkVBU09OIjsKLSAKLSAgICAgYXVfc3RhdGUtPnN0YXR1cyA9IHN0YXRlLT5zdGF0dXM7Ci0gICAgIGF1X3N0YXRlLT5yZXBseSA9ICZzdGF0ZS0+cmVwbHk7Ci1kaWZmIC0tZ2l0IGEvc3JjL2tkYy9kb190Z3NfcmVxLmMgYi9zcmMva2RjL2RvX3Rnc19yZXEuYwotaW5kZXggY2RjNzlhZC4uZDhkNjcxOSAxMDA2NDQKLS0tLSBhL3NyYy9rZGMvZG9fdGdzX3JlcS5jCi0rKysgYi9zcmMva2RjL2RvX3Rnc19yZXEuYwotQEAgLTgyMyw3ICs4MjMsOCBAQCBwcm9jZXNzX3Rnc19yZXEoc3RydWN0IHNlcnZlcl9oYW5kbGUgKmhhbmRsZSwga3JiNV9kYXRhICpwa3QsCi0gICAgIGZyZWUocmVwbHkuZW5jX3BhcnQuY2lwaGVydGV4dC5kYXRhKTsKLSAKLSBjbGVhbnVwOgotLSAgICBhc3NlcnQoc3RhdHVzICE9IE5VTEwpOwotKyAgICBpZiAoc3RhdHVzID09IE5VTEwpCi0rICAgICAgICBzdGF0dXMgPSAiVU5LTk9XTl9SRUFTT04iOwotICAgICBpZiAocmVwbHlfa2V5KQotICAgICAgICAga3JiNV9mcmVlX2tleWJsb2NrKGtkY19jb250ZXh0LCByZXBseV9rZXkpOwotICAgICBpZiAoZXJyY29kZSkKLWRpZmYgLS1naXQgYS9zcmMva2RjL2tkY191dGlsLmMgYi9zcmMva2RjL2tkY191dGlsLmMKLWluZGV4IDc3OGE2MjkuLmI3MTBhZWYgMTAwNjQ0Ci0tLS0gYS9zcmMva2RjL2tkY191dGlsLmMKLSsrKyBiL3NyYy9rZGMva2RjX3V0aWwuYwotQEAgLTEyMjAsOCArMTIyMCwxMCBAQCBrZGNfcHJvY2Vzc19mb3JfdXNlcihrZGNfcmVhbG1fdCAqa2RjX2FjdGl2ZV9yZWFsbSwKLSAgICAgcmVxX2RhdGEuZGF0YSA9IChjaGFyICopcGFfZGF0YS0+Y29udGVudHM7Ci0gCi0gICAgIGNvZGUgPSBkZWNvZGVfa3JiNV9wYV9mb3JfdXNlcigmcmVxX2RhdGEsICZmb3JfdXNlcik7Ci0tICAgIGlmIChjb2RlKQotKyAgICBpZiAoY29kZSkgewotKyAgICAgICAgKnN0YXR1cyA9ICJERUNPREVfUEFfRk9SX1VTRVIiOwotICAgICAgICAgcmV0dXJuIGNvZGU7Ci0rICAgIH0KLSAKLSAgICAgY29kZSA9IHZlcmlmeV9mb3JfdXNlcl9jaGVja3N1bShrZGNfY29udGV4dCwgdGdzX3Nlc3Npb24sIGZvcl91c2VyKTsKLSAgICAgaWYgKGNvZGUpIHsKLUBAIC0xMzIwLDggKzEzMjIsMTAgQEAga2RjX3Byb2Nlc3NfczR1X3g1MDlfdXNlcihrcmI1X2NvbnRleHQgY29udGV4dCwKLSAgICAgcmVxX2RhdGEuZGF0YSA9IChjaGFyICopcGFfZGF0YS0+Y29udGVudHM7Ci0gCi0gICAgIGNvZGUgPSBkZWNvZGVfa3JiNV9wYV9zNHVfeDUwOV91c2VyKCZyZXFfZGF0YSwgczR1X3g1MDlfdXNlcik7Ci0tICAgIGlmIChjb2RlKQotKyAgICBpZiAoY29kZSkgewotKyAgICAgICAgKnN0YXR1cyA9ICJERUNPREVfUEFfUzRVX1g1MDlfVVNFUiI7Ci0gICAgICAgICByZXR1cm4gY29kZTsKLSsgICAgfQotIAotICAgICBjb2RlID0gdmVyaWZ5X3M0dV94NTA5X3VzZXJfY2hlY2tzdW0oY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRnc19zdWJrZXkgPyB0Z3Nfc3Via2V5IDoKLUBAIC0xNjI0LDYgKzE2MjgsNyBAQCBrZGNfcHJvY2Vzc19zNHUycHJveHlfcmVxKGtkY19yZWFsbV90ICprZGNfYWN0aXZlX3JlYWxtLAotICAgICAgKiB0aGF0IGlzIHZhbGlkYXRlZCBwcmV2aW91c2x5IGluIHZhbGlkYXRlX3Rnc19yZXF1ZXN0KCkuCi0gICAgICAqLwotICAgICBpZiAocmVxdWVzdC0+a2RjX29wdGlvbnMgJiAoTk9OX1RHVF9PUFRJT04gfCBLRENfT1BUX0VOQ19US1RfSU5fU0tFWSkpIHsKLSsgICAgICAgICpzdGF0dXMgPSAiSU5WQUxJRF9TNFUyUFJPWFlfT1BUSU9OUyI7Ci0gICAgICAgICByZXR1cm4gS1JCNUtEQ19FUlJfQkFET1BUSU9OOwotICAgICB9Ci0gCi1AQCAtMTYzMSw2ICsxNjM2LDcgQEAga2RjX3Byb2Nlc3NfczR1MnByb3h5X3JlcShrZGNfcmVhbG1fdCAqa2RjX2FjdGl2ZV9yZWFsbSwKLSAgICAgaWYgKCFrcmI1X3ByaW5jaXBhbF9jb21wYXJlKGtkY19jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyLT5wcmluYywgLyogYWZ0ZXIgY2Fub24gKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9wcmluYykpIHsKLSsgICAgICAgICpzdGF0dXMgPSAiRVZJREVOQ0VfVElDS0VUX01JU01BVENIIjsKLSAgICAgICAgIHJldHVybiBLUkI1S0RDX0VSUl9TRVJWRVJfTk9NQVRDSDsKLSAgICAgfQotIAotLS0gCi0yLjEwLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNS9rcmI1LWFkbWluLXNlcnZlci5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNS9rcmI1LWFkbWluLXNlcnZlci5zZXJ2aWNlCmluZGV4IDFiNDI3MTYuLjIxOTM5YTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rcmI1L2tyYjUva3JiNS1hZG1pbi1zZXJ2ZXIuc2VydmljZQorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1L2tyYjUtYWRtaW4tc2VydmVyLnNlcnZpY2UKQEAgLTcsNiArNyw3IEBACiBUeXBlPWZvcmtpbmcKIEV4ZWNTdGFydFByZT0vYmluL3NoIC1jICJ0ZXN0ICEgLWYgL3Zhci9sb2cva2FkbWluZC5sb2cgfHwgdGVzdCAhIC14IC9zYmluL3Jlc3RvcmVjb24gfHwgL3NiaW4vcmVzdG9yZWNvbiAtRiAvdmFyL2xvZy9rYWRtaW5kLmxvZyIKIEV4ZWNTdGFydD0vdXNyL3NiaW4va2FkbWluZAorRW52aXJvbm1lbnRGaWxlPS0vZXRjL2RlZmF1bHQva3JiNS1hZG1pbi1zZXJ2ZXIKIFN1Y2Nlc3NFeGl0U3RhdHVzPTEgMiBTSUdLSUxMCiBUaW1lb3V0U3RvcFNlYz0zMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1L2tyYjUta2RjLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1L2tyYjUta2RjLnNlcnZpY2UKaW5kZXggZDVlNWE5NS4uYmYzN2M0NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNS9rcmI1LWtkYy5zZXJ2aWNlCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rcmI1L2tyYjUva3JiNS1rZGMuc2VydmljZQpAQCAtNiw2ICs2LDcgQEAKIFtTZXJ2aWNlXQogVHlwZT1mb3JraW5nCiBFeGVjU3RhcnQ9L3Vzci9zYmluL2tyYjVrZGMKK0Vudmlyb25tZW50RmlsZT0tL2V0Yy9kZWZhdWx0L2tyYjUta2RjCiBTdWNjZXNzRXhpdFN0YXR1cz0xIDIgU0lHS0lMTAogVGltZW91dFN0b3BTZWM9MzAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNV8xLjE1LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1XzEuMTYuYmIKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNV8xLjE1LjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rcmI1L2tyYjVfMS4xNi5iYgppbmRleCBlNzVlODYxLi5mOTUyNDBmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1XzEuMTUuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1XzEuMTYuYmIKQEAgLTE0LDggKzE0LDggQEAKIEhPTUVQQUdFID0gImh0dHA6Ly93ZWIubWl0LmVkdS9LZXJiZXJvcy8iCiBTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtTfS8uLi9OT1RJQ0U7bWQ1PTNlMTJiOGEwNjVjY2EyNWRmZGNhYzczNGZiM2VjMGI5IgotREVQRU5EUyA9ICJuY3Vyc2VzIHV0aWwtbGludXggZTJmc3Byb2dzIGUyZnNwcm9ncy1uYXRpdmUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1N9Ly4uL05PVElDRTttZDU9NTliOGRhNjUyZjA3MTg2YjQ0NzgyYTg0NTQ1NzRmMzAiCitERVBFTkRTID0gIm5jdXJzZXMgdXRpbC1saW51eCBlMmZzcHJvZ3MgZTJmc3Byb2dzLW5hdGl2ZSBvcGVuc3NsIgogCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgYmluY29uZmlnIHBlcmxuYXRpdmUgc3lzdGVtZCB1cGRhdGUtcmMuZAogCkBAIC0zMCwxOSArMzAsMTcgQEAKICAgICAgICAgICAgZmlsZTovL2V0Yy9kZWZhdWx0L2tyYjUtYWRtaW4tc2VydmVyIFwKICAgICAgICAgICAgZmlsZTovL2tyYjUta2RjLnNlcnZpY2UgXAogICAgICAgICAgICBmaWxlOi8va3JiNS1hZG1pbi1zZXJ2ZXIuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtQ1ZFLTIwMTctMTEzNjgucGF0Y2g7c3RyaXBsZXZlbD0yIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTExNDYyLnBhdGNoO3N0cmlwbGV2ZWw9MiBcCiAiCi1TUkNfVVJJW21kNXN1bV0gPSAiODAyMmYzYTFjZGU4NDYzZTQ0ZmQzNWVmNDI3MzFmODUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDM3Yzg4MzFkZGQ1ZmRlMmE5OTNmZWY0MjVkZWRiNDg0NjgxMDliYjNkMzI2MWVmODM4Mjk1MDQ1YTg5ZWI0NSIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyM2M1ZTlmMDc2NDJkYjRhNjdmN2E1YjYxNjhiMTMxOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmYWViMTI1ZjgzYjBmYjRjZGIyZjk5ZjA4ODE0MDYzMWJiNDdkOTc1OTgyZGUwOTU2ZDE4Yzg1ODQyOTY5ZTA4IgogCiBDVkVfUFJPRFVDVCA9ICJrZXJiZXJvcyIKIAogUyA9ICIke1dPUktESVJ9LyR7QlB9L3NyYyIKIAotUEFDS0FHRUNPTkZJRyA/Pz0gIm9wZW5zc2wiCitQQUNLQUdFQ09ORklHID8/PSAiIgogUEFDS0FHRUNPTkZJR1tsaWJlZGl0XSA9ICItLXdpdGgtbGliZWRpdCwtLXdpdGhvdXQtbGliZWRpdCxsaWJlZGl0IgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtcGtpbml0LWNyeXB0by1pbXBsPW9wZW5zc2wsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1jcnlwdG8taW1wbD1vcGVuc3NsLCxvcGVuc3NsIgogUEFDS0FHRUNPTkZJR1trZXl1dGlsc10gPSAiLS1lbmFibGUta2V5dXRpbHMsLS1kaXNhYmxlLWtleXV0aWxzLGtleXV0aWxzIgogUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtbGRhcCwtLXdpdGhvdXQtbGRhcCxvcGVubGRhcCIKIFBBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1yZWFkbGluZSwtLXdpdGhvdXQtcmVhZGxpbmUscmVhZGxpbmUiCkBAIC01Myw2ICs1MSw3IEBACiAgICAgICAgICAgICAgICAgICBhY19jdl9maWxlX19ldGNfVElNRVpPTkU9bm8iCiAKIENGTEFHU19hcHBlbmQgPSAiIC1mUElDIC1EREVTVFJVQ1RPUl9BVFRSX1dPUktTPTEgLUkke1NUQUdJTkdfSU5DRElSfS9ldCIKK0NGTEFHU19hcHBlbmRfcmlzY3Y2NCA9ICIgLURfUkVFTlRSQU5UIC1wdGhyZWFkIgogTERGTEFHU19hcHBlbmQgPSAiIC1wdGhyZWFkIgogCiBkb19jb25maWd1cmUoKSB7CkBAIC03OSwxMiArNzgsMTcgQEAKICAgICAgICAgbWtkaXIgLXAgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCiAgICAgICAgIGVjaG8gImQgcm9vdCByb290IDA3NTUgJHtsb2NhbHN0YXRlZGlyfS9ydW4va3JiNWtkYyBub25lIiBcCiAgICAgICAgICAgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvODdfa3JiNQorCisgICAgICAgIGVjaG8gIlJVTl9LQURNSU5EPXRydWUiID4+ICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L2tyYjUtYWRtaW4tc2VydmVyCiAgICAgZmkKICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgogICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKICAgICAgICAgZWNobyAiZCAvcnVuL2tyYjVrZGMgLSAtIC0gLSIgXAogICAgICAgICAgICAgICA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQva3JiNS5jb25mCiAKKyAgICAgICAgbWtkaXIgLXAgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZXRjL2RlZmF1bHQvKiAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdAorCiAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KICAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0va3JiNS1hZG1pbi1zZXJ2ZXIuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQogICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9rcmI1LWtkYy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicW1pL2xpYnFtaS8wMDAxLURldGVjdC1jbGFuZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJxbWkvbGlicW1pLzAwMDEtRGV0ZWN0LWNsYW5nLnBhdGNoCmluZGV4IDQwNDdmZmIuLjdhMzQyOWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJxbWkvbGlicW1pLzAwMDEtRGV0ZWN0LWNsYW5nLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJxbWkvbGlicW1pLzAwMDEtRGV0ZWN0LWNsYW5nLnBhdGNoCkBAIC0xMiw2ICsxMiw3IEBACiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKwogLS0tCiAgbTQvY29tcGlsZXItd2FybmluZ3MubTQgfCAyOSArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQpAQCAtNTMsNyArNTQsNyBAQAogIAkJICAgICAgLVdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQgLVdzdHJpY3QtcHJvdG90eXBlcyBcCiBAQCAtMTcsMjIgKzM3LDIzIEBAIGlmIHRlc3QgIiRHQ0MiID0gInllcyIgLWEgIiRzZXRfbW9yZV93YXJuaW5ncyIgIT0gIm5vIjsgdGhlbgogIAkJICAgICAgLVdtaXNzaW5nLWluY2x1ZGUtZGlycyAtV2FnZ3JlZ2F0ZS1yZXR1cm4gXAotIAkJICAgICAgLVdmb3JtYXQtc2VjdXJpdHk7IGRvCisgCQkgICAgICAtV2Zvcm1hdC1zZWN1cml0eSAtV3R5cGUtbGltaXRzOyBkbwogIAkJU0FWRV9DRkxBR1M9IiRDRkxBR1MiCiAtCQlDRkxBR1M9IiRDRkxBR1MgJG9wdGlvbiIKICsJCUNGTEFHUz0iJENGTEFHUyAkb3B0aW9uICRXRVJST1IiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicW1pL2xpYnFtaV8xLjE2LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicW1pL2xpYnFtaV8xLjIwLjAuYmIKc2ltaWxhcml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnFtaS9saWJxbWlfMS4xNi4wLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicW1pL2xpYnFtaV8xLjIwLjAuYmIKaW5kZXggODBjMjZjMC4uOTMwMWNiZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnFtaS9saWJxbWlfMS4xNi4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJxbWkvbGlicW1pXzEuMjAuMC5iYgpAQCAtMTQsNSArMTQsNSBAQAogU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURldGVjdC1jbGFuZy5wYXRjaCBcCiAgICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0OTcwYzExMGYxNjBiMzM2MzdhMzUxNTAwNGM2MzdiMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3YWI2YmI0N2ZkMjNiZjRkM2ZhMTc0MjRlNDBlYTU1NTJkMDhiMTllNWVlNGYxMjVmMjFmMzE2YzgwODZiYTJhIgorU1JDX1VSSVttZDVzdW1dID0gIjc5N2UzNjU1MjFkZjc2Yjc3YjA2N2U2MzE3NjE4YjQxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIxNDI4Y2QzNzQ5YzU2MjQ2NTY1MTIzZjcwN2ZlZTUxMjM4NjUxYTIyYzYwYmRjODVlYmNlOTczODg2MjZlYjQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXYvbGlidXZfMS4xMS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnV2L2xpYnV2XzEuMTEuMC5iYgppbmRleCAwYTU4NDZiLi5jYTQ2ODVhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXYvbGlidXZfMS4xMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1di9saWJ1dl8xLjExLjAuYmIKQEAgLTQsMTAgKzQsMTAgQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YmI1ZWEwZDY1MWY0YzM1MTkzMjcxNzE5MDYwNDU3NzUiCiAKLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYnV2LyR7QlBOfS9hcmNoaXZlL3Yke1BWfS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxNTU1MGE5ZjVmNDVmN2YzMmFlMmQ5YmIwYTIxYTJhNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZWM3ZWVjNmVjYzI0YjFhOGZmZWRlYmVkYjJmZTkzMTNmZmZiNTQxMGRlODlhYWY3ODRkZDAxMDgwNDExYzdhIgorUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICI3NDUyZWY0ZTA2YTRmOTllZTI2YjY5NGM2NTQ3NjQwMTUzNGYyNzI1IgorQlJBTkNIID0gInYxLngiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGlidXYvbGlidXYuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD0ke0JSQU5DSH07IgogCiBpbmhlcml0IGF1dG90b29scwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlid2Vic29ja2V0cy9saWJ3ZWJzb2NrZXRzXzIuMS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYndlYnNvY2tldHMvbGlid2Vic29ja2V0c18yLjEuMC5iYgppbmRleCA5MzU0Nzk5Li4xMDBmM2EzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlid2Vic29ja2V0cy9saWJ3ZWJzb2NrZXRzXzIuMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ3ZWJzb2NrZXRzL2xpYndlYnNvY2tldHNfMi4xLjAuYmIKQEAgLTUsMTAgKzUsOSBAQAogCiBERVBFTkRTID0gInpsaWIiCiAKLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dhcm1jYXQvbGlid2Vic29ja2V0cy9hcmNoaXZlL3Yke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZGYzYmU1N2RlZTQzYWVlYmQ1NGEzZWQ1NjU2OGY1MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiY2M5NmFhYTYwOWRhYWU0ZDNmN2FiMWVlNDgwMTI2NzA5ZWY0ZjZhOGJmOWM4NWRlNDBhYWU0OGUzOGNjZTY2IgorUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICI3MzU1NzUwOWJkMTVmOTVhMWFkMDgxYTZmNGZhYjQ4ZmY3NzQzMjE1IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3dhcm1jYXQvbGlid2Vic29ja2V0cy5naXQ7cHJvdG9jb2w9aHR0cHM7IgogCiBpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzLzAwMDEtY29uZmlnLm1rLWFsbG93LXByZWZpeC1tYW5kaXItbG9jYWxlZGlyLWZyb20tZW52aXJvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvMDAwMS1jb25maWcubWstYWxsb3ctcHJlZml4LW1hbmRpci1sb2NhbGVkaXItZnJvbS1lbnZpcm9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1YWEyNzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzLzAwMDEtY29uZmlnLm1rLWFsbG93LXByZWZpeC1tYW5kaXItbG9jYWxlZGlyLWZyb20tZW52aXJvbi5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIDBiZTM4MzAxMjQ5ZDc5N2VjMWY1OTA3MWNjODY4Y2VkYTZkNDcyMGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8YW5kcmUuZHJhc3ppa0BqY2kuY29tPgorRGF0ZTogVHVlLCAxMiBBcHIgMjAxNiAxMjo1MDozMiArMDEwMAorU3ViamVjdDogW1BBVENIIDEvMl0gY29uZmlnLm1rOiBhbGxvdyBwcmVmaXggLyBtYW5kaXIgLyBsb2NhbGVkaXIgZnJvbQorIGVudmlyb25tZW50CitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1dlIHdhbnQgdG8gY29udHJvbCB0aGVtIHVzaW5nIE9FIGVudmlyb25tZW50IHZhcmlhYmxlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZC1zcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhbmRyZS5kcmFzemlrQGpjaS5jb20+CistLS0KKyBjb25maWcubWsgfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWcubWsgYi9jb25maWcubWsKK2luZGV4IDcxZjE3ZTUuLjgxZDk3MDIgMTAwNjQ0CistLS0gYS9jb25maWcubWsKKysrKyBiL2NvbmZpZy5taworQEAgLTI0OSw3ICsyNDksNyBAQCBpZmVxICgkKFdJVEhfRE9DUykseWVzKQorIGVuZGlmCisgCisgSU5TVEFMTD89aW5zdGFsbAorLXByZWZpeD0vdXNyL2xvY2FsCistbWFuZGlyPSR7cHJlZml4fS9zaGFyZS9tYW4KKy1sb2NhbGVkaXI9JHtwcmVmaXh9L3NoYXJlL2xvY2FsZQorK3ByZWZpeD89L3Vzci9sb2NhbAorK21hbmRpcj89JHtwcmVmaXh9L3NoYXJlL21hbgorK2xvY2FsZWRpcj89JHtwcmVmaXh9L3NoYXJlL2xvY2FsZQorIFNUUklQPz1zdHJpcAorLS0gCisyLjE1LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy8wMDAyLXV0aGFzaC1yZW1vdmUtaW4tdHJlZS12ZXJzaW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy8wMDAyLXV0aGFzaC1yZW1vdmUtaW4tdHJlZS12ZXJzaW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4OWRmZTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzLzAwMDItdXRoYXNoLXJlbW92ZS1pbi10cmVlLXZlcnNpb24ucGF0Y2gKQEAgLTAsMCArMSw5NzUgQEAKK0Zyb20gZDlhZWVmOGQ5NWEzMjU5NDJjYzkyZjRkNzI0MTU3NzFkNzVkOTA0YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwRHJhc3ppaz89IDxhbmRyZS5kcmFzemlrQGpjaS5jb20+CitEYXRlOiBUdWUsIDEyIEFwciAyMDE2IDEzOjA1OjEwICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSB1dGhhc2g6IHJlbW92ZSBpbi10cmVlIHZlcnNpb24KK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworV2UgZG9uJ3QgbmVlZCBpdCBhcyB3ZSB3YW50IHRvIHVzZSB0aGUgdmVyc2lvbiBwcm92aWRlZCBieQorbWV0YS1vZSBpbnN0ZWFkLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkLXNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFuZHJlLmRyYXN6aWtAamNpLmNvbT4KKy0tLQorIHNyYy91dGhhc2guaCB8IDk0OCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA5NDggZGVsZXRpb25zKC0pCisgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy91dGhhc2guaAorCitkaWZmIC0tZ2l0IGEvc3JjL3V0aGFzaC5oIGIvc3JjL3V0aGFzaC5oCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDkxNWE4MjUuLjAwMDAwMDAKKy0tLSBhL3NyYy91dGhhc2guaAorKysrIC9kZXYvbnVsbAorQEAgLTEsOTQ4ICswLDAgQEAKKy0vKgorLUNvcHlyaWdodCAoYykgMjAwMy0yMDEzLCBUcm95IEQuIEhhbnNvbiAgICAgaHR0cDovL3Ryb3lkaGFuc29uLmdpdGh1Yi5jb20vdXRoYXNoLworLUFsbCByaWdodHMgcmVzZXJ2ZWQuCistCistUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CistbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CistCistICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy0gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCistCistVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKy1JUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKy1UTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKy1QQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIKKy1PUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy1FWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCistUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCistUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgorLUxJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCistTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCistU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCistKi8KKy0KKy0jaWZuZGVmIFVUSEFTSF9ICistI2RlZmluZSBVVEhBU0hfSCAKKy0KKy0jaW5jbHVkZSA8c3RyaW5nLmg+ICAgLyogbWVtY21wLHN0cmxlbiAqLworLSNpbmNsdWRlIDxzdGRkZWYuaD4gICAvKiBwdHJkaWZmX3QgKi8KKy0jaW5jbHVkZSA8c3RkbGliLmg+ICAgLyogZXhpdCgpICovCistCistLyogVGhlc2UgbWFjcm9zIHVzZSBkZWNsdHlwZSBvciB0aGUgZWFybGllciBfX3R5cGVvZiBHTlUgZXh0ZW5zaW9uLgorLSAgIEFzIGRlY2x0eXBlIGlzIG9ubHkgYXZhaWxhYmxlIGluIG5ld2VyIGNvbXBpbGVycyAoVlMyMDEwIG9yIGdjYyA0LjMrCistICAgd2hlbiBjb21waWxpbmcgYysrIHNvdXJjZSkgdGhpcyBjb2RlIHVzZXMgd2hhdGV2ZXIgbWV0aG9kIGlzIG5lZWRlZAorLSAgIG9yLCBmb3IgVlMyMDA4IHdoZXJlIG5laXRoZXIgaXMgYXZhaWxhYmxlLCB1c2VzIGNhc3Rpbmcgd29ya2Fyb3VuZHMuICovCistI2lmZGVmIF9NU0NfVkVSICAgICAgICAgLyogTVMgY29tcGlsZXIgKi8KKy0jaWYgX01TQ19WRVIgPj0gMTYwMCAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKSAgLyogVlMyMDEwIG9yIG5ld2VyIGluIEMrKyBtb2RlICovCistI2RlZmluZSBERUNMVFlQRSh4KSAoZGVjbHR5cGUoeCkpCistI2Vsc2UgICAgICAgICAgICAgICAgICAgLyogVlMyMDA4IG9yIG9sZGVyIChvciBWUzIwMTAgaW4gQyBtb2RlKSAqLworLSNkZWZpbmUgTk9fREVDTFRZUEUKKy0jZGVmaW5lIERFQ0xUWVBFKHgpCistI2VuZGlmCistI2Vsc2UgICAgICAgICAgICAgICAgICAgLyogR05VLCBTdW4gYW5kIG90aGVyIGNvbXBpbGVycyAqLworLSNkZWZpbmUgREVDTFRZUEUoeCkgKF9fdHlwZW9mKHgpKQorLSNlbmRpZgorLQorLSNpZmRlZiBOT19ERUNMVFlQRQorLSNkZWZpbmUgREVDTFRZUEVfQVNTSUdOKGRzdCxzcmMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBjaGFyICoqX2RhX2RzdCA9IChjaGFyKiopKCYoZHN0KSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgKl9kYV9kc3QgPSAoY2hhciopKHNyYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy19IHdoaWxlKDApCistI2Vsc2UgCistI2RlZmluZSBERUNMVFlQRV9BU1NJR04oZHN0LHNyYykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIChkc3QpID0gREVDTFRZUEUoZHN0KShzcmMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistfSB3aGlsZSgwKQorLSNlbmRpZgorLQorLS8qIGEgbnVtYmVyIG9mIHRoZSBoYXNoIGZ1bmN0aW9uIHVzZSB1aW50MzJfdCB3aGljaCBpc24ndCBkZWZpbmVkIG9uIHdpbjMyICovCistI2lmZGVmIF9NU0NfVkVSCistdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDMyX3Q7CistdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7CistI2Vsc2UKKy0jaW5jbHVkZSA8aW50dHlwZXMuaD4gICAvKiB1aW50MzJfdCAqLworLSNlbmRpZgorLQorLSNkZWZpbmUgVVRIQVNIX1ZFUlNJT04gMS45LjgKKy0KKy0jaWZuZGVmIHV0aGFzaF9mYXRhbAorLSNkZWZpbmUgdXRoYXNoX2ZhdGFsKG1zZykgZXhpdCgtMSkgICAgICAgIC8qIGZhdGFsIGVycm9yIChvdXQgb2YgbWVtb3J5LGV0YykgKi8KKy0jZW5kaWYKKy0jaWZuZGVmIHV0aGFzaF9tYWxsb2MKKy0jZGVmaW5lIHV0aGFzaF9tYWxsb2Moc3opIG1hbGxvYyhzeikgICAgICAvKiBtYWxsb2MgZmNuICAgICAgICAgICAgICAgICAgICAgICovCistI2VuZGlmCistI2lmbmRlZiB1dGhhc2hfZnJlZQorLSNkZWZpbmUgdXRoYXNoX2ZyZWUocHRyLHN6KSBmcmVlKHB0cikgICAgIC8qIGZyZWUgZmNuICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy0jZW5kaWYKKy0KKy0jaWZuZGVmIHV0aGFzaF9ub2V4cGFuZF9meWkKKy0jZGVmaW5lIHV0aGFzaF9ub2V4cGFuZF9meWkodGJsKSAgICAgICAgICAvKiBjYW4gYmUgZGVmaW5lZCB0byBsb2cgbm9leHBhbmQgICovCistI2VuZGlmCistI2lmbmRlZiB1dGhhc2hfZXhwYW5kX2Z5aQorLSNkZWZpbmUgdXRoYXNoX2V4cGFuZF9meWkodGJsKSAgICAgICAgICAgIC8qIGNhbiBiZSBkZWZpbmVkIHRvIGxvZyBleHBhbmRzICAgKi8KKy0jZW5kaWYKKy0KKy0vKiBpbml0aWFsIG51bWJlciBvZiBidWNrZXRzICovCistI2RlZmluZSBIQVNIX0lOSVRJQUxfTlVNX0JVQ0tFVFMgMzIgICAgICAvKiBpbml0aWFsIG51bWJlciBvZiBidWNrZXRzICAgICAgICAqLworLSNkZWZpbmUgSEFTSF9JTklUSUFMX05VTV9CVUNLRVRTX0xPRzIgNSAgLyogbGcyIG9mIGluaXRpYWwgbnVtYmVyIG9mIGJ1Y2tldHMgKi8KKy0jZGVmaW5lIEhBU0hfQktUX0NBUEFDSVRZX1RIUkVTSCAxMCAgICAgIC8qIGV4cGFuZCB3aGVuIGJ1Y2tldCBjb3VudCByZWFjaGVzICovCistCistLyogY2FsY3VsYXRlIHRoZSBlbGVtZW50IHdob3NlIGhhc2ggaGFuZGxlIGFkZHJlc3MgaXMgaGhlICovCistI2RlZmluZSBFTE1UX0ZST01fSEgodGJsLGhocCkgKCh2b2lkKikoKChjaGFyKikoaGhwKSkgLSAoKHRibCktPmhobykpKQorLQorLSNkZWZpbmUgSEFTSF9GSU5EKGhoLGhlYWQsa2V5cHRyLGtleWxlbixvdXQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB1bnNpZ25lZCBfaGZfYmt0LF9oZl9oYXNodjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgb3V0PU5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGlmIChoZWFkKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICBIQVNIX0ZDTihrZXlwdHIsa2V5bGVuLCAoaGVhZCktPmhoLnRibC0+bnVtX2J1Y2tldHMsIF9oZl9oYXNodiwgX2hmX2JrdCk7ICAgXAorLSAgICAgaWYgKEhBU0hfQkxPT01fVEVTVCgoaGVhZCktPmhoLnRibCwgX2hmX2hhc2h2KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgSEFTSF9GSU5EX0lOX0JLVCgoaGVhZCktPmhoLnRibCwgaGgsIChoZWFkKS0+aGgudGJsLT5idWNrZXRzWyBfaGZfYmt0IF0sICBcCistICAgICAgICAgICAgICAgICAgICAgICAga2V5cHRyLGtleWxlbixvdXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistfSB3aGlsZSAoMCkKKy0KKy0jaWZkZWYgSEFTSF9CTE9PTQorLSNkZWZpbmUgSEFTSF9CTE9PTV9CSVRMRU4gKDFVTEwgPDwgSEFTSF9CTE9PTSkKKy0jZGVmaW5lIEhBU0hfQkxPT01fQllURUxFTiAoSEFTSF9CTE9PTV9CSVRMRU4vOCkgKyAoKEhBU0hfQkxPT01fQklUTEVOJTgpID8gMTowKQorLSNkZWZpbmUgSEFTSF9CTE9PTV9NQUtFKHRibCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAodGJsKS0+Ymxvb21fbmJpdHMgPSBIQVNIX0JMT09NOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgKHRibCktPmJsb29tX2J2ID0gKHVpbnQ4X3QqKXV0aGFzaF9tYWxsb2MoSEFTSF9CTE9PTV9CWVRFTEVOKTsgICAgICAgICAgICAgICAgIFwKKy0gIGlmICghKCh0YmwpLT5ibG9vbV9idikpICB7IHV0aGFzaF9mYXRhbCggIm91dCBvZiBtZW1vcnkiKTsgfSAgICAgICAgICAgICAgICAgICBcCistICBtZW1zZXQoKHRibCktPmJsb29tX2J2LCAwLCBIQVNIX0JMT09NX0JZVEVMRU4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgKHRibCktPmJsb29tX3NpZyA9IEhBU0hfQkxPT01fU0lHTkFUVVJFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy19IHdoaWxlICgwKSAKKy0KKy0jZGVmaW5lIEhBU0hfQkxPT01fRlJFRSh0YmwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgdXRoYXNoX2ZyZWUoKHRibCktPmJsb29tX2J2LCBIQVNIX0JMT09NX0JZVEVMRU4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy19IHdoaWxlICgwKSAKKy0KKy0jZGVmaW5lIEhBU0hfQkxPT01fQklUU0VUKGJ2LGlkeCkgKGJ2WyhpZHgpLzhdIHw9ICgxVSA8PCAoKGlkeCklOCkpKQorLSNkZWZpbmUgSEFTSF9CTE9PTV9CSVRURVNUKGJ2LGlkeCkgKGJ2WyhpZHgpLzhdICYgKDFVIDw8ICgoaWR4KSU4KSkpCistCistI2RlZmluZSBIQVNIX0JMT09NX0FERCh0YmwsaGFzaHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgSEFTSF9CTE9PTV9CSVRTRVQoKHRibCktPmJsb29tX2J2LCAoaGFzaHYgJiAodWludDMyX3QpKCgxVUxMIDw8ICh0YmwpLT5ibG9vbV9uYml0cykgLSAxKSkpCistCistI2RlZmluZSBIQVNIX0JMT09NX1RFU1QodGJsLGhhc2h2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgSEFTSF9CTE9PTV9CSVRURVNUKCh0YmwpLT5ibG9vbV9idiwgKGhhc2h2ICYgKHVpbnQzMl90KSgoMVVMTCA8PCAodGJsKS0+Ymxvb21fbmJpdHMpIC0gMSkpKQorLQorLSNlbHNlCistI2RlZmluZSBIQVNIX0JMT09NX01BS0UodGJsKSAKKy0jZGVmaW5lIEhBU0hfQkxPT01fRlJFRSh0YmwpIAorLSNkZWZpbmUgSEFTSF9CTE9PTV9BREQodGJsLGhhc2h2KSAKKy0jZGVmaW5lIEhBU0hfQkxPT01fVEVTVCh0YmwsaGFzaHYpICgxKQorLSNkZWZpbmUgSEFTSF9CTE9PTV9CWVRFTEVOIDAKKy0jZW5kaWYKKy0KKy0jZGVmaW5lIEhBU0hfTUFLRV9UQUJMRShoaCxoZWFkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgKGhlYWQpLT5oaC50YmwgPSAoVVRfaGFzaF90YWJsZSopdXRoYXNoX21hbGxvYyggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICBzaXplb2YoVVRfaGFzaF90YWJsZSkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBpZiAoISgoaGVhZCktPmhoLnRibCkpICB7IHV0aGFzaF9mYXRhbCggIm91dCBvZiBtZW1vcnkiKTsgfSAgICAgICAgICAgICAgICAgICAgXAorLSAgbWVtc2V0KChoZWFkKS0+aGgudGJsLCAwLCBzaXplb2YoVVRfaGFzaF90YWJsZSkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIChoZWFkKS0+aGgudGJsLT50YWlsID0gJigoaGVhZCktPmhoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAoaGVhZCktPmhoLnRibC0+bnVtX2J1Y2tldHMgPSBIQVNIX0lOSVRJQUxfTlVNX0JVQ0tFVFM7ICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgKGhlYWQpLT5oaC50YmwtPmxvZzJfbnVtX2J1Y2tldHMgPSBIQVNIX0lOSVRJQUxfTlVNX0JVQ0tFVFNfTE9HMjsgICAgICAgICAgICAgIFwKKy0gIChoZWFkKS0+aGgudGJsLT5oaG8gPSAoY2hhciopKCYoaGVhZCktPmhoKSAtIChjaGFyKikoaGVhZCk7ICAgICAgICAgICAgICAgICAgICBcCistICAoaGVhZCktPmhoLnRibC0+YnVja2V0cyA9IChVVF9oYXNoX2J1Y2tldCopdXRoYXNoX21hbGxvYyggICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICBIQVNIX0lOSVRJQUxfTlVNX0JVQ0tFVFMqc2l6ZW9mKHN0cnVjdCBVVF9oYXNoX2J1Y2tldCkpOyAgICAgICAgICAgICAgIFwKKy0gIGlmICghIChoZWFkKS0+aGgudGJsLT5idWNrZXRzKSB7IHV0aGFzaF9mYXRhbCggIm91dCBvZiBtZW1vcnkiKTsgfSAgICAgICAgICAgICBcCistICBtZW1zZXQoKGhlYWQpLT5oaC50YmwtPmJ1Y2tldHMsIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICBIQVNIX0lOSVRJQUxfTlVNX0JVQ0tFVFMqc2l6ZW9mKHN0cnVjdCBVVF9oYXNoX2J1Y2tldCkpOyAgICAgICAgICAgICAgIFwKKy0gIEhBU0hfQkxPT01fTUFLRSgoaGVhZCktPmhoLnRibCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAoaGVhZCktPmhoLnRibC0+c2lnbmF0dXJlID0gSEFTSF9TSUdOQVRVUkU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUoMCkKKy0KKy0jZGVmaW5lIEhBU0hfQUREKGhoLGhlYWQsZmllbGRuYW1lLGtleWxlbl9pbixhZGQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICBIQVNIX0FERF9LRVlQVFIoaGgsaGVhZCwmKChhZGQpLT5maWVsZG5hbWUpLGtleWxlbl9pbixhZGQpCistCistI2RlZmluZSBIQVNIX1JFUExBQ0UoaGgsaGVhZCxmaWVsZG5hbWUsa2V5bGVuX2luLGFkZCxyZXBsYWNlZCkgICAgICAgICAgICAgICAgICAgXAorLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIHJlcGxhY2VkPU5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBIQVNIX0ZJTkQoaGgsaGVhZCwmKChhZGQpLT5maWVsZG5hbWUpLGtleWxlbl9pbixyZXBsYWNlZCk7ICAgICAgICAgICAgICAgICAgICAgXAorLSAgaWYgKHJlcGxhY2VkIT1OVUxMKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgIEhBU0hfREVMRVRFKGhoLGhlYWQscmVwbGFjZWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgSEFTSF9BREQoaGgsaGVhZCxmaWVsZG5hbWUsa2V5bGVuX2luLGFkZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy19IHdoaWxlKDApCistIAorLSNkZWZpbmUgSEFTSF9BRERfS0VZUFRSKGhoLGhlYWQsa2V5cHRyLGtleWxlbl9pbixhZGQpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistIHVuc2lnbmVkIF9oYV9ia3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAoYWRkKS0+aGgubmV4dCA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gKGFkZCktPmhoLmtleSA9IChjaGFyKilrZXlwdHI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistIChhZGQpLT5oaC5rZXlsZW4gPSAodW5zaWduZWQpa2V5bGVuX2luOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gaWYgKCEoaGVhZCkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGhlYWQgPSAoYWRkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAoaGVhZCktPmhoLnByZXYgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgSEFTSF9NQUtFX1RBQkxFKGhoLGhlYWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAoaGVhZCktPmhoLnRibC0+dGFpbC0+bmV4dCA9IChhZGQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgKGFkZCktPmhoLnByZXYgPSBFTE1UX0ZST01fSEgoKGhlYWQpLT5oaC50YmwsIChoZWFkKS0+aGgudGJsLT50YWlsKTsgICAgICAgICBcCistICAgIChoZWFkKS0+aGgudGJsLT50YWlsID0gJigoYWRkKS0+aGgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gKGhlYWQpLT5oaC50YmwtPm51bV9pdGVtcysrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistIChhZGQpLT5oaC50YmwgPSAoaGVhZCktPmhoLnRibDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSBIQVNIX0ZDTihrZXlwdHIsa2V5bGVuX2luLCAoaGVhZCktPmhoLnRibC0+bnVtX2J1Y2tldHMsICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAoYWRkKS0+aGguaGFzaHYsIF9oYV9ia3QpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistIEhBU0hfQUREX1RPX0JLVCgoaGVhZCktPmhoLnRibC0+YnVja2V0c1tfaGFfYmt0XSwmKGFkZCktPmhoKTsgICAgICAgICAgICAgICAgICAgXAorLSBIQVNIX0JMT09NX0FERCgoaGVhZCktPmhoLnRibCwoYWRkKS0+aGguaGFzaHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gSEFTSF9FTUlUX0tFWShoaCxoZWFkLGtleXB0cixrZXlsZW5faW4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistIEhBU0hfRlNDSyhoaCxoZWFkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUoMCkKKy0KKy0jZGVmaW5lIEhBU0hfVE9fQktUKCBoYXNodiwgbnVtX2JrdHMsIGJrdCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgYmt0ID0gKChoYXNodikgJiAoKG51bV9ia3RzKSAtIDEpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy19IHdoaWxlKDApCistCistLyogZGVsZXRlICJkZWxwdHIiIGZyb20gdGhlIGhhc2ggdGFibGUuCistICogInRoZSB1c3VhbCIgcGF0Y2gtdXAgcHJvY2VzcyBmb3IgdGhlIGFwcC1vcmRlciBkb3VibHktbGlua2VkLWxpc3QuCistICogVGhlIHVzZSBvZiBfaGRfaGhfZGVsIGJlbG93IGRlc2VydmVzIHNwZWNpYWwgZXhwbGFuYXRpb24uCistICogVGhlc2UgdXNlZCB0byBiZSBleHByZXNzZWQgdXNpbmcgKGRlbHB0cikgYnV0IHRoYXQgbGVkIHRvIGEgYnVnCistICogaWYgc29tZW9uZSB1c2VkIHRoZSBzYW1lIHN5bWJvbCBmb3IgdGhlIGhlYWQgYW5kIGRlbGV0ZWUsIGxpa2UKKy0gKiAgSEFTSF9ERUxFVEUoaGgsdXNlcnMsdXNlcnMpOworLSAqIFdlIHdhbnQgdGhhdCB0byB3b3JrLCBidXQgYnkgY2hhbmdpbmcgdGhlIGhlYWQgKHVzZXJzKSBiZWxvdworLSAqIHdlIHdlcmUgZm9yZmVpdGluZyBvdXIgYWJpbGl0eSB0byBmdXJ0aGVyIHJlZmVyIHRvIHRoZSBkZWxldGVlICh1c2VycykKKy0gKiBpbiB0aGUgcGF0Y2gtdXAgcHJvY2Vzcy4gU29sdXRpb246IHVzZSBzY3JhdGNoIHNwYWNlIHRvCistICogY29weSB0aGUgZGVsZXRlZSBwb2ludGVyLCB0aGVuIHRoZSBsYXR0ZXIgcmVmZXJlbmNlcyBhcmUgdmlhIHRoYXQKKy0gKiBzY3JhdGNoIHBvaW50ZXIgcmF0aGVyIHRoYW4gdGhyb3VnaCB0aGUgcmVwb2ludGVkICh1c2Vycykgc3ltYm9sLgorLSAqLworLSNkZWZpbmUgSEFTSF9ERUxFVEUoaGgsaGVhZCxkZWxwdHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIHVuc2lnbmVkIF9oZF9ia3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBzdHJ1Y3QgVVRfaGFzaF9oYW5kbGUgKl9oZF9oaF9kZWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgaWYgKCAoKGRlbHB0ciktPmhoLnByZXYgPT0gTlVMTCkgJiYgKChkZWxwdHIpLT5oaC5uZXh0ID09IE5VTEwpICkgIHsgICAgICAgICBcCistICAgICAgICB1dGhhc2hfZnJlZSgoaGVhZCktPmhoLnRibC0+YnVja2V0cywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgKGhlYWQpLT5oaC50YmwtPm51bV9idWNrZXRzKnNpemVvZihzdHJ1Y3QgVVRfaGFzaF9idWNrZXQpICk7IFwKKy0gICAgICAgIEhBU0hfQkxPT01fRlJFRSgoaGVhZCktPmhoLnRibCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICB1dGhhc2hfZnJlZSgoaGVhZCktPmhoLnRibCwgc2l6ZW9mKFVUX2hhc2hfdGFibGUpKTsgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgaGVhZCA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICBfaGRfaGhfZGVsID0gJigoZGVscHRyKS0+aGgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgaWYgKChkZWxwdHIpID09IEVMTVRfRlJPTV9ISCgoaGVhZCktPmhoLnRibCwoaGVhZCktPmhoLnRibC0+dGFpbCkpIHsgICAgIFwKKy0gICAgICAgICAgICAoaGVhZCktPmhoLnRibC0+dGFpbCA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgIChVVF9oYXNoX2hhbmRsZSopKChwdHJkaWZmX3QpKChkZWxwdHIpLT5oaC5wcmV2KSArICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAoaGVhZCktPmhoLnRibC0+aGhvKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICBpZiAoKGRlbHB0ciktPmhoLnByZXYpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICgoVVRfaGFzaF9oYW5kbGUqKSgocHRyZGlmZl90KSgoZGVscHRyKS0+aGgucHJldikgKyAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgIChoZWFkKS0+aGgudGJsLT5oaG8pKS0+bmV4dCA9IChkZWxwdHIpLT5oaC5uZXh0OyAgICAgICAgICAgICBcCistICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIERFQ0xUWVBFX0FTU0lHTihoZWFkLChkZWxwdHIpLT5oaC5uZXh0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICBpZiAoX2hkX2hoX2RlbC0+bmV4dCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICgoVVRfaGFzaF9oYW5kbGUqKSgocHRyZGlmZl90KV9oZF9oaF9kZWwtPm5leHQgKyAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgIChoZWFkKS0+aGgudGJsLT5oaG8pKS0+cHJldiA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICBfaGRfaGhfZGVsLT5wcmV2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIEhBU0hfVE9fQktUKCBfaGRfaGhfZGVsLT5oYXNodiwgKGhlYWQpLT5oaC50YmwtPm51bV9idWNrZXRzLCBfaGRfYmt0KTsgICBcCistICAgICAgICBIQVNIX0RFTF9JTl9CS1QoaGgsKGhlYWQpLT5oaC50YmwtPmJ1Y2tldHNbX2hkX2JrdF0sIF9oZF9oaF9kZWwpOyAgICAgICAgXAorLSAgICAgICAgKGhlYWQpLT5oaC50YmwtPm51bV9pdGVtcy0tOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIEhBU0hfRlNDSyhoaCxoZWFkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUgKDApCistCistCistLyogY29udmVuaWVuY2UgZm9ybXMgb2YgSEFTSF9GSU5EL0hBU0hfQUREL0hBU0hfREVMICovCistI2RlZmluZSBIQVNIX0ZJTkRfU1RSKGhlYWQsZmluZHN0cixvdXQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBIQVNIX0ZJTkQoaGgsaGVhZCxmaW5kc3RyLHN0cmxlbihmaW5kc3RyKSxvdXQpCistI2RlZmluZSBIQVNIX0FERF9TVFIoaGVhZCxzdHJmaWVsZCxhZGQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBIQVNIX0FERChoaCxoZWFkLHN0cmZpZWxkLHN0cmxlbihhZGQtPnN0cmZpZWxkKSxhZGQpCistI2RlZmluZSBIQVNIX1JFUExBQ0VfU1RSKGhlYWQsc3RyZmllbGQsYWRkLHJlcGxhY2VkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgSEFTSF9SRVBMQUNFKGhoLGhlYWQsc3RyZmllbGQsc3RybGVuKGFkZC0+c3RyZmllbGQpLGFkZCxyZXBsYWNlZCkKKy0jZGVmaW5lIEhBU0hfRklORF9JTlQoaGVhZCxmaW5kaW50LG91dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIEhBU0hfRklORChoaCxoZWFkLGZpbmRpbnQsc2l6ZW9mKGludCksb3V0KQorLSNkZWZpbmUgSEFTSF9BRERfSU5UKGhlYWQsaW50ZmllbGQsYWRkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgSEFTSF9BREQoaGgsaGVhZCxpbnRmaWVsZCxzaXplb2YoaW50KSxhZGQpCistI2RlZmluZSBIQVNIX1JFUExBQ0VfSU5UKGhlYWQsaW50ZmllbGQsYWRkLHJlcGxhY2VkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBIQVNIX1JFUExBQ0UoaGgsaGVhZCxpbnRmaWVsZCxzaXplb2YoaW50KSxhZGQscmVwbGFjZWQpCistI2RlZmluZSBIQVNIX0ZJTkRfUFRSKGhlYWQsZmluZHB0cixvdXQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBIQVNIX0ZJTkQoaGgsaGVhZCxmaW5kcHRyLHNpemVvZih2b2lkICopLG91dCkKKy0jZGVmaW5lIEhBU0hfQUREX1BUUihoZWFkLHB0cmZpZWxkLGFkZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIEhBU0hfQUREKGhoLGhlYWQscHRyZmllbGQsc2l6ZW9mKHZvaWQgKiksYWRkKQorLSNkZWZpbmUgSEFTSF9SRVBMQUNFX1BUUihoZWFkLHB0cmZpZWxkLGFkZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgSEFTSF9SRVBMQUNFKGhoLGhlYWQscHRyZmllbGQsc2l6ZW9mKHZvaWQgKiksYWRkLHJlcGxhY2VkKQorLSNkZWZpbmUgSEFTSF9ERUwoaGVhZCxkZWxwdHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgSEFTSF9ERUxFVEUoaGgsaGVhZCxkZWxwdHIpCistCistLyogSEFTSF9GU0NLIGNoZWNrcyBoYXNoIGludGVncml0eSBvbiBldmVyeSBhZGQvZGVsZXRlIHdoZW4gSEFTSF9ERUJVRyBpcyBkZWZpbmVkLgorLSAqIFRoaXMgaXMgZm9yIHV0aGFzaCBkZXZlbG9wZXIgb25seTsgaXQgY29tcGlsZXMgYXdheSBpZiBIQVNIX0RFQlVHIGlzbid0IGRlZmluZWQuCistICovCistI2lmZGVmIEhBU0hfREVCVUcKKy0jZGVmaW5lIEhBU0hfT09QUyguLi4pIGRvIHsgZnByaW50ZihzdGRlcnIsX19WQV9BUkdTX18pOyBleGl0KC0xKTsgfSB3aGlsZSAoMCkKKy0jZGVmaW5lIEhBU0hfRlNDSyhoaCxoZWFkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICB1bnNpZ25lZCBfYmt0X2k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgdW5zaWduZWQgX2NvdW50LCBfYmt0X2NvdW50OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGNoYXIgKl9wcmV2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBzdHJ1Y3QgVVRfaGFzaF9oYW5kbGUgKl90aGg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgaWYgKGhlYWQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICBfY291bnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgZm9yKCBfYmt0X2kgPSAwOyBfYmt0X2kgPCAoaGVhZCktPmhoLnRibC0+bnVtX2J1Y2tldHM7IF9ia3RfaSsrKSB7ICAgICAgIFwKKy0gICAgICAgICAgICBfYmt0X2NvdW50ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgX3RoaCA9IChoZWFkKS0+aGgudGJsLT5idWNrZXRzW19ia3RfaV0uaGhfaGVhZDsgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIF9wcmV2ID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICB3aGlsZSAoX3RoaCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgaWYgKF9wcmV2ICE9IChjaGFyKikoX3RoaC0+aGhfcHJldikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICBIQVNIX09PUFMoImludmFsaWQgaGhfcHJldiAlcCwgYWN0dWFsICVwXG4iLCAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgIF90aGgtPmhoX3ByZXYsIF9wcmV2ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgIF9ia3RfY291bnQrKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICBfcHJldiA9IChjaGFyKikoX3RoaCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgX3RoaCA9IF90aGgtPmhoX25leHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBfY291bnQgKz0gX2JrdF9jb3VudDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgaWYgKChoZWFkKS0+aGgudGJsLT5idWNrZXRzW19ia3RfaV0uY291bnQgIT0gIF9ia3RfY291bnQpIHsgICAgICAgICAgXAorLSAgICAgICAgICAgICAgIEhBU0hfT09QUygiaW52YWxpZCBidWNrZXQgY291bnQgJWQsIGFjdHVhbCAlZFxuIiwgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgKGhlYWQpLT5oaC50YmwtPmJ1Y2tldHNbX2JrdF9pXS5jb3VudCwgX2JrdF9jb3VudCk7ICAgICAgICAgICAgICBcCistICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIGlmIChfY291bnQgIT0gKGhlYWQpLT5oaC50YmwtPm51bV9pdGVtcykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgSEFTSF9PT1BTKCJpbnZhbGlkIGhoIGl0ZW0gY291bnQgJWQsIGFjdHVhbCAlZFxuIiwgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAoaGVhZCktPmhoLnRibC0+bnVtX2l0ZW1zLCBfY291bnQgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAvKiB0cmF2ZXJzZSBoaCBpbiBhcHAgb3JkZXI7IGNoZWNrIG5leHQvcHJldiBpbnRlZ3JpdHksIGNvdW50ICovICAgICAgICAgXAorLSAgICAgICAgX2NvdW50ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIF9wcmV2ID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICBfdGhoID0gICYoaGVhZCktPmhoOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgd2hpbGUgKF90aGgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgIF9jb3VudCsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICBpZiAoX3ByZXYgIT0oY2hhciopKF90aGgtPnByZXYpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgSEFTSF9PT1BTKCJpbnZhbGlkIHByZXYgJXAsIGFjdHVhbCAlcFxuIiwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgIF90aGgtPnByZXYsIF9wcmV2ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgX3ByZXYgPSAoY2hhciopRUxNVF9GUk9NX0hIKChoZWFkKS0+aGgudGJsLCBfdGhoKTsgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgIF90aGggPSAoIF90aGgtPm5leHQgPyAgKFVUX2hhc2hfaGFuZGxlKikoKGNoYXIqKShfdGhoLT5uZXh0KSArICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoZWFkKS0+aGgudGJsLT5oaG8pIDogTlVMTCApOyAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIGlmIChfY291bnQgIT0gKGhlYWQpLT5oaC50YmwtPm51bV9pdGVtcykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgSEFTSF9PT1BTKCJpbnZhbGlkIGFwcCBpdGVtIGNvdW50ICVkLCBhY3R1YWwgJWRcbiIsICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAoaGVhZCktPmhoLnRibC0+bnVtX2l0ZW1zLCBfY291bnQgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUgKDApCistI2Vsc2UKKy0jZGVmaW5lIEhBU0hfRlNDSyhoaCxoZWFkKSAKKy0jZW5kaWYKKy0KKy0vKiBXaGVuIGNvbXBpbGVkIHdpdGggLURIQVNIX0VNSVRfS0VZUywgbGVuZ3RoLXByZWZpeGVkIGtleXMgYXJlIGVtaXR0ZWQgdG8gCistICogdGhlIGRlc2NyaXB0b3IgdG8gd2hpY2ggdGhpcyBtYWNybyBpcyBkZWZpbmVkIGZvciB0dW5pbmcgdGhlIGhhc2ggZnVuY3Rpb24uCistICogVGhlIGFwcCBjYW4gI2luY2x1ZGUgPHVuaXN0ZC5oPiB0byBnZXQgdGhlIHByb3RvdHlwZSBmb3Igd3JpdGUoMikuICovCistI2lmZGVmIEhBU0hfRU1JVF9LRVlTCistI2RlZmluZSBIQVNIX0VNSVRfS0VZKGhoLGhlYWQsa2V5cHRyLGZpZWxkbGVuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgdW5zaWduZWQgX2tsZW4gPSBmaWVsZGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIHdyaXRlKEhBU0hfRU1JVF9LRVlTLCAmX2tsZW4sIHNpemVvZihfa2xlbikpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICB3cml0ZShIQVNIX0VNSVRfS0VZUywga2V5cHRyLCBmaWVsZGxlbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy19IHdoaWxlICgwKQorLSNlbHNlIAorLSNkZWZpbmUgSEFTSF9FTUlUX0tFWShoaCxoZWFkLGtleXB0cixmaWVsZGxlbikgICAgICAgICAgICAgICAgICAgIAorLSNlbmRpZgorLQorLS8qIGRlZmF1bHQgdG8gSmVua2luJ3MgaGFzaCB1bmxlc3Mgb3ZlcnJpZGRlbiBlLmcuIERIQVNIX0ZVTkNUSU9OPUhBU0hfU0FYICovCistI2lmZGVmIEhBU0hfRlVOQ1RJT04gCistI2RlZmluZSBIQVNIX0ZDTiBIQVNIX0ZVTkNUSU9OCistI2Vsc2UKKy0jZGVmaW5lIEhBU0hfRkNOIEhBU0hfSkVOCistI2VuZGlmCistCistLyogVGhlIEJlcm5zdGVpbiBoYXNoIGZ1bmN0aW9uLCB1c2VkIGluIFBlcmwgcHJpb3IgdG8gdjUuNiAqLworLSNkZWZpbmUgSEFTSF9CRVIoa2V5LGtleWxlbixudW1fYmt0cyxoYXNodixia3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB1bnNpZ25lZCBfaGJfa2V5bGVuPWtleWxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgY2hhciAqX2hiX2tleT0oY2hhciopKGtleSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIChoYXNodikgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB3aGlsZSAoX2hiX2tleWxlbi0tKSAgeyAoaGFzaHYpID0gKChoYXNodikgKiAzMykgKyAqX2hiX2tleSsrOyB9ICAgICAgICAgICAgICAgXAorLSAgYmt0ID0gKGhhc2h2KSAmIChudW1fYmt0cy0xKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy19IHdoaWxlICgwKQorLQorLQorLS8qIFNBWC9GTlYvT0FUL0pFTiBoYXNoIGZ1bmN0aW9ucyBhcmUgbWFjcm8gdmFyaWFudHMgb2YgdGhvc2UgbGlzdGVkIGF0IAorLSAqIGh0dHA6Ly9ldGVybmFsbHljb25mdXp6bGVkLmNvbS90dXRzL2FsZ29yaXRobXMvanN3X3R1dF9oYXNoaW5nLmFzcHggKi8KKy0jZGVmaW5lIEhBU0hfU0FYKGtleSxrZXlsZW4sbnVtX2JrdHMsaGFzaHYsYmt0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgdW5zaWduZWQgX3N4X2k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGNoYXIgKl9oc19rZXk9KGNoYXIqKShrZXkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBoYXNodiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgZm9yKF9zeF9pPTA7IF9zeF9pIDwga2V5bGVuOyBfc3hfaSsrKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICBoYXNodiBePSAoaGFzaHYgPDwgNSkgKyAoaGFzaHYgPj4gMikgKyBfaHNfa2V5W19zeF9pXTsgICAgICAgICAgICAgICAgICAgICBcCistICBia3QgPSBoYXNodiAmIChudW1fYmt0cy0xKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUgKDApCistCistI2RlZmluZSBIQVNIX0ZOVihrZXksa2V5bGVuLG51bV9ia3RzLGhhc2h2LGJrdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIHVuc2lnbmVkIF9mbl9pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBjaGFyICpfaGZfa2V5PShjaGFyKikoa2V5KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgaGFzaHYgPSAyMTY2MTM2MjYxVUw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGZvcihfZm5faT0wOyBfZm5faSA8IGtleWxlbjsgX2ZuX2krKykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgaGFzaHYgPSAoaGFzaHYgKiAxNjc3NzYxOSkgXiBfaGZfa2V5W19mbl9pXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgYmt0ID0gaGFzaHYgJiAobnVtX2JrdHMtMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy19IHdoaWxlKDApIAorLSAKKy0jZGVmaW5lIEhBU0hfT0FUKGtleSxrZXlsZW4sbnVtX2JrdHMsaGFzaHYsYmt0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgdW5zaWduZWQgX2hvX2k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGNoYXIgKl9ob19rZXk9KGNoYXIqKShrZXkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBoYXNodiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgZm9yKF9ob19pPTA7IF9ob19pIDwga2V5bGVuOyBfaG9faSsrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICBoYXNodiArPSBfaG9fa2V5W19ob19pXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgaGFzaHYgKz0gKGhhc2h2IDw8IDEwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgIGhhc2h2IF49IChoYXNodiA+PiA2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBoYXNodiArPSAoaGFzaHYgPDwgMyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgaGFzaHYgXj0gKGhhc2h2ID4+IDExKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGhhc2h2ICs9IChoYXNodiA8PCAxNSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBia3QgPSBoYXNodiAmIChudW1fYmt0cy0xKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUoMCkKKy0KKy0jZGVmaW5lIEhBU0hfSkVOX01JWChhLGIsYykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgYSAtPSBiOyBhIC09IGM7IGEgXj0gKCBjID4+IDEzICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGIgLT0gYzsgYiAtPSBhOyBiIF49ICggYSA8PCA4ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBjIC09IGE7IGMgLT0gYjsgYyBePSAoIGIgPj4gMTMgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgYSAtPSBiOyBhIC09IGM7IGEgXj0gKCBjID4+IDEyICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGIgLT0gYzsgYiAtPSBhOyBiIF49ICggYSA8PCAxNiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBjIC09IGE7IGMgLT0gYjsgYyBePSAoIGIgPj4gNSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgYSAtPSBiOyBhIC09IGM7IGEgXj0gKCBjID4+IDMgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGIgLT0gYzsgYiAtPSBhOyBiIF49ICggYSA8PCAxMCApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBjIC09IGE7IGMgLT0gYjsgYyBePSAoIGIgPj4gMTUgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUgKDApCistCistI2RlZmluZSBIQVNIX0pFTihrZXksa2V5bGVuLG51bV9ia3RzLGhhc2h2LGJrdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIHVuc2lnbmVkIF9oal9pLF9oal9qLF9oal9rOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB1bnNpZ25lZCBjaGFyICpfaGpfa2V5PSh1bnNpZ25lZCBjaGFyKikoa2V5KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgaGFzaHYgPSAweGZlZWRiZWVmOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIF9oal9pID0gX2hqX2ogPSAweDllMzc3OWI5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBfaGpfayA9ICh1bnNpZ25lZClrZXlsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgd2hpbGUgKF9oal9rID49IDEyKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgX2hqX2kgKz0gICAgKF9oal9rZXlbMF0gKyAoICh1bnNpZ25lZClfaGpfa2V5WzFdIDw8IDggKSAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICArICggKHVuc2lnbmVkKV9oal9rZXlbMl0gPDwgMTYgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgKyAoICh1bnNpZ25lZClfaGpfa2V5WzNdIDw8IDI0ICkgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgX2hqX2ogKz0gICAgKF9oal9rZXlbNF0gKyAoICh1bnNpZ25lZClfaGpfa2V5WzVdIDw8IDggKSAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICArICggKHVuc2lnbmVkKV9oal9rZXlbNl0gPDwgMTYgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgKyAoICh1bnNpZ25lZClfaGpfa2V5WzddIDw8IDI0ICkgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgaGFzaHYgKz0gKF9oal9rZXlbOF0gKyAoICh1bnNpZ25lZClfaGpfa2V5WzldIDw8IDggKSAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICArICggKHVuc2lnbmVkKV9oal9rZXlbMTBdIDw8IDE2ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgKyAoICh1bnNpZ25lZClfaGpfa2V5WzExXSA8PCAyNCApICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICBIQVNIX0pFTl9NSVgoX2hqX2ksIF9oal9qLCBoYXNodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgIF9oal9rZXkgKz0gMTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICBfaGpfayAtPSAxMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGhhc2h2ICs9IGtleWxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBzd2l0Y2ggKCBfaGpfayApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgY2FzZSAxMTogaGFzaHYgKz0gKCAodW5zaWduZWQpX2hqX2tleVsxMF0gPDwgMjQgKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgIGNhc2UgMTA6IGhhc2h2ICs9ICggKHVuc2lnbmVkKV9oal9rZXlbOV0gPDwgMTYgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICBjYXNlIDk6ICBoYXNodiArPSAoICh1bnNpZ25lZClfaGpfa2V5WzhdIDw8IDggKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgY2FzZSA4OiAgX2hqX2ogKz0gKCAodW5zaWduZWQpX2hqX2tleVs3XSA8PCAyNCApOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgIGNhc2UgNzogIF9oal9qICs9ICggKHVuc2lnbmVkKV9oal9rZXlbNl0gPDwgMTYgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICBjYXNlIDY6ICBfaGpfaiArPSAoICh1bnNpZ25lZClfaGpfa2V5WzVdIDw8IDggKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgY2FzZSA1OiAgX2hqX2ogKz0gX2hqX2tleVs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgIGNhc2UgNDogIF9oal9pICs9ICggKHVuc2lnbmVkKV9oal9rZXlbM10gPDwgMjQgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICBjYXNlIDM6ICBfaGpfaSArPSAoICh1bnNpZ25lZClfaGpfa2V5WzJdIDw8IDE2ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgY2FzZSAyOiAgX2hqX2kgKz0gKCAodW5zaWduZWQpX2hqX2tleVsxXSA8PCA4ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgIGNhc2UgMTogIF9oal9pICs9IF9oal9rZXlbMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgSEFTSF9KRU5fTUlYKF9oal9pLCBfaGpfaiwgaGFzaHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIGJrdCA9IGhhc2h2ICYgKG51bV9ia3RzLTEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistfSB3aGlsZSgwKQorLQorLS8qIFRoZSBQYXVsIEhzaWVoIGhhc2ggZnVuY3Rpb24gKi8KKy0jdW5kZWYgZ2V0MTZiaXRzCistI2lmIChkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9faTM4Nl9fKSkgfHwgZGVmaW5lZChfX1dBVENPTUNfXykgICAgICAgICAgICAgXAorLSAgfHwgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZCAoX19CT1JMQU5EQ19fKSB8fCBkZWZpbmVkIChfX1RVUkJPQ19fKQorLSNkZWZpbmUgZ2V0MTZiaXRzKGQpICgqKChjb25zdCB1aW50MTZfdCAqKSAoZCkpKQorLSNlbmRpZgorLQorLSNpZiAhZGVmaW5lZCAoZ2V0MTZiaXRzKQorLSNkZWZpbmUgZ2V0MTZiaXRzKGQpICgoKCh1aW50MzJfdCkoKChjb25zdCB1aW50OF90ICopKGQpKVsxXSkpIDw8IDgpICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICsodWludDMyX3QpKCgoY29uc3QgdWludDhfdCAqKShkKSlbMF0pICkKKy0jZW5kaWYKKy0jZGVmaW5lIEhBU0hfU0ZIKGtleSxrZXlsZW4sbnVtX2JrdHMsaGFzaHYsYmt0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgdW5zaWduZWQgY2hhciAqX3NmaF9rZXk9KHVuc2lnbmVkIGNoYXIqKShrZXkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIHVpbnQzMl90IF9zZmhfdG1wLCBfc2ZoX2xlbiA9IGtleWxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgaW50IF9zZmhfcmVtID0gX3NmaF9sZW4gJiAzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIF9zZmhfbGVuID4+PSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBoYXNodiA9IDB4Y2FmZWJhYmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIC8qIE1haW4gbG9vcCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBmb3IgKDtfc2ZoX2xlbiA+IDA7IF9zZmhfbGVuLS0pIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBoYXNodiAgICArPSBnZXQxNmJpdHMgKF9zZmhfa2V5KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgX3NmaF90bXAgICAgICAgPSAodWludDMyX3QpKGdldDE2Yml0cyAoX3NmaF9rZXkrMikpIDw8IDExICBeIGhhc2h2OyAgICAgICAgICBcCistICAgIGhhc2h2ICAgICA9IChoYXNodiA8PCAxNikgXiBfc2ZoX3RtcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBfc2ZoX2tleSArPSAyKnNpemVvZiAodWludDE2X3QpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgaGFzaHYgICAgKz0gaGFzaHYgPj4gMTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIC8qIEhhbmRsZSBlbmQgY2FzZXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBzd2l0Y2ggKF9zZmhfcmVtKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBjYXNlIDM6IGhhc2h2ICs9IGdldDE2Yml0cyAoX3NmaF9rZXkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBoYXNodiBePSBoYXNodiA8PCAxNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgaGFzaHYgXj0gKHVpbnQzMl90KShfc2ZoX2tleVtzaXplb2YgKHVpbnQxNl90KV0gPDwgMTgpOyAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIGhhc2h2ICs9IGhhc2h2ID4+IDExOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGNhc2UgMjogaGFzaHYgKz0gZ2V0MTZiaXRzIChfc2ZoX2tleSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIGhhc2h2IF49IGhhc2h2IDw8IDExOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBoYXNodiArPSBoYXNodiA+PiAxNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBjYXNlIDE6IGhhc2h2ICs9ICpfc2ZoX2tleTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBoYXNodiBePSBoYXNodiA8PCAxMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgaGFzaHYgKz0gaGFzaHYgPj4gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIC8qIEZvcmNlICJhdmFsYW5jaGluZyIgb2YgZmluYWwgMTI3IGJpdHMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBoYXNodiBePSBoYXNodiA8PCAzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgaGFzaHYgKz0gaGFzaHYgPj4gNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGhhc2h2IF49IGhhc2h2IDw8IDQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBoYXNodiArPSBoYXNodiA+PiAxNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgaGFzaHYgXj0gaGFzaHYgPDwgMjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGhhc2h2ICs9IGhhc2h2ID4+IDY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBia3QgPSBoYXNodiAmIChudW1fYmt0cy0xKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy19IHdoaWxlKDApIAorLQorLSNpZmRlZiBIQVNIX1VTSU5HX05PX1NUUklDVF9BTElBU0lORworLS8qIFRoZSBNdXJtdXJIYXNoIGV4cGxvaXRzIHNvbWUgQ1BVJ3MgKHg4Nix4ODZfNjQpIHRvbGVyYW5jZSBmb3IgdW5hbGlnbmVkIHJlYWRzLgorLSAqIEZvciBvdGhlciB0eXBlcyBvZiBDUFUncyAoZS5nLiBTcGFyYykgYW4gdW5hbGlnbmVkIHJlYWQgY2F1c2VzIGEgYnVzIGVycm9yLgorLSAqIE11cm11ckhhc2ggdXNlcyB0aGUgZmFzdGVyIGFwcHJvYWNoIG9ubHkgb24gQ1BVJ3Mgd2hlcmUgd2Uga25vdyBpdCdzIHNhZmUuIAorLSAqCistICogTm90ZSB0aGUgcHJlcHJvY2Vzc29yIGJ1aWx0LWluIGRlZmluZXMgY2FuIGJlIGVtaXR0ZWQgdXNpbmc6CistICoKKy0gKiAgIGdjYyAtbTY0IC1kTSAtRSAtIDwgL2Rldi9udWxsICAgICAgICAgICAgICAgICAgKG9uIGdjYykKKy0gKiAgIGNjIC0jIyBhLmMgKHdoZXJlIGEuYyBpcyBhIHNpbXBsZSB0ZXN0IGZpbGUpICAgKFN1biBTdHVkaW8pCistICovCistI2lmIChkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pICB8fCBkZWZpbmVkKF9NX0lYODYpKQorLSNkZWZpbmUgTVVSX0dFVEJMT0NLKHAsaSkgcFtpXQorLSNlbHNlIC8qIG5vbiBpbnRlbCAqLworLSNkZWZpbmUgTVVSX1BMVVMwX0FMSUdORUQocCkgKCgodW5zaWduZWQgbG9uZylwICYgMHgzKSA9PSAwKQorLSNkZWZpbmUgTVVSX1BMVVMxX0FMSUdORUQocCkgKCgodW5zaWduZWQgbG9uZylwICYgMHgzKSA9PSAxKQorLSNkZWZpbmUgTVVSX1BMVVMyX0FMSUdORUQocCkgKCgodW5zaWduZWQgbG9uZylwICYgMHgzKSA9PSAyKQorLSNkZWZpbmUgTVVSX1BMVVMzX0FMSUdORUQocCkgKCgodW5zaWduZWQgbG9uZylwICYgMHgzKSA9PSAzKQorLSNkZWZpbmUgV1AocCkgKCh1aW50MzJfdCopKCh1bnNpZ25lZCBsb25nKShwKSAmIH4zVUwpKQorLSNpZiAoZGVmaW5lZChfX0JJR19FTkRJQU5fXykgfHwgZGVmaW5lZChTUEFSQykgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9fcHBjNjRfXykpCistI2RlZmluZSBNVVJfVEhSRUVfT05FKHApICgoKCgqV1AocCkpJjB4MDBmZmZmZmYpIDw8IDgpIHwgKCgoKihXUChwKSsxKSkmMHhmZjAwMDAwMCkgPj4gMjQpKQorLSNkZWZpbmUgTVVSX1RXT19UV08ocCkgICAoKCgoKldQKHApKSYweDAwMDBmZmZmKSA8PDE2KSB8ICgoKCooV1AocCkrMSkpJjB4ZmZmZjAwMDApID4+IDE2KSkKKy0jZGVmaW5lIE1VUl9PTkVfVEhSRUUocCkgKCgoKCpXUChwKSkmMHgwMDAwMDBmZikgPDwyNCkgfCAoKCgqKFdQKHApKzEpKSYweGZmZmZmZjAwKSA+PiAgOCkpCistI2Vsc2UgLyogYXNzdW1lIGxpdHRsZSBlbmRpYW4gbm9uLWludGVsICovCistI2RlZmluZSBNVVJfVEhSRUVfT05FKHApICgoKCgqV1AocCkpJjB4ZmZmZmZmMDApID4+IDgpIHwgKCgoKihXUChwKSsxKSkmMHgwMDAwMDBmZikgPDwgMjQpKQorLSNkZWZpbmUgTVVSX1RXT19UV08ocCkgICAoKCgoKldQKHApKSYweGZmZmYwMDAwKSA+PjE2KSB8ICgoKCooV1AocCkrMSkpJjB4MDAwMGZmZmYpIDw8IDE2KSkKKy0jZGVmaW5lIE1VUl9PTkVfVEhSRUUocCkgKCgoKCpXUChwKSkmMHhmZjAwMDAwMCkgPj4yNCkgfCAoKCgqKFdQKHApKzEpKSYweDAwZmZmZmZmKSA8PCAgOCkpCistI2VuZGlmCistI2RlZmluZSBNVVJfR0VUQkxPQ0socCxpKSAoTVVSX1BMVVMwX0FMSUdORUQocCkgPyAoKHApW2ldKSA6ICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIChNVVJfUExVUzFfQUxJR05FRChwKSA/IE1VUl9USFJFRV9PTkUocCkgOiBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTVVSX1BMVVMyX0FMSUdORUQocCkgPyBNVVJfVFdPX1RXTyhwKSA6ICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVVSX09ORV9USFJFRShwKSkpKQorLSNlbmRpZgorLSNkZWZpbmUgTVVSX1JPVEwzMih4LHIpICgoKHgpIDw8IChyKSkgfCAoKHgpID4+ICgzMiAtIChyKSkpKQorLSNkZWZpbmUgTVVSX0ZNSVgoX2gpIFwKKy1kbyB7ICAgICAgICAgICAgICAgICBcCistICBfaCBePSBfaCA+PiAxNjsgICAgXAorLSAgX2ggKj0gMHg4NWViY2E2YjsgIFwKKy0gIF9oIF49IF9oID4+IDEzOyAgICBcCistICBfaCAqPSAweGMyYjJhZTM1bDsgXAorLSAgX2ggXj0gX2ggPj4gMTY7ICAgIFwKKy19IHdoaWxlKDApCistCistI2RlZmluZSBIQVNIX01VUihrZXksa2V5bGVuLG51bV9ia3RzLGhhc2h2LGJrdCkgICAgICAgICAgICAgICAgICAgICAgICBcCistZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBjb25zdCB1aW50OF90ICpfbXVyX2RhdGEgPSAoY29uc3QgdWludDhfdCopKGtleSk7ICAgICAgICAgICAgICAgICAgICBcCistICBjb25zdCBpbnQgX211cl9uYmxvY2tzID0gKGtleWxlbikgLyA0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB1aW50MzJfdCBfbXVyX2gxID0gMHhmODhENTM1MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB1aW50MzJfdCBfbXVyX2MxID0gMHhjYzllMmQ1MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB1aW50MzJfdCBfbXVyX2MyID0gMHgxYjg3MzU5MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB1aW50MzJfdCBfbXVyX2sxID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBjb25zdCB1aW50OF90ICpfbXVyX3RhaWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBjb25zdCB1aW50MzJfdCAqX211cl9ibG9ja3MgPSAoY29uc3QgdWludDMyX3QqKShfbXVyX2RhdGErX211cl9uYmxvY2tzKjQpOyBcCistICBpbnQgX211cl9pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBmb3IoX211cl9pID0gLV9tdXJfbmJsb2NrczsgX211cl9pOyBfbXVyX2krKykgeyAgICAgICAgICAgICAgICAgICAgICBcCistICAgIF9tdXJfazEgPSBNVVJfR0VUQkxPQ0soX211cl9ibG9ja3MsX211cl9pKTsgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIF9tdXJfazEgKj0gX211cl9jMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIF9tdXJfazEgPSBNVVJfUk9UTDMyKF9tdXJfazEsMTUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIF9tdXJfazEgKj0gX211cl9jMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIF9tdXJfaDEgXj0gX211cl9rMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIF9tdXJfaDEgPSBNVVJfUk9UTDMyKF9tdXJfaDEsMTMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIF9tdXJfaDEgPSBfbXVyX2gxKjUrMHhlNjU0NmI2NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBfbXVyX3RhaWwgPSAoY29uc3QgdWludDhfdCopKF9tdXJfZGF0YSArIF9tdXJfbmJsb2Nrcyo0KTsgICAgICAgICAgICBcCistICBfbXVyX2sxPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBzd2l0Y2goKGtleWxlbikgJiAzKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGNhc2UgMzogX211cl9rMSBePSBfbXVyX3RhaWxbMl0gPDwgMTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGNhc2UgMjogX211cl9rMSBePSBfbXVyX3RhaWxbMV0gPDwgODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGNhc2UgMTogX211cl9rMSBePSBfbXVyX3RhaWxbMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIF9tdXJfazEgKj0gX211cl9jMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIF9tdXJfazEgPSBNVVJfUk9UTDMyKF9tdXJfazEsMTUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIF9tdXJfazEgKj0gX211cl9jMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIF9tdXJfaDEgXj0gX211cl9rMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBfbXVyX2gxIF49IChrZXlsZW4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBNVVJfRk1JWChfbXVyX2gxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBoYXNodiA9IF9tdXJfaDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICBia3QgPSBoYXNodiAmIChudW1fYmt0cy0xKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistfSB3aGlsZSgwKQorLSNlbmRpZiAgLyogSEFTSF9VU0lOR19OT19TVFJJQ1RfQUxJQVNJTkcgKi8KKy0KKy0vKiBrZXkgY29tcGFyaXNvbiBmdW5jdGlvbjsgcmV0dXJuIDAgaWYga2V5cyBlcXVhbCAqLworLSNkZWZpbmUgSEFTSF9LRVlDTVAoYSxiLGxlbikgbWVtY21wKGEsYixsZW4pIAorLQorLS8qIGl0ZXJhdGUgb3ZlciBpdGVtcyBpbiBhIGtub3duIGJ1Y2tldCB0byBmaW5kIGRlc2lyZWQgaXRlbSAqLworLSNkZWZpbmUgSEFTSF9GSU5EX0lOX0JLVCh0YmwsaGgsaGVhZCxrZXlwdHIsa2V5bGVuX2luLG91dCkgICAgICAgICAgICAgICAgICAgICAgIFwKKy1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistIGlmIChoZWFkLmhoX2hlYWQpIERFQ0xUWVBFX0FTU0lHTihvdXQsRUxNVF9GUk9NX0hIKHRibCxoZWFkLmhoX2hlYWQpKTsgICAgICAgICAgXAorLSBlbHNlIG91dD1OVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gd2hpbGUgKG91dCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGlmICgob3V0KS0+aGgua2V5bGVuID09IGtleWxlbl9pbikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICBpZiAoKEhBU0hfS0VZQ01QKChvdXQpLT5oaC5rZXksa2V5cHRyLGtleWxlbl9pbikpID09IDApIGJyZWFrOyAgICAgICAgICAgICBcCistICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBpZiAoKG91dCktPmhoLmhoX25leHQpIERFQ0xUWVBFX0FTU0lHTihvdXQsRUxNVF9GUk9NX0hIKHRibCwob3V0KS0+aGguaGhfbmV4dCkpOyBcCistICAgIGVsc2Ugb3V0ID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy19IHdoaWxlKDApCistCistLyogYWRkIGFuIGl0ZW0gdG8gYSBidWNrZXQgICovCistI2RlZmluZSBIQVNIX0FERF9UT19CS1QoaGVhZCxhZGRoaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gaGVhZC5jb3VudCsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistIChhZGRoaCktPmhoX25leHQgPSBoZWFkLmhoX2hlYWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAoYWRkaGgpLT5oaF9wcmV2ID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gaWYgKGhlYWQuaGhfaGVhZCkgeyAoaGVhZCkuaGhfaGVhZC0+aGhfcHJldiA9IChhZGRoaCk7IH0gICAgICAgICAgICAgICAgICAgICAgICBcCistIChoZWFkKS5oaF9oZWFkPWFkZGhoOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSBpZiAoaGVhZC5jb3VudCA+PSAoKGhlYWQuZXhwYW5kX211bHQrMSkgKiBIQVNIX0JLVF9DQVBBQ0lUWV9USFJFU0gpICAgICAgICAgICAgIFwKKy0gICAgICYmIChhZGRoaCktPnRibC0+bm9leHBhbmQgIT0gMSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgIEhBU0hfRVhQQU5EX0JVQ0tFVFMoKGFkZGhoKS0+dGJsKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy19IHdoaWxlKDApCistCistLyogcmVtb3ZlIGFuIGl0ZW0gZnJvbSBhIGdpdmVuIGJ1Y2tldCAqLworLSNkZWZpbmUgSEFTSF9ERUxfSU5fQktUKGhoLGhlYWQsaGhfZGVsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgKGhlYWQpLmNvdW50LS07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGlmICgoaGVhZCkuaGhfaGVhZCA9PSBoaF9kZWwpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgIChoZWFkKS5oaF9oZWFkID0gaGhfZGVsLT5oaF9uZXh0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGlmIChoaF9kZWwtPmhoX3ByZXYpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgaGhfZGVsLT5oaF9wcmV2LT5oaF9uZXh0ID0gaGhfZGVsLT5oaF9uZXh0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGlmIChoaF9kZWwtPmhoX25leHQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgaGhfZGVsLT5oaF9uZXh0LT5oaF9wcmV2ID0gaGhfZGVsLT5oaF9wcmV2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0KKy0vKiBCdWNrZXQgZXhwYW5zaW9uIGhhcyB0aGUgZWZmZWN0IG9mIGRvdWJsaW5nIHRoZSBudW1iZXIgb2YgYnVja2V0cworLSAqIGFuZCByZWRpc3RyaWJ1dGluZyB0aGUgaXRlbXMgaW50byB0aGUgbmV3IGJ1Y2tldHMuIElkZWFsbHkgdGhlCistICogaXRlbXMgd2lsbCBkaXN0cmlidXRlIG1vcmUgb3IgbGVzcyBldmVubHkgaW50byB0aGUgbmV3IGJ1Y2tldHMKKy0gKiAodGhlIGV4dGVudCB0byB3aGljaCB0aGlzIGlzIHRydWUgaXMgYSBtZWFzdXJlIG9mIHRoZSBxdWFsaXR5IG9mCistICogdGhlIGhhc2ggZnVuY3Rpb24gYXMgaXQgYXBwbGllcyB0byB0aGUga2V5IGRvbWFpbikuIAorLSAqIAorLSAqIFdpdGggdGhlIGl0ZW1zIGRpc3RyaWJ1dGVkIGludG8gbW9yZSBidWNrZXRzLCB0aGUgY2hhaW4gbGVuZ3RoCistICogKGl0ZW0gY291bnQpIGluIGVhY2ggYnVja2V0IGlzIHJlZHVjZWQuIFRodXMgYnkgZXhwYW5kaW5nIGJ1Y2tldHMKKy0gKiB0aGUgaGFzaCBrZWVwcyBhIGJvdW5kIG9uIHRoZSBjaGFpbiBsZW5ndGguIFRoaXMgYm91bmRlZCBjaGFpbiAKKy0gKiBsZW5ndGggaXMgdGhlIGVzc2VuY2Ugb2YgaG93IGEgaGFzaCBwcm92aWRlcyBjb25zdGFudCB0aW1lIGxvb2t1cC4KKy0gKiAKKy0gKiBUaGUgY2FsY3VsYXRpb24gb2YgdGJsLT5pZGVhbF9jaGFpbl9tYXhsZW4gYmVsb3cgZGVzZXJ2ZXMgc29tZQorLSAqIGV4cGxhbmF0aW9uLiBGaXJzdCwga2VlcCBpbiBtaW5kIHRoYXQgd2UncmUgY2FsY3VsYXRpbmcgdGhlIGlkZWFsCistICogbWF4aW11bSBjaGFpbiBsZW5ndGggYmFzZWQgb24gdGhlICpuZXcqIChkb3VibGVkKSBidWNrZXQgY291bnQuCistICogSW4gZnJhY3Rpb25zIHRoaXMgaXMganVzdCBuL2IgKG49bnVtYmVyIG9mIGl0ZW1zLGI9bmV3IG51bSBidWNrZXRzKS4KKy0gKiBTaW5jZSB0aGUgaWRlYWwgY2hhaW4gbGVuZ3RoIGlzIGFuIGludGVnZXIsIHdlIHdhbnQgdG8gY2FsY3VsYXRlIAorLSAqIGNlaWwobi9iKS4gV2UgZG9uJ3QgZGVwZW5kIG9uIGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgaW4gdGhpcworLSAqIGhhc2gsIHNvIHRvIGNhbGN1bGF0ZSBjZWlsKG4vYikgd2l0aCBpbnRlZ2VycyB3ZSBjb3VsZCB3cml0ZQorLSAqIAorLSAqICAgICAgY2VpbChuL2IpID0gKG4vYikgKyAoKG4lYik/MTowKQorLSAqIAorLSAqIGFuZCBpbiBmYWN0IGEgcHJldmlvdXMgdmVyc2lvbiBvZiB0aGlzIGhhc2ggZGlkIGp1c3QgdGhhdC4KKy0gKiBCdXQgbm93IHdlIGhhdmUgaW1wcm92ZWQgdGhpbmdzIGEgYml0IGJ5IHJlY29nbml6aW5nIHRoYXQgYiBpcworLSAqIGFsd2F5cyBhIHBvd2VyIG9mIHR3by4gV2Uga2VlcCBpdHMgYmFzZSAyIGxvZyBoYW5keSAoY2FsbCBpdCBsYiksCistICogc28gbm93IHdlIGNhbiB3cml0ZSB0aGlzIHdpdGggYSBiaXQgc2hpZnQgYW5kIGxvZ2ljYWwgQU5EOgorLSAqIAorLSAqICAgICAgY2VpbChuL2IpID0gKG4+PmxiKSArICggKG4gJiAoYi0xKSkgPyAxOjApCistICogCistICovCistI2RlZmluZSBIQVNIX0VYUEFORF9CVUNLRVRTKHRibCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgdW5zaWduZWQgX2hlX2JrdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIHVuc2lnbmVkIF9oZV9ia3RfaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBzdHJ1Y3QgVVRfaGFzaF9oYW5kbGUgKl9oZV90aGgsICpfaGVfaGhfbnh0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgVVRfaGFzaF9idWNrZXQgKl9oZV9uZXdfYnVja2V0cywgKl9oZV9uZXdia3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIF9oZV9uZXdfYnVja2V0cyA9IChVVF9oYXNoX2J1Y2tldCopdXRoYXNoX21hbGxvYyggICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAyICogdGJsLT5udW1fYnVja2V0cyAqIHNpemVvZihzdHJ1Y3QgVVRfaGFzaF9idWNrZXQpKTsgICAgICAgICAgICAgIFwKKy0gICAgaWYgKCFfaGVfbmV3X2J1Y2tldHMpIHsgdXRoYXNoX2ZhdGFsKCAib3V0IG9mIG1lbW9yeSIpOyB9ICAgICAgICAgICAgICAgICAgICBcCistICAgIG1lbXNldChfaGVfbmV3X2J1Y2tldHMsIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIDIgKiB0YmwtPm51bV9idWNrZXRzICogc2l6ZW9mKHN0cnVjdCBVVF9oYXNoX2J1Y2tldCkpOyAgICAgICAgICAgICAgIFwKKy0gICAgdGJsLT5pZGVhbF9jaGFpbl9tYXhsZW4gPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICh0YmwtPm51bV9pdGVtcyA+PiAodGJsLT5sb2cyX251bV9idWNrZXRzKzEpKSArICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAoKHRibC0+bnVtX2l0ZW1zICYgKCh0YmwtPm51bV9idWNrZXRzKjIpLTEpKSA/IDEgOiAwKTsgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgdGJsLT5ub25pZGVhbF9pdGVtcyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIGZvcihfaGVfYmt0X2kgPSAwOyBfaGVfYmt0X2kgPCB0YmwtPm51bV9idWNrZXRzOyBfaGVfYmt0X2krKykgICAgICAgICAgICAgICAgXAorLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIF9oZV90aGggPSB0YmwtPmJ1Y2tldHNbIF9oZV9ia3RfaSBdLmhoX2hlYWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICB3aGlsZSAoX2hlX3RoaCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgX2hlX2hoX254dCA9IF9oZV90aGgtPmhoX25leHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgIEhBU0hfVE9fQktUKCBfaGVfdGhoLT5oYXNodiwgdGJsLT5udW1fYnVja2V0cyoyLCBfaGVfYmt0KTsgICAgICAgICAgICBcCistICAgICAgICAgICBfaGVfbmV3Ymt0ID0gJihfaGVfbmV3X2J1Y2tldHNbIF9oZV9ia3QgXSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgaWYgKCsrKF9oZV9uZXdia3QtPmNvdW50KSA+IHRibC0+aWRlYWxfY2hhaW5fbWF4bGVuKSB7ICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgdGJsLT5ub25pZGVhbF9pdGVtcysrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgIF9oZV9uZXdia3QtPmV4cGFuZF9tdWx0ID0gX2hlX25ld2JrdC0+Y291bnQgLyAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YmwtPmlkZWFsX2NoYWluX21heGxlbjsgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICBfaGVfdGhoLT5oaF9wcmV2ID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgX2hlX3RoaC0+aGhfbmV4dCA9IF9oZV9uZXdia3QtPmhoX2hlYWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgIGlmIChfaGVfbmV3Ymt0LT5oaF9oZWFkKSBfaGVfbmV3Ymt0LT5oaF9oZWFkLT5oaF9wcmV2ID0gICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgIF9oZV90aGg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgX2hlX25ld2JrdC0+aGhfaGVhZCA9IF9oZV90aGg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgIF9oZV90aGggPSBfaGVfaGhfbnh0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgdXRoYXNoX2ZyZWUoIHRibC0+YnVja2V0cywgdGJsLT5udW1fYnVja2V0cypzaXplb2Yoc3RydWN0IFVUX2hhc2hfYnVja2V0KSApOyBcCistICAgIHRibC0+bnVtX2J1Y2tldHMgKj0gMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICB0YmwtPmxvZzJfbnVtX2J1Y2tldHMrKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgdGJsLT5idWNrZXRzID0gX2hlX25ld19idWNrZXRzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIHRibC0+aW5lZmZfZXhwYW5kcyA9ICh0YmwtPm5vbmlkZWFsX2l0ZW1zID4gKHRibC0+bnVtX2l0ZW1zID4+IDEpKSA/ICAgICAgICAgXAorLSAgICAgICAgKHRibC0+aW5lZmZfZXhwYW5kcysxKSA6IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgaWYgKHRibC0+aW5lZmZfZXhwYW5kcyA+IDEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICB0YmwtPm5vZXhwYW5kPTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgdXRoYXNoX25vZXhwYW5kX2Z5aSh0YmwpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIHV0aGFzaF9leHBhbmRfZnlpKHRibCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUoMCkKKy0KKy0KKy0vKiBUaGlzIGlzIGFuIGFkYXB0YXRpb24gb2YgU2ltb24gVGF0aGFtJ3MgTyhuIGxvZyhuKSkgbWVyZ2Vzb3J0ICovCistLyogTm90ZSB0aGF0IEhBU0hfU09SVCBhc3N1bWVzIHRoZSBoYXNoIGhhbmRsZSBuYW1lIHRvIGJlIGhoLiAKKy0gKiBIQVNIX1NSVCB3YXMgYWRkZWQgdG8gYWxsb3cgdGhlIGhhc2ggaGFuZGxlIG5hbWUgdG8gYmUgcGFzc2VkIGluLiAqLworLSNkZWZpbmUgSEFTSF9TT1JUKGhlYWQsY21wZmNuKSBIQVNIX1NSVChoaCxoZWFkLGNtcGZjbikKKy0jZGVmaW5lIEhBU0hfU1JUKGhoLGhlYWQsY21wZmNuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgdW5zaWduZWQgX2hzX2k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIHVuc2lnbmVkIF9oc19sb29waW5nLF9oc19ubWVyZ2VzLF9oc19pbnNpemUsX2hzX3BzaXplLF9oc19xc2l6ZTsgICAgICAgICAgICAgICBcCistICBzdHJ1Y3QgVVRfaGFzaF9oYW5kbGUgKl9oc19wLCAqX2hzX3EsICpfaHNfZSwgKl9oc19saXN0LCAqX2hzX3RhaWw7ICAgICAgICAgICAgXAorLSAgaWYgKGhlYWQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICBfaHNfaW5zaXplID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgX2hzX2xvb3BpbmcgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgIF9oc19saXN0ID0gJigoaGVhZCktPmhoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICB3aGlsZSAoX2hzX2xvb3BpbmcpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgIF9oc19wID0gX2hzX2xpc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICBfaHNfbGlzdCA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgX2hzX3RhaWwgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgIF9oc19ubWVyZ2VzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICB3aGlsZSAoX2hzX3ApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgIF9oc19ubWVyZ2VzKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICBfaHNfcSA9IF9oc19wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgX2hzX3BzaXplID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgIGZvciAoIF9oc19pID0gMDsgX2hzX2kgIDwgX2hzX2luc2l6ZTsgX2hzX2krKyApIHsgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgX2hzX3BzaXplKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgIF9oc19xID0gKFVUX2hhc2hfaGFuZGxlKikoKF9oc19xLT5uZXh0KSA/ICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICgodm9pZCopKChjaGFyKikoX2hzX3EtPm5leHQpICsgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAoaGVhZCktPmhoLnRibC0+aGhvKSkgOiBOVUxMKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgIGlmICghIChfaHNfcSkgKSBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICBfaHNfcXNpemUgPSBfaHNfaW5zaXplOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgd2hpbGUgKChfaHNfcHNpemUgPiAwKSB8fCAoKF9oc19xc2l6ZSA+IDApICYmIF9oc19xICkpIHsgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICBpZiAoX2hzX3BzaXplID09IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgIF9oc19lID0gX2hzX3E7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICBfaHNfcSA9IChVVF9oYXNoX2hhbmRsZSopKChfaHNfcS0+bmV4dCkgPyAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHZvaWQqKSgoY2hhciopKF9oc19xLT5uZXh0KSArICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhlYWQpLT5oaC50YmwtPmhobykpIDogTlVMTCk7ICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICBfaHNfcXNpemUtLTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCAoX2hzX3FzaXplID09IDApIHx8ICEoX2hzX3EpICkgeyAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgIF9oc19lID0gX2hzX3A7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICBpZiAoX2hzX3ApeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICBfaHNfcCA9IChVVF9oYXNoX2hhbmRsZSopKChfaHNfcC0+bmV4dCkgPyAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHZvaWQqKSgoY2hhciopKF9oc19wLT5uZXh0KSArICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhlYWQpLT5oaC50YmwtPmhobykpIDogTlVMTCk7ICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgIF9oc19wc2l6ZS0tOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgY21wZmNuKERFQ0xUWVBFKGhlYWQpKEVMTVRfRlJPTV9ISCgoaGVhZCktPmhoLnRibCxfaHNfcCkpLCBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUNMVFlQRShoZWFkKShFTE1UX0ZST01fSEgoKGhlYWQpLT5oaC50YmwsX2hzX3EpKSkgXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA8PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgX2hzX2UgPSBfaHNfcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgIGlmIChfaHNfcCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICAgIF9oc19wID0gKFVUX2hhc2hfaGFuZGxlKikoKF9oc19wLT5uZXh0KSA/ICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh2b2lkKikoKGNoYXIqKShfaHNfcC0+bmV4dCkgKyAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoZWFkKS0+aGgudGJsLT5oaG8pKSA6IE5VTEwpOyAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgX2hzX3BzaXplLS07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICBfaHNfZSA9IF9oc19xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgX2hzX3EgPSAoVVRfaGFzaF9oYW5kbGUqKSgoX2hzX3EtPm5leHQpID8gICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh2b2lkKikoKGNoYXIqKShfaHNfcS0+bmV4dCkgKyAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoZWFkKS0+aGgudGJsLT5oaG8pKSA6IE5VTEwpOyAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgX2hzX3FzaXplLS07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgIGlmICggX2hzX3RhaWwgKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgX2hzX3RhaWwtPm5leHQgPSAoKF9oc19lKSA/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVMTVRfRlJPTV9ISCgoaGVhZCktPmhoLnRibCxfaHNfZSkgOiBOVUxMKTsgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICAgICAgX2hzX2xpc3QgPSBfaHNfZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgIGlmIChfaHNfZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICBfaHNfZS0+cHJldiA9ICgoX2hzX3RhaWwpID8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgRUxNVF9GUk9NX0hIKChoZWFkKS0+aGgudGJsLF9oc190YWlsKSA6IE5VTEwpOyAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgICAgICBfaHNfdGFpbCA9IF9oc19lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgX2hzX3AgPSBfaHNfcTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgIGlmIChfaHNfdGFpbCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIF9oc190YWlsLT5uZXh0ID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgIGlmICggX2hzX25tZXJnZXMgPD0gMSApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgX2hzX2xvb3Bpbmc9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICAgIChoZWFkKS0+aGgudGJsLT50YWlsID0gX2hzX3RhaWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICBERUNMVFlQRV9BU1NJR04oaGVhZCxFTE1UX0ZST01fSEgoKGhlYWQpLT5oaC50YmwsIF9oc19saXN0KSk7ICAgICAgXAorLSAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgX2hzX2luc2l6ZSAqPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgIEhBU0hfRlNDSyhoaCxoZWFkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistfSB3aGlsZSAoMCkKKy0KKy0vKiBUaGlzIGZ1bmN0aW9uIHNlbGVjdHMgaXRlbXMgZnJvbSBvbmUgaGFzaCBpbnRvIGFub3RoZXIgaGFzaC4gCistICogVGhlIGVuZCByZXN1bHQgaXMgdGhhdCB0aGUgc2VsZWN0ZWQgaXRlbXMgaGF2ZSBkdWFsIHByZXNlbmNlIAorLSAqIGluIGJvdGggaGFzaGVzLiBUaGVyZSBpcyBubyBjb3B5IG9mIHRoZSBpdGVtcyBtYWRlOyByYXRoZXIgCistICogdGhleSBhcmUgYWRkZWQgaW50byB0aGUgbmV3IGhhc2ggdGhyb3VnaCBhIHNlY29uZGFyeSBoYXNoIAorLSAqIGhhc2ggaGFuZGxlIHRoYXQgbXVzdCBiZSBwcmVzZW50IGluIHRoZSBzdHJ1Y3R1cmUuICovCistI2RlZmluZSBIQVNIX1NFTEVDVChoaF9kc3QsIGRzdCwgaGhfc3JjLCBzcmMsIGNvbmQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIHVuc2lnbmVkIF9zcmNfYmt0LCBfZHN0X2JrdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICB2b2lkICpfbGFzdF9lbHQ9TlVMTCwgKl9lbHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgVVRfaGFzaF9oYW5kbGUgKl9zcmNfaGgsICpfZHN0X2hoLCAqX2xhc3RfZWx0X2hoPU5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIHB0cmRpZmZfdCBfZHN0X2hobyA9ICgoY2hhciopKCYoZHN0KS0+aGhfZHN0KSAtIChjaGFyKikoZHN0KSk7ICAgICAgICAgICAgICAgICBcCistICBpZiAoc3JjKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICBmb3IoX3NyY19ia3Q9MDsgX3NyY19ia3QgPCAoc3JjKS0+aGhfc3JjLnRibC0+bnVtX2J1Y2tldHM7IF9zcmNfYmt0KyspIHsgICAgIFwKKy0gICAgICBmb3IoX3NyY19oaCA9IChzcmMpLT5oaF9zcmMudGJsLT5idWNrZXRzW19zcmNfYmt0XS5oaF9oZWFkOyAgICAgICAgICAgICAgICBcCistICAgICAgICAgIF9zcmNfaGg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICBfc3JjX2hoID0gX3NyY19oaC0+aGhfbmV4dCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgX2VsdCA9IEVMTVRfRlJPTV9ISCgoc3JjKS0+aGhfc3JjLnRibCwgX3NyY19oaCk7ICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgIGlmIChjb25kKF9lbHQpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIF9kc3RfaGggPSAoVVRfaGFzaF9oYW5kbGUqKSgoKGNoYXIqKV9lbHQpICsgX2RzdF9oaG8pOyAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBfZHN0X2hoLT5rZXkgPSBfc3JjX2hoLT5rZXk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgX2RzdF9oaC0+a2V5bGVuID0gX3NyY19oaC0+a2V5bGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIF9kc3RfaGgtPmhhc2h2ID0gX3NyY19oaC0+aGFzaHY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBfZHN0X2hoLT5wcmV2ID0gX2xhc3RfZWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgX2RzdF9oaC0+bmV4dCA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIGlmIChfbGFzdF9lbHRfaGgpIHsgX2xhc3RfZWx0X2hoLT5uZXh0ID0gX2VsdDsgfSAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBpZiAoIWRzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICBERUNMVFlQRV9BU1NJR04oZHN0LF9lbHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgICAgSEFTSF9NQUtFX1RBQkxFKGhoX2RzdCxkc3QpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICBfZHN0X2hoLT50YmwgPSAoZHN0KS0+aGhfZHN0LnRibDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBIQVNIX1RPX0JLVChfZHN0X2hoLT5oYXNodiwgX2RzdF9oaC0+dGJsLT5udW1fYnVja2V0cywgX2RzdF9ia3QpOyAgICBcCistICAgICAgICAgICAgSEFTSF9BRERfVE9fQktUKF9kc3RfaGgtPnRibC0+YnVja2V0c1tfZHN0X2JrdF0sX2RzdF9oaCk7ICAgICAgICAgICAgXAorLSAgICAgICAgICAgIChkc3QpLT5oaF9kc3QudGJsLT5udW1faXRlbXMrKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICBfbGFzdF9lbHQgPSBfZWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgX2xhc3RfZWx0X2hoID0gX2RzdF9oaDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gIEhBU0hfRlNDSyhoaF9kc3QsZHN0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistfSB3aGlsZSAoMCkKKy0KKy0jZGVmaW5lIEhBU0hfQ0xFQVIoaGgsaGVhZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgaWYgKGhlYWQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgdXRoYXNoX2ZyZWUoKGhlYWQpLT5oaC50YmwtPmJ1Y2tldHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgIChoZWFkKS0+aGgudGJsLT5udW1fYnVja2V0cypzaXplb2Yoc3RydWN0IFVUX2hhc2hfYnVja2V0KSk7ICAgICAgXAorLSAgICBIQVNIX0JMT09NX0ZSRUUoKGhlYWQpLT5oaC50YmwpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgdXRoYXNoX2ZyZWUoKGhlYWQpLT5oaC50YmwsIHNpemVvZihVVF9oYXNoX3RhYmxlKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgIChoZWFkKT1OVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy19IHdoaWxlKDApCistCistI2RlZmluZSBIQVNIX09WRVJIRUFEKGhoLGhlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAoc2l6ZV90KSgoKChoZWFkKS0+aGgudGJsLT5udW1faXRlbXMgICAqIHNpemVvZihVVF9oYXNoX2hhbmRsZSkpICAgKyAgICAgICAgICAgIFwKKy0gICAgICAgICAgICgoaGVhZCktPmhoLnRibC0+bnVtX2J1Y2tldHMgKiBzaXplb2YoVVRfaGFzaF9idWNrZXQpKSAgICsgICAgICAgICAgICBcCistICAgICAgICAgICAgKHNpemVvZihVVF9oYXNoX3RhYmxlKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICAgICAgICAgICAgXAorLSAgICAgICAgICAgIChIQVNIX0JMT09NX0JZVEVMRU4pKSkKKy0KKy0jaWZkZWYgTk9fREVDTFRZUEUKKy0jZGVmaW5lIEhBU0hfSVRFUihoaCxoZWFkLGVsLHRtcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistZm9yKChlbCk9KGhlYWQpLCAoKihjaGFyKiopKCYodG1wKSkpPShjaGFyKikoKGhlYWQpPyhoZWFkKS0+aGgubmV4dDpOVUxMKTsgICAgICAgXAorLSAgZWw7IChlbCk9KHRtcCksKCooY2hhcioqKSgmKHRtcCkpKT0oY2hhciopKCh0bXApPyh0bXApLT5oaC5uZXh0Ok5VTEwpKSAKKy0jZWxzZQorLSNkZWZpbmUgSEFTSF9JVEVSKGhoLGhlYWQsZWwsdG1wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy1mb3IoKGVsKT0oaGVhZCksKHRtcCk9REVDTFRZUEUoZWwpKChoZWFkKT8oaGVhZCktPmhoLm5leHQ6TlVMTCk7ICAgICAgICAgICAgICAgICBcCistICBlbDsgKGVsKT0odG1wKSwodG1wKT1ERUNMVFlQRShlbCkoKHRtcCk/KHRtcCktPmhoLm5leHQ6TlVMTCkpCistI2VuZGlmCistCistLyogb2J0YWluIGEgY291bnQgb2YgaXRlbXMgaW4gdGhlIGhhc2ggKi8KKy0jZGVmaW5lIEhBU0hfQ09VTlQoaGVhZCkgSEFTSF9DTlQoaGgsaGVhZCkgCistI2RlZmluZSBIQVNIX0NOVChoaCxoZWFkKSAoKGhlYWQpPygoaGVhZCktPmhoLnRibC0+bnVtX2l0ZW1zKTowKQorLQorLXR5cGVkZWYgc3RydWN0IFVUX2hhc2hfYnVja2V0IHsKKy0gICBzdHJ1Y3QgVVRfaGFzaF9oYW5kbGUgKmhoX2hlYWQ7CistICAgdW5zaWduZWQgY291bnQ7CistCistICAgLyogZXhwYW5kX211bHQgaXMgbm9ybWFsbHkgc2V0IHRvIDAuIEluIHRoaXMgc2l0dWF0aW9uLCB0aGUgbWF4IGNoYWluIGxlbmd0aAorLSAgICAqIHRocmVzaG9sZCBpcyBlbmZvcmNlZCBhdCBpdHMgZGVmYXVsdCB2YWx1ZSwgSEFTSF9CS1RfQ0FQQUNJVFlfVEhSRVNILiAoSWYKKy0gICAgKiB0aGUgYnVja2V0J3MgY2hhaW4gZXhjZWVkcyB0aGlzIGxlbmd0aCwgYnVja2V0IGV4cGFuc2lvbiBpcyB0cmlnZ2VyZWQpLiAKKy0gICAgKiBIb3dldmVyLCBzZXR0aW5nIGV4cGFuZF9tdWx0IHRvIGEgbm9uLXplcm8gdmFsdWUgZGVsYXlzIGJ1Y2tldCBleHBhbnNpb24KKy0gICAgKiAodGhhdCB3b3VsZCBiZSB0cmlnZ2VyZWQgYnkgYWRkaXRpb25zIHRvIHRoaXMgcGFydGljdWxhciBidWNrZXQpCistICAgICogdW50aWwgaXRzIGNoYWluIGxlbmd0aCByZWFjaGVzIGEgKm11bHRpcGxlKiBvZiBIQVNIX0JLVF9DQVBBQ0lUWV9USFJFU0guCistICAgICogKFRoZSBtdWx0aXBsaWVyIGlzIHNpbXBseSBleHBhbmRfbXVsdCsxKS4gVGhlIHdob2xlIGlkZWEgb2YgdGhpcworLSAgICAqIG11bHRpcGxpZXIgaXMgdG8gcmVkdWNlIGJ1Y2tldCBleHBhbnNpb25zLCBzaW5jZSB0aGV5IGFyZSBleHBlbnNpdmUsIGluCistICAgICogc2l0dWF0aW9ucyB3aGVyZSB3ZSBrbm93IHRoYXQgYSBwYXJ0aWN1bGFyIGJ1Y2tldCB0ZW5kcyB0byBiZSBvdmVydXNlZC4KKy0gICAgKiBJdCBpcyBiZXR0ZXIgdG8gbGV0IGl0cyBjaGFpbiBsZW5ndGggZ3JvdyB0byBhIGxvbmdlciB5ZXQtc3RpbGwtYm91bmRlZAorLSAgICAqIHZhbHVlLCB0aGFuIHRvIGRvIGFuIE8obikgYnVja2V0IGV4cGFuc2lvbiB0b28gb2Z0ZW4uIAorLSAgICAqLworLSAgIHVuc2lnbmVkIGV4cGFuZF9tdWx0OworLQorLX0gVVRfaGFzaF9idWNrZXQ7CistCistLyogcmFuZG9tIHNpZ25hdHVyZSB1c2VkIG9ubHkgdG8gZmluZCBoYXNoIHRhYmxlcyBpbiBleHRlcm5hbCBhbmFseXNpcyAqLworLSNkZWZpbmUgSEFTSF9TSUdOQVRVUkUgMHhhMDExMWZlMQorLSNkZWZpbmUgSEFTSF9CTE9PTV9TSUdOQVRVUkUgMHhiMTIyMjBmMgorLQorLXR5cGVkZWYgc3RydWN0IFVUX2hhc2hfdGFibGUgeworLSAgIFVUX2hhc2hfYnVja2V0ICpidWNrZXRzOworLSAgIHVuc2lnbmVkIG51bV9idWNrZXRzLCBsb2cyX251bV9idWNrZXRzOworLSAgIHVuc2lnbmVkIG51bV9pdGVtczsKKy0gICBzdHJ1Y3QgVVRfaGFzaF9oYW5kbGUgKnRhaWw7IC8qIHRhaWwgaGggaW4gYXBwIG9yZGVyLCBmb3IgZmFzdCBhcHBlbmQgICAgKi8KKy0gICBwdHJkaWZmX3QgaGhvOyAvKiBoYXNoIGhhbmRsZSBvZmZzZXQgKGJ5dGUgcG9zIG9mIGhhc2ggaGFuZGxlIGluIGVsZW1lbnQgKi8KKy0KKy0gICAvKiBpbiBhbiBpZGVhbCBzaXR1YXRpb24gKGFsbCBidWNrZXRzIHVzZWQgZXF1YWxseSksIG5vIGJ1Y2tldCB3b3VsZCBoYXZlCistICAgICogbW9yZSB0aGFuIGNlaWwoI2l0ZW1zLyNidWNrZXRzKSBpdGVtcy4gdGhhdCdzIHRoZSBpZGVhbCBjaGFpbiBsZW5ndGguICovCistICAgdW5zaWduZWQgaWRlYWxfY2hhaW5fbWF4bGVuOworLQorLSAgIC8qIG5vbmlkZWFsX2l0ZW1zIGlzIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGhhc2ggd2hvc2UgY2hhaW4gcG9zaXRpb24KKy0gICAgKiBleGNlZWRzIHRoZSBpZGVhbCBjaGFpbiBtYXhsZW4uIHRoZXNlIGl0ZW1zIHBheSB0aGUgcGVuYWx0eSBmb3IgYW4gdW5ldmVuCistICAgICogaGFzaCBkaXN0cmlidXRpb247IHJlYWNoaW5nIHRoZW0gaW4gYSBjaGFpbiB0cmF2ZXJzYWwgdGFrZXMgPmlkZWFsIHN0ZXBzICovCistICAgdW5zaWduZWQgbm9uaWRlYWxfaXRlbXM7CistCistICAgLyogaW5lZmZlY3RpdmUgZXhwYW5kcyBvY2N1ciB3aGVuIGEgYnVja2V0IGRvdWJsaW5nIHdhcyBwZXJmb3JtZWQsIGJ1dCAKKy0gICAgKiBhZnRlcndhcmQsIG1vcmUgdGhhbiBoYWxmIHRoZSBpdGVtcyBpbiB0aGUgaGFzaCBoYWQgbm9uaWRlYWwgY2hhaW4KKy0gICAgKiBwb3NpdGlvbnMuIElmIHRoaXMgaGFwcGVucyBvbiB0d28gY29uc2VjdXRpdmUgZXhwYW5zaW9ucyB3ZSBpbmhpYml0IGFueQorLSAgICAqIGZ1cnRoZXIgZXhwYW5zaW9uLCBhcyBpdCdzIG5vdCBoZWxwaW5nOyB0aGlzIGhhcHBlbnMgd2hlbiB0aGUgaGFzaAorLSAgICAqIGZ1bmN0aW9uIGlzbid0IGEgZ29vZCBmaXQgZm9yIHRoZSBrZXkgZG9tYWluLiBXaGVuIGV4cGFuc2lvbiBpcyBpbmhpYml0ZWQKKy0gICAgKiB0aGUgaGFzaCB3aWxsIHN0aWxsIHdvcmssIGFsYmVpdCBubyBsb25nZXIgaW4gY29uc3RhbnQgdGltZS4gKi8KKy0gICB1bnNpZ25lZCBpbmVmZl9leHBhbmRzLCBub2V4cGFuZDsKKy0KKy0gICB1aW50MzJfdCBzaWduYXR1cmU7IC8qIHVzZWQgb25seSB0byBmaW5kIGhhc2ggdGFibGVzIGluIGV4dGVybmFsIGFuYWx5c2lzICovCistI2lmZGVmIEhBU0hfQkxPT00KKy0gICB1aW50MzJfdCBibG9vbV9zaWc7IC8qIHVzZWQgb25seSB0byB0ZXN0IGJsb29tIGV4aXN0cyBpbiBleHRlcm5hbCBhbmFseXNpcyAqLworLSAgIHVpbnQ4X3QgKmJsb29tX2J2OworLSAgIGNoYXIgYmxvb21fbmJpdHM7CistI2VuZGlmCistCistfSBVVF9oYXNoX3RhYmxlOworLQorLXR5cGVkZWYgc3RydWN0IFVUX2hhc2hfaGFuZGxlIHsKKy0gICBzdHJ1Y3QgVVRfaGFzaF90YWJsZSAqdGJsOworLSAgIHZvaWQgKnByZXY7ICAgICAgICAgICAgICAgICAgICAgICAvKiBwcmV2IGVsZW1lbnQgaW4gYXBwIG9yZGVyICAgICAgKi8KKy0gICB2b2lkICpuZXh0OyAgICAgICAgICAgICAgICAgICAgICAgLyogbmV4dCBlbGVtZW50IGluIGFwcCBvcmRlciAgICAgICovCistICAgc3RydWN0IFVUX2hhc2hfaGFuZGxlICpoaF9wcmV2OyAgIC8qIHByZXZpb3VzIGhoIGluIGJ1Y2tldCBvcmRlciAgICAqLworLSAgIHN0cnVjdCBVVF9oYXNoX2hhbmRsZSAqaGhfbmV4dDsgICAvKiBuZXh0IGhoIGluIGJ1Y2tldCBvcmRlciAgICAgICAgKi8KKy0gICB2b2lkICprZXk7ICAgICAgICAgICAgICAgICAgICAgICAgLyogcHRyIHRvIGVuY2xvc2luZyBzdHJ1Y3QncyBrZXkgICovCistICAgdW5zaWduZWQga2V5bGVuOyAgICAgICAgICAgICAgICAgIC8qIGVuY2xvc2luZyBzdHJ1Y3QncyBrZXkgbGVuICAgICAqLworLSAgIHVuc2lnbmVkIGhhc2h2OyAgICAgICAgICAgICAgICAgICAvKiByZXN1bHQgb2YgaGFzaC1mY24oa2V5KSAgICAgICAgKi8KKy19IFVUX2hhc2hfaGFuZGxlOworLQorLSNlbmRpZiAvKiBVVEhBU0hfSCAqLworLS0gCisyLjE1LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy9idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkMDkxMmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy9idWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLUZyb20gZWJkN2M4ZTU0OGU5YjhlMDk2ZWU0YzM5MDE3M2RiOWE3MDFmMjYwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJydW5vIEJvdHRhenppbmkgPGJydW5vLmJvdHRhenppbmlAaW50ZWwuY29tPgotRGF0ZTogV2VkLCAyMyBNYXIgMjAxNiAxMToxODoyNiAtMDMwMAotU3ViamVjdDogW1BBVENIXSBidWlsZAotCi1EaXNhYmxlIHN0cmlwcGluZyBhbmQgYWxsb3cgZWFzaWx5IG92ZXJyaWRpbmcgcHJlZml4Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBCcnVubyBCb3R0YXp6aW5pIDxicnVuby5ib3R0YXp6aW5pQGludGVsLmNvbT4KLS0tLQotIGNsaWVudC9NYWtlZmlsZSAgfCA0ICsrLS0KLSBjb25maWcubWsgICAgICAgIHwgMiArLQotIGxpYi9NYWtlZmlsZSAgICAgfCAyICstCi0gbGliL2NwcC9NYWtlZmlsZSB8IDIgKy0KLSBzcmMvTWFrZWZpbGUgICAgIHwgNCArKy0tCi0gNSBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jbGllbnQvTWFrZWZpbGUgYi9jbGllbnQvTWFrZWZpbGUKLWluZGV4IGJkNjUzNTUuLjRlNWE2NDAgMTAwNjQ0Ci0tLS0gYS9jbGllbnQvTWFrZWZpbGUKLSsrKyBiL2NsaWVudC9NYWtlZmlsZQotQEAgLTI0LDggKzI0LDggQEAgY2xpZW50X3NoYXJlZC5vIDogY2xpZW50X3NoYXJlZC5jIGNsaWVudAotIAotIGluc3RhbGwgOiBhbGwKLSAJJChJTlNUQUxMKSAtZCAke0RFU1RESVJ9JChwcmVmaXgpL2JpbgotLQkkKElOU1RBTEwpIC1zIC0tc3RyaXAtcHJvZ3JhbT0ke0NST1NTX0NPTVBJTEV9JHtTVFJJUH0gbW9zcXVpdHRvX3B1YiAke0RFU1RESVJ9JHtwcmVmaXh9L2Jpbi9tb3NxdWl0dG9fcHViCi0tCSQoSU5TVEFMTCkgLXMgLS1zdHJpcC1wcm9ncmFtPSR7Q1JPU1NfQ09NUElMRX0ke1NUUklQfSBtb3NxdWl0dG9fc3ViICR7REVTVERJUn0ke3ByZWZpeH0vYmluL21vc3F1aXR0b19zdWIKLSsJJChJTlNUQUxMKSBtb3NxdWl0dG9fcHViICR7REVTVERJUn0ke3ByZWZpeH0vYmluL21vc3F1aXR0b19wdWIKLSsJJChJTlNUQUxMKSBtb3NxdWl0dG9fc3ViICR7REVTVERJUn0ke3ByZWZpeH0vYmluL21vc3F1aXR0b19zdWIKLSAKLSB1bmluc3RhbGwgOgotIAktcm0gLWYgJHtERVNURElSfSR7cHJlZml4fS9iaW4vbW9zcXVpdHRvX3B1YgotZGlmZiAtLWdpdCBhL2NvbmZpZy5tayBiL2NvbmZpZy5tawotaW5kZXggYzBmMTc1Zi4uMzQyN2I4MyAxMDA2NDQKLS0tLSBhL2NvbmZpZy5tawotKysrIGIvY29uZmlnLm1rCi1AQCAtMjQxLDcgKzI0MSw3IEBAIGlmZXEgKCQoV0lUSF9ET0NTKSx5ZXMpCi0gZW5kaWYKLSAKLSBJTlNUQUxMPz1pbnN0YWxsCi0tcHJlZml4PS91c3IvbG9jYWwKLStwcmVmaXg/PS91c3IKLSBtYW5kaXI9JHtwcmVmaXh9L3NoYXJlL21hbgotIGxvY2FsZWRpcj0ke3ByZWZpeH0vc2hhcmUvbG9jYWxlCi0gU1RSSVA/PXN0cmlwCi1kaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlIGIvbGliL01ha2VmaWxlCi1pbmRleCA4MjVmY2VhLi45YjdjMDVjIDEwMDY0NAotLS0tIGEvbGliL01ha2VmaWxlCi0rKysgYi9saWIvTWFrZWZpbGUKLUBAIC0yNSw3ICsyNSw3IEBAIGFsbCA6IGxpYm1vc3F1aXR0by5zby4ke1NPVkVSU0lPTn0gbGlibW8KLSAKLSBpbnN0YWxsIDogYWxsCi0gCSQoSU5TVEFMTCkgLWQgJHtERVNURElSfSQocHJlZml4KS9saWIke0xJQl9TVUZGSVh9LwotLQkkKElOU1RBTEwpIC1zIC0tc3RyaXAtcHJvZ3JhbT0ke0NST1NTX0NPTVBJTEV9JHtTVFJJUH0gbGlibW9zcXVpdHRvLnNvLiR7U09WRVJTSU9OfSAke0RFU1RESVJ9JHtwcmVmaXh9L2xpYiR7TElCX1NVRkZJWH0vbGlibW9zcXVpdHRvLnNvLiR7U09WRVJTSU9OfQotKwkkKElOU1RBTEwpIGxpYm1vc3F1aXR0by5zby4ke1NPVkVSU0lPTn0gJHtERVNURElSfSR7cHJlZml4fS9saWIke0xJQl9TVUZGSVh9L2xpYm1vc3F1aXR0by5zby4ke1NPVkVSU0lPTn0KLSAJbG4gLXNmIGxpYm1vc3F1aXR0by5zby4ke1NPVkVSU0lPTn0gJHtERVNURElSfSR7cHJlZml4fS9saWIke0xJQl9TVUZGSVh9L2xpYm1vc3F1aXR0by5zbwotIAkkKElOU1RBTEwpIC1kICR7REVTVERJUn0ke3ByZWZpeH0vaW5jbHVkZS8KLSAJJChJTlNUQUxMKSBtb3NxdWl0dG8uaCAke0RFU1RESVJ9JHtwcmVmaXh9L2luY2x1ZGUvbW9zcXVpdHRvLmgKLWRpZmYgLS1naXQgYS9saWIvY3BwL01ha2VmaWxlIGIvbGliL2NwcC9NYWtlZmlsZQotaW5kZXggOGI2MjdkMy4uY2RiMjkyMyAxMDA2NDQKLS0tLSBhL2xpYi9jcHAvTWFrZWZpbGUKLSsrKyBiL2xpYi9jcHAvTWFrZWZpbGUKLUBAIC0xMCw3ICsxMCw3IEBAIGFsbCA6IGxpYm1vc3F1aXR0b3BwLnNvLiR7U09WRVJTSU9OfQotIAotIGluc3RhbGwgOiBhbGwKLSAJJChJTlNUQUxMKSAtZCAke0RFU1RESVJ9JChwcmVmaXgpL2xpYiR7TElCX1NVRkZJWH0vCi0tCSQoSU5TVEFMTCkgLXMgLS1zdHJpcC1wcm9ncmFtPSR7Q1JPU1NfQ09NUElMRX0ke1NUUklQfSBsaWJtb3NxdWl0dG9wcC5zby4ke1NPVkVSU0lPTn0gJHtERVNURElSfSR7cHJlZml4fS9saWIke0xJQl9TVUZGSVh9L2xpYm1vc3F1aXR0b3BwLnNvLiR7U09WRVJTSU9OfQotKwkkKElOU1RBTEwpIGxpYm1vc3F1aXR0b3BwLnNvLiR7U09WRVJTSU9OfSAke0RFU1RESVJ9JHtwcmVmaXh9L2xpYiR7TElCX1NVRkZJWH0vbGlibW9zcXVpdHRvcHAuc28uJHtTT1ZFUlNJT059Ci0gCWxuIC1zZiBsaWJtb3NxdWl0dG9wcC5zby4ke1NPVkVSU0lPTn0gJHtERVNURElSfSR7cHJlZml4fS9saWIke0xJQl9TVUZGSVh9L2xpYm1vc3F1aXR0b3BwLnNvCi0gCSQoSU5TVEFMTCkgLWQgJHtERVNURElSfSR7cHJlZml4fS9pbmNsdWRlLwotIAkkKElOU1RBTEwpIG1vc3F1aXR0b3BwLmggJHtERVNURElSfSR7cHJlZml4fS9pbmNsdWRlL21vc3F1aXR0b3BwLmgKLWRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUgYi9zcmMvTWFrZWZpbGUKLWluZGV4IDJjZmI3ZDQuLjlhOTc2NDQgMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUKLSsrKyBiL3NyYy9NYWtlZmlsZQotQEAgLTEwMywxMiArMTAzLDEyIEBAIG1vc3F1aXR0b19wYXNzd2QubyA6IG1vc3F1aXR0b19wYXNzd2QuYwotIAotIGluc3RhbGwgOiBhbGwKLSAJJChJTlNUQUxMKSAtZCAke0RFU1RESVJ9JChwcmVmaXgpL3NiaW4KLS0JJChJTlNUQUxMKSAtcyAtLXN0cmlwLXByb2dyYW09JHtDUk9TU19DT01QSUxFfSR7U1RSSVB9IG1vc3F1aXR0byAke0RFU1RESVJ9JHtwcmVmaXh9L3NiaW4vbW9zcXVpdHRvCi0rCSQoSU5TVEFMTCkgbW9zcXVpdHRvICR7REVTVERJUn0ke3ByZWZpeH0vc2Jpbi9tb3NxdWl0dG8KLQkkKElOU1RBTEwpIC1kICR7REVTVERJUn0kKHByZWZpeCkvaW5jbHVkZQotIAkkKElOU1RBTEwpIG1vc3F1aXR0b19wbHVnaW4uaCAke0RFU1RESVJ9JHtwcmVmaXh9L2luY2x1ZGUvbW9zcXVpdHRvX3BsdWdpbi5oCi0gaWZlcSAoJChXSVRIX1RMUykseWVzKQotCSQoSU5TVEFMTCkgLWQgJHtERVNURElSfSQocHJlZml4KS9iaW4KLS0JJChJTlNUQUxMKSAtcyAtLXN0cmlwLXByb2dyYW09JHtDUk9TU19DT01QSUxFfSR7U1RSSVB9IG1vc3F1aXR0b19wYXNzd2QgJHtERVNURElSfSR7cHJlZml4fS9iaW4vbW9zcXVpdHRvX3Bhc3N3ZAotKwkkKElOU1RBTEwpIG1vc3F1aXR0b19wYXNzd2QgJHtERVNURElSfSR7cHJlZml4fS9iaW4vbW9zcXVpdHRvX3Bhc3N3ZAotIGVuZGlmCi0gCi0gdW5pbnN0YWxsIDoKLS0tIAotMi43LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9tb3NxdWl0dG9fMS40LjE0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9tb3NxdWl0dG9fMS40LjE0LmJiCmluZGV4IDc1NTQyNDguLjEzY2UzODEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vbW9zcXVpdHRvXzEuNC4xNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL21vc3F1aXR0b18xLjQuMTQuYmIKQEAgLTgsOSArOCwxMSBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXBsLXYxMDttZDU9OGQzODNjMzc5ZTkxZDIwYmExOGE1MmMzZTdkM2E5NzkgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbm90aWNlLmh0bWw7bWQ1PWEwMGQ2ZjlhYjU0MmJlN2JhYmMyZDhiODBkNWQyYTRjIFwKICIKK0RFUEVORFMgPSAidXRoYXNoIgogCiBTUkNfVVJJID0gImh0dHA6Ly9tb3NxdWl0dG8ub3JnL2ZpbGVzL3NvdXJjZS9tb3NxdWl0dG8tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2J1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlnLm1rLWFsbG93LXByZWZpeC1tYW5kaXItbG9jYWxlZGlyLWZyb20tZW52aXJvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXV0aGFzaC1yZW1vdmUtaW4tdHJlZS12ZXJzaW9uLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL21vc3F1aXR0by5zZXJ2aWNlIFwKICAgICAgICAgICAgZmlsZTovL21vc3F1aXR0by5pbml0IFwKICIKQEAgLTI2LDYgKzI4LDcgQEAKIFBBQ0tBR0VDT05GSUdbc3NsXSA9ICIsLG9wZW5zc2wiCiBQQUNLQUdFQ09ORklHW3V1aWRdID0gIiwsdXRpbC1saW51eCIKIEVYVFJBX09FTUFLRSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkbnMtc3J2JywgJ1dJVEhfU1JWPXllcycsICdXSVRIX1NSVj1ubycsIGQpfSBcCisgICAgICAgICAgICAgICAgU1RSSVA9L2Jpbi90cnVlIFwKICAgICAgICAgICAgICAgICBXSVRIX0RPQ1M9bm8gXAogICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NzbCcsICdXSVRIX1RMUz15ZXMgV0lUSF9UTFNfUFNLPXllcycsICdXSVRIX1RMUz1ubyBXSVRIX1RMU19QU0s9bm8nLCBkKX0gXAogICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3V1aWQnLCAnV0lUSF9VVUlEPXllcycsICdXSVRIX1VVSUQ9bm8nLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2JleC9vYmV4LWRhdGEtc2VydmVyXzAuNC42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L29iZXgvb2JleC1kYXRhLXNlcnZlcl8wLjQuNi5iYgppbmRleCBlMTBiODljLi43MTViMDIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2JleC9vYmV4LWRhdGEtc2VydmVyXzAuNC42LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vYmV4L29iZXgtZGF0YS1zZXJ2ZXJfMC40LjYuYmIKQEAgLTExLDYgKzExLDggQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICI5NjFjYTVkYjZmZTljOTcwMjRlMTMzY2M2MjAzY2M0ZCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMzk5NDY1ZGRiZDZkMDIxN2FiZWRkOTQxMWQ5ZDc0YTgyMGVmZmEwYTZhMTQyYWRjNDQ4MjY4ZDM5MjAwOTRmIgogCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L29iZXgvb3Blbm9iZXhfMS43LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2JleC9vcGVub2JleF8xLjcuMi5iYgppbmRleCAyZGI0OGYzLi4xYjU2Njg1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2JleC9vcGVub2JleF8xLjcuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2JleC9vcGVub2JleF8xLjcuMi5iYgpAQCAtMjUsNiArMjUsOCBAQAogCiAjLS1lbmFibGUtYXBwcyAtLWVuYWJsZS1zeXNsb2cKIAorQVNORUVERUQgPSAiIgorCiBkb19pbnN0YWxsX2FwcGVuZCAoKSB7CiAgICAgcm1kaXIgJHtEfSR7YmluZGlyfQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L29iZXhmdHAvb2JleGZ0cF8wLjI0LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2JleGZ0cC9vYmV4ZnRwXzAuMjQuMi5iYgppbmRleCA0ODk4NjFjLi5iNGE5MTRkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2JleGZ0cC9vYmV4ZnRwXzAuMjQuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2JleGZ0cC9vYmV4ZnRwXzAuMjQuMi5iYgpAQCAtMTYsNiArMTYsOCBAQAogCiBpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwogCitPRUNNQUtFX0dFTkVSQVRPUiA9ICJVbml4IE1ha2VmaWxlcyIKKwogUEFDS0FHRUNPTkZJRyA/PSAiIgogIyBmdXNlIHN1cHBvcnQgd2lsbCBuZWVkIG1ldGEtZmlsZXN5c3RlbXMgbGF5ZXIKIFBBQ0tBR0VDT05GSUdbZnVzZV0gPSAiLURFTkFCTEVfRlVTRT1PTiwtREVOQUJMRV9GVVNFPU9GRixmdXNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Ntc3Rvb2xzMy9zbXN0b29sczMvZml4LW1ha2VmaWxlLW92ZXJyaWRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Ntc3Rvb2xzMy9zbXN0b29sczMvZml4LW1ha2VmaWxlLW92ZXJyaWRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGExZDMzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbXN0b29sczMvc21zdG9vbHMzL2ZpeC1tYWtlZmlsZS1vdmVycmlkZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2RlYmlhbl0KLQotLS0tIGEvc3JjL01ha2VmaWxlCi0rKysgYi9zcmMvTWFrZWZpbGUKLUBAIC0zNywxNiArMzcsMTUgQEAKLSAjIFVzZSB0aGUgZm9sbG93aW5nIG9ubHkgb24gR05VL0xpbnV4IGFuZCBvbmx5IGlmIHlvdSBuZWVkIHBzIGxpc3RpbmcgbGlrZSAic21zZDogTUFJTlBST0NFU1MiIGFuZCAic21zZDogR1NNMSIKLSAjIENGTEFHUyArPSAtRCBVU0VfTElOVVhfUFNfVFJJQ0sKLSAKLS1hbGw6IHNtc2QgCi0tCi0tc21zZDogc21zZC5jIGV4dHJhcy5vIGxvY2tpbmcubyBjZmdmaWxlLm8gbG9nZ2luZy5vIGFsYXJtLm8gc21zZF9jZmcubyBjaGFyc2V0Lm8gc3RhdHMubyBibGFja2xpc3QubyB3aGl0ZWxpc3QubyBtb2RlbWluaXQubyBwZHUubwotLQotIGlmbmVxICgsJChmaW5kc3RyaW5nIFNPTEFSSVMsJChDRkxBR1MpKSkKLSBpZmVxICgsJChmaW5kc3RyaW5nIERJU0FCTEVfSU5FVF9TT0NLRVQsJChDRkxBR1MpKSkKLSBvdmVycmlkZSBMRkxBR1MgKz0gLWxzb2NrZXQgLWxuc2wKLSBlbmRpZgotIGVuZGlmCi0gCi0rYWxsOiBzbXNkIAotKwotK3Ntc2Q6IHNtc2QuYyBleHRyYXMubyBsb2NraW5nLm8gY2ZnZmlsZS5vIGxvZ2dpbmcubyBhbGFybS5vIHNtc2RfY2ZnLm8gY2hhcnNldC5vIHN0YXRzLm8gYmxhY2tsaXN0Lm8gd2hpdGVsaXN0Lm8gbW9kZW1pbml0Lm8gcGR1Lm8KLSBpZm5lcSAoLCQoZmluZHN0cmluZyBOT1NUQVRTLCQoQ0ZMQUdTKSkpCi0gCSQoQ0MpICQoQ0ZMQUdTKSAtbyAkQCAkXiAkKExGTEFHUykKLSBlbHNlIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Ntc3Rvb2xzMy9zbXN0b29sczMvc2NyaXB0c19ub19iYXNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Ntc3Rvb2xzMy9zbXN0b29sczMvc2NyaXB0c19ub19iYXNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5YjRkMWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc21zdG9vbHMzL3Ntc3Rvb2xzMy9zY3JpcHRzX25vX2Jhc2gucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorRnJvbSA4NTYwMmMzZTUzMWQzOWU4OWRjOGNlZTBjNGE1OTJmODUwMDZhMDY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQmlsbCBSYW5kbGUgPGJpbGwucmFuZGxlQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMzEgRGVjIDIwMTcgMDk6MDg6MjMgLTA4MDAKKworLS0tCisgc2NyaXB0cy9zZW5kc21zICAgICB8IDIgKy0KKyBzY3JpcHRzL3NtczJodG1sICAgIHwgMiArLQorIHNjcmlwdHMvc21zMnVuaWNvZGUgfCAyICstCisgc2NyaXB0cy91bmljb2RlMnNtcyB8IDIgKy0KKyA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NjcmlwdHMvc2VuZHNtcyBiL3NjcmlwdHMvc2VuZHNtcworaW5kZXggNTEyMDI2ZC4uYmI1Njg1NiAxMDA3NTUKKy0tLSBhL3NjcmlwdHMvc2VuZHNtcworKysrIGIvc2NyaXB0cy9zZW5kc21zCitAQCAtMSw0ICsxLDQgQEAKKy0jIS9iaW4vYmFzaAorKyMhL2Jpbi9zaAorICMgVGhpcyBzY3JpcHQgc2VuZCBhIHRleHQgc21zIGF0IHRoZSBjb21tYW5kIGxpbmUgYnkgY3JlYXRpbmcKKyAjIGEgc21zIGZpbGUgaW4gdGhlIG91dGdvaW5nIHF1ZXVlLgorIAorZGlmZiAtLWdpdCBhL3NjcmlwdHMvc21zMmh0bWwgYi9zY3JpcHRzL3NtczJodG1sCitpbmRleCBmZjI1M2UzLi45NDYxODVlIDEwMDc1NQorLS0tIGEvc2NyaXB0cy9zbXMyaHRtbAorKysrIGIvc2NyaXB0cy9zbXMyaHRtbAorQEAgLTEsNCArMSw0IEBACistIyEvYmluL2Jhc2gKKysjIS9iaW4vc2gKKyAKKyAjIFRoaXMgc2NyaXB0IGNvbnZlcnRzIGEgcmVjZWl2ZWQgc21zIGZpbGUgaW50byBhIGh0bWwgZmlsZS4gCisgCitkaWZmIC0tZ2l0IGEvc2NyaXB0cy9zbXMydW5pY29kZSBiL3NjcmlwdHMvc21zMnVuaWNvZGUKK2luZGV4IDQ2ZTI3NTYuLjI4MjZkYzEgMTAwNzU1CistLS0gYS9zY3JpcHRzL3NtczJ1bmljb2RlCisrKysgYi9zY3JpcHRzL3NtczJ1bmljb2RlCitAQCAtMSw0ICsxLDQgQEAKKy0jIS9iaW4vYmFzaAorKyMhL2Jpbi9zaAorIAorICMgVGhpcyBzY3JpcHQgY29udmVydHMgYSByZWNlaXZlZCBzbXMgZmlsZSBpbnRvIGEgcHVyZSB1bmljb2RlIHRleHQgZmlsZS4KKyAKK2RpZmYgLS1naXQgYS9zY3JpcHRzL3VuaWNvZGUyc21zIGIvc2NyaXB0cy91bmljb2RlMnNtcworaW5kZXggMmFlODZkYy4uM2ZjY2YwZCAxMDA3NTUKKy0tLSBhL3NjcmlwdHMvdW5pY29kZTJzbXMKKysrKyBiL3NjcmlwdHMvdW5pY29kZTJzbXMKK0BAIC0xLDQgKzEsNCBAQAorLSMhL2Jpbi9iYXNoCisrIyEvYmluL3NoCisgCisgIyBUaGlzIHNjcmlwdCBjb252ZXJ0cyBhIHB1cmUgdW5pY29kZSB0ZXh0IGZpbGUgaW50byBhbiBzbXMgZmlsZSBmb3Igc2VuZGluZy4KKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbXN0b29sczMvc21zdG9vbHMzL3Ntc19iaW5wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Ntc3Rvb2xzMy9zbXN0b29sczMvc21zX2JpbnBhdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFkNzlkMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbXN0b29sczMvc21zdG9vbHMzL3Ntc19iaW5wYXRoLnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK0Zyb20gOWE0YTg3MmRjYTc4Y2E5Y2I2YmRjMjI4YmU2MWY1YTRjMmQ2OGIxZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEthaSBVbHJpY2ggPGthaXVAZ214LmRlPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAxMToyMDo1MyArMDEwMAorCistLS0KKyBzY3JpcHRzL3NtczMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2NyaXB0cy9zbXMzIGIvc2NyaXB0cy9zbXMzCitpbmRleCA2Yjk5MGJmLi4wOWMwNjNiIDEwMDc1NQorLS0tIGEvc2NyaXB0cy9zbXMzCisrKysgYi9zY3JpcHRzL3NtczMKK0BAIC0yNCw5ICsyNCw5IEBAIElORk9GSUxFPSIvdmFyL3J1bi9zbXNkLndvcmtpbmciCisgIyBMb2dmaWxlIGNhbiBhbHNvIGJlIGRlZmluZWQgaW4gaGVyZToKKyBMT0dGSUxFPSIvdmFyL2xvZy9zbXNkLmxvZyIKKyAKKy1EQUVNT049L3Vzci9sb2NhbC9iaW4vc21zZAorK0RBRU1PTj0vdXNyL2Jpbi9zbXNkCisgIyBBIHByb2dyYW0gd2hpY2ggdHVybnMgcG93ZXIgb2ZmIGZvciBjb3VwbGUgb2Ygc2Vjb25kczoKKy1SRVNFVE1PREVNUz0vdXNyL2xvY2FsL2Jpbi9zbXNkX3Jlc2V0bW9kZW1zCisrUkVTRVRNT0RFTVM9L3Vzci9iaW4vc21zZF9yZXNldG1vZGVtcworIE5BTUU9c21zZAorIFBTT1BUPSItZSIKKyBFQ0hPPWVjaG8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbXN0b29sczMvc21zdG9vbHMzL3Ntc19iaW5wYXRoX2FuZF9wc29wcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbXN0b29sczMvc21zdG9vbHMzL3Ntc19iaW5wYXRoX2FuZF9wc29wcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZjYWEwOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc21zdG9vbHMzL3Ntc3Rvb2xzMy9zbXNfYmlucGF0aF9hbmRfcHNvcHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1JbmRleDogc21zdG9vbHMzL3NjcmlwdHMvc21zMwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHNtc3Rvb2xzMy5vcmlnL3NjcmlwdHMvc21zMwkyMDEwLTA1LTA0IDExOjIxOjQ0LjAwMDAwMDAwMCArMDIwMAotKysrIHNtc3Rvb2xzMy9zY3JpcHRzL3NtczMJMjAxNS0wMi0yMiAyMDowNTo1MS42MTUwNzQ0NjkgKzAxMDAKLUBAIC0yNCwxMSArMjQsMTEgQEAKLSAjIExvZ2ZpbGUgY2FuIGFsc28gYmUgZGVmaW5lZCBpbiBoZXJlOgotIExPR0ZJTEU9Ii92YXIvbG9nL3Ntc2QubG9nIgotIAotLURBRU1PTj0vdXNyL2xvY2FsL2Jpbi9zbXNkCi0rREFFTU9OPS91c3IvYmluL3Ntc2QKLSAjIEEgcHJvZ3JhbSB3aGljaCB0dXJucyBwb3dlciBvZmYgZm9yIGNvdXBsZSBvZiBzZWNvbmRzOgotLVJFU0VUTU9ERU1TPS91c3IvbG9jYWwvYmluL3Ntc2RfcmVzZXRtb2RlbXMKLStSRVNFVE1PREVNUz0vdXNyL2Jpbi9zbXNkX3Jlc2V0bW9kZW1zCi0gTkFNRT1zbXNkCi0tUFNPUFQ9Ii1lIgotK1BTT1BUPSIiCi0gRUNITz1lY2hvCi0gY2FzZSBgdW5hbWVgIGluCi0gICAqQlNEfERhcndpbikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbXN0b29sczMvc21zdG9vbHMzXzMuMS4xNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbXN0b29sczMvc21zdG9vbHMzXzMuMS4yMS5iYgpzaW1pbGFyaXR5IGluZGV4IDg0JQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc21zdG9vbHMzL3Ntc3Rvb2xzM18zLjEuMTUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbXN0b29sczMvc21zdG9vbHMzXzMuMS4yMS5iYgppbmRleCAzMTBhMTNjLi42ZTY0MTNiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc21zdG9vbHMzL3Ntc3Rvb2xzM18zLjEuMTUuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Ntc3Rvb2xzMy9zbXN0b29sczNfMy4xLjIxLmJiCkBAIC02LDE4ICs2LDE3IEBACiBIT01FUEFHRSA9ICJodHRwOi8vc21zdG9vbHMzLmtla2VrYXN2aS5jb20iCiAKIFNSQ19VUkkgPSAiaHR0cDovL3Ntc3Rvb2xzMy5rZWtla2FzdmkuY29tL3BhY2thZ2VzLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9zbXNfYmlucGF0aF9hbmRfcHNvcHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LW1ha2VmaWxlLW92ZXJyaWRlLnBhdGNoIgorICAgICAgICAgICBmaWxlOi8vc21zX2JpbnBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2NyaXB0c19ub19iYXNoLnBhdGNoIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMDI0MWVmNjBlNjQ2ZmFjMWEwNjI1NGE4NDhlNjFlZDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWQwMGZmYWVhYTMxMmE1YjRmOTY5ZjRlOTdhNjQ2MDNhODY2YmJlMTZlMzkzZWEwMmY1YmYwNTIzNDgxNGQ1OSIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YTlmMDM4ZmIzOGE0OWNjM2E0ZjhmMTRhODhmYjhhZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhMjZiYTRjMDJiMTZmNmNmMTMxNzdiZmZjYTZjOTIzMGRjNWZlZmFlYmE4ZTMwMzBjZDRlNDkwNWY2YTkyMDg0IgogCiAKIFMgPSAiJHtXT1JLRElSfS8ke0JQTn0iCiAKIEVYVFJBX09FTUFLRSArPSAiTEZMQUdTPScke0xERkxBR1N9JyIKIAotUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKIElOSVRTQ1JJUFRfTkFNRSA9ICJzbXMzIgogSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL2ZpbGVzLzAwMDEtcmVwbGFjZS1TSUdDTEQtd2l0aC1TSUdDSExELWFuZC1pbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3VtaXAvZmlsZXMvMDAwMS1yZXBsYWNlLVNJR0NMRC13aXRoLVNJR0NITEQtYW5kLWluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE5MjA1NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL2ZpbGVzLzAwMDEtcmVwbGFjZS1TSUdDTEQtd2l0aC1TSUdDSExELWFuZC1pbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gZjU2Nzc0MGNmNjQ5NzhhYzlkYjAxNGM3ODZiNmQwMjY3YjI0NGYzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDQgTWFyIDIwMTggMjI6MzA6MzAgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIHJlcGxhY2UgU0lHQ0xEIHdpdGggU0lHQ0hMRCBhbmQgaW5jbHVkZSBzeXMvdHlwZXMuaAorCitGaXhlcworbWFpbi5jOjEyOToxMDogZXJyb3I6ICdTSUdDTEQnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlvdSBtZWFuICdTSUdDSExEJz8KKyAgIHNpZ25hbChTSUdDTEQsIHNpZ19jaGlsZCk7CisgICAgICAgICAgXn5+fn5+CisgICAgICAgICAgU0lHQ0hMRAorCittYWluLmM6MTI1OjI6IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICd1bWFzaycgWy1XaW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb25dCisgIHVtYXNrKDApOworICBefn5+fgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9tYWluLmMgfCA1ICsrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9tYWluLmMgYi9zcmMvbWFpbi5jCitpbmRleCAzY2Y0MDcyLi5jZDM0MTk2IDEwMDY0NAorLS0tIGEvc3JjL21haW4uYworKysrIGIvc3JjL21haW4uYworQEAgLTMxLDYgKzMxLDcgQEAKKyAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisgI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8cHRocmVhZC5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KK0BAIC0xMjYsOSArMTI3LDkgQEAgc3RhdGljIHZvaWQgZGFlbW9uX3N0YXJ0KGludCBpZ25zaWdjbGQpCisgCisgCWlmIChpZ25zaWdjbGQpIHsKKyAjaWZkZWYgU0lHVFNUUAorLQkJc2lnbmFsKFNJR0NMRCwgc2lnX2NoaWxkKTsKKysJCXNpZ25hbChTSUdDSExELCBzaWdfY2hpbGQpOworICNlbHNlCistCQlzaWduYWwoU0lHQ0xELCBTSUdfSUdOKTsKKysJCXNpZ25hbChTSUdDSExELCBTSUdfSUdOKTsKKyAjZW5kaWYKKyAJfQorIH0KKy0tIAorMi4xNi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL2ZpbGVzLzAwMDItcmVwbGFjZS1QVEhSRUFEX01VVEVYX0ZBU1RfTlAtd2l0aC1QVEhSRUFEX01VVEVYX05PUi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL2ZpbGVzLzAwMDItcmVwbGFjZS1QVEhSRUFEX01VVEVYX0ZBU1RfTlAtd2l0aC1QVEhSRUFEX01VVEVYX05PUi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGQxMmRhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3VtaXAvZmlsZXMvMDAwMi1yZXBsYWNlLVBUSFJFQURfTVVURVhfRkFTVF9OUC13aXRoLVBUSFJFQURfTVVURVhfTk9SLnBhdGNoCkBAIC0wLDAgKzEsMTQzIEBACitGcm9tIDE5YjZjZjgwOTllMTk3NGI1ZmMzOTA4NmZjNTQxMDNiMGNiYzI2NTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCA0IE1hciAyMDE4IDIzOjAxOjI1IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSByZXBsYWNlIFBUSFJFQURfTVVURVhfRkFTVF9OUCB3aXRoIFBUSFJFQURfTVVURVhfTk9STUFMCisKK1BUSFJFQURfTVVURVhfRkFTVF9OUCBpcyBub3QgYXZhaWxhYmxlIG9uIG5vbi1wb3NpeCBzeXN0ZW1zCitlLmcuIG11c2wKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvaGEuYyAgICAgICAgfCAyICstCisgc3JjL2ljbXA2LmMgICAgIHwgMiArLQorIHNyYy9taC5jICAgICAgICB8IDIgKy0KKyBzcmMvbW4uYyAgICAgICAgfCAyICstCisgc3JjL21vdmVtZW50LmMgIHwgMiArLQorIHNyYy9tcGRpc2NfaGEuYyB8IDIgKy0KKyBzcmMvbXBkaXNjX21uLmMgfCAyICstCisgc3JjL3RxdWV1ZS5jICAgIHwgMiArLQorIHNyYy90dW5uZWxjdGwuYyB8IDIgKy0KKyA5IGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9oYS5jIGIvc3JjL2hhLmMKK2luZGV4IGZiZGNmZjAuLmIyZjgxMWUgMTAwNjQ0CistLS0gYS9zcmMvaGEuYworKysrIGIvc3JjL2hhLmMKK0BAIC0xMjQ2LDcgKzEyNDYsNyBAQCBpbnQgaGFfaW5pdCh2b2lkKQorIHsKKyAJcHRocmVhZF9tdXRleGF0dHJfdCBtYXR0cnM7CisgCXB0aHJlYWRfbXV0ZXhhdHRyX2luaXQoJm1hdHRycyk7CistCXB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJm1hdHRycywgUFRIUkVBRF9NVVRFWF9GQVNUX05QKTsKKysJcHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSgmbWF0dHJzLCBQVEhSRUFEX01VVEVYX05PUk1BTCk7CisgCWlmIChwdGhyZWFkX211dGV4X2luaXQoJmJ1X3dvcmtlcl9tdXRleCwgJm1hdHRycykgfHwKKyAJICAgIHB0aHJlYWRfY29uZF9pbml0KCZjb25kLCBOVUxMKSkKKyAJCXJldHVybiAtMTsKK2RpZmYgLS1naXQgYS9zcmMvaWNtcDYuYyBiL3NyYy9pY21wNi5jCitpbmRleCAzNjk1MTM1Li42NDYwNjM0IDEwMDY0NAorLS0tIGEvc3JjL2ljbXA2LmMKKysrKyBiL3NyYy9pY21wNi5jCitAQCAtMjQzLDcgKzI0Myw3IEBAIGludCBpY21wNl9pbml0KHZvaWQpCisgCQlyZXR1cm4gLTE7CisgCS8qIGNyZWF0ZSBJQ01QIGxpc3RlbmVyIHRocmVhZCAqLworIAlwdGhyZWFkX211dGV4YXR0cl9pbml0KCZtYXR0cnMpOworLQlwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCZtYXR0cnMsIFBUSFJFQURfTVVURVhfRkFTVF9OUCk7CisrCXB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJm1hdHRycywgUFRIUkVBRF9NVVRFWF9OT1JNQUwpOworIAlpZiAocHRocmVhZF9tdXRleF9pbml0KCZpY21wNl9zb2NrLnNlbmRfbXV0ZXgsICZtYXR0cnMpIHx8CisgCSAgICBwdGhyZWFkX3J3bG9ja19pbml0KCZoYW5kbGVyX2xvY2ssIE5VTEwpIHx8CisgCSAgICBwdGhyZWFkX2NyZWF0ZSgmaWNtcDZfbGlzdGVuZXIsIE5VTEwsIGljbXA2X2xpc3RlbiwgTlVMTCkpCitkaWZmIC0tZ2l0IGEvc3JjL21oLmMgYi9zcmMvbWguYworaW5kZXggNjBlMzQ1ZS4uNzkyOGY0YyAxMDA2NDQKKy0tLSBhL3NyYy9taC5jCisrKysgYi9zcmMvbWguYworQEAgLTIwNCw3ICsyMDQsNyBAQCBpbnQgbWhfaW5pdCh2b2lkKQorIAkJcmV0dXJuIC0xOworIAorIAlwdGhyZWFkX211dGV4YXR0cl9pbml0KCZtYXR0cnMpOworLQlwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCZtYXR0cnMsIFBUSFJFQURfTVVURVhfRkFTVF9OUCk7CisrCXB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJm1hdHRycywgUFRIUkVBRF9NVVRFWF9OT1JNQUwpOworIAlpZiAocHRocmVhZF9tdXRleF9pbml0KCZtaF9zb2NrLnNlbmRfbXV0ZXgsICZtYXR0cnMpIHx8CisgCSAgICBwdGhyZWFkX3J3bG9ja19pbml0KCZoYW5kbGVyX2xvY2ssIE5VTEwpIHx8CisgCSAgICBwdGhyZWFkX2NyZWF0ZSgmbWhfbGlzdGVuZXIsIE5VTEwsIG1oX2xpc3RlbiwgTlVMTCkpCitkaWZmIC0tZ2l0IGEvc3JjL21uLmMgYi9zcmMvbW4uYworaW5kZXggMDkyY2ZjYi4uOGY3ZjQ0OCAxMDA2NDQKKy0tLSBhL3NyYy9tbi5jCisrKysgYi9zcmMvbW4uYworQEAgLTE0NzgsNyArMTQ3OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaG9tZV9hZGRyX2luZm8gKmhhaV9jb3B5KHN0cnVjdCBob21lX2FkZHJfaW5mbyAqY29uZl9oYWkpCisgCWlmIChoYWkgIT0gTlVMTCkgeworIAkJcHRocmVhZF9tdXRleGF0dHJfdCBtYXR0cnM7CisgCQlwdGhyZWFkX211dGV4YXR0cl9pbml0KCZtYXR0cnMpOworLQkJcHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSgmbWF0dHJzLCBQVEhSRUFEX01VVEVYX0ZBU1RfTlApOworKwkJcHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSgmbWF0dHJzLCBQVEhSRUFEX01VVEVYX05PUk1BTCk7CisgCisgCQltZW1jcHkoaGFpLCBjb25mX2hhaSwgc2l6ZW9mKHN0cnVjdCBob21lX2FkZHJfaW5mbykpOworIAorZGlmZiAtLWdpdCBhL3NyYy9tb3ZlbWVudC5jIGIvc3JjL21vdmVtZW50LmMKK2luZGV4IGQ5ODU5MzcuLjY0MDA0NDggMTAwNjQ0CistLS0gYS9zcmMvbW92ZW1lbnQuYworKysrIGIvc3JjL21vdmVtZW50LmMKK0BAIC0yMDEzLDcgKzIwMTMsNyBAQCBpbnQgbWRfaW5pdCh2b2lkKQorIAlpbnQgdmFsOworIAorIAlwdGhyZWFkX211dGV4YXR0cl9pbml0KCZtYXR0cnMpOworLQlwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCZtYXR0cnMsIFBUSFJFQURfTVVURVhfRkFTVF9OUCk7CisrCXB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJm1hdHRycywgUFRIUkVBRF9NVVRFWF9OT1JNQUwpOworIAlpZiAocHRocmVhZF9tdXRleF9pbml0KCZpZmFjZV9sb2NrLCAmbWF0dHJzKSkKKyAJCXJldHVybiAtMTsKKyAKK2RpZmYgLS1naXQgYS9zcmMvbXBkaXNjX2hhLmMgYi9zcmMvbXBkaXNjX2hhLmMKK2luZGV4IDQwYmEwNWYuLmZkN2E5MGQgMTAwNjQ0CistLS0gYS9zcmMvbXBkaXNjX2hhLmMKKysrKyBiL3NyYy9tcGRpc2NfaGEuYworQEAgLTU1OSw3ICs1NTksNyBAQCBpbnQgbXBkX2hhX2luaXQodm9pZCkKKyB7CisgCXB0aHJlYWRfbXV0ZXhhdHRyX3QgbWF0dHJzOworIAlwdGhyZWFkX211dGV4YXR0cl9pbml0KCZtYXR0cnMpOworLQlwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCZtYXR0cnMsIFBUSFJFQURfTVVURVhfRkFTVF9OUCk7CisrCXB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJm1hdHRycywgUFRIUkVBRF9NVVRFWF9OT1JNQUwpOworIAlpZiAocHRocmVhZF9tdXRleF9pbml0KCZtcGFfbG9jaywgJm1hdHRycykgfHwKKyAJICAgIHB0aHJlYWRfcndsb2NrX2luaXQoJnByZWZpeF9sb2NrLCBOVUxMKSB8fAorIAkgICAgaGFzaF9pbml0KCZtcGFfaGFzaCwgRE9VQkxFX0FERFIsIE1QQV9CVUNLRVRTKSA8IDApCitkaWZmIC0tZ2l0IGEvc3JjL21wZGlzY19tbi5jIGIvc3JjL21wZGlzY19tbi5jCitpbmRleCA0ODczYmQ2Li5hZGEwMmJkIDEwMDY0NAorLS0tIGEvc3JjL21wZGlzY19tbi5jCisrKysgYi9zcmMvbXBkaXNjX21uLmMKK0BAIC0yNjcsNyArMjY3LDcgQEAgaW50IG1wZF9tbl9pbml0KHZvaWQpCisgeworIAlwdGhyZWFkX211dGV4YXR0cl90IG1hdHRyczsKKyAJcHRocmVhZF9tdXRleGF0dHJfaW5pdCgmbWF0dHJzKTsKKy0JcHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSgmbWF0dHJzLCBQVEhSRUFEX01VVEVYX0ZBU1RfTlApOworKwlwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCZtYXR0cnMsIFBUSFJFQURfTVVURVhfTk9STUFMKTsKKyAJaWYgKHB0aHJlYWRfbXV0ZXhfaW5pdCgmbXBzX2xvY2ssICZtYXR0cnMpKQorIAkJcmV0dXJuIC0xOworIAlpZiAoaGFzaF9pbml0KCZtcHNfaGFzaCwgRE9VQkxFX0FERFIsIE1QU19CVUNLRVRTKSA8IDApCitkaWZmIC0tZ2l0IGEvc3JjL3RxdWV1ZS5jIGIvc3JjL3RxdWV1ZS5jCitpbmRleCAyZjdhYTBiLi45YzE4NWI4IDEwMDY0NAorLS0tIGEvc3JjL3RxdWV1ZS5jCisrKysgYi9zcmMvdHF1ZXVlLmMKK0BAIC02NSw3ICs2NSw3IEBAIGludCB0YXNrcXVldWVfaW5pdCh2b2lkKQorIHsKKyAJcHRocmVhZF9tdXRleGF0dHJfdCBtYXR0cnM7CisgCXB0aHJlYWRfbXV0ZXhhdHRyX2luaXQoJm1hdHRycyk7CistCXB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJm1hdHRycywgUFRIUkVBRF9NVVRFWF9GQVNUX05QKTsKKysJcHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSgmbWF0dHJzLCBQVEhSRUFEX01VVEVYX05PUk1BTCk7CisgCWlmIChwdGhyZWFkX211dGV4X2luaXQoJm11dGV4LCAmbWF0dHJzKSB8fAorIAkgICAgcHRocmVhZF9jb25kX2luaXQoJmNvbmQsIE5VTEwpIHx8CisgCSAgICBwdGhyZWFkX2NyZWF0ZSgmdHFfcnVubmVyLCBOVUxMLCBydW5uZXIsIE5VTEwpKQorZGlmZiAtLWdpdCBhL3NyYy90dW5uZWxjdGwuYyBiL3NyYy90dW5uZWxjdGwuYworaW5kZXggMjNmYzIwYi4uODEzYjhlYyAxMDA2NDQKKy0tLSBhL3NyYy90dW5uZWxjdGwuYworKysrIGIvc3JjL3R1bm5lbGN0bC5jCitAQCAtNDMzLDcgKzQzMyw3IEBAIGludCB0dW5uZWxjdGxfaW5pdCh2b2lkKQorIAkJcmV0dXJuIC0xOworIAorIAlwdGhyZWFkX211dGV4YXR0cl9pbml0KCZtYXR0cnMpOworLQlwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCZtYXR0cnMsIFBUSFJFQURfTVVURVhfRkFTVF9OUCk7CisrCXB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJm1hdHRycywgUFRIUkVBRF9NVVRFWF9OT1JNQUwpOworIAlpZiAocHRocmVhZF9tdXRleF9pbml0KCZ0bmxfbG9jaywgJm1hdHRycykpCisgCQlyZXR1cm4gLTE7CisgCistLSAKKzIuMTYuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdW1pcC91bWlwXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL3VtaXBfMS4wLmJiCmluZGV4IDIxMjllMzcuLjBjMTIwYmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL3VtaXBfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL3VtaXBfMS4wLmJiCkBAIC0xNCw2ICsxNCw4IEBACiAgICAgICAgICAgIGZpbGU6Ly9taXA2ZCBcCiAgICAgICAgICAgIGZpbGU6Ly9taXA2ZC5zZXJ2aWNlIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWZvcm1hdC1zdHJpbmctdG8tZnByaW50Zi1jYWxsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcmVwbGFjZS1TSUdDTEQtd2l0aC1TSUdDSExELWFuZC1pbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItcmVwbGFjZS1QVEhSRUFEX01VVEVYX0ZBU1RfTlAtd2l0aC1QVEhSRUFEX01VVEVYX05PUi5wYXRjaCBcCiAgICAgICAgICAgICIKIFNSQ1JFViA9ICI3ZDY3MjA5Y2QxYmJhMmRkMGUxODNhMGZhMDdlZWVmMDc5NjRkZDE0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemVyb21xL2NwcHptcV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemVyb21xL2NwcHptcV9naXQuYmIKaW5kZXggYTY0NzQ1Yy4uNDkyMGJjZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3plcm9tcS9jcHB6bXFfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvbXEvY3Bwem1xX2dpdC5iYgpAQCAtNCw4ICs0LDggQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWRiMTc0ZWFmN2I1NWEzNGE3Yzg5NTUxMTk3ZjY2ZTk0IgogREVQRU5EUyA9ICJ6ZXJvbXEiCiAKLVNSQ1JFViA9ICI2OGE3YjA5Y2ZjZTAxYzRjMjc5ZmJhMmNmOTE2ODZmY2ZjNTY2ODQ4IgotUFYgPSAiNC4xLjUrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiNmFhM2FiNjg2ZTkxNmNiMGU2MmRmN2ZhN2QxMmUwYjEzYWU5ZmFlNiIKK1BWID0gIjQuMi4zK2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vemVyb21xL2NwcHptcS5naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvbXEvemVyb21xXzQuMS42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3plcm9tcS96ZXJvbXFfNC4yLjUuYmIKc2ltaWxhcml0eSBpbmRleCA3MyUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3plcm9tcS96ZXJvbXFfNC4xLjYuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvbXEvemVyb21xXzQuMi41LmJiCmluZGV4IGUxMjZmMzIuLjM1NjM0OGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvbXEvemVyb21xXzQuMS42LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvbXEvemVyb21xXzQuMi41LmJiCkBAIC02LDExICs2LDExIEBACiBQQUNLQUdFQ09ORklHID8/PSAibGlic29kaXVtIgogUEFDS0FHRUNPTkZJR1tsaWJzb2RpdW1dID0gIi0td2l0aC1saWJzb2RpdW0sIC0td2l0aG91dC1saWJzb2RpdW0sIGxpYnNvZGl1bSIKIAotU1JDX1VSSSA9ICJodHRwOi8vZ2l0aHViLmNvbS96ZXJvbXEvemVyb21xNC0xL3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS96ZXJvbXEtJHtQVn0udGFyLmd6IFwKK1NSQ19VUkkgPSAiaHR0cDovL2dpdGh1Yi5jb20vemVyb21xL2xpYnptcS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vemVyb21xLSR7UFZ9LnRhci5neiBcCiAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYzg5ZGI0ZGJjMGI5MGMzNGM5ZjQ5ODNjYmZmNmQzMjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDJlYmY2MGE0MzAxMWU3NzA3OTkzMzYzNjViY2JjZTJlYjg1NTY5ZTliNWY1MmFhMGQ4Y2MwNDY3MjQzOGEwYSIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhMWM5NWIzNDM4NDI1N2U5ODY4NDJmNGQwMDY5NTdiOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjYzkwOTBiYTM1NzEzZDU5YmIyZjdkNzk2NWY4NzcwMzZjNDljNTU1OGVhMGMyOTBiMGRjYzZmMmExN2U0ODlmIgogCiBTID0gIiR7V09SS0RJUn0vemVyb21xLSR7UFZ9IgogCkBAIC0yOCw1ICsyOCw1IEBACiAKIGRvX2luc3RhbGxfcHRlc3QgKCkgewogICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS8ubGlicy90ZXN0XyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS90ZXN0cy8ubGlicy90ZXN0XyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWJyb2tlci8wMDAxLUNvbW1lbnQtcnN0Mm1hbi1yZWxhdGVkLXN0dWZmLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtYnJva2VyLzAwMDEtQ29tbWVudC1yc3QybWFuLXJlbGF0ZWQtc3R1ZmYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEwYzQ5ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWJyb2tlci8wMDAxLUNvbW1lbnQtcnN0Mm1hbi1yZWxhdGVkLXN0dWZmLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gYTkyZmQ3ZGEzYTI2MmUyMWMwOTcwYTM5MDhlYjBiNDUwMjgxOWEwMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFlhbmcgTHl1IDx5YW5nbEBheGlzLmNvbT4KK0RhdGU6IEZyaSwgMjMgRmViIDIwMTggMTY6MzE6NDkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gQ29tbWVudCByc3QybWFuIHJlbGF0ZWQgc3R1ZmYKKworLS0tCisgbWVzb24uYnVpbGQgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggNTZkMzhlNC4uM2MzYjEwOSAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTE1LDcgKzE1LDcgQEAgYWRkX3Byb2plY3RfYXJndW1lbnRzKCctREJJTkRJUj0iJyArIGpvaW5fcGF0aHMoZ2V0X29wdGlvbigncHJlZml4JyksIGdldF9vcHRpb24KKyBjYyA9IG1lc29uLmdldF9jb21waWxlcignYycpCisgY29uZiA9IGNvbmZpZ3VyYXRpb25fZGF0YSgpCisgbW9kX3BrZ2NvbmZpZyA9IGltcG9ydCgncGtnY29uZmlnJykKKy1wcm9nX3JzdDJtYW4gPSBmaW5kX3Byb2dyYW0oJ3JzdDJtYW4nLCAncnN0Mm1hbi5weScpCisrI3Byb2dfcnN0Mm1hbiA9IGZpbmRfcHJvZ3JhbSgncnN0Mm1hbicsICdyc3QybWFuLnB5JykKKyAKKyBzdWJfY2R2YXIgPSBzdWJwcm9qZWN0KCdjLWR2YXInLCB2ZXJzaW9uOiAnPj0xJykKKyBzdWJfY2xpc3QgPSBzdWJwcm9qZWN0KCdjLWxpc3QnLCB2ZXJzaW9uOiAnPj0zJykKK0BAIC01Niw3ICs1Niw3IEBAIGVuZGlmCisgCisgY29uZi5zZXQoJ2JpbmRpcicsIGpvaW5fcGF0aHMoZ2V0X29wdGlvbigncHJlZml4JyksIGdldF9vcHRpb24oJ2JpbmRpcicpKSkKKyAKKy1zdWJkaXIoJ2RvY3MnKQorKyNzdWJkaXIoJ2RvY3MnKQorIHN1YmRpcignc3JjJykKKyAKKyBpZiB1c2VfbGF1bmNoZXIKKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtYnJva2VyLzAwMDItQ29ycmVjdC1pbmNsdWRpbmctZGlyZWN0b3J5LWZvci1jb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtYnJva2VyLzAwMDItQ29ycmVjdC1pbmNsdWRpbmctZGlyZWN0b3J5LWZvci1jb25mLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5MDlkZWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1icm9rZXIvMDAwMi1Db3JyZWN0LWluY2x1ZGluZy1kaXJlY3RvcnktZm9yLWNvbmYucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSA0Yjc5ZjYwM2I5NDg3MDk5MDZjMTA4Nzk2MDg3ZGU3YjU2NDNmNjFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWWFuZyBMeXUgPHlhbmdsQGF4aXMuY29tPgorRGF0ZTogTW9uLCAyNiBGZWIgMjAxOCAxMjo0ODozNCArMDEwMAorU3ViamVjdDogW1BBVENIXSBDb3JyZWN0IGluY2x1ZGluZyBkaXJlY3RvcnkgZm9yIGNvbmYKKworLS0tCisgc3JjL2xhdW5jaC9jb25maWcuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9sYXVuY2gvY29uZmlnLmMgYi9zcmMvbGF1bmNoL2NvbmZpZy5jCitpbmRleCA2YTY4Njk5Li41Nzk0NzFiIDEwMDY0NAorLS0tIGEvc3JjL2xhdW5jaC9jb25maWcuYworKysrIGIvc3JjL2xhdW5jaC9jb25maWcuYworQEAgLTEwMjIsNyArMTAyMiw3IEBAIHN0YXRpYyB2b2lkIGNvbmZpZ19wYXJzZXJfZW5kX2ZuKHZvaWQgKnVzZXJkYXRhLCBjb25zdCBYTUxfQ2hhciAqbmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5jdXJyZW50LT5pbmNsdWRlLnNlbGludXhfcm9vdF9yZWxhdGl2ZSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1c19zZWxpbnV4X3BvbGljeV9yb290KCkgOgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+ZmlsZS0+cGF0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+Y3VycmVudC0+Y2RhdGEpOworICAgICAgICAgICAgICAgICBpZiAocikgeworICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5lcnJvciA9IGVycm9yX3RyYWNlKHIpOworLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1icm9rZXJfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtYnJva2VyX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjJiY2NmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtYnJva2VyX2dpdC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gImRidXMgYnJva2VyIgorREVTQ1JJUFRJT04gPSAiRHJvcC1pbiByZXBsYWNlbWVudCBmb3IgZGJ1cy1kYWVtb24uIgorCitTRUNUSU9OID0gImJhc2UiCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTdiNDg2YzIzMzhkMjI1YTE0MDVkOTc5ZWQyYzE1Y2U4IgorCitERVBFTkRTID0gImRidXMgZ2xpYi0yLjAgZXhwYXQiCisKK1BWID0gIjkrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiY2NkMDZiMjg0ODkyMTgyYWY1NjllNjkwNDYyNjIzMzExNTBlMzUzNiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2J1czEvZGJ1cy1icm9rZXI7cHJvdG9jb2w9Z2l0IgorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtQ29tbWVudC1yc3QybWFuLXJlbGF0ZWQtc3R1ZmYucGF0Y2giCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMi1Db3JyZWN0LWluY2x1ZGluZy1kaXJlY3RvcnktZm9yLWNvbmYucGF0Y2giCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIHN5c3RlbWQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtCUE59LnNlcnZpY2UiCisKK0ZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IgorRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IgorCitSREVQRU5EU18ke1BOfSA9ICJkYnVzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2xpYmRidXMtYysrLTAuOS4wLzAwMDQtdXNlLVBPU0lYLXBvbGwuaC1pbnN0ZWFkLW9mLXN5cy1wb2xsLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvbGliZGJ1cy1jKystMC45LjAvMDAwNC11c2UtUE9TSVgtcG9sbC5oLWluc3RlYWQtb2Ytc3lzLXBvbGwuaC5wYXRjaAppbmRleCAwYzJjNDg3Li5iMTA4YTRjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvbGliZGJ1cy1jKystMC45LjAvMDAwNC11c2UtUE9TSVgtcG9sbC5oLWluc3RlYWQtb2Ytc3lzLXBvbGwuaC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvbGliZGJ1cy1jKystMC45LjAvMDAwNC11c2UtUE9TSVgtcG9sbC5oLWluc3RlYWQtb2Ytc3lzLXBvbGwuaC5wYXRjaApAQCAtMzMsMTAgKzMzLDEwIEBACiAgc3JjL3BpcGUuY3BwICAgICAgICAgICAgICAgICAgfCAyICstCiAgMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9zcmMvZXZlbnRsb29wLWludGVncmF0aW9uLmNwcCBiL3NyYy9ldmVudGxvb3AtaW50ZWdyYXRpb24uY3BwCi1pbmRleCA1Nzc2OTcxLi4yNzFiNTAzIDEwMDY0NAotLS0tIGEvc3JjL2V2ZW50bG9vcC1pbnRlZ3JhdGlvbi5jcHAKLSsrKyBiL3NyYy9ldmVudGxvb3AtaW50ZWdyYXRpb24uY3BwCitJbmRleDogbGliZGJ1cy1jKystMC45LjAvc3JjL2V2ZW50bG9vcC1pbnRlZ3JhdGlvbi5jcHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJkYnVzLWMrKy0wLjkuMC5vcmlnL3NyYy9ldmVudGxvb3AtaW50ZWdyYXRpb24uY3BwCisrKysgbGliZGJ1cy1jKystMC45LjAvc3JjL2V2ZW50bG9vcC1pbnRlZ3JhdGlvbi5jcHAKIEBAIC0zNiw3ICszNiw3IEBACiAgLyogU1REICovCiAgI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtNDQsMTIgKzQ0LDEyIEBACiAtI2luY2x1ZGUgPHN5cy9wb2xsLmg+CiArI2luY2x1ZGUgPHBvbGwuaD4KICAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+CiAgCi1kaWZmIC0tZ2l0IGEvc3JjL2V2ZW50bG9vcC5jcHAgYi9zcmMvZXZlbnRsb29wLmNwcAotaW5kZXggZjYyMjgxMi4uNzc5MGUxZSAxMDA2NDQKLS0tLSBhL3NyYy9ldmVudGxvb3AuY3BwCi0rKysgYi9zcmMvZXZlbnRsb29wLmNwcAorIHVzaW5nIG5hbWVzcGFjZSBEQnVzOworSW5kZXg6IGxpYmRidXMtYysrLTAuOS4wL3NyYy9ldmVudGxvb3AuY3BwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGliZGJ1cy1jKystMC45LjAub3JpZy9zcmMvZXZlbnRsb29wLmNwcAorKysrIGxpYmRidXMtYysrLTAuOS4wL3NyYy9ldmVudGxvb3AuY3BwCiBAQCAtMjgsNyArMjgsNyBAQAogICNpbmNsdWRlIDxkYnVzLWMrKy9ldmVudGxvb3AuaD4KICAjaW5jbHVkZSA8ZGJ1cy1jKysvZGVidWcuaD4KQEAgLTU5LDEwICs1OSwxMCBAQAogICNpbmNsdWRlIDxzeXMvdGltZS5oPgogIAogICNpbmNsdWRlIDxkYnVzL2RidXMuaD4KLWRpZmYgLS1naXQgYS9zcmMvcGlwZS5jcHAgYi9zcmMvcGlwZS5jcHAKLWluZGV4IDAxMjExYjMuLjQ1YzJiYTYgMTAwNjQ0Ci0tLS0gYS9zcmMvcGlwZS5jcHAKLSsrKyBiL3NyYy9waXBlLmNwcAorSW5kZXg6IGxpYmRidXMtYysrLTAuOS4wL3NyYy9waXBlLmNwcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYmRidXMtYysrLTAuOS4wLm9yaWcvc3JjL3BpcGUuY3BwCisrKysgbGliZGJ1cy1jKystMC45LjAvc3JjL3BpcGUuY3BwCiBAQCAtMzIsNyArMzIsNyBAQAogIAogIC8qIFNURCAqLwpAQCAtNzIsNiArNzIsMyBAQAogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlIDxlcnJuby5oPgogICNpbmNsdWRlIDxjYXNzZXJ0PgotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2xpYmRidXMtYysrLTAuOS4wL2ZpeC1taXNzaW5nLXVuaXN0ZC5oLWluY2x1ZGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvbGliZGJ1cy1jKystMC45LjAvZml4LW1pc3NpbmctdW5pc3RkLmgtaW5jbHVkZS5wYXRjaAppbmRleCA5MDNhNzIwLi5iZjY4NzBlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvbGliZGJ1cy1jKystMC45LjAvZml4LW1pc3NpbmctdW5pc3RkLmgtaW5jbHVkZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvbGliZGJ1cy1jKystMC45LjAvZml4LW1pc3NpbmctdW5pc3RkLmgtaW5jbHVkZS5wYXRjaApAQCAtMjQsMTcgKzI0LDE1IEBACiAgaW5jbHVkZS9kYnVzLWMrKy9ldmVudGxvb3AtaW50ZWdyYXRpb24uaCB8ICAgIDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9kYnVzLWMrKy9ldmVudGxvb3AtaW50ZWdyYXRpb24uaCBiL2luY2x1ZGUvZGJ1cy1jKysvZXZlbnRsb29wLWludGVncmF0aW9uLmgKLWluZGV4IDUxMDgzNDAuLjFiNTZhYjUgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2RidXMtYysrL2V2ZW50bG9vcC1pbnRlZ3JhdGlvbi5oCi0rKysgYi9pbmNsdWRlL2RidXMtYysrL2V2ZW50bG9vcC1pbnRlZ3JhdGlvbi5oCi1AQCAtMjcsNiArMjcsNyBAQAorSW5kZXg6IGxpYmRidXMtYysrLTAuOS4wL2luY2x1ZGUvZGJ1cy1jKysvZXZlbnRsb29wLWludGVncmF0aW9uLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJkYnVzLWMrKy0wLjkuMC5vcmlnL2luY2x1ZGUvZGJ1cy1jKysvZXZlbnRsb29wLWludGVncmF0aW9uLmgKKysrKyBsaWJkYnVzLWMrKy0wLjkuMC9pbmNsdWRlL2RidXMtYysrL2V2ZW50bG9vcC1pbnRlZ3JhdGlvbi5oCitAQCAtMjYsNiArMjYsNyBAQAorICNkZWZpbmUgX19EQlVTWFhfRVZFTlRMT09QX0lOVEVHUkFUSU9OX0gKICAKLSAjaW5jbHVkZSA8Y3N0cmluZz4KICAjaW5jbHVkZSA8ZXJybm8uaD4KICsjaW5jbHVkZSA8dW5pc3RkLmg+CiAgI2luY2x1ZGUgImFwaS5oIgogICNpbmNsdWRlICJkaXNwYXRjaGVyLmgiCiAgI2luY2x1ZGUgInV0aWwuaCIKLS0tIAotMS43LjkuNwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9lbGwvZWxsLzAwMDEtZWxsLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZWxsL2VsbC8wMDAxLWVsbC1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE3MmE5MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZWxsL2VsbC8wMDAxLWVsbC1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSA0ZjhjNjg3NTdiMDVkMTIzOTJjZDFhOGFlZDE3NGNiOGU1NmY4MGUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KK0RhdGU6IFRodSwgNSBBcHIgMjAxOCAxNzoxOTo0NCArMDMwMAorU3ViamVjdDogW1BBVENIXSBlbGw6IGZpeCBidWlsZCB3aXRoIG11c2wgbGliYworCittdXNsIGxpYmMgZG9lc24ndCBpbXBsZW1lbnQgVEVNUF9GQUlMVVJFX1JFVFJZLiBVc2UgdGhlCitURU1QX0ZBSUxVUkVfUkVUUlkgZnJvbSBnbGliYyB0byBmaXggYnVpbGQuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2xpc3RzLjAxLm9yZy9waXBlcm1haWwvZWxsLzIwMTgtQXByaWwvMDAxMjA5Lmh0bWxdCisKK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorLS0tCisgZWxsL2RidXMuaCB8IDEwICsrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZWxsL2RidXMuaCBiL2VsbC9kYnVzLmgKK2luZGV4IGE3YzA4ZDIuLjNmZjVlMGYgMTAwNjQ0CistLS0gYS9lbGwvZGJ1cy5oCisrKysgYi9lbGwvZGJ1cy5oCitAQCAtMjgsNiArMjgsMTYgQEAKKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisgI2luY2x1ZGUgPHN0ZGFyZy5oPgorIAorKy8qIHRha2VuIGZyb20gZ2xpYmMgdW5pc3RkLmggZm9yIG11c2wgc3VwcG9ydCAqLworKyNpZm5kZWYgVEVNUF9GQUlMVVJFX1JFVFJZCisrI2RlZmluZSBURU1QX0ZBSUxVUkVfUkVUUlkoZXhwcmVzc2lvbikgICAgICAgICAgICAgXAorKyAgKF9fZXh0ZW5zaW9uX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgKHsgbG9uZyBpbnQgX19yZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgIGRvIF9fcmVzdWx0ID0gKGxvbmcgaW50KSAoZXhwcmVzc2lvbik7ICAgICAgXAorKyAgICAgICB3aGlsZSAoX19yZXN1bHQgPT0gLTFMICYmIGVycm5vID09IEVJTlRSKTsgIFwKKysgICAgICAgX19yZXN1bHQ7IH0pKQorKyNlbmRpZgorKworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgorLS0gCisyLjQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2VsbC9lbGxfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9lbGwvZWxsXzAuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDY0JQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2VsbC9lbGxfZ2l0LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2VsbC9lbGxfMC40LmJiCmluZGV4IDEwZGY2ZTEuLjE1MjRiZDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZWxsL2VsbF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9lbGwvZWxsXzAuNC5iYgpAQCAtNyw4ICs3LDEwIEBACiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKLVNSQ1JFViA9ICI3YjdjMTVjMmU1Y2FmZjg4ZmM0NWU3YThiODc0YTQ3MTk2YTBlZGRkIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpYnMvZWxsL2VsbC5naXQiCitTUkNSRVYgPSAiYjRhZWEwNmZhYmIyYWYxYWYwMWY4NjFmOGYzOTRjNzU5NTBiNmQ0NyIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saWJzL2VsbC9lbGwuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZWxsLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaCBcCisgICAgICAgICAgIgogCiBkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CiAgICAgbWtkaXIgJHtTfS9idWlsZC1hdXgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYm1tLzAwMDEtR2xpYi1UaHJlYWRzLVByaXZhdGUtRml4LWdvYmoucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWJtbS8wMDAxLUdsaWItVGhyZWFkcy1Qcml2YXRlLUZpeC1nb2JqLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4OTkwMjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWJtbS8wMDAxLUdsaWItVGhyZWFkcy1Qcml2YXRlLUZpeC1nb2JqLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gODM4ZmU4NGMyZGRjYzlhZjUxYzM0Zjc1MWRlZmJmM2RkMGJhOGEwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtqZWxsIEFobHN0ZWR0IDxramVsbGFobHN0ZWR0QGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjAgRGVjIDIwMTcgMjA6MDA6MzIgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gR2xpYjo6VGhyZWFkczo6UHJpdmF0ZTogRml4IGdvYmooKQorCitCdWcgNzkxNzExCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9HTk9NRS9nbGlibW0vY29tbWl0LzM3ZDU3YWU5NTcyYjdkNzRhYTM4NWEzMDMxM2VjZWFlN2YyZDNmY2VdCisgZ2xpYi9nbGlibW0vdGhyZWFkcy5oIHwgMiArLQorIGdsaWIvc3JjL3RocmVhZHMuaGcgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dsaWIvZ2xpYm1tL3RocmVhZHMuaCBiL2dsaWIvZ2xpYm1tL3RocmVhZHMuaAoraW5kZXggZjdlMmI4MmEuLjJjMGNiZThjIDEwMDY0NAorLS0tIGEvZ2xpYi9nbGlibW0vdGhyZWFkcy5oCisrKysgYi9nbGliL2dsaWJtbS90aHJlYWRzLmgKK0BAIC02NTcsNyArNjU3LDcgQEAgcHVibGljOgorICAgICovCisgICBpbmxpbmUgdm9pZCByZXBsYWNlKFQqIGRhdGEpOworIAorLSAgR1ByaXZhdGUqIGdvYmooKSB7IHJldHVybiBnb2JqZWN0XzsgfQorKyAgR1ByaXZhdGUqIGdvYmooKSB7IHJldHVybiAmZ29iamVjdF87IH0KKyAKKyBwcml2YXRlOgorICAgR1ByaXZhdGUgZ29iamVjdF87CitkaWZmIC0tZ2l0IGEvZ2xpYi9zcmMvdGhyZWFkcy5oZyBiL2dsaWIvc3JjL3RocmVhZHMuaGcKK2luZGV4IDg2ZDdhMTdiLi5jODJhNjEzMCAxMDA2NDQKKy0tLSBhL2dsaWIvc3JjL3RocmVhZHMuaGcKKysrKyBiL2dsaWIvc3JjL3RocmVhZHMuaGcKK0BAIC02MjgsNyArNjI4LDcgQEAgcHVibGljOgorICAgICovCisgICBpbmxpbmUgdm9pZCByZXBsYWNlKFQqIGRhdGEpOworIAorLSAgR1ByaXZhdGUqIGdvYmooKSB7IHJldHVybiBnb2JqZWN0XzsgfQorKyAgR1ByaXZhdGUqIGdvYmooKSB7IHJldHVybiAmZ29iamVjdF87IH0KKyAKKyBwcml2YXRlOgorICAgR1ByaXZhdGUgZ29iamVjdF87CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWJtbS9yZW1vdmUtZXhhbXBsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWJtbS9yZW1vdmUtZXhhbXBsZXMucGF0Y2gKaW5kZXggYTU5NDRjMi4uZDMyZmU3OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGlibW0vcmVtb3ZlLWV4YW1wbGVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYm1tL3JlbW92ZS1leGFtcGxlcy5wYXRjaApAQCAtMSw3ICsxLDE2IEBACi1JbmRleDogZ2xpYm1tLTIuMjIuMS9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdsaWJtbS0yLjIyLjEub3JpZy9NYWtlZmlsZS5hbQotKysrIGdsaWJtbS0yLjIyLjEvTWFrZWZpbGUuYW0KK0Zyb20gZjQ4YTY5ZmQxMWIyZWRhNmM0M2ZmMDQ2YzIwMmNiYzRkY2Q0ZTkyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+CitEYXRlOiBUdWUsIDEyIEp1bCAyMDExIDExOjQ2OjM3ICswMjAwCisKKy0tLQorIE1ha2VmaWxlLmFtICB8IDcgKy0tLS0tLQorIGNvbmZpZ3VyZS5hYyB8IDEgLQorIDIgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCBhMGRmOGFmLi5jM2Q1ZTA2IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCiBAQCAtMjMsMTIgKzIzLDcgQEAgc3JjX3N1YmRpcnMgPSBnbGliL3NyYyBnaW8vc3JjCiAgZWxzZQogIHNyY19zdWJkaXJzID0KQEAgLTE2LDE1ICsyNSwxNSBAQAogIAogIGdsaWJtbV9pbmNsdWRlZGlyID0gJChpbmNsdWRlZGlyKS8kKEdMSUJNTV9NT0RVTEVfTkFNRSkKICBnbGlibW1faW5jbHVkZV9IRUFERVJTID0gZ2xpYi9nbGlibW0uaAotSW5kZXg6IGdsaWJtbS0yLjIyLjEvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2xpYm1tLTIuMjIuMS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGdsaWJtbS0yLjIyLjEvY29uZmlndXJlLmFjCi1AQCAtMTM2LDcgKzEzNiw2IEBAIEFDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGUKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGMyMGU3NzguLjc0MjAzYmUgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE2Niw3ICsxNjYsNiBAQCBBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlCiAgICAgICAgICAgICAgICAgICBnaW8vc3JjL01ha2VmaWxlCiAgICAgICAgICAgICAgICAgICBnaW8vZ2lvbW0vTWFrZWZpbGUKICAgICAgICAgICAgICAgICAgIHRlc3RzL01ha2VmaWxlCiAtICAgICAgICAgICAgICAgICBleGFtcGxlcy9NYWtlZmlsZQogICAgICAgICAgICAgICAgICAgZG9jcy9NYWtlZmlsZQogICAgICAgICAgICAgICAgICAgZG9jcy9yZWZlcmVuY2UvRG94eWZpbGUKLSAgICAgICAgICAgICAgICAgIE1TVkNfTmV0MjAwNS9nbGlibW0vZ2xpYm1tLnJjCisgICAgICAgICAgICAgICAgICBNU1ZDX05ldDIwMTMvZ2xpYm1tL2dsaWJtbS5yYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGlibW1fMi41MC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGlibW1fMi41NC4xLmJiCnNpbWlsYXJpdHkgaW5kZXggODAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYm1tXzIuNTAuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGlibW1fMi41NC4xLmJiCmluZGV4IDljYzU1OGYuLjQ3MDY0MzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYm1tXzIuNTAuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWJtbV8yLjU0LjEuYmIKQEAgLTIsNyArMiw3IEBACiBIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmd0a21tLm9yZy8iCiBTRUNUSU9OID0gImxpYnMiCiBMSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kODA0NWYzYjhmOTI5YzFjYjI5YTFlM2ZkNzM3YjQ5OSBcCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00MmRmZmZlYmM1NmZlYzc1MjdhYWM1M2I3YTg5ZDFkOCBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLnRvb2xzO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKIAogREVQRU5EUyA9ICJtbS1jb21tb24gZ2xpYi0yLjAgbGlic2lnYysrLTIuMCBnbGliLTIuMC1uYXRpdmUiCkBAIC0xMyw5ICsxMywxMCBAQAogU1JDX1VSSSA9ICIgXAogICAgIGZ0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvZ2xpYm1tLyR7U0hSVF9WRVJ9L2dsaWJtbS0ke1BWfS50YXIueHogXAogICAgIGZpbGU6Ly9yZW1vdmUtZXhhbXBsZXMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLUdsaWItVGhyZWFkcy1Qcml2YXRlLUZpeC1nb2JqLnBhdGNoIFwKICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhNWI5MTVkYzQyZmM2Mjk4M2ZhNzhjYTg0ODZmNDM5MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZmQ4NTA1MWRhOWNiNDAyY2M4MzQ4Y2VjNzJkZmU0ZDc5ZjkzNDVkZjRhMWRiZjY4NzAzYTRkZWQ0NTg0NmE0IgorU1JDX1VSSVttZDVzdW1dID0gImRlZTVlYmUzMDlmNTk3NmMzZGFjZmNmNWM0M2EwNjJiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdjYzI4YzczMmIwNGQ3MGVkMzRmMGM5MjM1NDMxMjkwODNjZmI5MDU4MGVhNGEyYjRiZTViMzg4MDJiZjZhNGEiCiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vZ2xpYm1tLTIuNApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9tbS1jb21tb24vbW0tY29tbW9uXzAuOS4xMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbW0tY29tbW9uL21tLWNvbW1vbl8wLjkuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5OWViOGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9tbS1jb21tb24vbW0tY29tbW9uXzAuOS4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLWluaGVyaXQgZ25vbWViYXNlCi0KLUdOT01FX0NPTVBSRVNTX1RZUEU9Inh6IgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI0OWRjNDdhZjhjODljZTViM2M3NjgzMDZiOWEwZjkyMiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjE2YzBlMmJjMTk2YjY3ZmJjMTQ1ZWRhZWNiNWRiZTU4MTgzODY1MDRmZTU3MDNkZTI3MDAyZDc3MTQwZmEyMTciCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbW0tY29tbW9uL21tLWNvbW1vbl8wLjkuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL21tLWNvbW1vbi9tbS1jb21tb25fMC45LjExLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5MWNhYTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL21tLWNvbW1vbi9tbS1jb21tb25fMC45LjExLmJiCkBAIC0wLDAgKzEsOSBAQAoraW5oZXJpdCBnbm9tZWJhc2UKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZDZmMmE0MzU4OTQ4MGQyMzE1NjcyZGEwYjU4MzliNTYiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIyMGQxZTc0NjZjYTRjODNjOTJlMjlmOWU4ZGZjYzhlNTcyMWZkZjEzMzdmNTMxNTdiZWQ5N2JlM2I3M2IzMmE4IgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9wbHltb3V0aC9maWxlcy8wMDAxLU1ha2UtZnVsbC1wYXRoLXRvLXN5c3RlbWQtdHR5LWFzay1wYXNzd29yZC1hZ2VudC1jb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BseW1vdXRoL2ZpbGVzLzAwMDEtTWFrZS1mdWxsLXBhdGgtdG8tc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50LWNvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTg2Yzc2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9wbHltb3V0aC9maWxlcy8wMDAxLU1ha2UtZnVsbC1wYXRoLXRvLXN5c3RlbWQtdHR5LWFzay1wYXNzd29yZC1hZ2VudC1jb24ucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSA3NDZjNjkwZjU3YjUyZTZmZTIxY2MyYTExYjViYjcxZDI1YWYzMTI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTMgRGVjIDIwMTcgMTY6MTU6NTcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZSBmdWxsIHBhdGggdG8gc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50IGNvbmZpZ3VyYWJsZQorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgNSArKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYWFkNjczZS4uNmIzNzE3OSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNDgsNyArNDgsMTAgQEAgUExZTU9VVEhfTElCUz0iLWxtIC1scnQgLWxkbCIKKyBBQ19TVUJTVChQTFlNT1VUSF9DRkxBR1MpCisgQUNfU1VCU1QoUExZTU9VVEhfTElCUykKKyAKKy1BQ19QQVRIX1BST0coW1NZU1RFTURfQVNLX1BBU1NXT1JEX0FHRU5UXSwgW3N5c3RlbWQtdHR5LWFzay1wYXNzd29yZC1hZ2VudF0pCisrQUNfQVJHX1dJVEgoc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50LCBBU19IRUxQX1NUUklORyhbLS13aXRoLXN5c3RlbWQtdHR5LWFzay1wYXNzd29yZC1hZ2VudF0sW3BhdGggb2Ygc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50XSksU1lTVEVNRF9BU0tfUEFTU1dPUkRfQUdFTlQ9JHt3aXRodmFsfSxTWVNURU1EX0FTS19QQVNTV09SRF9BR0VOVD0vYmluL3N5c3RlbWQtdHR5LWFzay1wYXNzd29yZC1hZ2VudCkKKytBQ19TVUJTVChTWVNURU1EX0FTS19QQVNTV09SRF9BR0VOVCkKKysKKysjIGNoZWNrZWQ6IFVERVZBRE0gaXMgbm90IHVzZWQKKyBBQ19QQVRIX1BST0coW1VERVZBRE1dLCBbdWRldmFkbV0pCisgCisgQUNfQVJHX0VOQUJMRShwYW5nbywgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXBhbmdvXSxbZW5hYmxlIGJ1aWxkaW5nIHdpdGggcGFuZ28sIGRpc2FibGVkIHRoZXJlIGlzIG5vIGVuY3J5cHRpb24gcHJvbXB0c10pLGVuYWJsZV9wYW5nbz0kZW5hYmxldmFsLGVuYWJsZV9wYW5nbz15ZXMpCistLSAKKzIuOS41CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGx5bW91dGgvcGx5bW91dGhfMC45LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BseW1vdXRoL3BseW1vdXRoXzAuOS4yLmJiCmluZGV4IDYxNjNjZmYuLjdlOGQ2ZTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGx5bW91dGgvcGx5bW91dGhfMC45LjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9wbHltb3V0aC9wbHltb3V0aF8wLjkuMi5iYgpAQCAtMTYsMTMgKzE2LDE2IEBACiBQUk9WSURFUyA9ICJ2aXJ0dWFsL3BzcGxhc2giCiBSUFJPVklERVNfJHtQTn0gPSAidmlydHVhbC1wc3BsYXNoIHZpcnR1YWwtcHNwbGFzaC1zdXBwb3J0IgogCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL3BseW1vdXRoL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIuYnoyIgorU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL3BseW1vdXRoL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICBmaWxlOi8vMDAwMS1NYWtlLWZ1bGwtcGF0aC10by1zeXN0ZW1kLXR0eS1hc2stcGFzc3dvcmQtYWdlbnQtY29uLnBhdGNoIFwKKyIKIFNSQ19VUklbbWQ1c3VtXSA9ICJmZjQyMDk5NGRlYjdlYTIwM2RmNjc4ZGY5MmU3YWI3ZCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIyZjBjZTgyMDQyY2Y5YzdlYWRkMjUxN2ExZjc0YzhhODVmYTg2OTk3ODFkOWYyOTRhMDZlYWRlMjlmYmVkNTdmIgogCiBFWFRSQV9PRUNPTkYgKz0gIiAtLWVuYWJsZS1zaGFyZWQgLS1kaXNhYmxlLXN0YXRpYyAtLWRpc2FibGUtZ3RrIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIFwKICAgICAtLXdpdGgtbG9nbz0ke0xPR099IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS1lbmFibGUtc3lzdGVtZC1pbnRlZ3JhdGlvbiAtLXdpdGgtc3lzdGVtLXJvb3QtaW5zdGFsbCcsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICctLWVuYWJsZS1zeXN0ZW1kLWludGVncmF0aW9uIC0td2l0aC1zeXN0ZW0tcm9vdC1pbnN0YWxsIC0td2l0aC1zeXN0ZW1kLXR0eS1hc2stcGFzc3dvcmQtYWdlbnQ9JHtiYXNlX2JpbmRpcn0vc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50JywgJycsIGQpfSBcCiAiCiAKIFBBQ0tBR0VDT05GSUcgPz89ICJwYW5nbyBpbml0cmQiCkBAIC0zMSw3ICszNCw3IEBACiAKIFBBQ0tBR0VDT05GSUdbZHJtXSA9ICItLWVuYWJsZS1kcm0sLS1kaXNhYmxlLWRybSxsaWJkcm0iCiBQQUNLQUdFQ09ORklHW3BhbmdvXSA9ICItLWVuYWJsZS1wYW5nbywtLWRpc2FibGUtcGFuZ28scGFuZ28iCi1QQUNLQUdFQ09ORklHW2d0a10gPSAiLS1lbmFibGUtZ3RrLC0tZGlzYWJsZS1ndGssZ3RrKyIKK1BBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLWVuYWJsZS1ndGssLS1kaXNhYmxlLWd0ayxndGsrMyIKIFBBQ0tBR0VDT05GSUdbaW5pdHJkXSA9ICIsLCwiCiAKIExPR08gPz89ICIke2RhdGFkaXJ9L3BseW1vdXRoL2JpemNvbS5wbmciCkBAIC0zOSw5ICs0Miw2IEBACiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSA2NDQgJHtCfS9zeXN0ZW1kLXVuaXRzLyouc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gNjQ0ICR7Qn0vc3lzdGVtZC11bml0cy9zeXN0ZW1kLWFzay1wYXNzd29yZC1wbHltb3V0aC5wYXRoICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCiAgICAgIyBSZW1vdmUgL3Zhci9ydW4gZnJvbSBwYWNrYWdlIGFzIHBseW1vdXRoIHdpbGwgcG9wdWxhdGUgaXQgb24gc3RhcnR1cAogICAgIHJtIC1mciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3RveWJveC90b3lib3hfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS90b3lib3gvdG95Ym94XzAuNy41LmJiCnNpbWlsYXJpdHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvdG95Ym94L3RveWJveF9naXQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvdG95Ym94L3RveWJveF8wLjcuNS5iYgppbmRleCAwOGY5NzE1Li4zNDdjMjg1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3RveWJveC90b3lib3hfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvdG95Ym94L3RveWJveF8wLjcuNS5iYgpAQCAtNSwxMyArNSw5IEBACiBMSUNFTlNFID0gIkJTRC0wLUNsYXVzZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWYwYjhiM2RkNjQzMWJjYWEyNDVkYTBhMDhiZDBkNTExIgogCi1QViA9ICIwLjcuNCtnaXQke1NSQ1BWfSIKLQotU1JDUkVWID0gIjc4Mjg5MjAzMDMxYWZjMjM1ODUwMzVjMzYyYmVlYzEwZGI1NDk1OGQiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGFuZGxleS90b3lib3g7cHJvdG9jb2w9aHR0cHMgXAotIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDX1VSSSA9ICJodHRwOi8vd3d3LmxhbmRsZXkubmV0L3RveWJveC9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhOGJiNTAyYTFiZTk0MWYwNmRkMjY0NGZmZjI1ZjU0NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzYWRhNDUwYWMxZWFiMWRmYzM1MmZlZTkxNWVhNjEyOWI5YTQzNDljMTg4NWYxMzk0YjYxYmQyZDg5YTQ2YzA0IgogCiBTRUNUSU9OID0gImJhc2UiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3J5cHRzZXR1cC9jcnlwdHNldHVwXzEuNy40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2NyeXB0c2V0dXAvY3J5cHRzZXR1cF8xLjcuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcnlwdHNldHVwL2NyeXB0c2V0dXBfMS43LjQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9jcnlwdHNldHVwL2NyeXB0c2V0dXBfMS43LjQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZW5naW5lLXBrY3MxMS9lbmdpbmUtcGtjczExXzAuMi4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2VuZ2luZS1wa2NzMTEvZW5naW5lLXBrY3MxMV8wLjIuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VuZ2luZS1wa2NzMTEvZW5naW5lLXBrY3MxMV8wLjIuMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2VuZ2luZS1wa2NzMTEvZW5naW5lLXBrY3MxMV8wLjIuMi5iYgppbmRleCAwNDdmNzAxLi5iYzc5ZjM1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VuZ2luZS1wa2NzMTEvZW5naW5lLXBrY3MxMV8wLjIuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vZW5naW5lLXBrY3MxMS9lbmdpbmUtcGtjczExXzAuMi4yLmJiCkBAIC02LDcgKzYsNyBAQAogSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL09wZW5TQy9lbmdpbmVfcGtjczExIgogU0VDVElPTiA9ICJEZXZlbG9wbWVudC9MaWJyYXJpZXMiCiBMSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9lbmdpbmVfcGtjczExLmg7c3RhcnRsaW5lPTE7ZW5kbGluZT0yNjttZDU9OTczYTE5ZjhhNjEwNWRlMDQ3ZjJhZGZiYmZjMDRjMzMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvZW5naW5lX3BrY3MxMS5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjY7bWQ1PTk3M2ExOWY4YTYxMDVkZTA0N2YyYWRmYmJmYzA0YzMzIgogREVQRU5EUyA9ICJvcGVuc3NsIGxpYnAxMSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL09wZW5TQy9lbmdpbmVfcGtjczExLmdpdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWNyeXB0L2xpYm1jcnlwdF8yLjUuOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9saWJtY3J5cHQvbGlibWNyeXB0XzIuNS44LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm1jcnlwdC9saWJtY3J5cHRfMi41LjguYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9saWJtY3J5cHQvbGlibWNyeXB0XzIuNS44LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNvZGl1bS9saWJzb2RpdW1fMS4wLjExLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2xpYnNvZGl1bS9saWJzb2RpdW1fMS4wLjExLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNvZGl1bS9saWJzb2RpdW1fMS4wLjExLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vbGlic29kaXVtL2xpYnNvZGl1bV8xLjAuMTEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGtjczExLWhlbHBlci9wa2NzMTEtaGVscGVyXzEuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vcGtjczExLWhlbHBlci9wa2NzMTEtaGVscGVyXzEuMTEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGtjczExLWhlbHBlci9wa2NzMTEtaGVscGVyXzEuMTEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9wa2NzMTEtaGVscGVyL3BrY3MxMS1oZWxwZXJfMS4xMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGV2ZWxkYi9sZXZlbGRiLzAwMDEtTWFrZWZpbGUtRml4LXBhcmFsbGVsLWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL2xldmVsZGIvbGV2ZWxkYi8wMDAxLU1ha2VmaWxlLUZpeC1wYXJhbGxlbC1idWlsZC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGV2ZWxkYi9sZXZlbGRiLzAwMDEtTWFrZWZpbGUtRml4LXBhcmFsbGVsLWJ1aWxkLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbGV2ZWxkYi9sZXZlbGRiLzAwMDEtTWFrZWZpbGUtRml4LXBhcmFsbGVsLWJ1aWxkLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sZXZlbGRiL2xldmVsZGIvMDAwMS1idWlsZF9kZXRlY3RfcGxhdGZvcm0tQ2hlY2stZm9yLV9fU1NFNF8yX18ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbGV2ZWxkYi9sZXZlbGRiLzAwMDEtYnVpbGRfZGV0ZWN0X3BsYXRmb3JtLUNoZWNrLWZvci1fX1NTRTRfMl9fLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sZXZlbGRiL2xldmVsZGIvMDAwMS1idWlsZF9kZXRlY3RfcGxhdGZvcm0tQ2hlY2stZm9yLV9fU1NFNF8yX18ucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9sZXZlbGRiL2xldmVsZGIvMDAwMS1idWlsZF9kZXRlY3RfcGxhdGZvcm0tQ2hlY2stZm9yLV9fU1NFNF8yX18ucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xldmVsZGIvbGV2ZWxkYi8wMDAyLW1ha2VmaWxlLWJ1aWxkLVNIQVJFRF9NRU1FTlZMSUIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbGV2ZWxkYi9sZXZlbGRiLzAwMDItbWFrZWZpbGUtYnVpbGQtU0hBUkVEX01FTUVOVkxJQi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGV2ZWxkYi9sZXZlbGRiLzAwMDItbWFrZWZpbGUtYnVpbGQtU0hBUkVEX01FTUVOVkxJQi5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL2xldmVsZGIvbGV2ZWxkYi8wMDAyLW1ha2VmaWxlLWJ1aWxkLVNIQVJFRF9NRU1FTlZMSUIucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xldmVsZGIvbGV2ZWxkYl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbGV2ZWxkYi9sZXZlbGRiX2dpdC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGV2ZWxkYi9sZXZlbGRiX2dpdC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL2xldmVsZGIvbGV2ZWxkYl9naXQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZGJpL2xpYmRiaS5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbGliZGJpL2xpYmRiaS5pbmMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZGJpL2xpYmRiaS5pbmMKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9saWJkYmkvbGliZGJpLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJkYmkvbGliZGJpXzAuOS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL2xpYmRiaS9saWJkYmlfMC45LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZGJpL2xpYmRiaV8wLjkuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL2xpYmRiaS9saWJkYmlfMC45LjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtSW50ZWxSREZQTWF0aExpYjIwVTEtQ2hlY2stZm9yLV9fREVGSU5FRF93Y2hhcl90LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLUludGVsUkRGUE1hdGhMaWIyMFUxLUNoZWNrLWZvci1fX0RFRklORURfd2NoYXJfdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMS1JbnRlbFJERlBNYXRoTGliMjBVMS1DaGVjay1mb3ItX19ERUZJTkVEX3djaGFyX3QucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1JbnRlbFJERlBNYXRoTGliMjBVMS1DaGVjay1mb3ItX19ERUZJTkVEX3djaGFyX3QucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtVGVsbC1zY29ucy10by11c2UtYnVpbGQtc2V0dGluZ3MtZnJvbS1lbnZpcm9ubWVudC12YS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1UZWxsLXNjb25zLXRvLXVzZS1idWlsZC1zZXR0aW5ncy1mcm9tLWVudmlyb25tZW50LXZhLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggNjQlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtVGVsbC1zY29ucy10by11c2UtYnVpbGQtc2V0dGluZ3MtZnJvbS1lbnZpcm9ubWVudC12YS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVRlbGwtc2NvbnMtdG8tdXNlLWJ1aWxkLXNldHRpbmdzLWZyb20tZW52aXJvbm1lbnQtdmEucGF0Y2gKaW5kZXggMDlkNDlkMi4uYWEwMWU5NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMS1UZWxsLXNjb25zLXRvLXVzZS1idWlsZC1zZXR0aW5ncy1mcm9tLWVudmlyb25tZW50LXZhLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1UZWxsLXNjb25zLXRvLXVzZS1idWlsZC1zZXR0aW5ncy1mcm9tLWVudmlyb25tZW50LXZhLnBhdGNoCkBAIC05LDExICs5LDExIEBACiAgc3JjL21vbmdvL3V0aWwvU0NvbnNjcmlwdCB8IDIgKysKICAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL1NDb25zdHJ1Y3QgYi9TQ29uc3RydWN0Ci1pbmRleCA1MDgyYTRiLi4zMzcwZjcwIDEwMDY0NAotLS0tIGEvU0NvbnN0cnVjdAotKysrIGIvU0NvbnN0cnVjdAotQEAgLTUwNyw2ICs1MDcsNyBAQCBkZWYgdmFyaWFibGVfYXJjaF9jb252ZXJ0ZXIodmFsKToKK0luZGV4OiBnaXQvU0NvbnN0cnVjdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL1NDb25zdHJ1Y3QKKysrKyBnaXQvU0NvbnN0cnVjdAorQEAgLTU0OCw2ICs1NDgsNyBAQCBkZWYgdmFyaWFibGVfYXJjaF9jb252ZXJ0ZXIodmFsKToKICAgICAgICAgICdhbWQ2NCc6ICAneDg2XzY0JywKICAgICAgICAgICdlbXQ2NCc6ICAgJ3g4Nl82NCcsCiAgICAgICAgICAneDg2JzogICAgJ2kzODYnLApAQCAtMjEsOCArMjEsOCBAQAogICAgICB9CiAgICAgIHZhbCA9IHZhbC5sb3dlcigpCiAgCi1AQCAtNTY4LDcgKzU2OSw4IEBAIGVudl92YXJzLkFkZCgnQVJGTEFHUycsCi0gICAgIGNvbnZlcnRlcj12YXJpYWJsZV9zaGxleF9jb252ZXJ0ZXIpCitAQCAtNjI3LDcgKzYyOCw4IEBAIGVudl92YXJzLkFkZCgKKyApCiAgCiAgZW52X3ZhcnMuQWRkKCdDQycsCiAtICAgIGhlbHA9J1NlbGVjdCB0aGUgQyBjb21waWxlciB0byB1c2UnKQpAQCAtMzEsNyArMzEsNyBAQAogIAogIGVudl92YXJzLkFkZCgnQ0NGTEFHUycsCiAgICAgIGhlbHA9J1NldHMgZmxhZ3MgZm9yIHRoZSBDIGFuZCBDKysgY29tcGlsZXInLAotQEAgLTU4OCw3ICs1OTAsOCBAQCBlbnZfdmFycy5BZGQoJ0NQUFBBVEgnLAorQEAgLTY0Nyw3ICs2NDksOCBAQCBlbnZfdmFycy5BZGQoJ0NQUFBBVEgnLAogICAgICBjb252ZXJ0ZXI9dmFyaWFibGVfc2hsZXhfY29udmVydGVyKQogIAogIGVudl92YXJzLkFkZCgnQ1hYJywKQEAgLTQxLDcgKzQxLDcgQEAKICAKICBlbnZfdmFycy5BZGQoJ0NYWEZMQUdTJywKICAgICAgaGVscD0nU2V0cyBmbGFncyBmb3IgdGhlIEMrKyBjb21waWxlcicsCi1AQCAtODE4LDYgKzgyMSw3IEBAIGVudkRpY3QgPSBkaWN0KEJVSUxEX1JPT1Q9YnVpbGREaXIsCitAQCAtODk1LDYgKzg5OCw3IEBAIGVudkRpY3QgPSBkaWN0KEJVSUxEX1JPT1Q9YnVpbGREaXIsCiAgICAgICAgICAgICAgICAgKQogIAogIGVudiA9IEVudmlyb25tZW50KHZhcmlhYmxlcz1lbnZfdmFycywgKiplbnZEaWN0KQpAQCAtNDksMTkgKzQ5LDE2IEBACiAgZGVsIGVudkRpY3QKICAKICBlbnYuQWRkTWV0aG9kKGVudl9vc19pc193cmFwcGVyLCAnVGFyZ2V0T1NJcycpCi1kaWZmIC0tZ2l0IGEvc3JjL21vbmdvL3V0aWwvU0NvbnNjcmlwdCBiL3NyYy9tb25nby91dGlsL1NDb25zY3JpcHQKLWluZGV4IDZhZGQ2MDIuLjhkMDVhNjIgMTAwNjQ0Ci0tLS0gYS9zcmMvbW9uZ28vdXRpbC9TQ29uc2NyaXB0Ci0rKysgYi9zcmMvbW9uZ28vdXRpbC9TQ29uc2NyaXB0Ci1AQCAtMjUxLDYgKzI1MSw4IEBAIGlmIGdldF9vcHRpb24oJ2FsbG9jYXRvcicpID09ICd0Y21hbGxvYyc6Ci0gICAgICAgICAgICAgICAgICdNT05HT19IQVZFX0dQRVJGVE9PTFNfR0VUX1RIUkVBRF9DQUNIRV9TSVpFJworSW5kZXg6IGdpdC9zcmMvbW9uZ28vdXRpbC9TQ29uc2NyaXB0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL21vbmdvL3V0aWwvU0NvbnNjcmlwdAorKysrIGdpdC9zcmMvbW9uZ28vdXRpbC9TQ29uc2NyaXB0CitAQCAtMjc0LDYgKzI3NCw4IEBAIGlmIGVudlsnTU9OR09fQUxMT0NBVE9SJ10gPT0gJ3RjbWFsbG9jJzoKKyAgICAgICAgICAgICAgICAgJ01PTkdPX0hBVkVfR1BFUkZUT09MU19TSVpFX0NMQVNTX1NUQVRTJwogICAgICAgICAgICAgIF0KICAgICAgICAgICkKICsgICAgaWYgbm90IHVzZV9zeXN0ZW1fdmVyc2lvbl9vZl9saWJyYXJ5KCd2YWxncmluZCcpOgogKyAgICAgICAgdGNtc3BFbnYuSW5qZWN0VGhpcmRQYXJ0eUluY2x1ZGVQYXRocygndmFsZ3JpbmQnKQogIAotICAgICB0Y21zcEVudi5MaWJyYXJ5KAotICAgICAgICAgdGFyZ2V0PSd0Y21hbGxvY19zZXRfcGFyYW1ldGVyJywKLS0tIAotMS45LjEKLQorICAgICBpZiBub3QgdXNlX3N5c3RlbV92ZXJzaW9uX29mX2xpYnJhcnkoJ3ZhbGdyaW5kJyk6CisgICAgICAgICAjIEluY2x1ZGUgdmFsZ3JpbmQgc2luY2UgdGNtYWxsb2MgZGlzYWJsZXMgaXRzZWxmIHdoaWxlIHJ1bm5pbmcgdW5kZXIgdmFsZ3JpbmQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLV9fR0xJQkNfXy10by1jb250cm9sLXVzZS1vZi1nbnVfZ2V0X2xpYmNfdmVyc2lvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1Vc2UtX19HTElCQ19fLXRvLWNvbnRyb2wtdXNlLW9mLWdudV9nZXRfbGliY192ZXJzaW9uLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1fX0dMSUJDX18tdG8tY29udHJvbC11c2Utb2YtZ251X2dldF9saWJjX3ZlcnNpb24ucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1Vc2UtX19HTElCQ19fLXRvLWNvbnRyb2wtdXNlLW9mLWdudV9nZXRfbGliY192ZXJzaW9uLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1sb25nLWxvbmctaW5zdGVhZC1vZi1pbnQ2NF90LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1sb25nLWxvbmctaW5zdGVhZC1vZi1pbnQ2NF90LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggNzYlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLWxvbmctbG9uZy1pbnN0ZWFkLW9mLWludDY0X3QucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1Vc2UtbG9uZy1sb25nLWluc3RlYWQtb2YtaW50NjRfdC5wYXRjaAppbmRleCBjNDNiZWI0Li4zODliMzAyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1sb25nLWxvbmctaW5zdGVhZC1vZi1pbnQ2NF90LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1Vc2UtbG9uZy1sb25nLWluc3RlYWQtb2YtaW50NjRfdC5wYXRjaApAQCAtMTMsMTEgKzEzLDExIEBACiAgc3JjL21vbmdvL3V0aWwvcHJvY3BhcnNlci5jcHAgfCAxMCArKysrKy0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL3NyYy9tb25nby91dGlsL3Byb2NwYXJzZXIuY3BwIGIvc3JjL21vbmdvL3V0aWwvcHJvY3BhcnNlci5jcHAKLWluZGV4IDM2ZjJhZTAyNTQuLjJjMTY0YmNiZjMgMTAwNjQ0Ci0tLS0gYS9zcmMvbW9uZ28vdXRpbC9wcm9jcGFyc2VyLmNwcAotKysrIGIvc3JjL21vbmdvL3V0aWwvcHJvY3BhcnNlci5jcHAKLUBAIC0yNjAsNyArMjYwLDcgQEAgU3RhdHVzIHBhcnNlUHJvY1N0YXQoY29uc3Qgc3RkOjp2ZWN0b3I8U3RyaW5nRGF0YT4mIGtleXMsCitJbmRleDogZ2l0L3NyYy9tb25nby91dGlsL3Byb2NwYXJzZXIuY3BwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL21vbmdvL3V0aWwvcHJvY3BhcnNlci5jcHAKKysrKyBnaXQvc3JjL21vbmdvL3V0aWwvcHJvY3BhcnNlci5jcHAKK0BAIC0yNjAsNyArMjYwLDcgQEAgU3RhdHVzIHBhcnNlUHJvY1N0YXQoY29uc3Qgc3RkOjp2ZWN0b3I8UwogIAogICAgICAgICAgICAgICAgICAgICAgU3RyaW5nRGF0YSBzdHJpbmdWYWx1ZSgoKnBhcnRJdCkuYmVnaW4oKSwgKCpwYXJ0SXQpLmVuZCgpIC0gKCpwYXJ0SXQpLmJlZ2luKCkpOwogIApAQCAtMjYsNyArMjYsNyBAQAogIAogICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckZyb21TdHJpbmcoc3RyaW5nVmFsdWUsICZ2YWx1ZSkuaXNPSygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAwOwotQEAgLTI3Miw3ICsyNzIsNyBAQCBTdGF0dXMgcGFyc2VQcm9jU3RhdChjb25zdCBzdGQ6OnZlY3RvcjxTdHJpbmdEYXRhPiYga2V5cywKK0BAIC0yNzIsNyArMjcyLDcgQEAgU3RhdHVzIHBhcnNlUHJvY1N0YXQoY29uc3Qgc3RkOjp2ZWN0b3I8UwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIFN0cmluZ0RhdGEgc3RyaW5nVmFsdWUoKCpwYXJ0SXQpLmJlZ2luKCksICgqcGFydEl0KS5lbmQoKSAtICgqcGFydEl0KS5iZWdpbigpKTsKICAKQEAgLTM1LDcgKzM1LDcgQEAKICAKICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlckZyb21TdHJpbmcoc3RyaW5nVmFsdWUsICZ2YWx1ZSkuaXNPSygpKSB7CiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7Ci1AQCAtMzY1LDcgKzM2NSw3IEBAIFN0YXR1cyBwYXJzZVByb2NNZW1JbmZvKGNvbnN0IHN0ZDo6dmVjdG9yPFN0cmluZ0RhdGE+JiBrZXlzLAorQEAgLTM2NSw3ICszNjUsNyBAQCBTdGF0dXMgcGFyc2VQcm9jTWVtSW5mbyhjb25zdCBzdGQ6OnZlY3RvCiAgCiAgICAgICAgICAgICAgU3RyaW5nRGF0YSBzdHJpbmdWYWx1ZSgoKnBhcnRJdCkuYmVnaW4oKSwgKCpwYXJ0SXQpLmVuZCgpKTsKICAKQEAgLTQ0LDcgKzQ0LDcgQEAKICAKICAgICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyRnJvbVN0cmluZyhzdHJpbmdWYWx1ZSwgJnZhbHVlKS5pc09LKCkpIHsKICAgICAgICAgICAgICAgICAgdmFsdWUgPSAwOwotQEAgLTQyNiw3ICs0MjYsNyBAQCBTdGF0dXMgcGFyc2VQcm9jRGlza1N0YXRzKGNvbnN0IHN0ZDo6dmVjdG9yPFN0cmluZ0RhdGE+JiBkaXNrcywKK0BAIC00MjYsNyArNDI2LDcgQEAgU3RhdHVzIHBhcnNlUHJvY0Rpc2tTdGF0cyhjb25zdCBzdGQ6OnZlYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nRGF0YSBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNPTk9iakJ1aWxkZXIqIGJ1aWxkZXIpIHsKICAgICAgYm9vbCBmb3VuZEtleXMgPSBmYWxzZTsKQEAgLTUzLDcgKzUzLDcgQEAKICAgICAgc3RhdHMucmVzZXJ2ZShrRGlza0ZpZWxkQ291bnQpOwogIAogICAgICB1c2luZyBzdHJpbmdfc3BsaXRfaXRlcmF0b3IgPSBib29zdDo6c3BsaXRfaXRlcmF0b3I8U3RyaW5nRGF0YTo6Y29uc3RfaXRlcmF0b3I+OwotQEAgLTUwMSw3ICs1MDEsNyBAQCBTdGF0dXMgcGFyc2VQcm9jRGlza1N0YXRzKGNvbnN0IHN0ZDo6dmVjdG9yPFN0cmluZ0RhdGE+JiBkaXNrcywKK0BAIC01MDEsNyArNTAxLDcgQEAgU3RhdHVzIHBhcnNlUHJvY0Rpc2tTdGF0cyhjb25zdCBzdGQ6OnZlYwogIAogICAgICAgICAgICAgICAgICBTdHJpbmdEYXRhIHN0cmluZ1ZhbHVlKCgqcGFydEl0KS5iZWdpbigpLCAoKnBhcnRJdCkuZW5kKCkpOwogIApAQCAtNjIsNiArNjIsMyBAQAogIAogICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyRnJvbVN0cmluZyhzdHJpbmdWYWx1ZSwgJnZhbHVlKS5pc09LKCkpIHsKICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gMDsKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLXN0cmVycm9yX3Itb25seS1vbi1nbGliYy1zeXN0ZW1zLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1zdHJlcnJvcl9yLW9ubHktb24tZ2xpYmMtc3lzdGVtcy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMS1Vc2Utc3RyZXJyb3Jfci1vbmx5LW9uLWdsaWJjLXN5c3RlbXMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1Vc2Utc3RyZXJyb3Jfci1vbmx5LW9uLWdsaWJjLXN5c3RlbXMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDItQWRkLWEtZGVmaW5pdGlvbi1mb3ItdGhlLW1hY3JvLV9fRUxGX05BVElWRV9DTEFTUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMi1BZGQtYS1kZWZpbml0aW9uLWZvci10aGUtbWFjcm8tX19FTEZfTkFUSVZFX0NMQVNTLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAyLUFkZC1hLWRlZmluaXRpb24tZm9yLXRoZS1tYWNyby1fX0VMRl9OQVRJVkVfQ0xBU1MucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMi1BZGQtYS1kZWZpbml0aW9uLWZvci10aGUtbWFjcm8tX19FTEZfTkFUSVZFX0NMQVNTLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAyLWRfc3RhdGUuY3BwLUFkZC1taXNzaW5nLWRlcGVuZGVubmN5LW9uLWxvY2FsX3NoYXJkaW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDItZF9zdGF0ZS5jcHAtQWRkLW1pc3NpbmctZGVwZW5kZW5uY3ktb24tbG9jYWxfc2hhcmRpbi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDgzJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAyLWRfc3RhdGUuY3BwLUFkZC1taXNzaW5nLWRlcGVuZGVubmN5LW9uLWxvY2FsX3NoYXJkaW4ucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMi1kX3N0YXRlLmNwcC1BZGQtbWlzc2luZy1kZXBlbmRlbm5jeS1vbi1sb2NhbF9zaGFyZGluLnBhdGNoCmluZGV4IDk1ZjljMWMuLmRjNDg4YWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDItZF9zdGF0ZS5jcHAtQWRkLW1pc3NpbmctZGVwZW5kZW5uY3ktb24tbG9jYWxfc2hhcmRpbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDItZF9zdGF0ZS5jcHAtQWRkLW1pc3NpbmctZGVwZW5kZW5uY3ktb24tbG9jYWxfc2hhcmRpbi5wYXRjaApAQCAtMTIsMTAgKzEyLDEwIEBACiAgc3JjL21vbmdvL3MvU0NvbnNjcmlwdCB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCi1kaWZmIC0tZ2l0IGEvc3JjL21vbmdvL3MvU0NvbnNjcmlwdCBiL3NyYy9tb25nby9zL1NDb25zY3JpcHQKLWluZGV4IDcxNzIwYmU1MTcuLjUxYmQxOTkxMjcgMTAwNjQ0Ci0tLS0gYS9zcmMvbW9uZ28vcy9TQ29uc2NyaXB0Ci0rKysgYi9zcmMvbW9uZ28vcy9TQ29uc2NyaXB0CitJbmRleDogZ2l0L3NyYy9tb25nby9zL1NDb25zY3JpcHQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvbW9uZ28vcy9TQ29uc2NyaXB0CisrKysgZ2l0L3NyYy9tb25nby9zL1NDb25zY3JpcHQKIEBAIC0zMTcsNSArMzE3LDYgQEAgZW52LkxpYnJhcnkoCiAgICAgICAgICAiJEJVSUxEX0RJUi9tb25nby9kYi9zL3NoYXJkaW5nIiwKICAgICAgICAgICIkQlVJTERfRElSL21vbmdvL2V4ZWN1dG9yL25ldHdvcmtfaW50ZXJmYWNlX2ZhY3RvcnkiLApAQCAtMjMsNiArMjMsMyBAQAogKyAgICAgICAgIiRCVUlMRF9ESVIvbW9uZ28vcy9sb2NhbF9zaGFyZGluZ19pbmZvIiwKICAgICAgXSwKICApCi0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAzLUNvbmRpdGlvbmFsaXplLWdsaWJjLXNwZWNpZmljLXN0cmVycm9yX3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDMtQ29uZGl0aW9uYWxpemUtZ2xpYmMtc3BlY2lmaWMtc3RyZXJyb3Jfci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMy1Db25kaXRpb25hbGl6ZS1nbGliYy1zcGVjaWZpYy1zdHJlcnJvcl9yLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDMtQ29uZGl0aW9uYWxpemUtZ2xpYmMtc3BlY2lmaWMtc3RyZXJyb3Jfci5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwNC13aXJlZHRpZ2VyLURpc2FibGUtc3RydG91cS1vbi1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDA0LXdpcmVkdGlnZXItRGlzYWJsZS1zdHJ0b3VxLW9uLW11c2wucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDQtd2lyZWR0aWdlci1EaXNhYmxlLXN0cnRvdXEtb24tbXVzbC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDA0LXdpcmVkdGlnZXItRGlzYWJsZS1zdHJ0b3VxLW9uLW11c2wucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiL2FybTY0LXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiL2FybTY0LXN1cHBvcnQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiL2FybTY0LXN1cHBvcnQucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvYXJtNjQtc3VwcG9ydC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvZGlzYWJsZS1ody1jcmMzMi1vbi1hcm02NC1zMzkweC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvZGlzYWJsZS1ody1jcmMzMi1vbi1hcm02NC1zMzkweC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvZGlzYWJsZS1ody1jcmMzMi1vbi1hcm02NC1zMzkweC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi9kaXNhYmxlLWh3LWNyYzMyLW9uLWFybTY0LXMzOTB4LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiX2dpdC5iYgpzaW1pbGFyaXR5IGluZGV4IDkyJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYl9naXQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGJfZ2l0LmJiCmluZGV4IDBmZjdkMGIuLmJiM2ZmM2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiX2dpdC5iYgpAQCAtNywxMSArNywxMCBAQAogCiBpbmhlcml0IHNjb25zIGRvczJ1bml4IHNpdGVpbmZvCiAKLVBWID0gIjMuNC42K2dpdCR7U1JDUFZ9IgotU1JDUkVWID0gImM1NWViODZlZjQ2ZWU3YWVkZTNiMWUyYTVkMTg0YTdkZjRiZmI1YjUiCitQViA9ICIzLjQuMTMrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiZmJkZWYyY2NjNTNlMGZjYzlhZmI1NzAwNjM2MzNkOTkyYjJhYWU0MiIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9tb25nb2RiL21vbmdvLmdpdDticmFuY2g9djMuNCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVRlbGwtc2NvbnMtdG8tdXNlLWJ1aWxkLXNldHRpbmdzLWZyb20tZW52aXJvbm1lbnQtdmEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tb25nby1BZGQtdXNpbmctc3RkLXN0cmluZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWRfc3RhdGUuY3BwLUFkZC1taXNzaW5nLWRlcGVuZGVubmN5LW9uLWxvY2FsX3NoYXJkaW4ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtbG9uZy1sb25nLWluc3RlYWQtb2YtaW50NjRfdC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1fX0dMSUJDX18tdG8tY29udHJvbC11c2Utb2YtZ251X2dldF9saWJjX3ZlcnNpb24ucGF0Y2ggXApAQCAtNTgsNyArNTcsNyBAQAogICAgICAgICAgICAgICAgICAtLXVzZS1zeXN0ZW0temxpYiBcCiAgICAgICAgICAgICAgICAgIC0tanMtZW5naW5lPW5vbmUgXAogICAgICAgICAgICAgICAgICAtLW5vc3RyaXAgXAotICAgICAgICAgICAgICAgICAtLWVuZGlhbj0ke0BiYXNlX2NvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJ2xpdHRsZScsICdiaWcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAtLWVuZGlhbj0ke0BvZS51dGlscy5jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICdsaXR0bGUnLCAnYmlnJywgZCl9IFwKICAgICAgICAgICAgICAgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCiAgICAgICAgICAgICAgICAgIG1vbmdvZCBtb25nb3MiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi1uYXRpdmVfNS41LjU3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGItbmF0aXZlXzUuNS41OS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiLW5hdGl2ZV81LjUuNTcuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiLW5hdGl2ZV81LjUuNTkuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi5pbmMKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiLmluYwpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIuaW5jCmluZGV4IDI2M2IzMTMuLjk5ZTcwNTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIuaW5jCkBAIC0xOSw4ICsxOSw4IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc2FibGUtdWNvbnRleHQtb24tbXVzbC5wYXRjaCBcCiAgICAgICAgICAgIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMmQ0MTA0YWFlMGI5ZTVlZmE4ODc4OTE4YmQzMjljYjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWRiZGU5OGQ3ZTRhNWExNzIxYjZjYmVkNzg5OGIyNTQ5YTg4ODY2MjQ3OTUxY2Y1ODYwNTc5NzVjNmNlYTY0MSIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzY2VjNGFmYzA2YjQ2ODY4N2VmNTc2YzkwMTQ4ZDEwZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMzI2OWNlMjBiNDViMTc3MjM5ZmQxZTNkNmQ5NDI4YTk0MTMxNzExZjEyNzU4ZWJmNWY2NTIyMjI3OGJiMTEwIgogCiBTID0gIiR7V09SS0RJUn0vbWFyaWFkYi0ke1BWfSIKIApAQCAtODIsNiArODIsMTAgQEAKICAgICAgICAgICAgICAgICAgLURDQVRfRVhFQ1VUQUJMRT1gd2hpY2ggY2F0YCBcCiAgICAgICAgICAgICAgICAgIC1EQ01BS0VfQVI6RklMRVBBVEg9JHtBUn0iCiAKKyMgV2l0aCBOaW5qYSBpdCBmYWlscyB3aXRoOgorIyBtYWtlOiAqKiogTm8gcnVsZSB0byBtYWtlIHRhcmdldCBgaW5zdGFsbCcuICBTdG9wLgorT0VDTUFLRV9HRU5FUkFUT1IgPSAiVW5peCBNYWtlZmlsZXMiCisKIEFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgogQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi8wMDAxLWRpc2FibGUtdWNvbnRleHQtb24tbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiLzAwMDEtZGlzYWJsZS11Y29udGV4dC1vbi1tdXNsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGIvMDAwMS1kaXNhYmxlLXVjb250ZXh0LW9uLW11c2wucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiLzAwMDEtZGlzYWJsZS11Y29udGV4dC1vbi1tdXNsLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGIvY2hhbmdlLWNjLXRvLWNjLXZlcnNpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi9jaGFuZ2UtY2MtdG8tY2MtdmVyc2lvbi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL2NoYW5nZS1jYy10by1jYy12ZXJzaW9uLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi9jaGFuZ2UtY2MtdG8tY2MtdmVyc2lvbi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL2NvbmZpZ3VyZS5jbWFrZS1maXgtdmFsZ3JpbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi9jb25maWd1cmUuY21ha2UtZml4LXZhbGdyaW5kLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGIvY29uZmlndXJlLmNtYWtlLWZpeC12YWxncmluZC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvY29uZmlndXJlLmNtYWtlLWZpeC12YWxncmluZC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL2ZpeC1hLWJ1aWxkaW5nLWZhaWx1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi9maXgtYS1idWlsZGluZy1mYWlsdXJlLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGIvZml4LWEtYnVpbGRpbmctZmFpbHVyZS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvZml4LWEtYnVpbGRpbmctZmFpbHVyZS5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL2ZpeC1jbWFrZS1tb2R1bGUtcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiL2ZpeC1jbWFrZS1tb2R1bGUtcGF0aC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL2ZpeC1jbWFrZS1tb2R1bGUtcGF0aC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvZml4LWNtYWtlLW1vZHVsZS1wYXRoLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGIvZml4LW15c3FsY2xpZW50LXItdmVyc2lvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiL2ZpeC1teXNxbGNsaWVudC1yLXZlcnNpb24ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL2ZpeC1teXNxbGNsaWVudC1yLXZlcnNpb24ucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiL2ZpeC1teXNxbGNsaWVudC1yLXZlcnNpb24ucGF0Y2gKaW5kZXggNzUxNjYxOS4uYTUxOWU0MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL2ZpeC1teXNxbGNsaWVudC1yLXZlcnNpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvZml4LW15c3FsY2xpZW50LXItdmVyc2lvbi5wYXRjaApAQCAtMjUsOSArMjUsOCBAQAogCiAtLS0KICBjbWFrZS9pbnN0YWxsX21hY3Jvcy5jbWFrZSB8IDI1ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0KLSBjbWFrZS9teXNxbF92ZXJzaW9uLmNtYWtlICB8ICAzICsrLQotIGxpYm15c3FsL0NNYWtlTGlzdHMudHh0ICAgIHwgMzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKKyBsaWJteXNxbC9DTWFrZUxpc3RzLnR4dCAgICB8IDM0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY21ha2UvaW5zdGFsbF9tYWNyb3MuY21ha2UgYi9jbWFrZS9pbnN0YWxsX21hY3Jvcy5jbWFrZQogaW5kZXggYjhlZmRmOC4uYTBkMGU2OCAxMDA2NDQKQEAgLTM5LDggKzM4LDggQEAKICAjIAogICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci1AQCAtMTExLDI4ICsxMTEsMzMgQEAgRlVOQ1RJT04oSU5TVEFMTF9TQ1JJUFQpCi0gRU5ERlVOQ1RJT04oKQorQEAgLTE2NywyOCArMTY3LDMzIEBAIEVOREZVTkNUSU9OKCkKKyAKICAKICAjIEluc3RhbGwgc3ltYm9saWMgbGluayB0byBDTWFrZSB0YXJnZXQuIAogLSMgdGhlIGxpbmsgaXMgY3JlYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGFyZ2V0CkBAIC04Niw4ICs4NSw4IEBACiBpbmRleCBiZTU3NjBmLi45NjI4NmZmIDEwMDY0NAogLS0tIGEvbGlibXlzcWwvQ01ha2VMaXN0cy50eHQKICsrKyBiL2xpYm15c3FsL0NNYWtlTGlzdHMudHh0Ci1AQCAtMTgwLDYgKzE4MCwxMiBAQCBJRihNU1ZDKQotICBJTlNUQUxMX0RFQlVHX1RBUkdFVChteXNxbGNsaWVudCBERVNUSU5BVElPTiAke0lOU1RBTExfTElCRElSfS9kZWJ1ZykKK0BAIC00MzMsNiArNDMzLDEyIEBAIElGKE1TVkMpCisgIElOU1RBTExfREVCVUdfVEFSR0VUKGNsaWVudGxpYiBERVNUSU5BVElPTiAke0lOU1RBTExfTElCRElSfS9kZWJ1ZykKICBFTkRJRigpCiAgCiArTUFDUk8oR0VUX1RBUkdFVF9OQU1FIHRhcmdldCBvdXRfbmFtZSkKQEAgLTk5LDcgKzk4LDcgQEAKICBJRihVTklYKQogICAgTUFDUk8oR0VUX1ZFUlNJT05FRF9MSUJOQU1FIExJQk5BTUUgRVhURU5TSU9OIFZFUlNJT04gT1VUTkFNRSkKICAgICAgU0VUKERPVF9WRVJTSU9OICIuJHtWRVJTSU9OfSIpCi1AQCAtMTkyLDcgKzE5OCwxMyBAQCBJRihVTklYKQorQEAgLTQ0NSw3ICs0NTEsMTMgQEAgSUYoVU5JWCkKICAgICAgICBTRVQoJHtPVVROQU1FfSAke0xJQk5BTUV9JHtFWFRFTlNJT059JHtET1RfVkVSU0lPTn0pCiAgICAgIEVORElGKCkgCiAgICBFTkRNQUNSTygpCkBAIC0xMTQsNyArMTEzLDcgQEAKICBFTkRJRigpCiAgCiAgSUYoTk9UIERJU0FCTEVfU0hBUkVEKQotQEAgLTIwNSwxMCArMjE3LDkgQEAgSUYoTk9UIERJU0FCTEVfU0hBUkVEKQorQEAgLTQ1NiwxMCArNDY4LDkgQEAgSUYoTk9UIERJU0FCTEVfU0hBUkVEKQogICAgICAjIGxpYnRvb2wgY29tcGF0YWJpbGl0eQogICAgICBJRihDTUFLRV9TWVNURU1fTkFNRSBNQVRDSEVTICJGcmVlQlNEIiBPUiBBUFBMRSkKICAgICAgICBTRVQoT1NfU0hBUkVEX0xJQl9WRVJTSU9OICIke1NIQVJFRF9MSUJfTUFKT1JfVkVSU0lPTn0iKQpAQCAtMTI3LDcgKzEyNiw3IEBACiAgICAgIEVORElGKCkKICAgICAgIyBOYW1lIG9mIHNoYXJlZCBsaWJyYXJ5IGlzIG15c3FsY2xpZW50IG9uIFVuaXgKICAgICAgU0VUX1RBUkdFVF9QUk9QRVJUSUVTKGxpYm15c3FsIFBST1BFUlRJRVMgCi1AQCAtMjM5LDggKzI1MCwxMyBAQCBJRihOT1QgRElTQUJMRV9TSEFSRUQpCitAQCAtNDgyLDggKzQ5MywxMyBAQCBJRihOT1QgRElTQUJMRV9TSEFSRUQpCiAgICAgICAgIiR7Q01BS0VfU0hBUkVEX0xJQlJBUllfU1VGRklYfSIKICAgICAgICAiIgogICAgICAgIGxpbmtuYW1lKQpAQCAtMTQzLDcgKzE0Miw3IEBACiAgICAgIExJU1QoUkVNT1ZFX0RVUExJQ0FURVMgT1NfU0hBUkVEX0xJQl9TWU1MSU5LUykKICAgICAgRk9SRUFDSCh2ZXIgJHtPU19TSEFSRURfTElCX1NZTUxJTktTfSkKICAgICAgICBHRVRfVkVSU0lPTkVEX0xJQk5BTUUoCi1AQCAtMjQ4LDcgKzI2NCwxMSBAQCBJRihOT1QgRElTQUJMRV9TSEFSRUQpCitAQCAtNDkxLDcgKzUwNywxMSBAQCBJRihOT1QgRElTQUJMRV9TSEFSRUQpCiAgICAgICAgICAiJHtDTUFLRV9TSEFSRURfTElCUkFSWV9TVUZGSVh9IgogICAgICAgICAgIiR7dmVyfSIKICAgICAgICAgIGxpbmtuYW1lKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL2luc3RhbGxfZGIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi9pbnN0YWxsX2RiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGIvaW5zdGFsbF9kYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvaW5zdGFsbF9kYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL2luc3RhbGxfZGIuc2VydmljZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiL2luc3RhbGxfZGIuc2VydmljZQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL2luc3RhbGxfZGIuc2VydmljZQpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvaW5zdGFsbF9kYi5zZXJ2aWNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGIvbXkuY25mIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvbXkuY25mCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGIvbXkuY25mCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi9teS5jbmYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi9teXNxbC1zeXN0ZW1kLXN0YXJ0IGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvbXlzcWwtc3lzdGVtZC1zdGFydApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9tYXJpYWRiL215c3FsLXN5c3RlbWQtc3RhcnQKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiL215c3FsLXN5c3RlbWQtc3RhcnQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYi9teXNxbGQuc2VydmljZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiL215c3FsZC5zZXJ2aWNlCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGIvbXlzcWxkLnNlcnZpY2UKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiL215c3FsZC5zZXJ2aWNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGIvcmVtb3ZlLWJhZC1wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvcmVtb3ZlLWJhZC1wYXRoLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL21hcmlhZGIvcmVtb3ZlLWJhZC1wYXRoLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi9yZW1vdmUtYmFkLXBhdGgucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYl81LjUuNTcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYl81LjUuNTkuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXlzcWwvbWFyaWFkYl81LjUuNTcuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiXzUuNS41OS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9teXNxbC9teXNxbC1weXRob25fMS4yLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbXlzcWwtcHl0aG9uXzEuMi41LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L215c3FsL215c3FsLXB5dGhvbl8xLjIuNS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL215c3FsLXB5dGhvbl8xLjIuNS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL2ZpbGVzLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLWxpYnhtbDItZGV0ZWN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvZmlsZXMvMDAwMS1Vc2UtcGtnLWNvbmZpZy1mb3ItbGlieG1sMi1kZXRlY3Rpb24ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCA4MyUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL2ZpbGVzLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLWxpYnhtbDItZGV0ZWN0aW9uLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9maWxlcy8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1saWJ4bWwyLWRldGVjdGlvbi5wYXRjaAppbmRleCBkMDhlYzZhLi5jZTJhNjBjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvZmlsZXMvMDAwMS1Vc2UtcGtnLWNvbmZpZy1mb3ItbGlieG1sMi1kZXRlY3Rpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvZmlsZXMvMDAwMS1Vc2UtcGtnLWNvbmZpZy1mb3ItbGlieG1sMi1kZXRlY3Rpb24ucGF0Y2gKQEAgLTEyLDExICsxMiwxMSBAQAogIGNvbmZpZ3VyZS5pbiB8IDE1ICsrLS0tLS0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCBmOGJmNDY2Li4xZjRmYWJmIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC03MzQsMTkgKzczNCw4IEBAIFBHQUNfQVJHX0JPT0wod2l0aCwgbGlieG1sLCBubywgW2J1aWxkIHdpdGggWE1MIHN1cHBvcnRdLAorSW5kZXg6IHBvc3RncmVzcWwtOS40LjE1L2NvbmZpZ3VyZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBvc3RncmVzcWwtOS40LjE1Lm9yaWcvY29uZmlndXJlLmluCisrKysgcG9zdGdyZXNxbC05LjQuMTUvY29uZmlndXJlLmluCitAQCAtNzU5LDE5ICs3NTksOCBAQCBQR0FDX0FSR19CT09MKHdpdGgsIGxpYnhtbCwgbm8sIFtidWlsZCB3CiAgICAgICAgICAgICAgICBbQUNfREVGSU5FKFtVU0VfTElCWE1MXSwgMSwgW0RlZmluZSB0byAxIHRvIGJ1aWxkIHdpdGggWE1MIHN1cHBvcnQuICgtLXdpdGgtbGlieG1sKV0pXSkKICAKICBpZiB0ZXN0ICIkd2l0aF9saWJ4bWwiID0geWVzIDsgdGhlbgpAQCAtMzgsNiArMzgsMyBAQAogIGZpCiAgCiAgQUNfU1VCU1Qod2l0aF9saWJ4bWwpCi0tLSAKLTEuOC4zLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL2ZpbGVzL25vdC1jaGVjay1saWJwZXJsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvZmlsZXMvbm90LWNoZWNrLWxpYnBlcmwucGF0Y2gKc2ltaWxhcml0eSBpbmRleCA3NSUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3N0Z3Jlc3FsL2ZpbGVzL25vdC1jaGVjay1saWJwZXJsLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9maWxlcy9ub3QtY2hlY2stbGlicGVybC5wYXRjaAppbmRleCBlMTk5ZjM5Li45NzE1MTA5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvZmlsZXMvbm90LWNoZWNrLWxpYnBlcmwucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvZmlsZXMvbm90LWNoZWNrLWxpYnBlcmwucGF0Y2gKQEAgLTEzLDExICsxMywxMSBAQAogIGNvbmZpZ3VyZS5pbiB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggYWUxYTVhMC4uOWEwOTcwZCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMTg3Nyw3ICsxODc3LDcgQEAgaWYgdGVzdCAiJHdpdGhfdGNsIiA9IHllczsgdGhlbgorSW5kZXg6IHBvc3RncmVzcWwtOS40LjE1L2NvbmZpZ3VyZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBvc3RncmVzcWwtOS40LjE1Lm9yaWcvY29uZmlndXJlLmluCisrKysgcG9zdGdyZXNxbC05LjQuMTUvY29uZmlndXJlLmluCitAQCAtMTg3OSw3ICsxODc5LDcgQEAgaWYgdGVzdCAiJHdpdGhfdGNsIiA9IHllczsgdGhlbgogIGZpCiAgCiAgIyBjaGVjayBmb3IgPHBlcmwuaD4KQEAgLTI2LDYgKzI2LDMgQEAKICAgIGFjX3NhdmVfQ1BQRkxBR1M9JENQUEZMQUdTCiAgICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJHBlcmxfYXJjaGxpYmV4cC9DT1JFIgogICAgQUNfQ0hFQ0tfSEVBREVSKHBlcmwuaCwgW10sIFtBQ19NU0dfRVJST1IoW2hlYWRlciBmaWxlIDxwZXJsLmg+IGlzIHJlcXVpcmVkIGZvciBQZXJsXSldLAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvZmlsZXMvcG9zdGdyZXNxbC1iYXNocHJvZmlsZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL2ZpbGVzL3Bvc3RncmVzcWwtYmFzaHByb2ZpbGUKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9zdGdyZXNxbC9maWxlcy9wb3N0Z3Jlc3FsLWJhc2hwcm9maWxlCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9maWxlcy9wb3N0Z3Jlc3FsLWJhc2hwcm9maWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvZmlsZXMvcG9zdGdyZXNxbC1zZXR1cCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL2ZpbGVzL3Bvc3RncmVzcWwtc2V0dXAKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9zdGdyZXNxbC9maWxlcy9wb3N0Z3Jlc3FsLXNldHVwCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9maWxlcy9wb3N0Z3Jlc3FsLXNldHVwCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvZmlsZXMvcG9zdGdyZXNxbC5pbml0IGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvZmlsZXMvcG9zdGdyZXNxbC5pbml0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvZmlsZXMvcG9zdGdyZXNxbC5pbml0CnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9maWxlcy9wb3N0Z3Jlc3FsLmluaXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9zdGdyZXNxbC9maWxlcy9wb3N0Z3Jlc3FsLnBhbSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL2ZpbGVzL3Bvc3RncmVzcWwucGFtCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvZmlsZXMvcG9zdGdyZXNxbC5wYW0KcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL2ZpbGVzL3Bvc3RncmVzcWwucGFtCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvZmlsZXMvcG9zdGdyZXNxbC5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvZmlsZXMvcG9zdGdyZXNxbC5zZXJ2aWNlCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvZmlsZXMvcG9zdGdyZXNxbC5zZXJ2aWNlCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9maWxlcy9wb3N0Z3Jlc3FsLnNlcnZpY2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWwuaW5jCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvcG9zdGdyZXNxbC5pbmMKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWwuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsXzkuNC4xNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWxfOS40LjE3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MTE4NGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsXzkuNC4xNy5iYgpAQCAtMCwwICsxLDE0IEBACityZXF1aXJlIHBvc3RncmVzcWwuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9NmRjOTVlNjNhYTRkNzI1MDJmZjgxOTNkZmUyZGRkMzgiCisKK1NSQ19VUkkgKz0gIlwKKyAgICBmaWxlOi8vbm90LWNoZWNrLWxpYnBlcmwucGF0Y2ggXAorIgorCitkb19jb21waWxlX3ByZXBlbmRfbGliYy1tdXNsKCkgeworICAgIHNlZCAtaSAtZSAncy9cLWxuc2wvL2cnICR7Qn0vc3JjL01ha2VmaWxlLmdsb2JhbAorfQorCitTUkNfVVJJW21kNXN1bV0gPSAiMGEwOGY0MDc4ZjVlNGE1NGU3NjRmNjNhZDM4YTZkZTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2EzMjBjZDMzNTA1MmI4NDBkMjA5ZGM5Njg4ZjA5OTY1NzYzMzUxYzU5MGUzY2M3YmY1Nzc1OTExNzlmZDdjNiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHNxbG9kYmMvZmlsZXMvcHNxbG9kYmMtZG9ub3QtdXNlLXRoZS1oYXJkY29kZS1saWJkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcHNxbG9kYmMvZmlsZXMvcHNxbG9kYmMtZG9ub3QtdXNlLXRoZS1oYXJkY29kZS1saWJkaXIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHNxbG9kYmMvZmlsZXMvcHNxbG9kYmMtZG9ub3QtdXNlLXRoZS1oYXJkY29kZS1saWJkaXIucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wc3Fsb2RiYy9maWxlcy9wc3Fsb2RiYy1kb25vdC11c2UtdGhlLWhhcmRjb2RlLWxpYmRpci5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wc3Fsb2RiYy9maWxlcy9wc3Fsb2RiYy1maXgtZm9yLXB0ZXN0LXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcHNxbG9kYmMvZmlsZXMvcHNxbG9kYmMtZml4LWZvci1wdGVzdC1zdXBwb3J0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BzcWxvZGJjL2ZpbGVzL3BzcWxvZGJjLWZpeC1mb3ItcHRlc3Qtc3VwcG9ydC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3BzcWxvZGJjL2ZpbGVzL3BzcWxvZGJjLWZpeC1mb3ItcHRlc3Qtc3VwcG9ydC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wc3Fsb2RiYy9maWxlcy9wc3Fsb2RiYy1yZW1vdmUtc29tZS1jaGVja3MtZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wc3Fsb2RiYy9maWxlcy9wc3Fsb2RiYy1yZW1vdmUtc29tZS1jaGVja3MtZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wc3Fsb2RiYy9maWxlcy9wc3Fsb2RiYy1yZW1vdmUtc29tZS1jaGVja3MtZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3BzcWxvZGJjL2ZpbGVzL3BzcWxvZGJjLXJlbW92ZS1zb21lLWNoZWNrcy1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BzcWxvZGJjL2ZpbGVzL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wc3Fsb2RiYy9maWxlcy9ydW4tcHRlc3QKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHNxbG9kYmMvZmlsZXMvcnVuLXB0ZXN0CnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcHNxbG9kYmMvZmlsZXMvcnVuLXB0ZXN0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BzcWxvZGJjL3BzcWxvZGJjLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wc3Fsb2RiYy9wc3Fsb2RiYy5pbmMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHNxbG9kYmMvcHNxbG9kYmMuaW5jCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcHNxbG9kYmMvcHNxbG9kYmMuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BzcWxvZGJjL3BzcWxvZGJjXzA5LjA1LjAzMDAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcHNxbG9kYmMvcHNxbG9kYmNfMDkuMDUuMDMwMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wc3Fsb2RiYy9wc3Fsb2RiY18wOS4wNS4wMzAwLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcHNxbG9kYmMvcHNxbG9kYmNfMDkuMDUuMDMwMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcm9ja3NkYi9yb2Nrc2RiX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9yb2Nrc2RiL3JvY2tzZGJfZ2l0LmJiCnNpbWlsYXJpdHkgaW5kZXggODYlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JvY2tzZGIvcm9ja3NkYl9naXQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9yb2Nrc2RiL3JvY2tzZGJfZ2l0LmJiCmluZGV4IDliMTljMWEuLjFlNmNiYWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JvY2tzZGIvcm9ja3NkYl9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3JvY2tzZGIvcm9ja3NkYl9naXQuYmIKQEAgLTYsMTAgKzYsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UubGV2ZWxkYjttZDU9ZmIwNGZmNTdhMTRmMzA4ZjJlZWQ0YTliODdkNDU4MzciCiAKLVNSQ1JFViA9ICIyNjZhYzI0NWFmZmQ2OTU1NTY0M2I3MzVkMTlkMzcxNWM0ZWZmOTFhIgotUFYgPSAiNS44K2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gIjg5Njk0NDU2NDIwMzk1NjYyMTRkNjUwY2M2NjE0ODQ5ZTdkZDVlMTciCitTUkNCUkFOQ0ggPSAiNS4xMi5mYiIKK1BWID0gIjUuMTIuMiIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZhY2Vib29rLyR7QlBOfS5naXQiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZmFjZWJvb2svJHtCUE59LmdpdDticmFuY2g9JHtTUkNCUkFOQ0h9IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NvY2kvc29jaS9zb2NpX2xpYmRpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9zb2NpL3NvY2kvc29jaV9saWJkaXIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc29jaS9zb2NpL3NvY2lfbGliZGlyLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvc29jaS9zb2NpL3NvY2lfbGliZGlyLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NvY2kvc29jaV8zLjIuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9zb2NpL3NvY2lfMy4yLjMuYmIKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zb2NpL3NvY2lfMy4yLjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9zb2NpL3NvY2lfMy4yLjMuYmIKaW5kZXggMWY1YTQ4NS4uM2YyMmQzOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zb2NpL3NvY2lfMy4yLjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3NvY2kvc29jaV8zLjIuMy5iYgpAQCAtMTIsOCArMTIsOCBAQAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59LyR7QlB9LyR7QlB9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9zb2NpX2xpYmRpci5wYXRjaCBcCiAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImJjM2MzNWY2Y2QzZjgwYTFiZTE5ZmUzMGIzYzExMWJmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwZWEyZjRkMjY2MzllZjViNWNkYzI0ZmIzMDBiMzg5Njc0NjI0M2RiYjc3Yjc0MzU4MmRlMmZmNDQzY2NiMWMiCitTUkNfVVJJW21kNXN1bV0gPSAiYWNmYmNjZjE3NmNkMjBlMDY4MzNhODAzN2EyZDM2OTkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmM2NTlkYjBmNGY3YjQyNGJiY2ZmZTE5NWMwM2MyOTNhMWRiZjY3NjE4OWEyN2IwNzdmYjJhYWI0ZDUzYTYxMCIKIAogVEVTVENPTkZJRyA9ICctRFNPQ0lfVEVTVF9FTVBUWV9DT05OU1RSPSJkdW1teSIgLURTT0NJX1RFU1RfU1FMSVRFM19DT05OU1RSPSJ0ZXN0LmRiIiBcCiAgICAgICAgICAgICAgIC1EU09DSV9URVNUX1BPU1RHUkVTUUxfQ09OTlNUUjpTVFJJTkc9ImRibmFtZT1zb2NpX3Rlc3QiIFwKQEAgLTM4LDcgKzM4LDcgQEAKIEVYVFJBX09FQ01BS0UgPSAiJHtFWFRSQV9PRUNPTkZ9IC1EU09DSV9MSUJESVI9JHtsaWJkaXJ9IgogRElTQUJMRV9TVEFUSUMgPSAiIgogCi1pbmhlcml0IGNtYWtlCitpbmhlcml0IGRvczJ1bml4IGNtYWtlCiAKIFBBQ0tBR0VTICs9ICIke1BOfS1zcWxpdGUzICR7UE59LW15c3FsICR7UE59LXBvc3RncmVzcWwgJHtQTn0tb2RiYyAke1BOfS1vcmFjbGUiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZS0yLjguMTcvMDAwMS1zaGVsbC5jLUZpeC1mb3JtYXQtbm90LWEtc3RyaW5nLWxpdGVyYWwtd2FybmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9zcWxpdGUvc3FsaXRlLTIuOC4xNy8wMDAxLXNoZWxsLmMtRml4LWZvcm1hdC1ub3QtYS1zdHJpbmctbGl0ZXJhbC13YXJuaW5nLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUtMi44LjE3LzAwMDEtc2hlbGwuYy1GaXgtZm9ybWF0LW5vdC1hLXN0cmluZy1saXRlcmFsLXdhcm5pbmcucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9zcWxpdGUvc3FsaXRlLTIuOC4xNy8wMDAxLXNoZWxsLmMtRml4LWZvcm1hdC1ub3QtYS1zdHJpbmctbGl0ZXJhbC13YXJuaW5nLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUtMi44LjE3L21haW5ta19idWlsZF9keW5hbWljLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3NxbGl0ZS9zcWxpdGUtMi44LjE3L21haW5ta19idWlsZF9keW5hbWljLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUtMi44LjE3L21haW5ta19idWlsZF9keW5hbWljLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvc3FsaXRlL3NxbGl0ZS0yLjguMTcvbWFpbm1rX2J1aWxkX2R5bmFtaWMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZS0yLjguMTcvbWFpbm1rX25vX3RjbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9zcWxpdGUvc3FsaXRlLTIuOC4xNy9tYWlubWtfbm9fdGNsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUtMi44LjE3L21haW5ta19ub190Y2wucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9zcWxpdGUvc3FsaXRlLTIuOC4xNy9tYWlubWtfbm9fdGNsLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUtMi44LjE3L3NxbGl0ZS5wYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9zcWxpdGUvc3FsaXRlLTIuOC4xNy9zcWxpdGUucGMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZS0yLjguMTcvc3FsaXRlLnBjCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvc3FsaXRlL3NxbGl0ZS0yLjguMTcvc3FsaXRlLnBjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGVfMi44LjE3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3NxbGl0ZS9zcWxpdGVfMi44LjE3LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGVfMi44LjE3LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvc3FsaXRlL3NxbGl0ZV8yLjguMTcuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9wcmVzZXJ2ZS1vd25lcnNoaXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvcHJlc2VydmUtb3duZXJzaGlwLnBhdGNoCmluZGV4IDg1YWY4MWYuLjVjOTAzOTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9wcmVzZXJ2ZS1vd25lcnNoaXAucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL3ByZXNlcnZlLW93bmVyc2hpcC5wYXRjaApAQCAtMSwxOSArMSw1MCBAQAorRnJvbSBhYTY2OTMxMmEzODA2MTFkMjgwZDEyNmNiNTA5ZmEyODIwODA3MDdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFya3VzIE1heWVyIDxtbWF5ZXJAbW1heWVyLm5ldD4KK0RhdGU6IFdlZCwgNyBTZXAgMjAxNiAxMjo1ODo0NyArMDMwMAorU3ViamVjdDogW1BBVENIXSBhbmRyb2lkLXRvb2xzOiBhZGQgcmVjaXBlIGZyb20gQU9TUCB0YWcgYW5kcm9pZC01LjEuMV9yMzcKKwogRGVzY3JpcHRpb246IGFkZCAtbyBhcmd1bWVudCB0byBwcmVzZXJ2ZSBvd25lcnNoaXAKLUF1dGhvcjogTWFya3VzIE1heWVyIDxtbWF5ZXJAbW1heWVyLm5ldD4KIAogU2VlIGFsc28gaHR0cHM6Ly9hbmRyb2lkLXJldmlldy5nb29nbGVzb3VyY2UuY29tLyMvYy8xMDAzMTIvCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorCiAtLS0KLSBzeXN0ZW0vZXh0cmFzL2V4dDRfdXRpbHMvbWFrZV9leHQ0ZnMuYyAgICAgIHwgICAgNiArKysrKysKLSBzeXN0ZW0vZXh0cmFzL2V4dDRfdXRpbHMvbWFrZV9leHQ0ZnNfbWFpbi5jIHwgICAxMCArKysrKysrKy0tCisgZXh0NF91dGlscy9tYWtlX2V4dDRmcy5jICAgICAgfCAgNiArKysrKysKKyBleHQ0X3V0aWxzL21ha2VfZXh0NGZzX21haW4uYyB8IDEwICsrKysrKysrLS0KICAyIGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLS0tLSBhL3N5c3RlbS9leHRyYXMvZXh0NF91dGlscy9tYWtlX2V4dDRmc19tYWluLmMKLSsrKyBiL3N5c3RlbS9leHRyYXMvZXh0NF91dGlscy9tYWtlX2V4dDRmc19tYWluLmMKLUBAIC00OSwxMyArNDksMTUgQEAgZXh0ZXJuIHN0cnVjdCBmc19pbmZvIGluZm87CitkaWZmIC0tZ2l0IGEvZXh0NF91dGlscy9tYWtlX2V4dDRmcy5jIGIvZXh0NF91dGlscy9tYWtlX2V4dDRmcy5jCitpbmRleCAyZjg5YWU4YS4uY2M0MWQ2MjMgMTAwNjQ0CistLS0gYS9leHQ0X3V0aWxzL21ha2VfZXh0NGZzLmMKKysrKyBiL2V4dDRfdXRpbHMvbWFrZV9leHQ0ZnMuYworQEAgLTY4LDYgKzY4LDggQEAKICAKLSBleHRlcm4gc3RydWN0IHNlbGFiZWxfaGFuZGxlKiBzZWxpbnV4X2FuZHJvaWRfZmlsZV9jb250ZXh0X2hhbmRsZSh2b2lkKTsKKyAjZW5kaWYKKyAKKytpbnQgcHJlc2VydmVfb3duZXIgPSAwOworKworIC8qIFRPRE86IE5vdCBpbXBsZW1lbnRlZDoKKyAgICBBbGxvY2F0aW5nIGJsb2NrcyBpbiB0aGUgc2FtZSBibG9jayBncm91cCBhcyB0aGUgZmlsZSBpbm9kZQorICAgIEhhc2ggb3IgYmluYXJ5IHRyZWUgZGlyZWN0b3JpZXMKK0BAIC0xODYsNiArMTg4LDEwIEBAIHN0YXRpYyB1MzIgYnVpbGRfZGlyZWN0b3J5X3N0cnVjdHVyZShjb25zdCBjaGFyICpmdWxsX3BhdGgsIGNvbnN0IGNoYXIgKmRpcl9wYXRoCisgCQl9IGVsc2UgeworIAkJCWRlbnRyaWVzW2ldLm10aW1lID0gZml4ZWRfdGltZTsKKyAJCX0KKysJCWlmIChwcmVzZXJ2ZV9vd25lcikgeworKwkJCWRlbnRyaWVzW2ldLnVpZCA9IHN0YXQuc3RfdWlkOworKwkJCWRlbnRyaWVzW2ldLmdpZCA9IHN0YXQuc3RfZ2lkOworKwkJfQorIAkJdWludDY0X3QgY2FwYWJpbGl0aWVzOworIAkJaWYgKGZzX2NvbmZpZ19mdW5jICE9IE5VTEwpIHsKKyAjaWZkZWYgQU5EUk9JRAorZGlmZiAtLWdpdCBhL2V4dDRfdXRpbHMvbWFrZV9leHQ0ZnNfbWFpbi5jIGIvZXh0NF91dGlscy9tYWtlX2V4dDRmc19tYWluLmMKK2luZGV4IGE2YzVmNjE2Li43YWYwZGRkZiAxMDA2NDQKKy0tLSBhL2V4dDRfdXRpbHMvbWFrZV9leHQ0ZnNfbWFpbi5jCisrKysgYi9leHQ0X3V0aWxzL21ha2VfZXh0NGZzX21haW4uYworQEAgLTQ4LDEzICs0OCwxNSBAQCBzdHJ1Y3Qgc2VsYWJlbF9oYW5kbGU7CisgZXh0ZXJuIHN0cnVjdCBmc19pbmZvIGluZm87CisgCiAgCiArZXh0ZXJuIGludCBwcmVzZXJ2ZV9vd25lcjsKICsKQEAgLTI4LDcgKzU5LDcgQEAKICAJZnByaW50ZihzdGRlcnIsICIgICAgPGZpbGVuYW1lPiBbPGRpcmVjdG9yeT5dXG4iKTsKICB9CiAgCi1AQCAtODEsNyArODMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitAQCAtODAsNyArODIsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgCXN0cnVjdCBzZWxpbnV4X29wdCBzZW9wdHNbXSA9IHsgeyBTRUxBQkVMX09QVF9QQVRILCAiIiB9IH07CiAgI2VuZGlmCiAgCkBAIC0zNyw3ICs2OCw3IEBACiAgCQlzd2l0Y2ggKG9wdCkgewogIAkJY2FzZSAnbCc6CiAgCQkJaW5mby5sZW4gPSBwYXJzZV9udW0ob3B0YXJnKTsKLUBAIC0xNDQsNiArMTQ2LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK0BAIC0xNDMsNiArMTQ1LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAJCQl9CiAgI2VuZGlmCiAgCQkJYnJlYWs7CkBAIC00OCwyNSArNzksMyBAQAogIAkJY2FzZSAndic6CiAgCQkJdmVyYm9zZSA9IDE7CiAgCQkJYnJlYWs7Ci0tLS0gYS9zeXN0ZW0vZXh0cmFzL2V4dDRfdXRpbHMvbWFrZV9leHQ0ZnMuYwotKysrIGIvc3lzdGVtL2V4dHJhcy9leHQ0X3V0aWxzL21ha2VfZXh0NGZzLmMKLUBAIC02Nyw2ICs2Nyw4IEBACi0gCi0gI2VuZGlmCi0gCi0raW50IHByZXNlcnZlX293bmVyID0gMDsKLSsKLSAvKiBUT0RPOiBOb3QgaW1wbGVtZW50ZWQ6Ci0gICAgQWxsb2NhdGluZyBibG9ja3MgaW4gdGhlIHNhbWUgYmxvY2sgZ3JvdXAgYXMgdGhlIGZpbGUgaW5vZGUKLSAgICBIYXNoIG9yIGJpbmFyeSB0cmVlIGRpcmVjdG9yaWVzCi1AQCAtMTg1LDYgKzE4NywxMCBAQCBzdGF0aWMgdTMyIGJ1aWxkX2RpcmVjdG9yeV9zdHJ1Y3R1cmUoY29uCi0gCQl9IGVsc2UgewotIAkJCWRlbnRyaWVzW2ldLm10aW1lID0gZml4ZWRfdGltZTsKLSAJCX0KLSsJCWlmIChwcmVzZXJ2ZV9vd25lcikgewotKwkJCWRlbnRyaWVzW2ldLnVpZCA9IHN0YXQuc3RfdWlkOwotKwkJCWRlbnRyaWVzW2ldLmdpZCA9IHN0YXQuc3RfZ2lkOwotKwkJfQotIAkJdWludDY0X3QgY2FwYWJpbGl0aWVzOwotIAkJaWYgKGZzX2NvbmZpZ19mdW5jICE9IE5VTEwpIHsKLSAjaWZkZWYgQU5EUk9JRApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzXzUuMS4xLnIzNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29sc181LjEuMS5yMzcuYmIKaW5kZXggZDNjY2QxZC4uNzgwZWNhYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzXzUuMS4xLnIzNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHNfNS4xLjEucjM3LmJiCkBAIC05LDcgKzksNiBAQAogIgogREVQRU5EUyA9ICJsaWJic2QgbGlicGNyZSBvcGVuc3NsIHpsaWIgbGliY2FwIgogCi1BTkRST0lEX1RBRyA9ICJhbmRyb2lkLTUuMS4xX3IzNyIKIEFORFJPSURfTUlSUk9SID0gImFuZHJvaWQuZ29vZ2xlc291cmNlLmNvbSIKIENPUkVfUkVQTyA9ICIke0FORFJPSURfTUlSUk9SfS9wbGF0Zm9ybS9zeXN0ZW0vY29yZSIKIEVYVFJBU19SRVBPID0gIiR7QU5EUk9JRF9NSVJST1J9L3BsYXRmb3JtL3N5c3RlbS9leHRyYXMiCkBAIC0xNywxNiArMTYsMjMgQEAKIExJQlNFTElOVVhfUkVQTyA9ICIke0FORFJPSURfTUlSUk9SfS9wbGF0Zm9ybS9leHRlcm5hbC9saWJzZWxpbnV4IgogQlVJTERfUkVQTyA9ICIke0FORFJPSURfTUlSUk9SfS9wbGF0Zm9ybS9idWlsZCIKIAorIyBtYXRjaGVzIHdpdGggYW5kcm9pZC01LjEuMV9yMzcKK1NSQ1JFVl9jb3JlID0gIjIzMTRiMTEwYmRlYmRiZmQyZDk0YzUwMjI4MmY5ZTU3Yzg0OTg5N2UiCitTUkNSRVZfZXh0cmFzID0gIjNlY2JlOGQ4NDFkZjk2MTI3ZDc4NTU2NjEyOTNlNWFiNmJhNmMyMDUiCitTUkNSRVZfbGliaGFyZHdhcmUgPSAiYmU1NWViMWY0ZDg0MGM4MmZmYWY3YzQ3NDYwZGYxN2ZmNWJjNGQ5YiIKK1NSQ1JFVl9saWJzZWxpbnV4ID0gIjA3ZTllMTMzOWFkMWJhNjA4YWNmYmE5ZGNlMmQwZjQ3NGIyNTJmZWIiCitTUkNSRVZfYnVpbGQgPSAiMTZlOTg3ZGVmM2Q3ZDhmN2QzMDgwNWViOTVjZWY2OWU1MmE4N2RiYyIKKwogU1JDX1VSSSA9ICIgXAotICAgIGdpdDovLyR7Q09SRV9SRVBPfTtuYW1lPWNvcmU7cHJvdG9jb2w9aHR0cHM7bm9icmFuY2g9MTtkZXN0c3VmZml4PWdpdC9zeXN0ZW0vY29yZTt0YWc9JHtBTkRST0lEX1RBR30gXAotICAgIGdpdDovLyR7RVhUUkFTX1JFUE99O25hbWU9ZXh0cmFzO3Byb3RvY29sPWh0dHBzO25vYnJhbmNoPTE7ZGVzdHN1ZmZpeD1naXQvc3lzdGVtL2V4dHJhczt0YWc9JHtBTkRST0lEX1RBR30gXAotICAgIGdpdDovLyR7TElCSEFSRFdBUkVfUkVQT307bmFtZT1saWJoYXJkd2FyZTtwcm90b2NvbD1odHRwcztub2JyYW5jaD0xO2Rlc3RzdWZmaXg9Z2l0L2hhcmR3YXJlL2xpYmhhcmR3YXJlO3RhZz0ke0FORFJPSURfVEFHfSBcCi0gICAgZ2l0Oi8vJHtMSUJTRUxJTlVYX1JFUE99O25hbWU9bGlic2VsaW51eDtwcm90b2NvbD1odHRwcztub2JyYW5jaD0xO2Rlc3RzdWZmaXg9Z2l0L2V4dGVybmFsL2xpYnNlbGludXg7dGFnPSR7QU5EUk9JRF9UQUd9IFwKLSAgICBnaXQ6Ly8ke0JVSUxEX1JFUE99O25hbWU9YnVpbGQ7cHJvdG9jb2w9aHR0cHM7bm9icmFuY2g9MTtkZXN0c3VmZml4PWdpdC9idWlsZDt0YWc9JHtBTkRST0lEX1RBR30gXAorICAgIGdpdDovLyR7Q09SRV9SRVBPfTtuYW1lPWNvcmU7cHJvdG9jb2w9aHR0cHM7bm9icmFuY2g9MTtkZXN0c3VmZml4PWdpdC9zeXN0ZW0vY29yZSBcCisgICAgZ2l0Oi8vJHtFWFRSQVNfUkVQT307bmFtZT1leHRyYXM7cHJvdG9jb2w9aHR0cHM7bm9icmFuY2g9MTtkZXN0c3VmZml4PWdpdC9zeXN0ZW0vZXh0cmFzIFwKKyAgICBnaXQ6Ly8ke0xJQkhBUkRXQVJFX1JFUE99O25hbWU9bGliaGFyZHdhcmU7cHJvdG9jb2w9aHR0cHM7bm9icmFuY2g9MTtkZXN0c3VmZml4PWdpdC9oYXJkd2FyZS9saWJoYXJkd2FyZSBcCisgICAgZ2l0Oi8vJHtMSUJTRUxJTlVYX1JFUE99O25hbWU9bGlic2VsaW51eDtwcm90b2NvbD1odHRwcztub2JyYW5jaD0xO2Rlc3RzdWZmaXg9Z2l0L2V4dGVybmFsL2xpYnNlbGludXggXAorICAgIGdpdDovLyR7QlVJTERfUkVQT307bmFtZT1idWlsZDtwcm90b2NvbD1odHRwcztub2JyYW5jaD0xO2Rlc3RzdWZmaXg9Z2l0L2J1aWxkIFwKICAgICBmaWxlOi8vcmVtb3ZlLXNlbGludXgtYW5kcm9pZC5wYXRjaCBcCiAgICAgZmlsZTovL3VzZS1jYXBhYmlsaXR5LnBhdGNoIFwKICAgICBmaWxlOi8vdXNlLWxvY2FsLXNvY2tldC5wYXRjaCBcCi0gICAgZmlsZTovL3ByZXNlcnZlLW93bmVyc2hpcC5wYXRjaCBcCisgICAgZmlsZTovL3ByZXNlcnZlLW93bmVyc2hpcC5wYXRjaDtwYXRjaGRpcj1zeXN0ZW0vZXh0cmFzIFwKICAgICBmaWxlOi8vbWtib290aW1nLUFkZC1kdC1wYXJhbWV0ZXItdG8tc3BlY2lmeS1EVC1pbWFnZS5wYXRjaCBcCiAgICAgZmlsZTovL3JlbW92ZS1iaW9uaWMtYW5kcm9pZC5wYXRjaCBcCiAgICAgZmlsZTovL2RlZmluZS1zaGVsbC1jb21tYW5kLnBhdGNoIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDEtZGlzYWJsZS1jYWxscy10by1nZXRjb250ZXh0LXdpdGgtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDEtZGlzYWJsZS1jYWxscy10by1nZXRjb250ZXh0LXdpdGgtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzYyNzU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwMS1kaXNhYmxlLWNhbGxzLXRvLWdldGNvbnRleHQtd2l0aC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsNTIgQEAKK0Zyb20gNTdlY2Y3MjA1ZmVlZGQyM2Y5MDFlMWJiOWQxOTM3ODdlNTU5ZTQzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDIzIEphbiAyMDE4IDE1OjEzOjI2IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGRpc2FibGUgY2FsbHMgdG8gZ2V0Y29udGV4dCgpIHdpdGggbXVzbAorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorLS0tCisgc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjIHwgMTcgKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjIGIvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCitpbmRleCBjY2EwMjNmLi5mM2U0NjBjIDEwMDY0NAorLS0tIGEvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCisrKysgYi9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKK0BAIC00OTUsNyArNDk1LDE5IEBAIGJvb2wgRXhjZXB0aW9uSGFuZGxlcjo6U2ltdWxhdGVTaWduYWxEZWxpdmVyeShpbnQgc2lnKSB7CisgICBzaWdpbmZvLnNpX2NvZGUgPSBTSV9VU0VSOworICAgc2lnaW5mby5zaV9waWQgPSBnZXRwaWQoKTsKKyAgIHVjb250ZXh0X3QgY29udGV4dDsKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgICBnZXRjb250ZXh0KCZjb250ZXh0KTsKKysjZWxzZQorKyAgLy8gRXh0cmVtZSBoYWNrOiBBbGxvdyBtdXNsIGJ1aWxkcyB0byBjb21waWxlIC0gYnV0IGRvbid0IGV4cGVjdCB0aGVtIHRvIHdvcmsuCisrICAvLyBBbHRob3VnaCBtdXNsIHByb3ZpZGVzIGEgZGVmaW5pdGlvbiBmb3IgZ2V0Y29udGV4dCgpIGluIHVjb250ZXh0LmggKHdoaWNoCisrICAvLyBlbm91Z2ggdG8gYnVpbGQgbGliYnJlYWtwYWRfY2xpZW50KSBtdXNsIGRvZXMgbm90IHByb3ZpZGUgYSBjb3JyZXNwb25kaW5nCisrICAvLyBnZXRjb250ZXh0KCkgZnVuY3Rpb24sIHNvIGJ1aWxkcyB3aWxsIGZhaWwgd2hlbiBhdHRlbXB0aW5nIHRvIGxpbmsgYW55dGhpbmcKKysgIC8vIHdpdGggbGliYnJlYWtwYWRfY2xpZW50LiBEaXNhYmxpbmcgY2FsbHMgdG8gZ2V0Y29udGV4dCgpIGlzIGEgdGVtcG9yYXJ5CisrICAvLyBoYWNrLiBUaGUgcmVhbCBmaXggaXMgcHJvYmFibHkgdG8gZW5hYmxlIEJyZWFrcGFkJ3Mgb3duIGltcGxlbWVudGF0aW9uIG9mCisrICAvLyBnZXRjb250ZXh0KCkgd2hlbiBidWlsZGluZyBmb3IgbXVzbCAoaXQncyBjdXJyZW50bHkgb25seSBlbmFibGVkIHdoZW4KKysgIC8vIGJ1aWxkaW5nIGZvciBBbmRyb2lkKS4KKysgIG1lbXNldCAoJmNvbnRleHQsIDAsIHNpemVvZihjb250ZXh0KSk7CisrI2VuZGlmCisgICByZXR1cm4gSGFuZGxlU2lnbmFsKHNpZywgJnNpZ2luZm8sICZjb250ZXh0KTsKKyB9CisgCitAQCAtNjgwLDkgKzY5MiwxNCBAQCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6OldyaXRlTWluaWR1bXAoKSB7CisgICBzeXNfcHJjdGwoUFJfU0VUX0RVTVBBQkxFLCAxLCAwLCAwLCAwKTsKKyAKKyAgIENyYXNoQ29udGV4dCBjb250ZXh0OworKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgIGludCBnZXRjb250ZXh0X3Jlc3VsdCA9IGdldGNvbnRleHQoJmNvbnRleHQuY29udGV4dCk7CisgICBpZiAoZ2V0Y29udGV4dF9yZXN1bHQpCisgICAgIHJldHVybiBmYWxzZTsKKysjZWxzZQorKyAgLy8gRXh0cmVtZSBoYWNrIC0gc2VlIGNvbW1lbnRzIGFib3ZlLgorKyAgbWVtc2V0ICgmY29udGV4dC5jb250ZXh0LCAwLCBzaXplb2YoJmNvbnRleHQuY29udGV4dCkpOworKyNlbmRpZgorIAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgLy8gSW4gQ1BVRmlsbEZyb21VQ29udGV4dCBpbiBtaW5pZHVtcHdyaXRlci5jYyB0aGUgc3RhY2sgcG9pbnRlciBpcyByZXRyaWV2ZWQKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwNS1JbXBvcnQtbmVjZXNzYXJ5LWRlZmluaXRpb25zLWZyb20tc3RhYi5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwNS1JbXBvcnQtbmVjZXNzYXJ5LWRlZmluaXRpb25zLWZyb20tc3RhYi5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGRlOGM2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDUtSW1wb3J0LW5lY2Vzc2FyeS1kZWZpbml0aW9ucy1mcm9tLXN0YWIuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5OSArMCwwIEBACi1Gcm9tIGZhN2EzYjczMTIzMDdhY2FkMDA0NTU0OWQ1ZjMwNmU3ZmQxMTc4MDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGZWxpeCBKYW5kYSA8ZmVsaXguamFuZGFAcG9zdGVvLmRlPgotRGF0ZTogU3VuLCAxIEZlYiAyMDE1IDE0OjM0OjQ0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggNS82XSBJbXBvcnQgbmVjZXNzYXJ5IGRlZmluaXRpb25zIGZyb20gc3RhYi5oCi0KLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxIC0KLSBzcmMvY29tbW9uL2FuZHJvaWQvaW5jbHVkZS9zdGFiLmggICB8IDEwMCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBzcmMvY29tbW9uL2NvbW1vbi5neXAgICAgICAgICAgICAgICB8ICAgMSAtCi0gc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuY2MgICAgICAgICAgfCAgIDEgLQotIHNyYy9jb21tb24vc3RhYnNfcmVhZGVyLmggICAgICAgICAgIHwgIDEzICsrKy0tCi0gc3JjL2NvbW1vbi9zdGFic19yZWFkZXJfdW5pdHRlc3QuY2MgfCAgIDEgLQotIDYgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTA3IGRlbGV0aW9ucygtKQotIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvY29tbW9uL2FuZHJvaWQvaW5jbHVkZS9zdGFiLmgKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMjIyMzkyMC4uMGU1NWNkOSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNzMsNyArNzMsNiBAQCBBQ19IRUFERVJfU1REQwotIEFDX1NZU19MQVJHRUZJTEUKLSBtNF9pbmNsdWRlKG00L2F4X3B0aHJlYWQubTQpCi0gQVhfUFRIUkVBRAotLUFDX0NIRUNLX0hFQURFUlMoW2Eub3V0LmhdKQotIAotICMgT25seSBidWlsZCBMaW51eCBjbGllbnQgbGlicyB3aGVuIGNvbXBpbGluZyBmb3IgTGludXgKLSBjYXNlICRob3N0IGluCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9hbmRyb2lkL2luY2x1ZGUvc3RhYi5oIGIvc3JjL2NvbW1vbi9hbmRyb2lkL2luY2x1ZGUvc3RhYi5oCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IGNkOTI5MDIuLjAwMDAwMDAKLS0tLSBhL3NyYy9jb21tb24vYW5kcm9pZC9pbmNsdWRlL3N0YWIuaAotKysrIC9kZXYvbnVsbAotQEAgLTEsMTAwICswLDAgQEAKLS0vLyBDb3B5cmlnaHQgKGMpIDIwMTIsIEdvb2dsZSBJbmMuCi0tLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS0vLwotLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS0vLyBtZXQ6Ci0tLy8KLS0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0tLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS0vLyBkaXN0cmlidXRpb24uCi0tLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLS8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0tLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS0vLwotLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0tLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0tLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLS8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS0vLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLS0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLQotLSNpZm5kZWYgR09PR0xFX0JSRUFLUEFEX0NPTU1PTl9BTkRST0lEX0lOQ0xVREVfU1RBQl9ICi0tI2RlZmluZSBHT09HTEVfQlJFQUtQQURfQ09NTU9OX0FORFJPSURfSU5DTFVERV9TVEFCX0gKLS0KLS0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci0tCi0tI2lmZGVmIF9fQklPTklDX0hBVkVfU1RBQl9ICi0tI2luY2x1ZGUgPHN0YWIuaD4KLS0jZWxzZQotLQotLSNpZmRlZiBfX2NwbHVzcGx1cwotLWV4dGVybiAiQyIgewotLSNlbmRpZiAgLy8gX19jcGx1c3BsdXMKLS0KLS0jZGVmaW5lIF9TVEFCX0NPREVfTElTVCAgICAgICBcCi0tICBfU1RBQl9DT0RFX0RFRihVTkRGLDB4MDApICAgXAotLSAgX1NUQUJfQ09ERV9ERUYoR1NZTSwweDIwKSAgIFwKLS0gIF9TVEFCX0NPREVfREVGKEZOQU1FLDB4MjIpICBcCi0tICBfU1RBQl9DT0RFX0RFRihGVU4sMHgyNCkgICAgXAotLSAgX1NUQUJfQ09ERV9ERUYoU1RTWU0sMHgyNikgIFwKLS0gIF9TVEFCX0NPREVfREVGKExDU1lNLDB4MjgpICBcCi0tICBfU1RBQl9DT0RFX0RFRihNQUlOLDB4MmEpICAgXAotLSAgX1NUQUJfQ09ERV9ERUYoUEMsMHgzMCkgICAgIFwKLS0gIF9TVEFCX0NPREVfREVGKE5TWU1TLDB4MzIpICBcCi0tICBfU1RBQl9DT0RFX0RFRihOT01BUCwweDM0KSAgXAotLSAgX1NUQUJfQ09ERV9ERUYoT0JKLDB4MzgpICAgIFwKLS0gIF9TVEFCX0NPREVfREVGKE9QVCwweDNjKSAgICBcCi0tICBfU1RBQl9DT0RFX0RFRihSU1lNLDB4NDApICAgXAotLSAgX1NUQUJfQ09ERV9ERUYoTTJDLDB4NDIpICAgIFwKLS0gIF9TVEFCX0NPREVfREVGKFNMSU5FLDB4NDQpICBcCi0tICBfU1RBQl9DT0RFX0RFRihEU0xJTkUsMHg0NikgXAotLSAgX1NUQUJfQ09ERV9ERUYoQlNMSU5FLDB4NDgpIFwKLS0gIF9TVEFCX0NPREVfREVGKEJST1dTLDB4NDgpICBcCi0tICBfU1RBQl9DT0RFX0RFRihERUZELDB4NGEpICAgXAotLSAgX1NUQUJfQ09ERV9ERUYoRUhERUNMLDB4NTApIFwKLS0gIF9TVEFCX0NPREVfREVGKE1PRDIsMHg1MCkgICBcCi0tICBfU1RBQl9DT0RFX0RFRihDQVRDSCwweDU0KSAgXAotLSAgX1NUQUJfQ09ERV9ERUYoU1NZTSwweDYwKSAgIFwKLS0gIF9TVEFCX0NPREVfREVGKFNPLDB4NjQpICAgICBcCi0tICBfU1RBQl9DT0RFX0RFRihMU1lNLDB4ODApICAgXAotLSAgX1NUQUJfQ09ERV9ERUYoQklOQ0wsMHg4MikgIFwKLS0gIF9TVEFCX0NPREVfREVGKFNPTCwweDg0KSAgICBcCi0tICBfU1RBQl9DT0RFX0RFRihQU1lNLDB4YTApICAgXAotLSAgX1NUQUJfQ09ERV9ERUYoRUlOQ0wsMHhhMikgIFwKLS0gIF9TVEFCX0NPREVfREVGKEVOVFJZLDB4YTQpICBcCi0tICBfU1RBQl9DT0RFX0RFRihMQlJBQywweGMwKSAgXAotLSAgX1NUQUJfQ09ERV9ERUYoRVhDTCwweGMyKSAgIFwKLS0gIF9TVEFCX0NPREVfREVGKFNDT1BFLDB4YzQpICBcCi0tICBfU1RBQl9DT0RFX0RFRihSQlJBQywweGUwKSAgXAotLSAgX1NUQUJfQ09ERV9ERUYoQkNPTU0sMHhlMikgIFwKLS0gIF9TVEFCX0NPREVfREVGKEVDT01NLDB4ZTQpICBcCi0tICBfU1RBQl9DT0RFX0RFRihFQ09NTCwweGU4KSAgXAotLSAgX1NUQUJfQ09ERV9ERUYoTkJURVhULDB4ZjApIFwKLS0gIF9TVEFCX0NPREVfREVGKE5CREFUQSwweGYyKSBcCi0tICBfU1RBQl9DT0RFX0RFRihOQkJTUywweGY0KSAgXAotLSAgX1NUQUJfQ09ERV9ERUYoTkJTVFMsMHhmNikgIFwKLS0gIF9TVEFCX0NPREVfREVGKE5CTENTLDB4ZjgpICBcCi0tICBfU1RBQl9DT0RFX0RFRihMRU5HLDB4ZmUpCi0tCi0tZW51bSBfX3N0YWJfZGVidWdfY29kZSB7Ci0tI2RlZmluZSBfU1RBQl9DT0RFX0RFRih4LHkpICBOXyMjeCA9IHksCi0tX1NUQUJfQ09ERV9MSVNUCi0tI3VuZGVmIF9TVEFCX0NPREVfREVGCi0tfTsKLS0KLS0jaWZkZWYgX19jcGx1c3BsdXMKLS19ICAvLyBleHRlcm4gIkMiCi0tI2VuZGlmICAvLyBfX2NwbHVzcGx1cwotLQotLSNlbmRpZiAgLy8gX19CSU9OSUNfSEFWRV9TVEFCX0gKLS0KLS0jZW5kaWYgIC8vIEdPT0dMRV9CUkVBS1BBRF9DT01NT05fQU5EUk9JRF9JTkNMVURFX1NUQUJfSAotZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vY29tbW9uLmd5cCBiL3NyYy9jb21tb24vY29tbW9uLmd5cAotaW5kZXggZjAxZWRlNS4uYzQ5ZmY4NSAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb24vY29tbW9uLmd5cAotKysrIGIvc3JjL2NvbW1vbi9jb21tb24uZ3lwCi1AQCAtNDYsNyArNDYsNiBAQAotICAgICAgICAgJ2FuZHJvaWQvaW5jbHVkZS9lbGYuaCcsCi0gICAgICAgICAnYW5kcm9pZC9pbmNsdWRlL2xpbmsuaCcsCi0gICAgICAgICAnYW5kcm9pZC9pbmNsdWRlL3NnaWRlZnMuaCcsCi0tICAgICAgICAnYW5kcm9pZC9pbmNsdWRlL3N0YWIuaCcsCi0gICAgICAgICAnYW5kcm9pZC9pbmNsdWRlL3N5cy9wcm9jZnMuaCcsCi0gICAgICAgICAnYW5kcm9pZC9pbmNsdWRlL3N5cy9zaWduYWwuaCcsCi0gICAgICAgICAnYW5kcm9pZC9pbmNsdWRlL3N5cy91c2VyLmgnLAotZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vc3RhYnNfcmVhZGVyLmNjIGIvc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuY2MKLWluZGV4IDYwMTlmYzcuLjk1NjJjYWEgMTAwNjQ0Ci0tLS0gYS9zcmMvY29tbW9uL3N0YWJzX3JlYWRlci5jYwotKysrIGIvc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuY2MKLUBAIC0zNCw3ICszNCw2IEBACi0gI2luY2x1ZGUgImNvbW1vbi9zdGFic19yZWFkZXIuaCIKLSAKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2luY2x1ZGUgPHN0YWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0gI2luY2x1ZGUgPHN0cmluZz4KLWRpZmYgLS1naXQgYS9zcmMvY29tbW9uL3N0YWJzX3JlYWRlci5oIGIvc3JjL2NvbW1vbi9zdGFic19yZWFkZXIuaAotaW5kZXggZDg5YWZjMC4uNTkxZjAwNyAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb24vc3RhYnNfcmVhZGVyLmgKLSsrKyBiL3NyYy9jb21tb24vc3RhYnNfcmVhZGVyLmgKLUBAIC01MywxMiArNTMsMTkgQEAKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2VuZGlmCi0gCi0tI2lmZGVmIEhBVkVfQV9PVVRfSAotLSNpbmNsdWRlIDxhLm91dC5oPgotLSNlbmRpZgotICNpZmRlZiBIQVZFX01BQ0hfT19OTElTVF9ICi0gI2luY2x1ZGUgPG1hY2gtby9ubGlzdC5oPgotICNlbmRpZgotKy8vIERlZmluaXRpb25zIGZyb20gPHN0YWIuaD4gYW5kIDxhLm91dC5oPiBmb3Igc3lzdGVtcyB3aGljaAotKy8vIGRvIG5vdCBoYXZlIHRoZW0KLSsjdW5kZWYgTl9VTkRGCi0rI2RlZmluZSBOX1VOREYgMHgwCi0rI2RlZmluZSBOX0ZVTiAweDI0Ci0rI2RlZmluZSBOX1NMSU5FIDB4NDQKLSsjZGVmaW5lIE5fU08gMHg2NAotKyNkZWZpbmUgTl9MU1lNIDB4ODAKLSsjZGVmaW5lIE5fQklOQ0wgMHg4MgotKyNkZWZpbmUgTl9TT0wgMHg4NAotIAotICNpbmNsdWRlIDxzdHJpbmc+Ci0gI2luY2x1ZGUgPHZlY3Rvcj4KLWRpZmYgLS1naXQgYS9zcmMvY29tbW9uL3N0YWJzX3JlYWRlcl91bml0dGVzdC5jYyBiL3NyYy9jb21tb24vc3RhYnNfcmVhZGVyX3VuaXR0ZXN0LmNjCi1pbmRleCBhODRkYTFjLi44NTRhYzQyIDEwMDY0NAotLS0tIGEvc3JjL2NvbW1vbi9zdGFic19yZWFkZXJfdW5pdHRlc3QuY2MKLSsrKyBiL3NyYy9jb21tb24vc3RhYnNfcmVhZGVyX3VuaXR0ZXN0LmNjCi1AQCAtMzMsNyArMzMsNiBAQAotIAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8c3RhYi5oPgotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotLS0gCi0yLjAuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZF9naXQuYmIKaW5kZXggNWY2ZDgyYy4uZDk3NzNjOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWRfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkX2dpdC5iYgpAQCAtNDEsNiArNDEsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwNS1tZDJjb3JlLVJlcGxhY2UtYmFzZW5hbWUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1Vc2UtX2Zwc3RhdGUtaW5zdGVhZC1vZi1fbGliY19mcHN0YXRlLW9uLWxpbnV4LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL21jb250ZXh0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZGlzYWJsZS1jYWxscy10by1nZXRjb250ZXh0LXdpdGgtbXVzbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxzcy1NYXRjaC1zeXNjYWxscy10by1tYXRjaC1tdXNsLnBhdGNoO3BhdGNoZGlyPXNyYy90aGlyZF9wYXJ0eS9sc3MgXAogICAgICAgICAgICBmaWxlOi8vbWlwc19hc21fc2dpZGVmcy5wYXRjaDtwYXRjaGRpcj1zcmMvdGhpcmRfcGFydHkvbHNzIFwKICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NvbmN1cnJlbmN5a2l0L2NvbmN1cnJlbmN5a2l0L2Nyb3NzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY29uY3VycmVuY3lraXQvY29uY3VycmVuY3lraXQvY3Jvc3MucGF0Y2gKaW5kZXggZDNiZmFiNy4uOWU1MDU4ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY29uY3VycmVuY3lraXQvY29uY3VycmVuY3lraXQvY3Jvc3MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY29uY3VycmVuY3lraXQvY29uY3VycmVuY3lraXQvY3Jvc3MucGF0Y2gKQEAgLTEsOCArMSwxNiBAQAotSW5kZXg6IGdpdC9jb25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9jb25maWd1cmUJMjAxMi0xMS0xOSAyMTowNzo1MS45MTc0Mjk0NjUgLTA4MDAKLSsrKyBnaXQvY29uZmlndXJlCTIwMTItMTEtMTkgMjE6MTM6MTkuMzM3NDM3Mjc4IC0wODAwCi1AQCAtNDM5LDE0ICs0NDIsMTggQEAKK0Zyb20gYWIwZWVjNzgzODJiZDAwY2U1MzNhZWMyYzg0ZmQ1MGMxNzMzMDMzZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDUgSmFuIDIwMTMgMTk6NDI6NTEgLTA4MDAKKworLS0tCisgY29uZmlndXJlIHwgMzIgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IDc2YzI4MTIuLjc4Y2UyZmYgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTUzNSwxNCArNTM1LDE4IEBAIGVsc2UKICAJR1pJUF9TVUZGSVg9Ii5neiIKICBmaQogIApAQCAtMjUsMTIgKzMzLDE2IEBACiArCWNhdCA8PCBFT0YgPiAuMS5jCiAgI2luY2x1ZGUgPHN0ZGlvLmg+CiAgaW50IG1haW4odm9pZCkgewotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gNCkKLUBAIC01NjksMTYgKzU3NiwxNiBAQAorICNpZiBkZWZpbmVkKF9XSU4zMikKK0BAIC01NjksMTYgKzU3MywxNiBAQCBpbnQgbWFpbih2b2lkKSB7CiAgI2VuZGlmCiAgfQogIEVPRgotLQorKwkkQ0MgLW8gLjEgLjEuYworKwlDT01QSUxFUj1gLi8uMWAKKysJcj0kPworKwlybSAtZiAuMS5jIC4xCisgCiAtJENDIC1vIC4xIC4xLmMKIC1DT01QSUxFUj1gLi8uMWAKIC1yPSQ/CkBAIC00MCwxMSArNTIsNiBAQAogLQlhc3NlcnQgIiIgInVwZGF0ZSBjb21waWxlciIKIC1lbHNlCiAtCWVjaG8gInN1Y2Nlc3MgWyRDQ10iCi0rCSRDQyAtbyAuMSAuMS5jCi0rCUNPTVBJTEVSPWAuLy4xYAotKwlyPSQ/Ci0rCXJtIC1mIC4xLmMgLjEKLSsKICsJaWYgdGVzdCAiJHIiIC1uZSAwOyB0aGVuCiArCQlhc3NlcnQgIiIgInVwZGF0ZSBjb21waWxlciIKICsJZWxzZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3B1aWQvY3B1aWRfMjAxNzAxMjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jcHVpZC9jcHVpZF8yMDE3MDEyMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTcwZjc1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3B1aWQvY3B1aWRfMjAxNzAxMjIuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJMaW51eCB0b29sIHRvIGR1bXAgeDg2IENQVUlEIGluZm9ybWF0aW9uIGFib3V0IHRoZSBDUFUocykiCitERVNDUklQVElPTiA9ICJjcHVpZCBkdW1wcyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQ1BVKHMpIGdhdGhlcmVkIFwKK2Zyb20gdGhlIENQVUlEIGluc3RydWN0aW9uLCBhbmQgYWxzbyBkZXRlcm1pbmVzIHRoZSBleGFjdCBtb2RlbCBvZiBDUFUocykuIFwKK0l0IHN1cHBvcnRzIEludGVsLCBBTUQsIGFuZCBWSUEgQ1BVcywgYXMgd2VsbCBhcyBvbGRlciBUcmFuc21ldGEsIEN5cml4LCBcCitVTUMsIE5leEdlbiwgUmlzZSwgYW5kIFNpUyBDUFVzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZXRhbGxlbi5jb20vJHtCUE59LyR7QlB9LnNyYy50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMWM0NmE2NjYyNjI2YzVhNmVhY2E2MjZmMjNhNWE3ZDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjY3NjEyYWFlNjcwNDM0MWRkMTA4NDRlOTdjODRjNWM1Yzg3MDA4MTdhNTkzN2EzYzI5M2I1NTAxM2JjNDg2NSIKKworQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NCkuKi1saW51eCIKKworIyBUaGUgaW5zdGFsbCBydWxlIGZyb20gdGhlIE1ha2VmaWxlIGhhcyBoYXJkY29kZWQgcGF0aHMsIHNvIHdlIGR1cGxpY2F0ZQorIyB0aGUgYWN0aW9ucyB0byBhY2NvbW1vZGF0ZSBkaWZmZXJlbnQgcGF0aHMuCitkb19pbnN0YWxsICgpIHsKKyAgICBpbnN0YWxsIC1kIC1tNzU1ICR7RH0vJHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtbTc1NSAke0J9L2NwdWlkICR7RH0vJHtiaW5kaXJ9L2NwdWlkCisgICAgaW5zdGFsbCAtZCAtbTc1NSAke0R9LyR7bWFuZGlyfQorICAgIGluc3RhbGwgLW00NDQgJHtCfS9jcHVpZC5tYW4uZ3ogJHtEfS8ke21hbmRpcn0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2ZsYXRidWZmZXJzL2ZsYXRidWZmZXJzXzEuNy4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZmxhdGJ1ZmZlcnMvZmxhdGJ1ZmZlcnNfMS45LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2ZsYXRidWZmZXJzL2ZsYXRidWZmZXJzXzEuNy4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9mbGF0YnVmZmVycy9mbGF0YnVmZmVyc18xLjkuMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2VhbnkvZ2VhbnktcGx1Z2luc18xLjMxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2VhbnkvZ2VhbnktcGx1Z2luc18xLjMxLmJiCmluZGV4IDI3ZmU4NjAuLmQ4ZjJmODkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dlYW55L2dlYW55LXBsdWdpbnNfMS4zMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nZWFueS9nZWFueS1wbHVnaW5zXzEuMzEuYmIKQEAgLTExLDYgKzExLDcgQEAKIH0KIAogREVQRU5EUyA9ICIgXAorICAgIGZyaWJpZGkgXAogICAgIGdlYW55IFwKICAgICBsaWJ4bWwyIFwKICAgICBsaWJzb3VwLTIuNCBcCkBAIC0yMiw3ICsyMyw5IEBACiAgICAgbGliZ2l0MiBcCiAiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstaWNvbi1jYWNoZQoraW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstaWNvbi1jYWNoZQorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBTUkNfVVJJID0gImh0dHA6Ly9wbHVnaW5zLmdlYW55Lm9yZy8ke1BOfS8ke1BOfS0ke1BWfS50YXIuYnoyIgogU1JDX1VSSVttZDVzdW1dID0gIjgwOGY5MDQ4Yjc3ZmQ5NzA0NTY5ZWQyYmExMmE1NmU5IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2VhbnkvZ2VhbnlfMS4zMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dlYW55L2dlYW55XzEuMzEuYmIKaW5kZXggY2UzNmUxZS4uYmI5ZDhiYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2VhbnkvZ2VhbnlfMS4zMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nZWFueS9nZWFueV8xLjMxLmJiCkBAIC01LDcgKzUsOSBAQAogCiBERVBFTkRTID0gImd0aysgbGlieG1sLXBhcnNlci1wZXJsLW5hdGl2ZSBweXRob24zLWRvY3V0aWxzLW5hdGl2ZSBpbnRsdG9vbC1uYXRpdmUiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwZXJsbmF0aXZlIHB5dGhvbm5hdGl2ZSBnZXR0ZXh0Citpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBhdXRvdG9vbHMgcGtnY29uZmlnIHBlcmxuYXRpdmUgcHl0aG9ubmF0aXZlIGdldHRleHQKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAogU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuZ2Vhbnkub3JnLyR7QlB9LnRhci5iejIiCiBTUkNfVVJJW21kNXN1bV0gPSAiMzg2MDAwYmU2YjI2OTcyYzZhNjk5OTM5YzM3Y2RhMzQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZTMvMDAwMS1BZGQtR19HTlVDX1BSSU5URi1vbi1mdW5jdGlvbnMtd2l0aC1mb3JtYXQtc3RyaW5ncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlMy8wMDAxLUFkZC1HX0dOVUNfUFJJTlRGLW9uLWZ1bmN0aW9ucy13aXRoLWZvcm1hdC1zdHJpbmdzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2NiNzYyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlMy8wMDAxLUFkZC1HX0dOVUNfUFJJTlRGLW9uLWZ1bmN0aW9ucy13aXRoLWZvcm1hdC1zdHJpbmdzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotRnJvbSBmY2YyOWFiZTU5NjA3YjU3OTFmOWRlMThkZGI4NmI5YWUzYzliN2NjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMjYgQXVnIDIwMTcgMjM6NTA6MDUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIEdfR05VQ19QUklOVEYgb24gZnVuY3Rpb25zIHdpdGggZm9ybWF0IHN0cmluZ3MKLQotVGhpcyBhbGxvd3MgY29tcGlsYXRpb24gd2l0aCBjbGFuZyB3aXRob3V0IGVycm9ycywgZXZlbiB3aGVuCi0tV2Zvcm1hdC1ub25saXRlcmFsIGlzIGFjdGl2ZSAoYXMgbG9uZyBhcyB0aGVyZSBhcmUgbm8gcmVhbCBjYXNlcyBvZgotbm9uIGxpdGVyYWwgZm9ybWF0dGluZykuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnbGFkZXVpL2dsYWRlLWNvbW1hbmQuYyB8IDQgKystLQotIGdsYWRldWkvZ2xhZGUtdXRpbHMuYyAgIHwgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nbGFkZXVpL2dsYWRlLWNvbW1hbmQuYyBiL2dsYWRldWkvZ2xhZGUtY29tbWFuZC5jCi1pbmRleCA5ODE5NzY2Li40YWM0MGVlIDEwMDY0NAotLS0tIGEvZ2xhZGV1aS9nbGFkZS1jb21tYW5kLmMKLSsrKyBiL2dsYWRldWkvZ2xhZGUtY29tbWFuZC5jCi1AQCAtMjY2LDcgKzI2Niw3IEBAIGdsYWRlX2NvbW1hbmRfY29sbGFwc2UgKEdsYWRlQ29tbWFuZCAgKmNvbW1hbmQsCi0gICoKLSAgKiBNYXJrcyB0aGUgYmVnaW5pbmcgb2YgYSBncm91cC4KLSAgKi8KLS12b2lkCi0rR19HTlVDX1BSSU5URigxLCAyKSB2b2lkCi0gZ2xhZGVfY29tbWFuZF9wdXNoX2dyb3VwIChjb25zdCBnY2hhciAqZm10LCAuLi4pCi0gewotIAl2YV9saXN0ICAgICAgICAgYXJnczsKLUBAIC02NTUsNyArNjU1LDcgQEAgZ2xhZGVfY29tbWFuZF9zZXRfcHJvcGVydGllc19saXN0IChHbGFkZVByb2plY3QgKnByb2plY3QsIEdMaXN0ICpwcm9wcykKLSAKLSAJbXVsdGlwbGUgPSBnX2xpc3RfbGVuZ3RoIChtZS0+c2RhdGEpID4gMTsKLSAJaWYgKG11bHRpcGxlKQotLQkJZ2xhZGVfY29tbWFuZF9wdXNoX2dyb3VwIChjbWQtPmRlc2NyaXB0aW9uKTsKLSsJCWdsYWRlX2NvbW1hbmRfcHVzaF9ncm91cCAoIiVzIiwgY21kLT5kZXNjcmlwdGlvbik7Ci0gCi0gCi0gCWdsYWRlX2NvbW1hbmRfY2hlY2tfZ3JvdXAgKEdMQURFX0NPTU1BTkQgKG1lKSk7Ci1kaWZmIC0tZ2l0IGEvZ2xhZGV1aS9nbGFkZS11dGlscy5jIGIvZ2xhZGV1aS9nbGFkZS11dGlscy5jCi1pbmRleCBhZTUyNTAxLi5jNTFhZTU5IDEwMDY0NAotLS0tIGEvZ2xhZGV1aS9nbGFkZS11dGlscy5jCi0rKysgYi9nbGFkZXVpL2dsYWRlLXV0aWxzLmMKLUBAIC0xOTcsNyArMTk3LDcgQEAgZ2xhZGVfdXRpbHNfZ2V0X3BzcGVjX2Zyb21fZnVuY25hbWUgKGNvbnN0IGdjaGFyICpmdW5jbmFtZSkKLSAgKiAgICAgICAgICBzZWxlY3RlZCAiT0siLCBUcnVlIGlmIHRoZSBAdHlwZSB3YXMgR0xBREVfVUlfWUVTX09SX05PIGFuZAotICAqICAgICAgICAgIHRoZSB1c2VyIHNlbGVjdGVkICJZRVMiOyBGYWxzZSBvdGhlcndpc2UuCi0gICovCi0tZ2ludAotK0dfR05VQ19QUklOVEYoNCwgNSkgZ2ludAotIGdsYWRlX3V0aWxfdWlfbWVzc2FnZSAoR3RrV2lkZ2V0ICAgICAgICAgICAqcGFyZW50LCAKLSAJCSAgICAgICBHbGFkZVVJTWVzc2FnZVR5cGUgICB0eXBlLAotIAkJICAgICAgIEd0a1dpZGdldCAgICAgICAgICAgKndpZGdldCwKLUBAIC0zMjAsNyArMzIwLDcgQEAgcmVtb3ZlX21lc3NhZ2VfdGltZW91dCAoRmxhc2hJbmZvICogZmkpCi0gICoKLSAgKiBGbGFzaCBhIHRlbXBvcmFyeSBtZXNzYWdlIG9uIHRoZSBzdGF0dXNiYXIuCi0gICovCi0tdm9pZAotK0dfR05VQ19QUklOVEYoMywgNCkgdm9pZAotIGdsYWRlX3V0aWxfZmxhc2hfbWVzc2FnZSAoR3RrV2lkZ2V0ICpzdGF0dXNiYXIsIGd1aW50IGNvbnRleHRfaWQsIGdjaGFyICpmb3JtYXQsIC4uLikKLSB7Ci0gCXZhX2xpc3QgYXJnczsKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlMy8wMDAxLWdub21lLWRvYy11dGlscy5tYWtlLXN5c3Jvb3RlZC1wa2ctY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGUzLzAwMDEtZ25vbWUtZG9jLXV0aWxzLm1ha2Utc3lzcm9vdGVkLXBrZy1jb25maWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiMjRjMzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGUzLzAwMDEtZ25vbWUtZG9jLXV0aWxzLm1ha2Utc3lzcm9vdGVkLXBrZy1jb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIGFlZDAwMmNkOWZmOWU4Zjk3MjEyMGZiYWMzM2I0YTY1YWJhOTUyZTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI1IFNlcCAyMDEyIDEwOjI4OjMzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdub21lLWRvYy11dGlscy5tYWtlOiBzeXNyb290ZWQgcGtnLWNvbmZpZwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1zYW1lIGFwcHJvYWNoIGFzIHVzZWQgdXNlZCBpbiBnbm9tZS1kaXNrLXV0aWxpdHk6Ci0KLUluIGNyb3NzIGVudmlyb25tZW50IHdlIGhhdmUgdG8gcHJlcGVuZCB0aGUgc3lzcm9vdCB0byB0aGUgcGF0aCBmb3VuZCBieQotcGtnY29uZmlnIHNpbmNlIHRoZSBwYXRoIHJldHVybmVkIGZyb20gcGtnY29uZmlnIGRvZXMgbm90IGhhdmUgc3lzcm9vdCBwcmVmaXhlZAotaXQgZW5kcyB1cCB1c2luZyB0aGUgZmlsZXMgZnJvbSBob3N0IHN5c3RlbS4gTm93IHVzdWFsbHkgcGVvcGxlIGhhdmUgZ25vbWUgaW5zdGFsbGVkCi1zbyB0aGUgYnVpbGQgc3VjY2VlZHMgYnV0IGlmIHlvdSBkb250IGhhdmUgZ25vbWUgaW5zdGFsbGVkIG9uIGJ1aWxkIGhvc3QgdGhlbgotaXQgd29udCBmaW5kIHRoZSBmaWxlcyBvbiBob3N0IHN5c3RlbSBhbmQgcGFja2FnZXMgdXNpbmcgZ25vbWUtZG9jLXV0aWxzIHdvbnQKLWNvbXBpbGUuCi0KLVRoaXMgc2hvdWxkIHdvcmsgb2sgd2l0aCBub24gc3lzcm9vdGVkIGJ1aWxkcyB0b28gc2luY2UgaW4gdGhvc2UgY2FzZXMgUEtHX0NPTkZJR19TWVNST09UX0RJUgotd2lsbCBiZSBlbXB0eQotCi1VcHN0cmVhbS1TdGF0dXM6IHBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotLS0tCi0gZ25vbWUtZG9jLXV0aWxzLm1ha2UgfCAgIDEwICsrKysrLS0tLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dub21lLWRvYy11dGlscy5tYWtlIGIvZ25vbWUtZG9jLXV0aWxzLm1ha2UKLWluZGV4IDQyZDlkZjMuLmY3MWJiZmEgMTAwNjQ0Ci0tLS0gYS9nbm9tZS1kb2MtdXRpbHMubWFrZQotKysrIGIvZ25vbWUtZG9jLXV0aWxzLm1ha2UKLUBAIC0xMzMsMTEgKzEzMywxMSBAQCBfRE9DX0FCU19TUkNESVIgPSBAYWJzX3NyY2RpckAKLSBfeG1sMnBvID89IGB3aGljaCB4bWwycG9gCi0gX3htbDJwb19tb2RlID0gJChpZiAkKERPQ19JRCksbWFsbGFyZCxkb2Nib29rKQotIAotLV9kYjJodG1sID89IGAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgZGIyaHRtbCBnbm9tZS1kb2MtdXRpbHNgCi0tX2RiMm9tZiAgPz0gYCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSBkYjJvbWYgZ25vbWUtZG9jLXV0aWxzYAotLV9jaHVua3MgID89IGAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgeG1sZGlyIGdub21lLWRvYy11dGlsc2AvZ25vbWUveHNsdC9kb2Nib29rL3V0aWxzL2NodW5rcy54c2wKLS1fY3JlZGl0cyA/PSBgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIHhtbGRpciBnbm9tZS1kb2MtdXRpbHNgL2dub21lL3hzbHQvZG9jYm9vay91dGlscy9jcmVkaXRzLnhzbAotLV9pZHMgPz0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgeG1sZGlyIGdub21lLWRvYy11dGlscykvZ25vbWUveHNsdC9kb2Nib29rL3V0aWxzL2lkcy54c2wKLStfZGIyaHRtbCA/PSAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9YCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSBkYjJodG1sIGdub21lLWRvYy11dGlsc2AKLStfZGIyb21mICA/PSAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9YCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSBkYjJvbWYgZ25vbWUtZG9jLXV0aWxzYAotK19jaHVua3MgID89ICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn1gJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlIHhtbGRpciBnbm9tZS1kb2MtdXRpbHNgL2dub21lL3hzbHQvZG9jYm9vay91dGlscy9jaHVua3MueHNsCi0rX2NyZWRpdHMgPz0gJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfWAkKFBLR19DT05GSUcpIC0tdmFyaWFibGUgeG1sZGlyIGdub21lLWRvYy11dGlsc2AvZ25vbWUveHNsdC9kb2Nib29rL3V0aWxzL2NyZWRpdHMueHNsCi0rX2lkcyA/PSAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9YCQoUEtHX0NPTkZJRykgLS12YXJpYWJsZSB4bWxkaXIgZ25vbWUtZG9jLXV0aWxzYC9nbm9tZS94c2x0L2RvY2Jvb2svdXRpbHMvaWRzLnhzbAotIAotIGlmIEVOQUJMRV9TSwotIF9FTkFCTEVfU0sgPSB0cnVlCi0tLSAKLTEuNy42LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGUzLzAwMDItZml4LWdjYy02LWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGUzLzAwMDItZml4LWdjYy02LWJ1aWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzM1ZmY4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlMy8wMDAyLWZpeC1nY2MtNi1idWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gNWFhM2QyYWJiOTA1ZmE4NTk0ZjZjNjU3MmE4NzgwOWRhNTRjOTM0MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLURhdGU6IE1vbiwgNSBTZXAgMjAxNiAxMToyNToyNyArMDIwMAotU3ViamVjdDogW1BBVENIXSBmaXggZ2NjLTYgYnVpbGQKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIGdsYWRldWkvZ2xhZGUtZWRpdG9yLXByb3BlcnR5LmMgfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2dsYWRldWkvZ2xhZGUtZWRpdG9yLXByb3BlcnR5LmMgYi9nbGFkZXVpL2dsYWRlLWVkaXRvci1wcm9wZXJ0eS5jCi1pbmRleCBhMGMxMDM5Li41ZTlhYzM4IDEwMDY0NAotLS0tIGEvZ2xhZGV1aS9nbGFkZS1lZGl0b3ItcHJvcGVydHkuYwotKysrIGIvZ2xhZGV1aS9nbGFkZS1lZGl0b3ItcHJvcGVydHkuYwotQEAgLTI3MDMsNiArMjcwMyw4IEBAIGdsYWRlX2Vwcm9wX29iamVjdF92aWV3IChnYm9vbGVhbiAgICAgICAgICAgICByYWRpbykKLSB9Ci0gCi0gCi0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCi0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Zvcm1hdC1ub25saXRlcmFsIgotIHN0YXRpYyBnY2hhciAqCi0gZ2xhZGVfZXByb3Bfb2JqZWN0X2RpYWxvZ190aXRsZSAoR2xhZGVFZGl0b3JQcm9wZXJ0eSAqZXByb3ApCi0gewotQEAgLTI3MzEsNiArMjczMyw3IEBAIGdsYWRlX2Vwcm9wX29iamVjdF9kaWFsb2dfdGl0bGUgKEdsYWRlRWRpdG9yUHJvcGVydHkgKmVwcm9wKQotIAlyZXR1cm4gZ19zdHJkdXBfcHJpbnRmIChmb3JtYXQsIGdfdHlwZV9uYW1lIAotIAkJCQkoZXByb3AtPmtsYXNzLT5wc3BlYy0+dmFsdWVfdHlwZSkpOwotIH0KLSsjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAotIAotIAotIGdib29sZWFuCi0tLSAKLTIuNS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlM18zLjguNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlM18zLjguNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRmNjAwMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZTNfMy44LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1TVU1NQVJZID0gIkdsYWRlIC0gQSBVc2VyIEludGVyZmFjZSBEZXNpZ25lciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nbmFzaCIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hYWJlODc1OTFjYjhhZTBmM2M2OGJlNjk3N2JiNTUyMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9OWFjMmU3Y2ZmMWRkYWY0OGI2ZWFiNjAyOGYyM2VmODggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMO21kNT0yNTI4OTBkOWVlZTI2YWFiN2I0MzJlOGI4YTYxNjQ3NSIKLURFUEVORFMgPSAiZ3RrKyBnbm9tZS1kb2MtdXRpbHMgZ25vbWUtY29tbW9uIGxpYnhtbDIgaW50bHRvb2wtbmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHl0aG9ubmF0aXZlIGd0ay1pY29uLWNhY2hlCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvZ2xhZGUzLzMuOC9nbGFkZTMtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ25vbWUtZG9jLXV0aWxzLm1ha2Utc3lzcm9vdGVkLXBrZy1jb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1maXgtZ2NjLTYtYnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtR19HTlVDX1BSSU5URi1vbi1mdW5jdGlvbnMtd2l0aC1mb3JtYXQtc3RyaW5ncy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZTRiNGY1ZWUzNGEwM2UwMTdlNGNlZjk3ZDc5NmMxZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1OGE1ZjZlNGRmNDAyODIzMGRkZWNjNzRjNTY0ODA4YjdlYzQ0NzFiMTkyNTA1OGUyOTMwNGY3NzhiNmIyNzM1IgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1zY3JvbGxrZWVwZXIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2dub21lXSA9ICItLWVuYWJsZS1nbm9tZSwtLWRpc2FibGUtZ25vbWUsbGliYm9ub2JvdWkgbGliZ25vbWV1aSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vaWNvbnMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZV8zLjIwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZV8zLjIwLjIuYmIKc2ltaWxhcml0eSBpbmRleCA3NiUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGVfMy4yMC4wLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZV8zLjIwLjIuYmIKaW5kZXggZjMzYjZlMy4uOTVlMTczNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGVfMy4yMC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlXzMuMjAuMi5iYgpAQCAtOSwxMyArOSwxNSBAQAogIgogCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnbm9tZWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAogU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9nbGFkZS8zLjIwL2dsYWRlLSR7UFZ9LnRhci54eiBcCiAgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUteWVscC1oZWxwLXJ1bGVzLXZhci5wYXRjaCBcCiAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjk5NjRhMmRhMTRjNWY4NDVlYWUzNjM4ODk1ODZjYTQzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgyZDk2ZGNhNWRlYzQwZWUzNGUyZjQxZDQ5YzEzYjRlYTUwZGE4ZjMyYTNhNDljYTJkYTgwMmZmMTRkYzE4ZmUiCitTUkNfVVJJW21kNXN1bV0gPSAiZDNkZDliYTMzYzdkN2M4NTRhYjIwN2UxYmE4NDRkZGEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDdkMTU0NTU3MDk1MWFlZGVkMjBlOWZkYzZkM2Q4YTU2YWVlZmUyNTM4NzM0NTY4YzUzMzViZTMzNmM2YWJlZCIKIAogRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtbWFuLXBhZ2VzIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGMvMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtZ3JwY19jcHBfcGx1Z2luLXBhdGgtZHVyaW5nLWNyb3NzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWdycGNfY3BwX3BsdWdpbi1wYXRoLWR1cmluZy1jcm9zcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Nzc0ZTYyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWdycGNfY3BwX3BsdWdpbi1wYXRoLWR1cmluZy1jcm9zcy5wYXRjaApAQCAtMCwwICsxLDY4IEBACitGcm9tIGNjNmRiYWJlYTBlNDUyZWJjOTM2ODJkZjg2MGE3OWVkOWE0NTcyMmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4ZXkgRmlyYWdvIDxhbGV4ZXlfZmlyYWdvQG1lbnRvci5jb20+CitEYXRlOiBGcmksIDIwIE9jdCAyMDE3IDAwOjA0OjE5ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIENNYWtlTGlzdHMudHh0OiBGaXggZ3JwY19jcHBfcGx1Z2luIHBhdGggZHVyaW5nCisgY3Jvc3MtY29tcGlsYXRpb24KKworU2lnbmVkLW9mZi1ieTogQWxleGV5IEZpcmFnbyA8YWxleGV5X2ZpcmFnb0BtZW50b3IuY29tPgorLS0tCisgQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgIHwgOSArKysrKysrKy0KKyB0ZW1wbGF0ZXMvQ01ha2VMaXN0cy50eHQudGVtcGxhdGUgfCA5ICsrKysrKysrLQorIDIgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IGY5Y2Q2MzAuLjk2NjM5MzQgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0zMjgsNiArMzI4LDEzIEBAIGZ1bmN0aW9uKHByb3RvYnVmX2dlbmVyYXRlX2dycGNfY3BwKQorICAgICByZXR1cm4oKQorICAgZW5kaWYoKQorCisrICAjaWYgY3Jvc3MtY29tcGlsaW5nLCBmaW5kIGhvc3QgcGx1Z2luCisrICBpZihDTUFLRV9DUk9TU0NPTVBJTElORykKKysgICAgICBmaW5kX3Byb2dyYW0oZ1JQQ19DUFBfUExVR0lOIGdycGNfY3BwX3BsdWdpbikKKysgIGVsc2UoKQorKyAgICAgIHNldChnUlBDX0NQUF9QTFVHSU4gJDxUQVJHRVRfRklMRTpncnBjX2NwcF9wbHVnaW4+KQorKyAgZW5kaWYoKQorKworICAgc2V0KF9wcm90b2J1Zl9pbmNsdWRlX3BhdGggLUkgLiAtSSAke1BST1RPQlVGX1dFTExLTk9XTl9JTVBPUlRfRElSfSkKKyAgIGZvcmVhY2goRklMICR7QVJHTn0pCisgICAgIGdldF9maWxlbmFtZV9jb21wb25lbnQoQUJTX0ZJTCAke0ZJTH0gQUJTT0xVVEUpCitAQCAtMzQ1LDcgKzM1Miw3IEBAIGZ1bmN0aW9uKHByb3RvYnVmX2dlbmVyYXRlX2dycGNfY3BwKQorICAgICAgIENPTU1BTkQgJHtfZ1JQQ19QUk9UT0JVRl9QUk9UT0NfRVhFQ1VUQUJMRX0KKyAgICAgICBBUkdTIC0tZ3JwY19vdXQ9Z2VuZXJhdGVfbW9ja19jb2RlPXRydWU6JHtfZ1JQQ19QUk9UT19HRU5TX0RJUn0KKyAgICAgICAgICAgIC0tY3BwX291dD0ke19nUlBDX1BST1RPX0dFTlNfRElSfQorLSAgICAgICAgICAgLS1wbHVnaW49cHJvdG9jLWdlbi1ncnBjPSQ8VEFSR0VUX0ZJTEU6Z3JwY19jcHBfcGx1Z2luPgorKyAgICAgICAgICAgLS1wbHVnaW49cHJvdG9jLWdlbi1ncnBjPSR7Z1JQQ19DUFBfUExVR0lOfQorICAgICAgICAgICAgJHtfcHJvdG9idWZfaW5jbHVkZV9wYXRofQorICAgICAgICAgICAgJHtSRUxfRklMfQorICAgICAgIERFUEVORFMgJHtBQlNfRklMfSAke19nUlBDX1BST1RPQlVGX1BST1RPQ30gZ3JwY19jcHBfcGx1Z2luCitkaWZmIC0tZ2l0IGEvdGVtcGxhdGVzL0NNYWtlTGlzdHMudHh0LnRlbXBsYXRlIGIvdGVtcGxhdGVzL0NNYWtlTGlzdHMudHh0LnRlbXBsYXRlCitpbmRleCA2NGRhZjA0Li5hN2U4NjI5IDEwMDY0NAorLS0tIGEvdGVtcGxhdGVzL0NNYWtlTGlzdHMudHh0LnRlbXBsYXRlCisrKysgYi90ZW1wbGF0ZXMvQ01ha2VMaXN0cy50eHQudGVtcGxhdGUKK0BAIC0zNzMsNiArMzczLDEzIEBACisgICAgICAgcmV0dXJuKCkKKyAgICAgZW5kaWYoKQorCisrICAgICNpZiBjcm9zcy1jb21waWxpbmcsIGZpbmQgaG9zdCBwbHVnaW4KKysgICAgaWYoQ01BS0VfQ1JPU1NDT01QSUxJTkcpCisrICAgICAgICBmaW5kX3Byb2dyYW0oZ1JQQ19DUFBfUExVR0lOIGdycGNfY3BwX3BsdWdpbikKKysgICAgZWxzZSgpCisrICAgICAgICBzZXQoZ1JQQ19DUFBfUExVR0lOICQ8VEFSR0VUX0ZJTEU6Z3JwY19jcHBfcGx1Z2luPikKKysgICAgZW5kaWYoKQorKworICAgICBzZXQoX3Byb3RvYnVmX2luY2x1ZGVfcGF0aCAtSSAuIC1JIDwldGV4dD4ke1BST1RPQlVGX1dFTExLTk9XTl9JTVBPUlRfRElSfTwvJXRleHQ+KQorICAgICBmb3JlYWNoKEZJTCA8JXRleHQ+JHtBUkdOfTwvJXRleHQ+KQorICAgICAgIGdldF9maWxlbmFtZV9jb21wb25lbnQoQUJTX0ZJTCA8JXRleHQ+JHtGSUx9PC8ldGV4dD4gQUJTT0xVVEUpCitAQCAtMzkwLDcgKzM5Nyw3IEBACisgICAgICAgICBDT01NQU5EIDwldGV4dD4ke19nUlBDX1BST1RPQlVGX1BST1RPQ19FWEVDVVRBQkxFfTwvJXRleHQ+CisgICAgICAgICBBUkdTIC0tZ3JwY19vdXQ9PCV0ZXh0PmdlbmVyYXRlX21vY2tfY29kZT10cnVlOiR7X2dSUENfUFJPVE9fR0VOU19ESVJ9PC8ldGV4dD4KKyAgICAgICAgICAgICAgLS1jcHBfb3V0PTwldGV4dD4ke19nUlBDX1BST1RPX0dFTlNfRElSfTwvJXRleHQ+CistICAgICAgICAgICAgIC0tcGx1Z2luPXByb3RvYy1nZW4tZ3JwYz0kPFRBUkdFVF9GSUxFOmdycGNfY3BwX3BsdWdpbj4KKysgICAgICAgICAgICAgLS1wbHVnaW49cHJvdG9jLWdlbi1ncnBjPSR7Z1JQQ19DUFBfUExVR0lOfQorICAgICAgICAgICAgICA8JXRleHQ+JHtfcHJvdG9idWZfaW5jbHVkZV9wYXRofTwvJXRleHQ+CisgICAgICAgICAgICAgIDwldGV4dD4ke1JFTF9GSUx9PC8ldGV4dD4KKyAgICAgICAgIERFUEVORFMgPCV0ZXh0PiR7QUJTX0ZJTH08LyV0ZXh0PiA8JXRleHQ+JHtfZ1JQQ19QUk9UT0JVRl9QUk9UT0N9PC8ldGV4dD4gZ3JwY19jcHBfcGx1Z2luCistLQorMi43LjQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dycGMvZ3JwYy8wMDAxLUNNYWtlTGlzdHMudHh0LUZpeC1saWJyYXJpZXMtaW5zdGFsbGF0aW9uLWZvci1MaW51eC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dycGMvZ3JwYy8wMDAxLUNNYWtlTGlzdHMudHh0LUZpeC1saWJyYXJpZXMtaW5zdGFsbGF0aW9uLWZvci1MaW51eC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGQ5NjUyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWxpYnJhcmllcy1pbnN0YWxsYXRpb24tZm9yLUxpbnV4LnBhdGNoCkBAIC0wLDAgKzEsMTY2IEBACitGcm9tIDhlOWJmOTYyYTQ1YTgyZjFjMmViNTg1OGUyOWZhODlhM2E2MGI1NjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4ZXkgRmlyYWdvIDxhbGV4ZXlfZmlyYWdvQG1lbnRvci5jb20+CitEYXRlOiBNb24sIDMwIE9jdCAyMDE3IDIzOjI0OjQ5ICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMS80XSBDTWFrZUxpc3RzLnR4dDogRml4IGxpYnJhcmllcyBpbnN0YWxsYXRpb24gZm9yIExpbnV4CisKKyogU2V0IGxpYnMgdmVyc2lvbnMgYXMgaW4gTWFrZWZpbGUKKworU2lnbmVkLW9mZi1ieTogQWxleGV5IEZpcmFnbyA8YWxleGV5X2ZpcmFnb0BtZW50b3IuY29tPgorCislJSBvcmlnaW5hbCBwYXRjaDogMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtbGlicmFyaWVzLWluc3RhbGxhdGlvbi1mb3ItTGludXgucGF0Y2gKKy0tLQorIENNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgICAgfCA1NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIENNYWtlTGlzdHMudHh0ID0+IENNYWtlTGlzdHMudHh0Lm9yaWcgfCAgMAorIDIgZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKQorIGNvcHkgQ01ha2VMaXN0cy50eHQgPT4gQ01ha2VMaXN0cy50eHQub3JpZyAoMTAwJSkKKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IGIxYTQ5ZGYuLjEzZTY0YWMgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0zMCw2ICszMCwxNSBAQCBzZXQoUEFDS0FHRV9UQVJOQU1FICAgIiR7UEFDS0FHRV9OQU1FfS0ke1BBQ0tBR0VfVkVSU0lPTn0iKQorIHNldChQQUNLQUdFX0JVR1JFUE9SVCAiaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9pc3N1ZXMvIikKKyBwcm9qZWN0KCR7UEFDS0FHRV9OQU1FfSBDIENYWCkKKyAKKytzZXQgKENPUkVfVkVSU0lPTl9NQUpPUiAiNCIpCisrc2V0IChDT1JFX1ZFUlNJT04gIjQuMC4wIikKKysKKytzZXQgKENQUF9WRVJTSU9OX01BSk9SICIxIikKKytzZXQgKENQUF9WRVJTSU9OICIke1BBQ0tBR0VfVkVSU0lPTn0iKQorKworK3NldCAoQ1NIQVJQX1ZFUlNJT05fTUFKT1IgIjEiKQorK3NldCAoQ1NIQVJQX1ZFUlNJT04gIiR7UEFDS0FHRV9WRVJTSU9OfSIpCisrCisgc2V0KGdSUENfSU5TVEFMTF9CSU5ESVIgIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L2JpbiIgQ0FDSEUgUEFUSCAiSW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBmb3IgZXhlY3V0YWJsZXMiKQorIHNldChnUlBDX0lOU1RBTExfTElCRElSICIke0NNQUtFX0lOU1RBTExfUFJFRklYfS9saWIiIENBQ0hFIFBBVEggIkluc3RhbGxhdGlvbiBkaXJlY3RvcnkgZm9yIGxpYnJhcmllcyIpCisgc2V0KGdSUENfSU5TVEFMTF9JTkNMVURFRElSICIke0NNQUtFX0lOU1RBTExfUFJFRklYfS9pbmNsdWRlIiBDQUNIRSBQQVRIICJJbnN0YWxsYXRpb24gZGlyZWN0b3J5IGZvciBoZWFkZXJzIikKK0BAIC04NDEsNiArODUwLDEwIEBAIGlmKFdJTjMyIEFORCBNU1ZDKQorICAgZW5kaWYoKQorIGVuZGlmKCkKKyAKKytpZihfZ1JQQ19QTEFURk9STV9MSU5VWCkKKysgIHNldF9wcm9wZXJ0eShUQVJHRVQgZ3ByIFBST1BFUlRZIFZFUlNJT04gJHtDT1JFX1ZFUlNJT059KQorKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCBncHIgUFJPUEVSVFkgU09WRVJTSU9OICR7Q09SRV9WRVJTSU9OX01BSk9SfSkKKytlbmRpZigpCisgCisgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoZ3ByCisgICBQVUJMSUMgJDxJTlNUQUxMX0lOVEVSRkFDRToke2dSUENfSU5TVEFMTF9JTkNMVURFRElSfT4gJDxCVUlMRF9JTlRFUkZBQ0U6JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGU+CitAQCAtMTIyMSw2ICsxMjM0LDEwIEBAIGlmKFdJTjMyIEFORCBNU1ZDKQorICAgZW5kaWYoKQorIGVuZGlmKCkKKyAKKytpZihfZ1JQQ19QTEFURk9STV9MSU5VWCkKKysgIHNldF9wcm9wZXJ0eShUQVJHRVQgZ3JwYyBQUk9QRVJUWSBWRVJTSU9OICR7Q09SRV9WRVJTSU9OfSkKKysgIHNldF9wcm9wZXJ0eShUQVJHRVQgZ3JwYyBQUk9QRVJUWSBTT1ZFUlNJT04gJHtDT1JFX1ZFUlNJT05fTUFKT1J9KQorK2VuZGlmKCkKKyAKKyB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhncnBjCisgICBQVUJMSUMgJDxJTlNUQUxMX0lOVEVSRkFDRToke2dSUENfSU5TVEFMTF9JTkNMVURFRElSfT4gJDxCVUlMRF9JTlRFUkZBQ0U6JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGU+CitAQCAtMTUzNSw2ICsxNTUyLDEwIEBAIGlmKFdJTjMyIEFORCBNU1ZDKQorICAgZW5kaWYoKQorIGVuZGlmKCkKKyAKKytpZihfZ1JQQ19QTEFURk9STV9MSU5VWCkKKysgIHNldF9wcm9wZXJ0eShUQVJHRVQgZ3JwY19jcm9uZXQgUFJPUEVSVFkgVkVSU0lPTiAke0NPUkVfVkVSU0lPTn0pCisrICBzZXRfcHJvcGVydHkoVEFSR0VUIGdycGNfY3JvbmV0IFBST1BFUlRZIFNPVkVSU0lPTiAke0NPUkVfVkVSU0lPTl9NQUpPUn0pCisrZW5kaWYoKQorIAorIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKGdycGNfY3JvbmV0CisgICBQVUJMSUMgJDxJTlNUQUxMX0lOVEVSRkFDRToke2dSUENfSU5TVEFMTF9JTkNMVURFRElSfT4gJDxCVUlMRF9JTlRFUkZBQ0U6JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGU+CitAQCAtMjM3Nyw2ICsyMzk4LDEwIEBAIGlmKFdJTjMyIEFORCBNU1ZDKQorICAgZW5kaWYoKQorIGVuZGlmKCkKKyAKKytpZihfZ1JQQ19QTEFURk9STV9MSU5VWCkKKysgIHNldF9wcm9wZXJ0eShUQVJHRVQgZ3JwY191bnNlY3VyZSBQUk9QRVJUWSBWRVJTSU9OICR7Q09SRV9WRVJTSU9OfSkKKysgIHNldF9wcm9wZXJ0eShUQVJHRVQgZ3JwY191bnNlY3VyZSBQUk9QRVJUWSBTT1ZFUlNJT04gJHtDT1JFX1ZFUlNJT05fTUFKT1J9KQorK2VuZGlmKCkKKyAKKyB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhncnBjX3Vuc2VjdXJlCisgICBQVUJMSUMgJDxJTlNUQUxMX0lOVEVSRkFDRToke2dSUENfSU5TVEFMTF9JTkNMVURFRElSfT4gJDxCVUlMRF9JTlRFUkZBQ0U6JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGU+CitAQCAtMjU5Miw2ICsyNjE3LDEwIEBAIGlmKFdJTjMyIEFORCBNU1ZDKQorICAgZW5kaWYoKQorIGVuZGlmKCkKKyAKKytpZihfZ1JQQ19QTEFURk9STV9MSU5VWCkKKysgIHNldF9wcm9wZXJ0eShUQVJHRVQgZ3JwYysrIFBST1BFUlRZIFZFUlNJT04gJHtDUFBfVkVSU0lPTn0pCisrICBzZXRfcHJvcGVydHkoVEFSR0VUIGdycGMrKyBQUk9QRVJUWSBTT1ZFUlNJT04gJHtDUFBfVkVSU0lPTl9NQUpPUn0pCisrZW5kaWYoKQorIAorIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKGdycGMrKworICAgUFVCTElDICQ8SU5TVEFMTF9JTlRFUkZBQ0U6JHtnUlBDX0lOU1RBTExfSU5DTFVERURJUn0+ICQ8QlVJTERfSU5URVJGQUNFOiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9pbmNsdWRlPgorQEAgLTMwNzgsNiArMzEwNywxMCBAQCBpZihXSU4zMiBBTkQgTVNWQykKKyAgIGVuZGlmKCkKKyBlbmRpZigpCisgCisraWYoX2dSUENfUExBVEZPUk1fTElOVVgpCisrICBzZXRfcHJvcGVydHkoVEFSR0VUIGdycGMrK19jcm9uZXQgUFJPUEVSVFkgVkVSU0lPTiAke0NQUF9WRVJTSU9OfSkKKysgIHNldF9wcm9wZXJ0eShUQVJHRVQgZ3JwYysrX2Nyb25ldCBQUk9QRVJUWSBTT1ZFUlNJT04gJHtDUFBfVkVSU0lPTl9NQUpPUn0pCisrZW5kaWYoKQorIAorIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKGdycGMrK19jcm9uZXQKKyAgIFBVQkxJQyAkPElOU1RBTExfSU5URVJGQUNFOiR7Z1JQQ19JTlNUQUxMX0lOQ0xVREVESVJ9PiAkPEJVSUxEX0lOVEVSRkFDRToke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZT4KK0BAIC0zMjgyLDYgKzMzMTUsMTEgQEAgcHJvdG9idWZfZ2VuZXJhdGVfZ3JwY19jcHAoCisgICBzcmMvcHJvdG8vZ3JwYy9zdGF0dXMvc3RhdHVzLnByb3RvCisgKQorIAorK2lmKF9nUlBDX1BMQVRGT1JNX0xJTlVYKQorKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCBncnBjKytfZXJyb3JfZGV0YWlscyBQUk9QRVJUWSBWRVJTSU9OICR7Q1BQX1ZFUlNJT059KQorKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCBncnBjKytfZXJyb3JfZGV0YWlscyBQUk9QRVJUWSBTT1ZFUlNJT04gJHtDUFBfVkVSU0lPTl9NQUpPUn0pCisrZW5kaWYoKQorKworIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKGdycGMrK19lcnJvcl9kZXRhaWxzCisgICBQVUJMSUMgJDxJTlNUQUxMX0lOVEVSRkFDRToke2dSUENfSU5TVEFMTF9JTkNMVURFRElSfT4gJDxCVUlMRF9JTlRFUkZBQ0U6JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGU+CisgICBQUklWQVRFICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfQorQEAgLTM0MDgsNiArMzQ0NiwxMSBAQCBwcm90b2J1Zl9nZW5lcmF0ZV9ncnBjX2NwcCgKKyAgIHNyYy9wcm90by9ncnBjL3JlZmxlY3Rpb24vdjFhbHBoYS9yZWZsZWN0aW9uLnByb3RvCisgKQorIAorK2lmKF9nUlBDX1BMQVRGT1JNX0xJTlVYKQorKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCBncnBjKytfcmVmbGVjdGlvbiBQUk9QRVJUWSBWRVJTSU9OICR7Q1BQX1ZFUlNJT059KQorKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCBncnBjKytfcmVmbGVjdGlvbiBQUk9QRVJUWSBTT1ZFUlNJT04gJHtDUFBfVkVSU0lPTl9NQUpPUn0pCisrZW5kaWYoKQorKworIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKGdycGMrK19yZWZsZWN0aW9uCisgICBQVUJMSUMgJDxJTlNUQUxMX0lOVEVSRkFDRToke2dSUENfSU5TVEFMTF9JTkNMVURFRElSfT4gJDxCVUlMRF9JTlRFUkZBQ0U6JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGU+CisgICBQUklWQVRFICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfQorQEAgLTM4MjcsNiArMzg3MCwxMCBAQCBpZihXSU4zMiBBTkQgTVNWQykKKyAgIGVuZGlmKCkKKyBlbmRpZigpCisgCisraWYoX2dSUENfUExBVEZPUk1fTElOVVgpCisrICBzZXRfcHJvcGVydHkoVEFSR0VUIGdycGMrK191bnNlY3VyZSBQUk9QRVJUWSBWRVJTSU9OICR7Q1BQX1ZFUlNJT059KQorKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCBncnBjKytfdW5zZWN1cmUgUFJPUEVSVFkgU09WRVJTSU9OICR7Q1BQX1ZFUlNJT05fTUFKT1J9KQorK2VuZGlmKCkKKyAKKyB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhncnBjKytfdW5zZWN1cmUKKyAgIFBVQkxJQyAkPElOU1RBTExfSU5URVJGQUNFOiR7Z1JQQ19JTlNUQUxMX0lOQ0xVREVESVJ9PiAkPEJVSUxEX0lOVEVSRkFDRToke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZT4KK0BAIC00MTQwLDYgKzQxODcsMTAgQEAgaWYoV0lOMzIgQU5EIE1TVkMpCisgICBlbmRpZigpCisgZW5kaWYoKQorIAorK2lmKF9nUlBDX1BMQVRGT1JNX0xJTlVYKQorKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCBncnBjX3BsdWdpbl9zdXBwb3J0IFBST1BFUlRZIFZFUlNJT04gJHtDT1JFX1ZFUlNJT059KQorKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCBncnBjX3BsdWdpbl9zdXBwb3J0IFBST1BFUlRZIFNPVkVSU0lPTiAke0NPUkVfVkVSU0lPTl9NQUpPUn0pCisrZW5kaWYoKQorIAorIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKGdycGNfcGx1Z2luX3N1cHBvcnQKKyAgIFBVQkxJQyAkPElOU1RBTExfSU5URVJGQUNFOiR7Z1JQQ19JTlNUQUxMX0lOQ0xVREVESVJ9PiAkPEJVSUxEX0lOVEVSRkFDRToke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZT4KK0BAIC00NjQ5LDYgKzQ3MDAsMTAgQEAgaWYoV0lOMzIgQU5EIE1TVkMpCisgICBlbmRpZigpCisgZW5kaWYoKQorIAorK2lmKF9nUlBDX1BMQVRGT1JNX0xJTlVYKQorKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCBncnBjX2NzaGFycF9leHQgUFJPUEVSVFkgVkVSU0lPTiAke0NTSEFSUF9WRVJTSU9OfSkKKysgIHNldF9wcm9wZXJ0eShUQVJHRVQgZ3JwY19jc2hhcnBfZXh0IFBST1BFUlRZIFNPVkVSU0lPTiAke0NTSEFSUF9WRVJTSU9OX01BSk9SfSkKKytlbmRpZigpCisgCisgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoZ3JwY19jc2hhcnBfZXh0CisgICBQVUJMSUMgJDxJTlNUQUxMX0lOVEVSRkFDRToke2dSUENfSU5TVEFMTF9JTkNMVURFRElSfT4gJDxCVUlMRF9JTlRFUkZBQ0U6JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGU+CitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dC5vcmlnCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK2NvcHkgZnJvbSBDTWFrZUxpc3RzLnR4dAorY29weSB0byBDTWFrZUxpc3RzLnR4dC5vcmlnCistLSAKKzIuMTYuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGMvMDAwNC1DTWFrZUxpc3RzLnR4dC1GaW5kLWMtYXJlcy1pbi10YXJnZXQtc3lzcm9vdC1hbG9uZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dycGMvZ3JwYy8wMDA0LUNNYWtlTGlzdHMudHh0LUZpbmQtYy1hcmVzLWluLXRhcmdldC1zeXNyb290LWFsb25lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ODUwMjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGMvMDAwNC1DTWFrZUxpc3RzLnR4dC1GaW5kLWMtYXJlcy1pbi10YXJnZXQtc3lzcm9vdC1hbG9uZS5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIGE0OThiNTZiYTk2OTQ4MDE1ZjBmMjc4NGIyYWI4Mjk2OTQ2NzE2ZWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxIEZlYiAyMDE4IDIzOjI4OjE3IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBDTWFrZUxpc3RzLnR4dDogRmluZCBjLWFyZXMgaW4gdGFyZ2V0IHN5c3Jvb3QgYWxvbmUKKworQ3VycmVudCBjb2RlIGxldHMgaXQgbG9vayBpbnRvIG5hdGl2ZSBzeXNyb290IGFzIHdlbGwKK3doaWNoIGlzIHRoZW4gcHJlZmVycmVkIGR1cmluZyBjcm9zcyBjb21waWxlIGFuZCBpdCBhZGRzCithYnNvbHV0ZSBwYXRoIHRvIGxpYmNhcmVzIGludG8gbGlua2VyIGZsYWdzCitvbiBoZXRlcm9nZW5vdXMgYXJjaGl0ZWN0dXJlcyBsaW5rZXIgY29tcGxhaW5zIGFuZCBidWlsZAorZmFpbHMKKworfCAvbW50L2Evb2UvYnVpbGQvdG1wL3dvcmsvY29ydGV4YTd0MmhmLW5lb24tdmZwdjQtYmVjLWxpbnV4LWdudWVhYmkvZ3JwYy8xLjguNS1yMC9yZWNpcGUtc3lzcm9vdC1uYXRpdmUvdXNyL2xpYi9saWIKK2NhcmVzLnNvLjIuMi4wOiBmaWxlIG5vdCByZWNvZ25pemVkOiBGaWxlIGZvcm1hdCBub3QgcmVjb2duaXplZAorfCBjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBDTWFrZUxpc3RzLnR4dCB8IDYgKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IDFkN2VlZjEuLjA1ODQyM2QgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0xNTMsMTAgKzE1Myw4IEBAIGlmKCIke2dSUENfQ0FSRVNfUFJPVklERVJ9IiBTVFJFUVVBTCAibW9kdWxlIikKKyAgICAgc2V0KGdSUENfSU5TVEFMTCBGQUxTRSkKKyAgIGVuZGlmKCkKKyBlbHNlaWYoIiR7Z1JQQ19DQVJFU19QUk9WSURFUn0iIFNUUkVRVUFMICJwYWNrYWdlIikKKy0gIGZpbmRfcGFja2FnZShjLWFyZXMgUkVRVUlSRUQgQ09ORklHKQorLSAgaWYoVEFSR0VUIGMtYXJlczo6Y2FyZXMpCistICAgIHNldChfZ1JQQ19DQVJFU19MSUJSQVJJRVMgYy1hcmVzOjpjYXJlcykKKy0gIGVuZGlmKCkKKysgIGZpbmRfcGFja2FnZShjLWFyZXMgUkVRVUlSRUQpCisrICBzZXQoX2dSUENfQ0FSRVNfTElCUkFSSUVTIGNhcmVzKQorICAgc2V0KF9nUlBDX0ZJTkRfQ0FSRVMgImlmKE5PVCBjLWFyZXNfRk9VTkQpXG4gIGZpbmRfcGFja2FnZShjLWFyZXMgQ09ORklHKVxuZW5kaWYoKSIpCisgZW5kaWYoKQorIAorLS0gCisyLjE2LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjXzEuOC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjXzEuOC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4ODNlYzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGNfMS44LjUuYmIKQEAgLTAsMCArMSwzNiBAQAorREVTQ1JJUFRJT04gPSAiQSBoaWdoIHBlcmZvcm1hbmNlLCBvcGVuIHNvdXJjZSwgZ2VuZXJhbC1wdXJwb3NlIFJQQyBmcmFtZXdvcmsuIFwKK1Byb3ZpZGVzIGdSUEMgbGlicmFyaWVzIGZvciBtdWx0aXBsZSBsYW5ndWFnZXMgd3JpdHRlbiBvbiB0b3Agb2Ygc2hhcmVkIEMgY29yZSBsaWJyYXJ5IFwKKyhDKyssIE5vZGUuanMsIFB5dGhvbiwgUnVieSwgT2JqZWN0aXZlLUMsIFBIUCwgQyMpIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIiCisKK0RFUEVORFMgPSAiZ2ZsYWdzIGMtYXJlcyBwcm90b2J1ZiBwcm90b2J1Zi1uYXRpdmUgcHJvdG9idWYtYyBwcm90b2J1Zi1jLW5hdGl2ZSBvcGVuc3NsIgorREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBndGVzdCBncnBjLW5hdGl2ZSAiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ncnBjL2dycGMvYXJjaGl2ZS92JHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWxpYnJhcmllcy1pbnN0YWxsYXRpb24tZm9yLUxpbnV4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtQ01ha2VMaXN0cy50eHQtRmluZC1jLWFyZXMtaW4tdGFyZ2V0LXN5c3Jvb3QtYWxvbmUucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiYjU2NWZhNjc4N2U0MmY0OTY5Mzk1ODcwYzJhZDQzNmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGY5MTY4ZGE3NjBmZDJlZTk3MGM3NGM5ZDFiNjMzNzdlMDAyNGJlMjQ4ZGVhYTg0NGU3ODRkMGRmNDc1OTlkZSIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtZ3JwY19jcHBfcGx1Z2luLXBhdGgtZHVyaW5nLWNyb3NzLnBhdGNoIgorCitpbmhlcml0IGNtYWtlCisKK0VYVFJBX09FQ01BS0UgPSAiIFwKKyAgICAtRGdSUENfQ0FSRVNfUFJPVklERVI9cGFja2FnZSBcCisgICAgLURnUlBDX1pMSUJfUFJPVklERVI9cGFja2FnZSBcCisgICAgLURnUlBDX1NTTF9QUk9WSURFUj1wYWNrYWdlIFwKKyAgICAtRGdSUENfUFJPVE9CVUZfUFJPVklERVI9cGFja2FnZSBcCisgICAgLURnUlBDX0dGTEFHU19QUk9WSURFUj1wYWNrYWdlIFwKKyAgICAtRGdSUENfSU5TVEFMTD0xIFwKKyAgICAtREJVSUxEX1NIQVJFRF9MSUJTPU9OIFwKKyAgICAiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2pzb25jcHAvanNvbmNwcF8xLjguMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2pzb25jcHAvanNvbmNwcF8xLjguNC5iYgpzaW1pbGFyaXR5IGluZGV4IDkyJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29uY3BwL2pzb25jcHBfMS44LjMuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2pzb25jcHAvanNvbmNwcF8xLjguNC5iYgppbmRleCBiN2EwMmVmLi44OGUzMzIwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29uY3BwL2pzb25jcHBfMS44LjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvanNvbmNwcC9qc29uY3BwXzEuOC40LmJiCkBAIC0xMSw3ICsxMSw3IEBACiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWZhMmEyM2RkMWRjNmMxMzlmMzUxMDUzNzlkNzZkZjJiIgogCi1TUkNSRVYgPSAiMmRlMTgwMjFmY2IxMTM3MGU5YjVhMWZiZTdkY2ZkNjczNTMzYTEzNCIKK1NSQ1JFViA9ICJkZGFiZjUwZjcyY2YzNjliZjY1MmE5NWM0ZDlmZTMxYTE4NjVhNzgxIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW4tc291cmNlLXBhcnNlcnMvanNvbmNwcCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnJjZi9saWJyY2ZfMi4yLjAuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnJjZi9saWJyY2ZfMi4yLjAuMC5iYgppbmRleCA0M2VmZjcyLi4yNjdjMGU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJyY2YvbGlicmNmXzIuMi4wLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlicmNmL2xpYnJjZl8yLjIuMC4wLmJiCkBAIC01MCwzICs1MCw1IEBACiBGSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vY21ha2UvTW9kdWxlcy9GaW5kTGliUmNmLmNtYWtlIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKKworUE5CTEFDS0xJU1RbbGlicmNmXSA9ICIgZXJyb3I6IGludmFsaWQgdXNlIG9mIGluY29tcGxldGUgdHlwZSAnUkNGOjpBc2lvSW9TZXJ2aWNlIHtha2EgY2xhc3MgYm9vc3Q6OmFzaW86OmlvX3NlcnZpY2V9OyBhbW9uZyBvdGhlcnM/IiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXRfMi4wLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdWFqaXQvbHVhaml0XzIuMC41LmJiCmluZGV4IDczYzM4MTEuLjFkNjliM2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXRfMi4wLjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhaml0L2x1YWppdF8yLjAuNS5iYgpAQCAtNTMsNiArNTMsNyBAQAogICAgIFwKICAgICAnUFJFRklYPSR7cHJlZml4fScgXAogICAgICdNVUxUSUxJQj0ke2Jhc2VsaWJ9JyBcCisgICAgJ0xEQ09ORklHPTonIFwKICIKIAogZG9fY29tcGlsZSAoKSB7CkBAIC05MCwzICs5MSw1IEBACiAiCiBGSUxFU19sdWFqaXQtY29tbW9uID0gIiR7ZGF0YWRpcn0vJHtCUE59LSR7UFZ9IgogCisjIEFhcmNoNjQgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIHJlbGVhc2UgCitDT01QQVRJQkxFX0hPU1QgPSAiXig/IWFhcmNoNjQpLioiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXJjdXJpYWwvZmlsZXMvbWVyY3VyaWFsLUNWRS0yMDE3LTk0NjIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXJjdXJpYWwvZmlsZXMvbWVyY3VyaWFsLUNWRS0yMDE3LTk0NjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1NjQ2NjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbWVyY3VyaWFsL2ZpbGVzL21lcmN1cmlhbC1DVkUtMjAxNy05NDYyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLSMgSEcgY2hhbmdlc2V0IHBhdGNoCi0jIFVzZXIgQXVnaWUgRmFja2xlciA8YXVnaWVAZ29vZ2xlLmNvbT4KLSMgRGF0ZSAxNDkyMDIxNDM1IDI1MjAwCi0jICAgICAgV2VkIEFwciAxMiAxMToyMzo1NSAyMDE3IC0wNzAwCi0jIEJyYW5jaCBzdGFibGUKLSMgTm9kZSBJRCA3N2VhZjk1Mzk0OTlhMWI4YmUyNTlmZmU3YWRhNzg3ZDA3ODU3ZjgwCi0jIFBhcmVudCAgNjhmMjYzZjUyZDJlM2UyNzk4YjRmMWU1NWNiNjY1YzZiMDQzZjkzYgotZGlzcGF0Y2g6IHByb3RlY3QgYWdhaW5zdCBtYWxpY2lvdXMgJ2hnIHNlcnZlIC0tc3RkaW8nIGludm9jYXRpb25zIChzZWMpCi0KLVNvbWUgc2hhcmVkLXNzaCBpbnN0YWxsYXRpb25zIGFzc3VtZSB0aGF0ICdoZyBzZXJ2ZSAtLXN0ZGlvJyBpcyBhIHNhZmUKLWNvbW1hbmQgdG8gcnVuIGZvciBtaW5pbWFsbHkgdHJ1c3RlZCB1c2Vycy4gVW5mb3J0dW5hdGVseSwgdGhlIG1lc3N5Ci1pbXBsZW1lbnRhdGlvbiBvZiBhcmd1bWVudCBwYXJzaW5nIGhlcmUgbWVhbnQgdGhhdCB0cnlpbmcgdG8gYWNjZXNzIGEKLXJlcG8gbmFtZWQgJy0tZGVidWdnZXInIHdvdWxkIGdpdmUgdGhlIHVzZXIgYSBwZGIgcHJvbXB0LCB0aGVyZWJ5Ci1zaWRlc3RlcHBpbmcgYW55IGhvcGVkLWZvciBzYW5kYm94aW5nLiBTZXJ2aW5nIHJlcG9zaXRvcmllcyBvdmVyIEhUVFAoUykKLWlzIHVuYWZmZWN0ZWQuCi0KLVdlJ3JlIG5vdCBjdXJyZW50bHkgaGFyZGVuaW5nIGFueSBzdWJjb21tYW5kcyBvdGhlciB0aGFuICdzZXJ2ZScuIElmCi15b3VyIHNlcnZpY2UgZXhwb3NlcyBvdGhlciBjb21tYW5kcyB0byB1c2VycyB3aXRoIGFyYml0cmFyeSByZXBvc2l0b3J5Ci1uYW1lcywgaXQgaXMgaW1wZXJhdGl2ZSB0aGF0IHlvdSBkZWZlbmQgYWdhaW5zdCByZXBvc2l0b3J5IG5hbWVzIG9mCi0nLS1kZWJ1Z2dlcicgYW5kIGFueXRoaW5nIHN0YXJ0aW5nIHdpdGggJy0tY29uZmlnJy4KLQotVGhlIHJlYWQtb25seSBtb2RlIG9mIGhnLXNzaCBzdG9wcGVkIHdvcmtpbmcgYmVjYXVzZSBpdCBwcm92aWRlZCBpdHMgaG9vawotY29uZmlndXJhdGlvbiB0byAiaGcgc2VydmUgLS1zdGRpbyIgdmlhIC0tY29uZmlnIHBhcmFtZXRlci4gVGhpcyBpcyBiYW5uZWQgZm9yCi1zZWN1cml0eSByZWFzb25zIG5vdy4gVGhpcyBwYXRjaCBzd2l0Y2hlcyBpdCB0byBkaXJlY3RseSBjYWxsIHVpLnNldGNvbmZpZygpLgotSWYgeW91ciBjdXN0b20gaG9zdGluZyBpbmZyYXN0cnVjdHVyZSByZWxpZXMgb24gcGFzc2luZyAtLWNvbmZpZyB0bwotImhnIHNlcnZlIC0tc3RkaW8iLCB5b3UnbGwgbmVlZCB0byBmaW5kIGEgZGlmZmVyZW50IHdheSB0byBnZXQgdGhhdCBjb25maWd1cmF0aW9uCi1pbnRvIE1lcmN1cmlhbCwgZWl0aGVyIGJ5IHVzaW5nIHVpLnNldGNvbmZpZygpIGFzIGhnLXNzaCBkb2VzIGluIHRoaXMgcGF0Y2gsCi1vciBieSBwbGFjaW5nIGFuIGhncmMgZmlsZSBzb21lcGxhY2Ugd2hlcmUgTWVyY3VyaWFsIHdpbGwgcmVhZCBpdC4KLQotbWl0cmFuZGlyQGZiLmNvbSBwcm92aWRlZCBzb21lIGV4dHJhIGZpeGVzIGZvciB0aGUgZGlzcGF0Y2ggY29kZSBhbmQKLWZvciBoZy1zc2ggaW4gcGxhY2VzIHRoYXQgSSBvdmVybG9va2VkLgotCi1DVkU6IENWRS0yMDE3LTk0NjIKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1kaWZmIC0tZ2l0IGEvY29udHJpYi9oZy1zc2ggYi9jb250cmliL2hnLXNzaAotLS0tIGEvY29udHJpYi9oZy1zc2gKLSsrKyBiL2NvbnRyaWIvaGctc3NoCi1AQCAtMzIsNyArMzIsNyBAQAotICMgZW5hYmxlIGltcG9ydGluZyBvbiBkZW1hbmQgdG8gcmVkdWNlIHN0YXJ0dXAgdGltZQotIGZyb20gbWVyY3VyaWFsIGltcG9ydCBkZW1hbmRpbXBvcnQ7IGRlbWFuZGltcG9ydC5lbmFibGUoKQotIAotLWZyb20gbWVyY3VyaWFsIGltcG9ydCBkaXNwYXRjaAotK2Zyb20gbWVyY3VyaWFsIGltcG9ydCBkaXNwYXRjaCwgdWkgYXMgdWltb2QKLSAKLSBpbXBvcnQgc3lzLCBvcywgc2hsZXgKLSAKLUBAIC02MSwxNCArNjEsMTUgQEAKLSAgICAgICAgIHJlcG8gPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihjd2QsIG9zLnBhdGguZXhwYW5kdXNlcihwYXRoKSkpCi0gICAgICAgICBpZiByZXBvIGluIGFsbG93ZWRfcGF0aHM6Ci0gICAgICAgICAgICAgY21kID0gWyctUicsIHJlcG8sICdzZXJ2ZScsICctLXN0ZGlvJ10KLSsgICAgICAgICAgICByZXEgPSBkaXNwYXRjaC5yZXF1ZXN0KGNtZCkKLSAgICAgICAgICAgICBpZiByZWFkb25seToKLS0gICAgICAgICAgICAgICAgY21kICs9IFsKLS0gICAgICAgICAgICAgICAgICAgICctLWNvbmZpZycsCi0tICAgICAgICAgICAgICAgICAgICAnaG9va3MucHJldHhub3Blbi5oZy1zc2g9cHl0aG9uOl9fbWFpbl9fLnJlamVjdHB1c2gnLAotLSAgICAgICAgICAgICAgICAgICAgJy0tY29uZmlnJywKLS0gICAgICAgICAgICAgICAgICAgICdob29rcy5wcmVwdXNoa2V5LmhnLXNzaD1weXRob246X19tYWluX18ucmVqZWN0cHVzaCcKLS0gICAgICAgICAgICAgICAgICAgIF0KLS0gICAgICAgICAgICBkaXNwYXRjaC5kaXNwYXRjaChkaXNwYXRjaC5yZXF1ZXN0KGNtZCkpCi0rICAgICAgICAgICAgICAgIGlmIG5vdCByZXEudWk6Ci0rICAgICAgICAgICAgICAgICAgICByZXEudWkgPSB1aW1vZC51aS5sb2FkKCkKLSsgICAgICAgICAgICAgICAgcmVxLnVpLnNldGNvbmZpZygnaG9va3MnLCAncHJldHhub3Blbi5oZy1zc2gnLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdweXRob246X19tYWluX18ucmVqZWN0cHVzaCcsICdoZy1zc2gnKQotKyAgICAgICAgICAgICAgICByZXEudWkuc2V0Y29uZmlnKCdob29rcycsICdwcmVwdXNoa2V5LmhnLXNzaCcsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5dGhvbjpfX21haW5fXy5yZWplY3RwdXNoJywgJ2hnLXNzaCcpCi0rICAgICAgICAgICAgZGlzcGF0Y2guZGlzcGF0Y2gocmVxKQotICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdJbGxlZ2FsIHJlcG9zaXRvcnkgIiVzIlxuJyAlIHJlcG8pCi0gICAgICAgICAgICAgc3lzLmV4aXQoMjU1KQotZGlmZiAtLWdpdCBhL21lcmN1cmlhbC9kaXNwYXRjaC5weSBiL21lcmN1cmlhbC9kaXNwYXRjaC5weQotLS0tIGEvbWVyY3VyaWFsL2Rpc3BhdGNoLnB5Ci0rKysgYi9tZXJjdXJpYWwvZGlzcGF0Y2gucHkKLUBAIC0xNTUsNiArMTU1LDM3IEBACi0gICAgICAgICBwYXNzICMgaGFwcGVucyBpZiBjYWxsZWQgaW4gYSB0aHJlYWQKLSAKLSAgICAgZGVmIF9ydW5jYXRjaGZ1bmMoKToKLSsgICAgICAgIHJlYWxjbWQgPSBOb25lCi0rICAgICAgICB0cnk6Ci0rICAgICAgICAgICAgY21kYXJncyA9IGZhbmN5b3B0cy5mYW5jeW9wdHMocmVxLmFyZ3NbOl0sIGNvbW1hbmRzLmdsb2JhbG9wdHMsIHt9KQotKyAgICAgICAgICAgIGNtZCA9IGNtZGFyZ3NbMF0KLSsgICAgICAgICAgICBhbGlhc2VzLCBlbnRyeSA9IGNtZHV0aWwuZmluZGNtZChjbWQsIGNvbW1hbmRzLnRhYmxlLCBGYWxzZSkKLSsgICAgICAgICAgICByZWFsY21kID0gYWxpYXNlc1swXQotKyAgICAgICAgZXhjZXB0IChlcnJvci5Vbmtub3duQ29tbWFuZCwgZXJyb3IuQW1iaWd1b3VzQ29tbWFuZCwKLSsgICAgICAgICAgICAgICAgSW5kZXhFcnJvciwgZ2V0b3B0LkdldG9wdEVycm9yKToKLSsgICAgICAgICAgICAjIERvbid0IGhhbmRsZSB0aGlzIGhlcmUuIFdlIGtub3cgdGhlIGNvbW1hbmQgaXMKLSsgICAgICAgICAgICAjIGludmFsaWQsIGJ1dCBhbGwgd2UncmUgd29ycmllZCBhYm91dCBmb3Igbm93IGlzIHRoYXQKLSsgICAgICAgICAgICAjIGl0J3Mgbm90IGEgY29tbWFuZCB0aGF0IHNlcnZlciBvcGVyYXRvcnMgZXhwZWN0IHRvCi0rICAgICAgICAgICAgIyBiZSBzYWZlIHRvIG9mZmVyIHRvIHVzZXJzIGluIGEgc2FuZGJveC4KLSsgICAgICAgICAgICBwYXNzCi0rICAgICAgICBpZiByZWFsY21kID09ICdzZXJ2ZScgYW5kICctLXN0ZGlvJyBpbiBjbWRhcmdzOgotKyAgICAgICAgICAgICMgV2Ugd2FudCB0byBjb25zdHJhaW4gJ2hnIHNlcnZlIC0tc3RkaW8nIGluc3RhbmNlcyBwcmV0dHkKLSsgICAgICAgICAgICAjIGNsb3NlbHksIGFzIG1hbnkgc2hhcmVkLXNzaCBhY2Nlc3MgdG9vbHMgd2FudCB0byBncmFudAotKyAgICAgICAgICAgICMgYWNjZXNzIHRvIHJ1biAqb25seSogJ2hnIC1SICRyZXBvIHNlcnZlIC0tc3RkaW8nLiBXZQotKyAgICAgICAgICAgICMgcmVzdHJpY3QgdG8gZXhhY3RseSB0aGF0IHNldCBvZiBhcmd1bWVudHMsIGFuZCBwcm9oaWJpdAotKyAgICAgICAgICAgICMgYW55IHJlcG8gbmFtZSB0aGF0IHN0YXJ0cyB3aXRoICctLScgdG8gcHJldmVudAotKyAgICAgICAgICAgICMgc2hlbmFuaWdhbnMgd2hlcmVpbiBhIHVzZXIgZG9lcyBzb21ldGhpbmcgbGlrZSBwYXNzCi0rICAgICAgICAgICAgIyAtLWRlYnVnZ2VyIG9yIC0tY29uZmlnPXVpLmRlYnVnZ2VyPTEgYXMgYSByZXBvCi0rICAgICAgICAgICAgIyBuYW1lLiBUaGlzIHVzZWQgdG8gYWN0dWFsbHkgcnVuIHRoZSBkZWJ1Z2dlci4KLSsgICAgICAgICAgICBpZiAobGVuKHJlcS5hcmdzKSAhPSA0IG9yCi0rICAgICAgICAgICAgICAgIHJlcS5hcmdzWzBdICE9ICctUicgb3IKLSsgICAgICAgICAgICAgICAgcmVxLmFyZ3NbMV0uc3RhcnRzd2l0aCgnLS0nKSBvcgotKyAgICAgICAgICAgICAgICByZXEuYXJnc1syXSAhPSAnc2VydmUnIG9yCi0rICAgICAgICAgICAgICAgIHJlcS5hcmdzWzNdICE9ICctLXN0ZGlvJyk6Ci0rICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yLkFib3J0KAotKyAgICAgICAgICAgICAgICAgICAgXygncG90ZW50aWFsbHkgdW5zYWZlIHNlcnZlIC0tc3RkaW8gaW52b2NhdGlvbjogJXInKSAlCi0rICAgICAgICAgICAgICAgICAgICAocmVxLmFyZ3MsKSkKLSsKLSAgICAgICAgIHRyeToKLSAgICAgICAgICAgICBkZWJ1Z2dlciA9ICdwZGInCi0gICAgICAgICAgICAgZGVidWd0cmFjZSA9IHsKLWRpZmYgLS1naXQgYS90ZXN0cy90ZXN0LXNzaC50IGIvdGVzdHMvdGVzdC1zc2gudAotLS0tIGEvdGVzdHMvdGVzdC1zc2gudAotKysrIGIvdGVzdHMvdGVzdC1zc2gudAotQEAgLTM1Nyw2ICszNTcsMTkgQEAKLSAgIGFib3J0OiBkZXN0aW5hdGlvbiAnYSByZXBvJyBpcyBub3QgZW1wdHkKLSAgIFsyNTVdCi0gCi0rTWFrZSBzdXJlIGhnIGlzIHJlYWxseSBwYXJhbm9pZCBpbiBzZXJ2ZSAtLXN0ZGlvIG1vZGUuIEl0IHVzZWQgdG8gYmUKLStwb3NzaWJsZSB0byBnZXQgYSBkZWJ1Z2dlciBSRVBMIGJ5IHNwZWNpZnlpbmcgYSByZXBvIG5hbWVkIC0tZGVidWdnZXIuCi0rICAkIGhnIC1SIC0tZGVidWdnZXIgc2VydmUgLS1zdGRpbwotKyAgYWJvcnQ6IHBvdGVudGlhbGx5IHVuc2FmZSBzZXJ2ZSAtLXN0ZGlvIGludm9jYXRpb246IFsnLVInLCAnLS1kZWJ1Z2dlcicsICdzZXJ2ZScsICctLXN0ZGlvJ10KLSsgIFsyNTVdCi0rICAkIGhnIC1SIC0tY29uZmlnPXVpLmRlYnVnZ2VyPXllcyBzZXJ2ZSAtLXN0ZGlvCi0rICBhYm9ydDogcG90ZW50aWFsbHkgdW5zYWZlIHNlcnZlIC0tc3RkaW8gaW52b2NhdGlvbjogWyctUicsICctLWNvbmZpZz11aS5kZWJ1Z2dlcj15ZXMnLCAnc2VydmUnLCAnLS1zdGRpbyddCi0rICBbMjU1XQotK0FiYnJldmlhdGlvbnMgb2YgJ3NlcnZlJyBhbHNvIGRvbid0IHdvcmssIHRvIGF2b2lkIHNoZW5hbmlnYW5zLgotKyAgJCBoZyAtUiBuYXJmIHNlcnYgLS1zdGRpbwotKyAgYWJvcnQ6IHBvdGVudGlhbGx5IHVuc2FmZSBzZXJ2ZSAtLXN0ZGlvIGludm9jYXRpb246IFsnLVInLCAnbmFyZicsICdzZXJ2JywgJy0tc3RkaW8nXQotKyAgWzI1NV0KLSsKLSBUZXN0IGhnLXNzaCB1c2luZyBhIGhlbHBlciBzY3JpcHQgdGhhdCB3aWxsIHJlc3RvcmUgUFlUSE9OUEFUSCAod2hpY2ggbWlnaHQKLSBoYXZlIGJlZW4gY2xlYXJlZCBieSBhIGhnLmV4ZSB3cmFwcGVyKSBhbmQgaW52b2tlIGhnLXNzaCB3aXRoIHRoZSByaWdodAotIHBhcmFtZXRlcnM6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXJjdXJpYWwvbWVyY3VyaWFsLW5hdGl2ZV80LjAuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21lcmN1cmlhbC9tZXJjdXJpYWwtbmF0aXZlXzQuMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDhhY2Q5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21lcmN1cmlhbC9tZXJjdXJpYWwtbmF0aXZlXzQuMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgTWVyY3VyaWFsIGRpc3RyaWJ1dGVkIFNDTSIKLUhPTUVQQUdFID0gImh0dHA6Ly9tZXJjdXJpYWwuc2VsZW5pYy5jb20vIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotREVQRU5EUyA9ICJweXRob24tbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3Lm1lcmN1cmlhbC1zY20ub3JnL3JlbGVhc2UvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL21lcmN1cmlhbC1DVkUtMjAxNy05NDYyLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyMmE5YjFkN2MwYzA2YTUzZjBhZTViMzg2ZDUzNmQwOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2YWE0YWRlOTNjMWI1ZTExOTM3ODIwODgwYTQ2NmViZjFjODI0MDg2ZDQ0M2NkNzk5ZmM0NmUyNjE3MjUwZDQwIgotCi1TID0gIiR7V09SS0RJUn0vbWVyY3VyaWFsLSR7UFZ9IgotCi1pbmhlcml0IG5hdGl2ZQotCi1FWFRSQV9PRU1BS0UgPSAiU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgIFBSRUZJWD0ke3ByZWZpeH0iCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgewotICAgIHNlZCAtaSAtZSAnczpQWVRIT049cHl0aG9uOlBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob246ZycgJHtTfS9NYWtlZmlsZQotfQotCi1kb19pbnN0YWxsICgpIHsKLSAgICBvZV9ydW5tYWtlIC1lIGluc3RhbGwtYmluIERFU1RESVI9JHtEfSBQUkVGSVg9JHtwcmVmaXh9Ci19Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21lcmN1cmlhbC9tZXJjdXJpYWxfNC40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbWVyY3VyaWFsL21lcmN1cmlhbF80LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA1MjQ5NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21lcmN1cmlhbC9tZXJjdXJpYWxfNC40LmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiVGhlIE1lcmN1cmlhbCBkaXN0cmlidXRlZCBTQ00iCitIT01FUEFHRSA9ICJodHRwOi8vbWVyY3VyaWFsLnNlbGVuaWMuY29tLyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKK0RFUEVORFMgPSAicHl0aG9uIHB5dGhvbi1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJweXRob24tbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uIHB5dGhvbi1tb2R1bGVzIgorCitpbmhlcml0IHB5dGhvbi1kaXIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5tZXJjdXJpYWwtc2NtLm9yZy9yZWxlYXNlLyR7QlB9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjMWQ5ZmFkMWI3ZWQ3MDc3YjBkNGFlODJlNzExNTRkYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMzRhZjRhNjc1NjVjODU5MjNiMGExOTEwYzcwNGFiNDRiY2YxMmY2OWI4NTUzMjY4NzIwODc3NjU2M2Q4N2RlIgorCitTID0gIiR7V09SS0RJUn0vbWVyY3VyaWFsLSR7UFZ9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworRVhUUkFfT0VNQUtFID0gIlNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKyAgICBQUkVGSVg9JHtwcmVmaXh9IgorCitkb19jb25maWd1cmVfYXBwZW5kICgpIHsKKyAgICBzZWQgLWkgLWUgJ3M6UFlUSE9OPXB5dGhvbjpQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uOmcnICR7U30vTWFrZWZpbGUKK30KKworZG9faW5zdGFsbCAoKSB7CisgICAgb2VfcnVubWFrZSAtZSBpbnN0YWxsLWJpbiBERVNURElSPSR7RH0gUFJFRklYPSR7cHJlZml4fQorfQorCitGSUxFU18ke1BOfSArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi9uYXRpdmVfYmluZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vbmF0aXZlX2JpbmRpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTkzZTk3NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi9uYXRpdmVfYmluZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotVGhlcmUgYXJlIHNvbWUgZGlzY3Vzc2lvbnMgdXBzdHJlYW0gdG8gbWVyZ2UgdGhpcyBwYXRjaCwgYnV0IEkgcHJlc29uYWx5IGJlbGlldmUKLXRoYXQgaXMgaXMgT0Ugb25seS4gaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vaXNzdWVzLzE4NDkjaXNzdWVjb21tZW50LTMwMzczMDMyMwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUBnbWFpbC5jb20+Ci1kaWZmIC0tZ2l0IGEvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMucHkgYi9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy5weQotaW5kZXggMDRhMjJmOTg1OTQxLi4zZTMzYmM0YTc5ZTcgMTAwNjQ0Ci0tLS0gYS9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy5weQotKysrIGIvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMucHkKLUBAIC05NSw3ICs5NSw3IEBAIGNsYXNzIERlcGVuZGVuY3k6Ci0gICAgIGRlZiBuZWVkX3RocmVhZHMoc2VsZik6Ci0gICAgICAgICByZXR1cm4gRmFsc2UKLSAKLS0gICAgZGVmIGdldF9wa2djb25maWdfdmFyaWFibGUoc2VsZiwgdmFyaWFibGVfbmFtZSk6Ci0rICAgIGRlZiBnZXRfcGtnY29uZmlnX3ZhcmlhYmxlKHNlbGYsIHZhcmlhYmxlX25hbWUsIHVzZV9uYXRpdmU9RmFsc2UpOgotICAgICAgICAgcmFpc2UgTWVzb25FeGNlcHRpb24oJ1RyaWVkIHRvIGdldCBhIHBrZy1jb25maWcgdmFyaWFibGUgZnJvbSBhIG5vbi1wa2djb25maWcgZGVwZW5kZW5jeS4nKQotIAotIGNsYXNzIEludGVybmFsRGVwZW5kZW5jeShEZXBlbmRlbmN5KToKLUBAIC0yMjQsOCArMjI0LDEyIEBAIGNsYXNzIFBrZ0NvbmZpZ0RlcGVuZGVuY3koRGVwZW5kZW5jeSk6Ci0gICAgICAgICByZXR1cm4gcy5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYubmFtZSwgc2VsZi5pc19mb3VuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcnNpb25fcmVxcykKLSAKLS0gICAgZGVmIF9jYWxsX3BrZ2JpbihzZWxmLCBhcmdzKToKLS0gICAgICAgIHAsIG91dCA9IFBvcGVuX3NhZmUoW3NlbGYucGtnYmluXSArIGFyZ3MsIGVudj1vcy5lbnZpcm9uKVswOjJdCi0rICAgIGRlZiBfY2FsbF9wa2diaW4oc2VsZiwgYXJncywgdXNlX25hdGl2ZT1GYWxzZSk6Ci0rICAgICAgICBpZiB1c2VfbmF0aXZlOgotKyAgICAgICAgICAgIHBrZ2JpbiA9IFtzZWxmLnBrZ2JpbiArICItbmF0aXZlIl0KLSsgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgcGtnYmluID0gW3NlbGYucGtnYmluXQotKyAgICAgICAgcCwgb3V0ID0gUG9wZW5fc2FmZShwa2diaW4gKyBhcmdzLCBlbnY9b3MuZW52aXJvbilbMDoyXQotICAgICAgICAgcmV0dXJuIHAucmV0dXJuY29kZSwgb3V0LnN0cmlwKCkKLSAKLSAgICAgZGVmIF9zZXRfY2FyZ3Moc2VsZik6Ci1AQCAtMjU5LDggKzI2Myw4IEBAIGNsYXNzIFBrZ0NvbmZpZ0RlcGVuZGVuY3koRGVwZW5kZW5jeSk6Ci0gICAgICAgICAgICAgICAgIHNlbGYuaXNfbGlidG9vbCA9IFRydWUKLSAgICAgICAgICAgICBzZWxmLmxpYnMuYXBwZW5kKGxpYikKLSAKLS0gICAgZGVmIGdldF9wa2djb25maWdfdmFyaWFibGUoc2VsZiwgdmFyaWFibGVfbmFtZSk6Ci0tICAgICAgICByZXQsIG91dCA9IHNlbGYuX2NhbGxfcGtnYmluKFsnLS12YXJpYWJsZT0nICsgdmFyaWFibGVfbmFtZSwgc2VsZi5uYW1lXSkKLSsgICAgZGVmIGdldF9wa2djb25maWdfdmFyaWFibGUoc2VsZiwgdmFyaWFibGVfbmFtZSwgdXNlX25hdGl2ZT1GYWxzZSk6Ci0rICAgICAgICByZXQsIG91dCA9IHNlbGYuX2NhbGxfcGtnYmluKFsnLS12YXJpYWJsZT0nICsgdmFyaWFibGVfbmFtZSwgc2VsZi5uYW1lXSwgdXNlX25hdGl2ZT11c2VfbmF0aXZlKQotICAgICAgICAgdmFyaWFibGUgPSAnJwotICAgICAgICAgaWYgcmV0ICE9IDA6Ci0gICAgICAgICAgICAgaWYgc2VsZi5yZXF1aXJlZDoKLUBAIC0xMDkxLDcgKzEwOTUsNyBAQCBjbGFzcyBRdEJhc2VEZXBlbmRlbmN5KERlcGVuZGVuY3kpOgotICAgICAgICAgc2VsZi5iaW5kaXIgPSBzZWxmLmdldF9wa2djb25maWdfaG9zdF9iaW5zKGNvcmUpCi0gICAgICAgICBpZiBub3Qgc2VsZi5iaW5kaXI6Ci0gICAgICAgICAgICAgIyBJZiBleGVjX3ByZWZpeCBpcyBub3QgZGVmaW5lZCwgdGhlIHBrZy1jb25maWcgZmlsZSBpcyBicm9rZW4KLS0gICAgICAgICAgICBwcmVmaXggPSBjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2V4ZWNfcHJlZml4JykKLSsgICAgICAgICAgICBwcmVmaXggPSBjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2V4ZWNfcHJlZml4JywgdXNlX25hdGl2ZT1UcnVlKQotICAgICAgICAgICAgIGlmIHByZWZpeDoKLSAgICAgICAgICAgICAgICAgc2VsZi5iaW5kaXIgPSBvcy5wYXRoLmpvaW4ocHJlZml4LCAnYmluJykKLSAKLUBAIC0xMjAyLDcgKzEyMDYsNyBAQCBjbGFzcyBRdDVEZXBlbmRlbmN5KFF0QmFzZURlcGVuZGVuY3kpOgotICAgICAgICAgUXRCYXNlRGVwZW5kZW5jeS5fX2luaXRfXyhzZWxmLCAncXQ1JywgZW52LCBrd2FyZ3MpCi0gCi0gICAgIGRlZiBnZXRfcGtnY29uZmlnX2hvc3RfYmlucyhzZWxmLCBjb3JlKToKLS0gICAgICAgIHJldHVybiBjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2hvc3RfYmlucycpCi0rICAgICAgICByZXR1cm4gY29yZS5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdob3N0X2JpbnMnLCB1c2VfbmF0aXZlPVRydWUpCi0gCi0gY2xhc3MgUXQ0RGVwZW5kZW5jeShRdEJhc2VEZXBlbmRlbmN5KToKLSAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGVudiwga3dhcmdzKToKLUBAIC0xMjE2LDcgKzEyMjAsNyBAQCBjbGFzcyBRdDREZXBlbmRlbmN5KFF0QmFzZURlcGVuZGVuY3kpOgotICAgICAgICAgYXBwbGljYXRpb25zID0gWydtb2MnLCAndWljJywgJ3JjYycsICdsdXBkYXRlJywgJ2xyZWxlYXNlJ10KLSAgICAgICAgIGZvciBhcHBsaWNhdGlvbiBpbiBhcHBsaWNhdGlvbnM6Ci0gICAgICAgICAgICAgdHJ5OgotLSAgICAgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5kaXJuYW1lKGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnJXNfbG9jYXRpb24nICUgYXBwbGljYXRpb24pKQotKyAgICAgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5kaXJuYW1lKGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnJXNfbG9jYXRpb24nICUgYXBwbGljYXRpb24sIHVzZV9uYXRpdmU9VHJ1ZSkpCi0gICAgICAgICAgICAgZXhjZXB0IE1lc29uRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgICBwYXNzCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbl8wLjQwLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbl8wLjQwLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0NjQ0YmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb25fMC40MC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotSE9NRVBBR0UgPSAiaHR0cDovL21lc29uYnVpbGQuY29tIgotU1VNTUFSWSA9ICJBIGhpZ2ggcGVyZm9ybWFuY2UgYnVpbGQgc3lzdGVtIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKLQotU1JDX1VSSSA9ICIgXAotICAgIGdpdDovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi5naXQgXAotICAgIGZpbGU6Ly9uYXRpdmVfYmluZGlyLnBhdGNoIFwKLSIKLQotU1JDUkVWID0gImIyNWQzZTRkM2YyYjRkMzcwMjlhNTA3Y2MwODliZGRlNjQzYzYyNDAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgc2V0dXB0b29sczMKLQotUkRFUEVORFNfJHtQTn0gPSAibmluamEgcHl0aG9uMy1jb3JlIHB5dGhvbjMtbW9kdWxlcyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tcGljaC9tcGljaF8zLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tcGljaC9tcGljaF8zLjIuYmIKaW5kZXggNGEyYzM3Ny4uNTFiMzEzYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbXBpY2gvbXBpY2hfMy4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21waWNoL21waWNoXzMuMi5iYgpAQCAtMzEsNiArMzEsMTEgQEAKIGluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBnZXR0ZXh0CiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIGZvciBkIGluIGNvbmZkYiB0ZXN0L21waS9jb25mZGIgc3JjL29wZW5wYS9jb25mZGIgc3JjL3BtL2h5ZHJhL2NvbmZkYiBzcmMvcG0vaHlkcmEvdG9vbHMvdG9wby9od2xvYy9od2xvYy9jb25maWcgc3JjL3BtL2h5ZHJhL21wbC9jb25mZGIgc3JjL21wbC9jb25mZGIgc3JjL21waS9yb21pby9jb25mZGI7ICBkbworICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nbnUtY29uZmlnL2NvbmZpZy5ndWVzcyAke1N9LyRkCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLnN1YiAke1N9LyRkCisgICAgZG9uZQorCiAgICAgYXV0b3JlY29uZiAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgLUkgLiAtSSBjb25mZGIvIC1JIG1haW50LwogICAgIG9lX3J1bmNvbmYKICAgICBleGl0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tc2dwYWNrL21zZ3BhY2stYy8wMDAxLUZpeC1XZXJyb3ItY2xhc3MtbWVtYWNjZXNzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbXNncGFjay9tc2dwYWNrLWMvMDAwMS1GaXgtV2Vycm9yLWNsYXNzLW1lbWFjY2Vzcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGQ3NzJkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbXNncGFjay9tc2dwYWNrLWMvMDAwMS1GaXgtV2Vycm9yLWNsYXNzLW1lbWFjY2Vzcy5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIGEwNWQ5MmFlODUwMjRkMDY0OGY2OWY5NTMwN2ExZDNlOGU1MTEwOWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxIEFwciAyMDE4IDE5OjU1OjM4IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCAtV2Vycm9yPWNsYXNzLW1lbWFjY2VzcworCitDYXN0aW5nIHRvIHZvaWQqIG1ha2UgZ2NjIGhhcHB5IHNpbmNlIGl0cyB1cHNldCBhYm91dAorb2JqZWN0IHR5cGVzIGFuZCByaWdodGx5IHNvCisKK0ZpeGVzCisKKyd2b2lkKiBtZW1jcHkodm9pZCosIGNvbnN0IHZvaWQqLCBzaXplX3QpJyBjb3B5aW5nIGFuIG9iamVjdCBvZiBub24tdHJpdmlhbCB0eXBlICdzdHJ1Y3QgbXNncGFjazo6djI6Om9iamVjdCcgZnJvbSBhbiBhcnJheSBvZiAnY29uc3QgbXNncGFja19vYmplY3QnIHtha2EgJ2NvbnN0IHN0cnVjdCBtc2dwYWNrX29iamVjdCd9IFstV2Vycm9yPWNsYXNzLW1lbWFjY2Vzc10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9tc2dwYWNrL21zZ3BhY2stYy9wdWxsLzY1OV0KKworIGluY2x1ZGUvbXNncGFjay92MS9vYmplY3QuaHBwIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tc2dwYWNrL3YxL29iamVjdC5ocHAgYi9pbmNsdWRlL21zZ3BhY2svdjEvb2JqZWN0LmhwcAoraW5kZXggNjRkYThjNTMuLjk3MjFmNzA1IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9tc2dwYWNrL3YxL29iamVjdC5ocHAKKysrKyBiL2luY2x1ZGUvbXNncGFjay92MS9vYmplY3QuaHBwCitAQCAtNjYxLDcgKzY2MSw3IEBAIGlubGluZSBvYmplY3Q6Om9iamVjdChjb25zdCBtc2dwYWNrX29iamVjdCYgbykKKyBpbmxpbmUgdm9pZCBvcGVyYXRvcjw8IChtc2dwYWNrOjpvYmplY3QmIG8sIGNvbnN0IG1zZ3BhY2tfb2JqZWN0JiB2KQorIHsKKyAgICAgLy8gRklYTUUgYmV0ZXIgd2F5PworLSAgICBzdGQ6Om1lbWNweSgmbywgJnYsIHNpemVvZih2KSk7CisrICAgIHN0ZDo6bWVtY3B5KHN0YXRpY19jYXN0PHZvaWQqPigmbyksICZ2LCBzaXplb2YodikpOworIH0KKyAKKyBpbmxpbmUgb2JqZWN0OjpvcGVyYXRvciBtc2dwYWNrX29iamVjdCgpIGNvbnN0CistLSAKKzIuMTYuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tc2dwYWNrL21zZ3BhY2stY18yLjEuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21zZ3BhY2svbXNncGFjay1jXzIuMS41LmJiCmluZGV4IGQ5ZjY5NTYuLjAyYzBjZDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21zZ3BhY2svbXNncGFjay1jXzIuMS41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21zZ3BhY2svbXNncGFjay1jXzIuMS41LmJiCkBAIC05LDkgKzksMTAgQEAKIAogUFYgLj0gIitnaXQke1NSQ1BWfSIKIAotU1JDUkVWID0gIjdhOTgxMzhmMjdmMjcyOTBlNjgwYmY4ZmJmMWY4ZDFiMDg5YmYxMzgiCitTUkNSRVYgPSAiMjA4NTk1YjI2MjBjZjYyNjBjZTNkNmQ0Y2Y4NTQzZjEzYjIwNjQ0OSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21zZ3BhY2svbXNncGFjay1jIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LVdlcnJvci1jbGFzcy1tZW1hY2Nlc3MucGF0Y2ggXAogICAgICAgICAgICAiCiAKIGluaGVyaXQgY21ha2UgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvMDAwMS1EaXNhYmxlLXJ1bm5pbmctZ3lwLWZpbGVzLWZvci1idW5kbGVkLWRlcHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvMDAwMS1EaXNhYmxlLXJ1bm5pbmctZ3lwLWZpbGVzLWZvci1idW5kbGVkLWRlcHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyNGE0NjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzLzAwMDEtRGlzYWJsZS1ydW5uaW5nLWd5cC1maWxlcy1mb3ItYnVuZGxlZC1kZXBzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSBjMmFmZjE2Y2MxOTZhNjFmNGFiMWNkYWU0YTkxYzc5MjYxMjNjMjM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogWnV6YW5hIFN2ZXRsaWtvdmEgPHpzdmV0bGlrQHJlZGhhdC5jb20+Ci1EYXRlOiBUaHUsIDI3IEFwciAyMDE3IDE0OjI1OjQyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgcnVubmluZyBneXAgb24gc2hhcmVkIGRlcHMKLQotLS0tCi0gTWFrZWZpbGUgfCA3ICsrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggMGEyMTdiZDg5My4uZTEyMjlhZDA3ZiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTc5LDEwICs3OSw5IEBAICQoTk9ERV9HX0VYRSk6IGNvbmZpZy5neXBpIG91dC9NYWtlZmlsZQotIAkkKE1BS0UpIC1DIG91dCBCVUlMRFRZUEU9RGVidWcgVj0kKFYpCi0gCWlmIFsgISAtciAkQCAtbyAhIC1MICRAIF07IHRoZW4gbG4gLWZzIG91dC9EZWJ1Zy8kKE5PREVfRVhFKSAkQDsgZmkKLSAKLS1vdXQvTWFrZWZpbGU6IGNvbW1vbi5neXBpIGRlcHMvdXYvdXYuZ3lwIGRlcHMvaHR0cF9wYXJzZXIvaHR0cF9wYXJzZXIuZ3lwIFwKLS0gICAgICAgICAgICAgIGRlcHMvemxpYi96bGliLmd5cCBkZXBzL3Y4L2d5cGZpbGVzL3Rvb2xjaGFpbi5neXBpIFwKLS0gICAgICAgICAgICAgIGRlcHMvdjgvZ3lwZmlsZXMvZmVhdHVyZXMuZ3lwaSBkZXBzL3Y4L3NyYy92OC5neXAgbm9kZS5neXAgXAotLSAgICAgICAgICAgICAgY29uZmlnLmd5cGkKLStvdXQvTWFrZWZpbGU6IGNvbW1vbi5neXBpIGRlcHMvaHR0cF9wYXJzZXIvaHR0cF9wYXJzZXIuZ3lwIFwKLSsgICAgICAgICAgICAgIGRlcHMvdjgvZ3lwZmlsZXMvdG9vbGNoYWluLmd5cGkgZGVwcy92OC9neXBmaWxlcy9mZWF0dXJlcy5neXBpIFwKLSsJCQkgIGRlcHMvdjgvc3JjL3Y4Lmd5cCBub2RlLmd5cCBjb25maWcuZ3lwaQotIAkkKFBZVEhPTikgdG9vbHMvZ3lwX25vZGUucHkgLWYgbWFrZQotIAotIGNvbmZpZy5neXBpOiBjb25maWd1cmUKLS0tIAotMi4xMi4yCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzL25vLXJlZ2lzdHJ5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqcy9uby1yZWdpc3RyeS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQyNDczOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzL25vLXJlZ2lzdHJ5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotQnVnZml4IGZvciAtLW5vLXJlZ2lzdHJ5IGluIG5vZGVqcy12MC4xMi4yCi0KLWRpZmYgLXUgLXIgbm9kZS12MC4xMi4yX2RlZi9kZXBzL25wbS9saWIvY2FjaGUvY2FjaGluZy1jbGllbnQuanMgbm9kZS12MC4xMi4yL2RlcHMvbnBtL2xpYi9jYWNoZS9jYWNoaW5nLWNsaWVudC5qcwotLS0tIG5vZGUtdjAuMTIuMl9kZWYvZGVwcy9ucG0vbGliL2NhY2hlL2NhY2hpbmctY2xpZW50LmpzCTIwMTUtMDQtMDEgMDE6MTM6MDEuMDAwMDAwMDAwICswMzAwCi0rKysgbm9kZS12MC4xMi4yL2RlcHMvbnBtL2xpYi9jYWNoZS9jYWNoaW5nLWNsaWVudC5qcwkyMDE1LTA1LTE4IDAwOjQ3OjEwLjczODU5OTY4NiArMDMwMAotQEAgLTY3LDYgKzY3LDIyIEBACi0gICB2YXIgY2FjaGVCYXNlID0gY2FjaGVGaWxlKG5wbS5jb25maWcuZ2V0KCJjYWNoZSIpKSh1cmkpCi0gICB2YXIgY2FjaGVQYXRoID0gcGF0aC5qb2luKGNhY2hlQmFzZSwgIi5jYWNoZS5qc29uIikKLSAKLSsgIGlmIChwYXJzZWQuaG9zdCA9PT0gIm5vcmVnaXN0cnkiKSAoZnVuY3Rpb24oKSB7Ci0rICAgIHZhciBzdGF0ID0gbnVsbAotKyAgICB2YXIgZmlsZSA9IG5wbS5jb25maWcuZ2V0KCJjYWNoZSIpICsgcGFyc2VkLnBhdGhuYW1lICsgIi8uY2FjaGUuanNvbiIKLSsgICAgdHJ5IHsKLSsgICAgICBzdGF0ID0gZnMuc3RhdFN5bmMoY2FjaGVQYXRoKQotKyAgICB9IGNhdGNoIChleCkge30KLSsgICAgaWYgKCFzdGF0KSB0cnkgewotKyAgICAgIHN0YXQgPSBmcy5zdGF0U3luYyhmaWxlKSAKLSsgICAgICBjYWNoZVBhdGggPSBmaWxlCi0rICAgIH0gY2F0Y2ggKGV4KSB7Ci0rICAgICAgc3RhdCA9ICJSZWdpc3RyeSBub3QgZGVmaW5lZCBhbmQgcmVnaXN0cnkgZmlsZXMgbm90IGZvdW5kOiBcIiIgKwotKyAgICAgICAgICAgICBjYWNoZVBhdGggKyAiXCIsIFwiIiArIGZpbGUgKyAiXCIuIgotKyAgICAgIHRocm93IG5ldyBFcnJvcihzdGF0KQotKyAgICB9Ci0rICB9KSgpCi0rCi0gICAvLyBJZiB0aGUgR0VUIGlzIHBhcnQgb2YgYSB3cml0ZSBvcGVyYXRpb24gKFBVVCBvciBERUxFVEUpLCB0aGVuCi0gICAvLyBza2lwIHBhc3QgdGhlIGNhY2hlIGVudGlyZWx5LCBidXQgc3RpbGwgc2F2ZSB0aGUgcmVzdWx0cy4KLSAgIGlmICh1cmkubWF0Y2goL1w/d3JpdGU9dHJ1ZSQvKSkgewotQEAgLTgzLDEyICs5OSwxNyBAQAotICAgICAgICAgfQotICAgICAgICAgY2F0Y2ggKGV4KSB7Ci0gICAgICAgICAgIGRhdGEgPSBudWxsCi0rICAgICAgICAgIGlmIChwYXJzZWQuaG9zdCA9PT0gIm5vcmVnaXN0cnkiKQotKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRmlsZSBcIiIgKyBjYWNoZVBhdGgrIlwiIiArICIgY29ycnVwdGVkLiIpCi0gICAgICAgICB9Ci0gCi0gICAgICAgICBwYXJhbXMuc3RhdCA9IHN0YXQKLSAgICAgICAgIHBhcmFtcy5kYXRhID0gZGF0YQotIAotLSAgICAgICAgZ2V0Xy5jYWxsKGNsaWVudCwgdXJpLCBjYWNoZVBhdGgsIHBhcmFtcywgY2IpCi0rICAgICAgICBpZiAocGFyc2VkLmhvc3QgPT09ICJub3JlZ2lzdHJ5IikKLSsgICAgICAgICAgY2IobnVsbCwgZGF0YSwgSlNPTi5zdHJpbmdpZnkoZGF0YSksIHsgc3RhdHVzQ29kZSA6IDMwNCB9KQotKyAgICAgICAgZWxzZQotKyAgICAgICAgICBnZXRfLmNhbGwoY2xpZW50LCB1cmksIGNhY2hlUGF0aCwgcGFyYW1zLCBjYikKLSAgICAgICB9KQotICAgICB9Ci0gICAgIGVsc2UgewotZGlmZiAtdSAtciBub2RlLXYwLjEyLjJfZGVmL2RlcHMvbnBtL2xpYi91dGlscy9tYXAtdG8tcmVnaXN0cnkuanMgbm9kZS12MC4xMi4yL2RlcHMvbnBtL2xpYi91dGlscy9tYXAtdG8tcmVnaXN0cnkuanMKLS0tLSBub2RlLXYwLjEyLjJfZGVmL2RlcHMvbnBtL2xpYi91dGlscy9tYXAtdG8tcmVnaXN0cnkuanMJMjAxNS0wNC0wMSAwMToxMzowMS4wMDAwMDAwMDAgKzAzMDAKLSsrKyBub2RlLXYwLjEyLjIvZGVwcy9ucG0vbGliL3V0aWxzL21hcC10by1yZWdpc3RyeS5qcwkyMDE1LTA1LTE4IDAxOjE1OjEwLjAzMDU2OTYxMyArMDMwMAotQEAgLTQ1LDYgKzQ1LDggQEAKLSAKLSAgIGxvZy5zaWxseSgibWFwVG9SZWdpc3RyeSIsICJyZWdpc3RyeSIsIHJlZ2lzdHJ5KQotIAotKyAgaWYgKCFyZWdpc3RyeSkgcmV0dXJuIGNiKG51bGwsICJodHRwOi8vbm9yZWdpc3RyeS8iICsgbmFtZSwge30pCi0rCi0gICB2YXIgYXV0aCA9IGNvbmZpZy5nZXRDcmVkZW50aWFsc0J5VVJJKHJlZ2lzdHJ5KQotIAotICAgLy8gbm9ybWFsaXplIHJlZ2lzdHJ5IFVSTCBzbyByZXNvbHV0aW9uIGRvZXNuJ3QgZHJvcCBhIHBpZWNlIG9mIHJlZ2lzdHJ5IFVSTApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqc184LjQuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanNfOC45LjQuYmIKc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqc184LjQuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqc184LjkuNC5iYgppbmRleCA1YmNiYzAwLi44OTMwY2Q5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzXzguNC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanNfOC45LjQuYmIKQEAgLTEsNyArMSw3IEBACiBERVNDUklQVElPTiA9ICJub2RlSlMgRXZlbnRlZCBJL08gZm9yIFY4IEphdmFTY3JpcHQiCiBIT01FUEFHRSA9ICJodHRwOi8vbm9kZWpzLm9yZyIKIExJQ0VOU0UgPSAiTUlUICYgQlNEICYgQXJ0aXN0aWMtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTRkMzVjNjEyMGYxNzVlMWZiZTVmZjkwOGIxY2YyZDYiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yNzBmNzQ3N2ExNzA1ZjdjZDNlMjlkM2Q0NTEyOTE1ZCIKIAogREVQRU5EUyA9ICJvcGVuc3NsMTAgemxpYiIKIApAQCAtMTIsOCArMTIsOCBAQAogU1JDX1VSSSA9ICJodHRwOi8vbm9kZWpzLm9yZy9kaXN0L3Yke1BWfS9ub2RlLXYke1BWfS50YXIueHogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLXJ1bm5pbmctZ3lwLWZpbGVzLWZvci1idW5kbGVkLWRlcHMucGF0Y2ggXAogIgotU1JDX1VSSVttZDVzdW1dID0gImU2Yzg1YzgzMDAxMzQwYjMwNjcxZTk0MzJlMWJkMzM3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVkNWFhMmExMDFkY2M2MTcyMzFhNDc1ODEyZWI4ZWQ4N2NhYzIxNDkxZjFkY2M3OTk3YjlkZDQ2MzU2M2YzNjEiCitTUkNfVVJJW21kNXN1bV0gPSAiNjMxZWQxMDJmZTU4YzEzY2Y2M2JjOTJhNjhjZjQ3NTkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmNkY2RlOWM5YzFjYTlmNDUwYTBiMjRlYWZhMjI5Y2E3NTllNTc2ZGFhMGZhZTg5MmNlNzRkNTQxZWNkYzg2ZiIKIAogUyA9ICIke1dPUktESVJ9L25vZGUtdiR7UFZ9IgogCkBAIC0yNiw3ICsyNiw3IEBACiAgICAgaWYgICByZS5tYXRjaCgnaS44NiQnLCBhKTogcmV0dXJuICdpYTMyJwogICAgIGVsaWYgcmUubWF0Y2goJ3g4Nl82NCQnLCBhKTogcmV0dXJuICd4NjQnCiAgICAgZWxpZiByZS5tYXRjaCgnYWFyY2g2NCQnLCBhKTogcmV0dXJuICdhcm02NCcKLSAgICBlbGlmIHJlLm1hdGNoKCdwb3dlcnBjNjQkJywgYSk6IHJldHVybiAncHBjNjQnCisgICAgZWxpZiByZS5tYXRjaCgnKHBvd2VycGM2NHxwcGM2NGxlKSQnLCBhKTogcmV0dXJuICdwcGM2NCcKICAgICBlbGlmIHJlLm1hdGNoKCdwb3dlcnBjJCcsIGEpOiByZXR1cm4gJ3BwYycKICAgICByZXR1cm4gYQogCkBAIC04MCw3ICs4MCw4IEBACiAKIFBBQ0tBR0VTID0rICIke1BOfS1ucG0iCiBGSUxFU18ke1BOfS1ucG0gPSAiJHtleGVjX3ByZWZpeH0vbGliL25vZGVfbW9kdWxlcyAke2JpbmRpcn0vbnBtICR7YmluZGlyfS9ucHgiCi1SREVQRU5EU18ke1BOfS1ucG0gPSAiYmFzaCBweXRob24tc2hlbGwgcHl0aG9uLWRhdGV0aW1lIHB5dGhvbi1zdWJwcm9jZXNzIHB5dGhvbi10ZXh0dXRpbHMiCitSREVQRU5EU18ke1BOfS1ucG0gPSAiYmFzaCBweXRob24tc2hlbGwgcHl0aG9uLWRhdGV0aW1lIHB5dGhvbi1zdWJwcm9jZXNzIHB5dGhvbi10ZXh0dXRpbHMgXAorICAgIHB5dGhvbi1jb21waWxlciBweXRob24tbWlzYyBweXRob24tbXVsdGlwcm9jZXNzaW5nIgogCiBQQUNLQUdFUyA9KyAiJHtQTn0tc3lzdGVtdGFwIgogRklMRVNfJHtQTn0tc3lzdGVtdGFwID0gIiR7ZGF0YWRpcn0vc3lzdGVtdGFwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2RrLXRhcmdldC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNkay10YXJnZXQuYmIKaW5kZXggMWJlN2Y2YS4uNTNmYzE1OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2RrLXRhcmdldC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZGstdGFyZ2V0LmJiCkBAIC00LDcgKzQsNyBAQAogCiBQUiA9ICJyMSIKIAotaW5oZXJpdCBwYWNrYWdlZ3JvdXAgYWxsYXJjaAoraW5oZXJpdCBwYWNrYWdlZ3JvdXAKIAogUlBST1ZJREVTXyR7UE59ICs9ICJwYWNrYWdlZ3JvdXAtbmF0aXZlLXNkayIKIFJSRVBMQUNFU18ke1BOfSArPSAicGFja2FnZWdyb3VwLW5hdGl2ZS1zZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2lwYy1ydW5fMC45NC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvaXBjLXJ1bl8wLjk2LmJiCnNpbWlsYXJpdHkgaW5kZXggOTMlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvaXBjLXJ1bl8wLjk0LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2lwYy1ydW5fMC45Ni5iYgppbmRleCAzYjU4OTM5Li4wOGM5NjZkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2lwYy1ydW5fMC45NC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2lwYy1ydW5fMC45Ni5iYgpAQCAtMTAsNyArMTAsNyBAQAogREVQRU5EUyA9ICJwZXJsIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdG9kZHIvSVBDLVJ1bi5naXQiCi1TUkNSRVYgPSAiNmJkZjQxZTI3NmUwNmQyM2UxNDA3ODNiMTNhNmVhZWY0NzQ1YzIxNiIKK1NSQ1JFViA9ICI5NjA2NjM2NmFjOGM0MDFkZmY5Yzk3OWQwNGYyNWRjODIxOWZmY2MxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmRiZC1teXNxbC1wZXJsXzQuMDM2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJkYmQtbXlzcWwtcGVybF80LjA0My5iYgpzaW1pbGFyaXR5IGluZGV4IDg1JQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmRiZC1teXNxbC1wZXJsXzQuMDM2LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmRiZC1teXNxbC1wZXJsXzQuMDQzLmJiCmluZGV4IGY1ZGJlZjIuLmJkOGJhNzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZGJkLW15c3FsLXBlcmxfNC4wMzYuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJkYmQtbXlzcWwtcGVybF80LjA0My5iYgpAQCAtMTcsOCArMTcsOCBAQAogU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9NL01JL01JQ0hJRUxCL0RCRC1teXNxbC0ke1BWfS50YXIuZ3ogXAogIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiZmRlZTFkOGRjNGFlNTRiYzZjYjdjZDVhM2YzZDMzNDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWM0OGE4MjNmODZiODExMGNjYjY1MDRjNjE3NmNhMjQ4YjUyZjU2ODI5ZGQ0NTQ4YmMzOWMzNTA5ZjQxNTRjZiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0YTAwZGQ3ZjFjMDU3OTMxMTQ3YzY1ZGZjNDkwMWMzNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MjlmODY1ZTgzMTdmNTI2MDJiMmYyZWZkMmI2ODgwMDI5MDNkMmU0YmJjYmE1NDI3Y2I2MTg4YjA0M2Q2Zjk5IgogCiBTID0gIiR7V09SS0RJUn0vREJELW15c3FsLSR7UFZ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmRiaS1wZXJsXzEuNjM2LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJkYmktcGVybF8xLjYzNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg1YjkwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmRiaS1wZXJsXzEuNjM2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgUGVybCBEYXRhYmFzZSBJbnRlcmZhY2UiCi1ERVNDUklQVElPTiA9ICJEQkkgaXMgYSBkYXRhYmFzZSBhY2Nlc3MgQXBwbGljYXRpb24gUHJvZ3JhbW1pbmcgSW50ZXJmYWNlIFwKLShBUEkpIGZvciB0aGUgUGVybCBMYW5ndWFnZS4gVGhlIERCSSBBUEkgU3BlY2lmaWNhdGlvbiBkZWZpbmVzIGEgc2V0IFwKLW9mIGZ1bmN0aW9ucywgdmFyaWFibGVzIGFuZCBjb252ZW50aW9ucyB0aGF0IHByb3ZpZGUgYSBjb25zaXN0ZW50IFwKLWRhdGFiYXNlIGludGVyZmFjZSBpbmRlcGVuZGVudCBvZiB0aGUgYWN0dWFsIGRhdGFiYXNlIGJlaW5nIHVzZWQuIFwKLSIKLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9EQkkvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLVJERVBFTkRTXyR7UE59ID0gIiBwZXJsLW1vZHVsZS1jYXJwIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHBvcnRlciBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXhwb3J0ZXItaGVhdnkgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWR5bmFsb2FkZXIgXAotIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9EQkkucG07YmVnaW5saW5lPTgxNDc7ZW5kbGluZT04MTUxO21kNT0yZTVmNmNmNDdlNWFkN2I3N2RjYjYxNzJlZGMyOTI5MiIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9UL1RJL1RJTUIvREJJLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2MGYyOTFlNWYwMTU1NTBkZGU3MWQxODU4ZGZlOTNiYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZjdkZGNlOTdjMDRiNGI3YTAwMGU2NWU1ZDA1ZjY3OWM5NjRkNjJjOGIwMmM5NGMxYTdkODE1YmIyZGQ2NzZjIgotCi1TID0gIiR7V09SS0RJUn0vREJJLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmRiaS1wZXJsXzEuNjQxLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJkYmktcGVybF8xLjY0MS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGExMjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJkYmktcGVybF8xLjY0MS5iYgpAQCAtMCwwICsxLDM2IEBACitTVU1NQVJZID0gIlRoZSBQZXJsIERhdGFiYXNlIEludGVyZmFjZSIKK0RFU0NSSVBUSU9OID0gIkRCSSBpcyBhIGRhdGFiYXNlIGFjY2VzcyBBcHBsaWNhdGlvbiBQcm9ncmFtbWluZyBJbnRlcmZhY2UgXAorKEFQSSkgZm9yIHRoZSBQZXJsIExhbmd1YWdlLiBUaGUgREJJIEFQSSBTcGVjaWZpY2F0aW9uIGRlZmluZXMgYSBzZXQgXAorb2YgZnVuY3Rpb25zLCB2YXJpYWJsZXMgYW5kIGNvbnZlbnRpb25zIHRoYXQgcHJvdmlkZSBhIGNvbnNpc3RlbnQgXAorZGF0YWJhc2UgaW50ZXJmYWNlIGluZGVwZW5kZW50IG9mIHRoZSBhY3R1YWwgZGF0YWJhc2UgYmVpbmcgdXNlZC4gXAorIgorSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L0RCSS8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorUkRFUEVORFNfJHtQTn0gPSAiIHBlcmwtbW9kdWxlLWNhcnAgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHBvcnRlci1oZWF2eSBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZHluYWxvYWRlciBcCisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTEwOTgyYzcxNDhlMGEwMTJjMGZkODA1MzQ1MjJmNWM1IgorCitTUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL1QvVEkvVElNQi9EQkktJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImU3N2ZkMzdmY2Y3N2ZjODhmZGUwMjljMWI3NWRlZDU0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU1MDllNTMyY2RkMGUzZDkxZWRhNTUwNTc4ZGVhYWMyOWUyZjAwOGExMmI2NDU3NmU4YzI2MWJiOTJlOGMyYzEiCisKK1MgPSAiJHtXT1JLRElSfS9EQkktJHtQVn0iCisKK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKwkjIHRlc3QgcmVxdWlyZXMgIi1UIiAodGFpbnQpIGNvbW1hbmQgbGluZSBvcHRpb24KKwlybSAtcmYgJHtCfS90L3BvZC1jb3ZlcmFnZS50CisJcm0gLXJmICR7Qn0vdC8xM3RhaW50LnQKKwkjIHNvdXJjZSBvZiB0ZXN0IGZhaWx1cmUgbm90IG9idmlvdXMKKwlybSAtcmYgJHtCfS90Lzg1Z29mZXIudAorCSMgdW5jbGVhciB3aHkgdGhlcmUgYXJlIHNldmVyYWwgZHVwbGljYXRlcyBvZiB0ZXN0cyBpbiB0YXJiYWxsCisJcm0gLXJmICR7Qn0vdC96Ki50Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC03LjEuOS8wMDAxLVNwZWNpZnktdGFnLXdpdGgtbGlidG9vbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAtNy4xLjkvMDAwMS1TcGVjaWZ5LXRhZy13aXRoLWxpYnRvb2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4YjQ5MzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC03LjEuOS8wMDAxLVNwZWNpZnktdGFnLXdpdGgtbGlidG9vbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLUZyb20gNWM4NGIwMzllOTdhYmQ4OGY2YTE4ZGEwZTZkMjczODNjMDBmZWE5MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDI2IEp1bCAyMDE3IDIzOjA2OjU2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFNwZWNpZnkgLS10YWcgd2l0aCBsaWJ0b29sCi0KLVRoaXMgaGVscHMgaW4gY29tcGlsaW5nIHdpdGggZXh0ZXJuYWwgdG9vbGNoYWlucwotd2l0aCAtZlBJRSBhcHBlbmRlZCB0byBDQyBlLmcuIHZpYSBoYXJkZW5pbmcgZmxhZ3MKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGFjaW5jbHVkZS5tNCB8IDggKysrKy0tLS0KLSBjb25maWd1cmUuaW4gfCA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2FjaW5jbHVkZS5tNCBiL2FjaW5jbHVkZS5tNAotaW5kZXggYTExNGE5OC4uMWNjN2EyNiAxMDA2NDQKLS0tLSBhL2FjaW5jbHVkZS5tNAotKysrIGIvYWNpbmNsdWRlLm00Ci1AQCAtODA2LDEwICs4MDYsMTAgQEAgZG5sCi0gZG5sIFBIUF9CVUlMRF9QUk9HUkFNCi0gZG5sCi0gQUNfREVGVU4oW1BIUF9CVUlMRF9QUk9HUkFNXSxbCi0tICBwaHBfY19wcmU9JyQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDQyknCi0rICBwaHBfY19wcmU9JyQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWNvbXBpbGUgJChDQyknCi0gICBwaHBfY19tZXRhPSckKENPTU1PTl9GTEFHUykgJChDRkxBR1NfQ0xFQU4pICQoRVhUUkFfQ0ZMQUdTKScKLSAgIHBocF9jX3Bvc3Q9Ci0tICBwaHBfY3h4X3ByZT0nJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENYWCknCi0rICBwaHBfY3h4X3ByZT0nJChMSUJUT09MKSAtLXRhZz1DWFggLS1tb2RlPWNvbXBpbGUgJChDWFgpJwotICAgcGhwX2N4eF9tZXRhPSckKENPTU1PTl9GTEFHUykgJChDWFhGTEFHU19DTEVBTikgJChFWFRSQV9DWFhGTEFHUyknCi0gICBwaHBfY3h4X3Bvc3Q9Ci0gICBwaHBfbG89bG8KLUBAIC04MTksMTAgKzgxOSwxMCBAQCBBQ19ERUZVTihbUEhQX0JVSUxEX1BST0dSQU1dLFsKLSAgICAgbm8pICBwaWNfc2V0dGluZz0nLXByZWZlci1ub24tcGljJzs7Ci0gICBlc2FjCi0gCi0tICBzaGFyZWRfY19wcmU9JyQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDQyknCi0rICBzaGFyZWRfY19wcmU9JyQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWNvbXBpbGUgJChDQyknCi0gICBzaGFyZWRfY19tZXRhPSckKENPTU1PTl9GTEFHUykgJChDRkxBR1NfQ0xFQU4pICQoRVhUUkFfQ0ZMQUdTKSAnJHBpY19zZXR0aW5nCi0gICBzaGFyZWRfY19wb3N0PQotLSAgc2hhcmVkX2N4eF9wcmU9JyQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDWFgpJwotKyAgc2hhcmVkX2N4eF9wcmU9JyQoTElCVE9PTCkgLS10YWc9Q1hYIC0tbW9kZT1jb21waWxlICQoQ1hYKScKLSAgIHNoYXJlZF9jeHhfbWV0YT0nJChDT01NT05fRkxBR1MpICQoQ1hYRkxBR1NfQ0xFQU4pICQoRVhUUkFfQ1hYRkxBR1MpICckcGljX3NldHRpbmcKLSAgIHNoYXJlZF9jeHhfcG9zdD0KLSAgIHNoYXJlZF9sbz1sbwotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggN2Q2NWI2My4uNzIyMWFmOSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMTQzMSw4ICsxNDMxLDggQEAgUEhQX1NFVF9MSUJUT09MX1ZBUklBQkxFKFstLXNpbGVudF0pCi0gZG5sIGxpYnRvb2wgMS40LjMgbmVlZHMgdGhpcy4KLSBQSFBfU0VUX0xJQlRPT0xfVkFSSUFCTEUoWy0tcHJlc2VydmUtZHVwLWRlcHNdKQotIAotLXRlc3QgLXogIiRQSFBfQ09NUElMRSIgJiYgUEhQX0NPTVBJTEU9JyQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAtYyAkPCcKLS10ZXN0IC16ICIkQ1hYX1BIUF9DT01QSUxFIiAmJiBDWFhfUEhQX0NPTVBJTEU9JyQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDWFhfQ09NUElMRSkgLWMgJDwnCi0rdGVzdCAteiAiJFBIUF9DT01QSUxFIiAmJiBQSFBfQ09NUElMRT0nJChMSUJUT09MKSAtLXRhZz1DQyAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpIC1jICQ8JwotK3Rlc3QgLXogIiRDWFhfUEhQX0NPTVBJTEUiICYmIENYWF9QSFBfQ09NUElMRT0nJChMSUJUT09MKSAtLXRhZz1DWFggLS1tb2RlPWNvbXBpbGUgJChDWFhfQ09NUElMRSkgLWMgJDwnCi0gU0hBUkVEX0xJQlRPT0w9JyQoTElCVE9PTCknCi0gCi0gQ0M9JG9sZF9DQwotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC03LjEuOS9DVkUtMjAxNy0xNjY0Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAtNy4xLjkvQ1ZFLTIwMTctMTY2NDIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxZDJhMGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC03LjEuOS9DVkUtMjAxNy0xNjY0Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyNDEgKzAsMCBAQAotRnJvbSBmMmY5MDc2NzMxMTM1NWNhZmFiZmY2MDRhN2E4NTdjYTYwZWUzZjAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyMiBOb3YgMjAxNyAyMToxNDo1OSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXhlZCBidWcgIzc1MDU1IE91dC1PZi1Cb3VuZHMgUmVhZCBpbiB0aW1lbGliX21lcmlkaWFuKCkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy0xNjY0MgotU2lnbmVkLW9mZi1ieTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyAgICAgICAgIHwgMTU0NCArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCi0gZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUgICAgICAgIHwgICAgNCArLQotIGV4dC9kYXRlL3Rlc3RzL2J1ZzUzNDM3X3ZhcjMucGhwdCB8ICAgIDIgKy0KLSBleHQvd2RkeC90ZXN0cy9idWc3NTA1NS5waHB0ICAgICAgfCAgIDIwICsKLSBleHQvd2RkeC90ZXN0cy9idWc3NTA1NS53ZGR4ICAgICAgfCAgIDEzICsKLSA1IGZpbGVzIGNoYW5nZWQsIDkxMSBpbnNlcnRpb25zKCspLCA2NzIgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGV4dC93ZGR4L3Rlc3RzL2J1Zzc1MDU1LnBocHQKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZXh0L3dkZHgvdGVzdHMvYnVnNzUwNTUud2RkeAotCi1kaWZmIC0tZ2l0IGEvZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyBiL2V4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMKLWluZGV4IGY5Mjk2MTkuLjZiMTE0MTggMTAwNjQ0Ci0tLS0gYS9leHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jCi0rKysgYi9leHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jCi1AQCAtMSw0ICsxLDUgQEAKLS0vKiBHZW5lcmF0ZWQgYnkgcmUyYyAwLjE1LjMgb24gVHVlIEp1bCAgNCAyMToxNToxNyAyMDE3ICovCi0rLyogR2VuZXJhdGVkIGJ5IHJlMmMgMC4xNS4zIG9uIFdlZCBOb3YgMjIgMjE6MTQ6NDcgMjAxNyAqLwotKyNsaW5lIDEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIC8qCi0gICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCi0gICoKLUBAIC04MzcsOSArODM4LDExIEBAIHN0YXRpYyBpbnQgc2NhbihTY2FubmVyICpzLCB0aW1lbGliX3R6X2dldF93cmFwcGVyIHR6X2dldF93cmFwcGVyKQotIHN0ZDoKLSAJcy0+dG9rID0gY3Vyc29yOwotIAlzLT5sZW4gPSAwOwotKyNsaW5lIDk2NSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCi0gCi0gCi0rI2xpbmUgODQ2ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHsKLSAJWVlDVFlQRSB5eWNoOwotIAl1bnNpZ25lZCBpbnQgeXlhY2NlcHQgPSAwOwotQEAgLTk2MiwxOCArOTY1LDE5IEBAIHl5MjoKLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKLSAJCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNjU7Ci0tCQkJZ290byB5eTE1MjE7Ci0rCQkJZ290byB5eTE1MjM7Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnZCcpIHsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjU7Ci0gCQkJaWYgKHl5Y2ggPj0gJ2EnKSBnb3RvIHl5MTcwOwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnZScpIGdvdG8geXkxNTMwOwotKwkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MzI7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcwOwotIAkJfQotIAl9Ci0geXkzOgotKyNsaW5lIDE2NzMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQlpbnQgdHpfbm90X2ZvdW5kOwotIAkJREVCVUdfT1VUUFVUKCJ0emNvcnJlY3Rpb24gfCB0eiIpOwotQEAgLTk4Niw2ICs5OTAsNyBAQCB5eTM6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX1RJTUVaT05FOwotIAl9Ci0rI2xpbmUgOTk0ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5NDoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnRScpIHsKLUBAIC05OTUsNyArMTAwMCw3IEBAIHl5NDoKLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKLSAJCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNjU7Ci0tCQkJZ290byB5eTE1MjE7Ci0rCQkJZ290byB5eTE1MjM7Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnZCcpIHsKLUBAIC0xMDAzLDcgKzEwMDgsNyBAQCB5eTQ6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY1OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnZScpIGdvdG8geXkxNTIxOwotKwkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MjM7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY1OwotIAkJCWdvdG8geXkzOwotIAkJfQotQEAgLTEwMTcsMTIgKzEwMjIsMTIgQEAgeXk1OgotIAkJCWdvdG8geXkxNjU7Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdIJykgewotLQkJCQlpZiAoeXljaCA8PSAnRScpIGdvdG8geXkxNDkyOwotKwkJCQlpZiAoeXljaCA8PSAnRScpIGdvdG8geXkxNDk0OwotIAkJCQlnb3RvIHl5MTY1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdJJykgZ290byB5eTE0OTM7Ci0rCQkJCWlmICh5eWNoIDw9ICdJJykgZ290byB5eTE0OTU7Ci0gCQkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE2NTsKLS0JCQkJZ290byB5eTE0OTE7Ci0rCQkJCWdvdG8geXkxNDkzOwotIAkJCX0KLSAJCX0KLSAJfSBlbHNlIHsKLUBAIC0xMDMxLDE1ICsxMDM2LDE1IEBAIHl5NToKLSAJCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY1OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA9PSAnZScpIGdvdG8geXkxNTA4OwotKwkJCQlpZiAoeXljaCA9PSAnZScpIGdvdG8geXkxNTEwOwotIAkJCQlnb3RvIHl5MTcwOwotIAkJCX0KLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ24nKSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdpJykgZ290byB5eTE1MDk7Ci0rCQkJCWlmICh5eWNoIDw9ICdpJykgZ290byB5eTE1MTE7Ci0gCQkJCWdvdG8geXkxNzA7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ28nKSBnb3RvIHl5MTUwNzsKLSsJCQkJaWYgKHl5Y2ggPD0gJ28nKSBnb3RvIHl5MTUwOTsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcwOwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci1AQCAtMTA1NCwxMiArMTA1OSwxMiBAQCB5eTY6Ci0gCQkJZ290byB5eTE2NTsKLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ0gnKSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE0OTI7Ci0rCQkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE0OTQ7Ci0gCQkJCWdvdG8geXkxNjU7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ0knKSBnb3RvIHl5MTQ5MzsKLSsJCQkJaWYgKHl5Y2ggPD0gJ0knKSBnb3RvIHl5MTQ5NTsKLSAJCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTY1OwotLQkJCQlnb3RvIHl5MTQ5MTsKLSsJCQkJZ290byB5eTE0OTM7Ci0gCQkJfQotIAkJfQotIAl9IGVsc2UgewotQEAgLTEwNjgsMTUgKzEwNzMsMTUgQEAgeXk2OgotIAkJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjU7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoID09ICdlJykgZ290byB5eTE0OTI7Ci0rCQkJCWlmICh5eWNoID09ICdlJykgZ290byB5eTE0OTQ7Ci0gCQkJCWdvdG8geXkxNjU7Ci0gCQkJfQotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnbicpIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ2knKSBnb3RvIHl5MTQ5MzsKLSsJCQkJaWYgKHl5Y2ggPD0gJ2knKSBnb3RvIHl5MTQ5NTsKLSAJCQkJZ290byB5eTE2NTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxNDkxOwotKwkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxNDkzOwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjU7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLUBAIC0xMDg4LDI0ICsxMDkzLDI0IEBAIHl5NzoKLSAJCWlmICh5eWNoIDw9ICdBJykgewotIAkJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKLSAJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOwotLQkJCWdvdG8geXkxNDYxOwotKwkJCWdvdG8geXkxNDYzOwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxNDYyOwotKwkJCWlmICh5eWNoID09ICdJJykgZ290byB5eTE0NjQ7Ci0gCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTY1OwotLQkJCWdvdG8geXkxNDYzOwotKwkJCWdvdG8geXkxNDY1OwotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2gnKSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY1OwotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0tCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ3NjsKLSsJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDc4OwotIAkJCWdvdG8geXkxNzA7Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICduJykgewotLQkJCQlpZiAoeXljaCA8PSAnaScpIGdvdG8geXkxNDc3OwotKwkJCQlpZiAoeXljaCA8PSAnaScpIGdvdG8geXkxNDc5OwotIAkJCQlnb3RvIHl5MTcwOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdvJykgZ290byB5eTE0Nzg7Ci0rCQkJCWlmICh5eWNoIDw9ICdvJykgZ290byB5eTE0ODA7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MDsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotQEAgLTExMTcsMjQgKzExMjIsMjQgQEAgeXk4OgotIAkJaWYgKHl5Y2ggPD0gJ0EnKSB7Ci0gCQkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OwotIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7Ci0tCQkJZ290byB5eTE0NjE7Ci0rCQkJZ290byB5eTE0NjM7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoID09ICdJJykgZ290byB5eTE0NjI7Ci0rCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTQ2NDsKLSAJCQlpZiAoeXljaCA8PSAnTicpIGdvdG8geXkxNjU7Ci0tCQkJZ290byB5eTE0NjM7Ci0rCQkJZ290byB5eTE0NjU7Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnaCcpIHsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjU7Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLS0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDYxOwotKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTE0NjM7Ci0gCQkJZ290byB5eTE2NTsKLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ24nKSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdpJykgZ290byB5eTE0NjI7Ci0rCQkJCWlmICh5eWNoIDw9ICdpJykgZ290byB5eTE0NjQ7Ci0gCQkJCWdvdG8geXkxNjU7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ28nKSBnb3RvIHl5MTQ2MzsKLSsJCQkJaWYgKHl5Y2ggPD0gJ28nKSBnb3RvIHl5MTQ2NTsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY1OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci1AQCAtMTE0NiwxNSArMTE1MSwxNSBAQCB5eTk6Ci0gCXN3aXRjaCAoeXljaCkgewotIAljYXNlICcpJzoJZ290byB5eTE2NDsKLSAJY2FzZSAnMCc6Ci0tCWNhc2UgJzEnOglnb3RvIHl5MTM5MTsKLS0JY2FzZSAnMic6CWdvdG8geXkxMzkyOwotKwljYXNlICcxJzoJZ290byB5eTEzOTM7Ci0rCWNhc2UgJzInOglnb3RvIHl5MTM5NDsKLSAJY2FzZSAnMyc6Ci0gCWNhc2UgJzQnOgotIAljYXNlICc1JzoKLSAJY2FzZSAnNic6Ci0gCWNhc2UgJzcnOgotIAljYXNlICc4JzoKLS0JY2FzZSAnOSc6CWdvdG8geXkxMzkzOwotKwljYXNlICc5JzoJZ290byB5eTEzOTU7Ci0gCWNhc2UgJ0EnOgotIAljYXNlICdCJzoKLSAJY2FzZSAnQyc6Ci1AQCAtMTE3NiwxMSArMTE4MSwxMSBAQCB5eTk6Ci0gCWNhc2UgJ1gnOgotIAljYXNlICdZJzoKLSAJY2FzZSAnWic6CWdvdG8geXkxNjU7Ci0tCWNhc2UgJ0UnOglnb3RvIHl5MTM4NjsKLS0JY2FzZSAnSCc6CWdvdG8geXkxMzg3OwotLQljYXNlICdPJzoJZ290byB5eTEzODg7Ci0tCWNhc2UgJ1UnOglnb3RvIHl5MTM4OTsKLS0JY2FzZSAnVyc6CWdvdG8geXkxMzkwOwotKwljYXNlICdFJzoJZ290byB5eTEzODg7Ci0rCWNhc2UgJ0gnOglnb3RvIHl5MTM4OTsKLSsJY2FzZSAnTyc6CWdvdG8geXkxMzkwOwotKwljYXNlICdVJzoJZ290byB5eTEzOTE7Ci0rCWNhc2UgJ1cnOglnb3RvIHl5MTM5MjsKLSAJY2FzZSAnYSc6Ci0gCWNhc2UgJ2InOgotIAljYXNlICdjJzoKLUBAIC0xMjAyLDExICsxMjA3LDExIEBAIHl5OToKLSAJY2FzZSAneCc6Ci0gCWNhc2UgJ3knOgotIAljYXNlICd6JzoJZ290byB5eTE3MDsKLS0JY2FzZSAnZSc6CWdvdG8geXkxNDI5OwotLQljYXNlICdoJzoJZ290byB5eTE0MzA7Ci0tCWNhc2UgJ28nOglnb3RvIHl5MTQzMTsKLS0JY2FzZSAndSc6CWdvdG8geXkxNDMyOwotLQljYXNlICd3JzoJZ290byB5eTE0MzM7Ci0rCWNhc2UgJ2UnOglnb3RvIHl5MTQzMTsKLSsJY2FzZSAnaCc6CWdvdG8geXkxNDMyOwotKwljYXNlICdvJzoJZ290byB5eTE0MzM7Ci0rCWNhc2UgJ3UnOglnb3RvIHl5MTQzNDsKLSsJY2FzZSAndyc6CWdvdG8geXkxNDM1OwotIAlkZWZhdWx0Oglnb3RvIHl5MzsKLSAJfQotIHl5MTA6Ci1AQCAtMTIxNSwxNSArMTIyMCwxNSBAQCB5eTEwOgotIAlzd2l0Y2ggKHl5Y2gpIHsKLSAJY2FzZSAnKSc6CWdvdG8geXkxNjQ7Ci0gCWNhc2UgJzAnOgotLQljYXNlICcxJzoJZ290byB5eTEzOTE7Ci0tCWNhc2UgJzInOglnb3RvIHl5MTM5MjsKLSsJY2FzZSAnMSc6CWdvdG8geXkxMzkzOwotKwljYXNlICcyJzoJZ290byB5eTEzOTQ7Ci0gCWNhc2UgJzMnOgotIAljYXNlICc0JzoKLSAJY2FzZSAnNSc6Ci0gCWNhc2UgJzYnOgotIAljYXNlICc3JzoKLSAJY2FzZSAnOCc6Ci0tCWNhc2UgJzknOglnb3RvIHl5MTM5MzsKLSsJY2FzZSAnOSc6CWdvdG8geXkxMzk1OwotIAljYXNlICdBJzoKLSAJY2FzZSAnQic6Ci0gCWNhc2UgJ0MnOgotQEAgLTEyNjcsMjggKzEyNzIsMzAgQEAgeXkxMDoKLSAJY2FzZSAneSc6Ci0gCWNhc2UgJ3onOglnb3RvIHl5MTY1OwotIAljYXNlICdFJzoKLS0JY2FzZSAnZSc6CWdvdG8geXkxMzg2OwotKwljYXNlICdlJzoJZ290byB5eTEzODg7Ci0gCWNhc2UgJ0gnOgotLQljYXNlICdoJzoJZ290byB5eTEzODc7Ci0rCWNhc2UgJ2gnOglnb3RvIHl5MTM4OTsKLSAJY2FzZSAnTyc6Ci0tCWNhc2UgJ28nOglnb3RvIHl5MTM4ODsKLSsJY2FzZSAnbyc6CWdvdG8geXkxMzkwOwotIAljYXNlICdVJzoKLS0JY2FzZSAndSc6CWdvdG8geXkxMzg5OwotKwljYXNlICd1JzoJZ290byB5eTEzOTE7Ci0gCWNhc2UgJ1cnOgotLQljYXNlICd3JzoJZ290byB5eTEzOTA7Ci0rCWNhc2UgJ3cnOglnb3RvIHl5MTM5MjsKLSAJZGVmYXVsdDoJZ290byB5eTM7Ci0gCX0KLSB5eTExOgotIAl5eWFjY2VwdCA9IDE7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0tCWlmICh5eWNoID09ICctJykgZ290byB5eTEzNzQ7Ci0rCWlmICh5eWNoID09ICctJykgZ290byB5eTEzNzY7Ci0gCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTEyOwotLQlpZiAoeXljaCA8PSAnOScpIGdvdG8geXkxMzc1OwotKwlpZiAoeXljaCA8PSAnOScpIGdvdG8geXkxMzc3OwotIHl5MTI6Ci0rI2xpbmUgMTc2OCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCWFkZF9lcnJvcihzLCAiVW5leHBlY3RlZCBjaGFyYWN0ZXIiKTsKLSAJCWdvdG8gc3RkOwotIAl9Ci0rI2xpbmUgMTI5OSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTEzOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdSJykgewotQEAgLTEyOTksMTYgKzEzMDYsMTYgQEAgeXkxMzoKLSAJCQl9IGVsc2UgewotIAkJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOwotIAkJCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNjU7Ci0tCQkJCWdvdG8geXkxMzEwOwotKwkJCQlnb3RvIHl5MTMxMTsKLSAJCQl9Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdOJykgewotLQkJCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxMzExOwotKwkJCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxMzEyOwotIAkJCQlnb3RvIHl5MTY1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTEzMTI7Ci0rCQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTEzMTM7Ci0gCQkJCWlmICh5eWNoIDw9ICdRJykgZ290byB5eTE2NTsKLS0JCQkJZ290byB5eTEzMTM7Ci0rCQkJCWdvdG8geXkxMzE0OwotIAkJCX0KLSAJCX0KLSAJfSBlbHNlIHsKLUBAIC0xMzE4LDE2ICsxMzI1LDE2IEBAIHl5MTM6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzA7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTM1MTsKLSsJCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTM1MzsKLSAJCQkJaWYgKHl5Y2ggPD0gJ2gnKSBnb3RvIHl5MTcwOwotLQkJCQlnb3RvIHl5MTM1MjsKLSsJCQkJZ290byB5eTEzNTQ7Ci0gCQkJfQotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAncScpIHsKLS0JCQkJaWYgKHl5Y2ggPT0gJ28nKSBnb3RvIHl5MTM1MzsKLSsJCQkJaWYgKHl5Y2ggPT0gJ28nKSBnb3RvIHl5MTM1NTsKLSAJCQkJZ290byB5eTE3MDsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxMzU0OwotKwkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxMzU2OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzA7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLUBAIC0xMzQzLDE2ICsxMzUwLDE2IEBAIHl5MTQ6Ci0gCQkJfSBlbHNlIHsKLSAJCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKLSAJCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTY1OwotLQkJCQlnb3RvIHl5MTMxMDsKLSsJCQkJZ290byB5eTEzMTE7Ci0gCQkJfQotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnTicpIHsKLS0JCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTMxMTsKLSsJCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTMxMjsKLSAJCQkJZ290byB5eTE2NTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnTycpIGdvdG8geXkxMzEyOwotKwkJCQlpZiAoeXljaCA8PSAnTycpIGdvdG8geXkxMzEzOwotIAkJCQlpZiAoeXljaCA8PSAnUScpIGdvdG8geXkxNjU7Ci0tCQkJCWdvdG8geXkxMzEzOwotKwkJCQlnb3RvIHl5MTMxNDsKLSAJCQl9Ci0gCQl9Ci0gCX0gZWxzZSB7Ci1AQCAtMTM2MiwxNiArMTM2OSwxNiBAQCB5eTE0OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTY1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTEzMTA7Ci0rCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTEzMTE7Ci0gCQkJCWlmICh5eWNoIDw9ICdoJykgZ290byB5eTE2NTsKLS0JCQkJZ290byB5eTEzMTE7Ci0rCQkJCWdvdG8geXkxMzEyOwotIAkJCX0KLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3EnKSB7Ci0tCQkJCWlmICh5eWNoID09ICdvJykgZ290byB5eTEzMTI7Ci0rCQkJCWlmICh5eWNoID09ICdvJykgZ290byB5eTEzMTM7Ci0gCQkJCWdvdG8geXkxNjU7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTMxMzsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTMxNDsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY1OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci1AQCAtMTM4MiwxMyArMTM4OSwxMyBAQCB5eTE1OgotIAlpZiAoeXljaCA8PSAnQScpIHsKLSAJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKLSAJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7Ci0tCQlnb3RvIHl5MTI5NjsKLSsJCWdvdG8geXkxMjk3OwotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY1OwotIAkJCWdvdG8geXkzOwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMzA3OwotKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzMDg7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcwOwotIAkJCWdvdG8geXkzOwotIAkJfQotQEAgLTEzOTgsMTMgKzE0MDUsMTMgQEAgeXkxNjoKLSAJaWYgKHl5Y2ggPD0gJ0EnKSB7Ci0gCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci0gCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOwotLQkJZ290byB5eTEyOTY7Ci0rCQlnb3RvIHl5MTI5NzsKLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdgJykgewotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NTsKLSAJCQlnb3RvIHl5MzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTI5NjsKLSsJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMjk3OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NTsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLUBAIC0xNDIwLDcgKzE0MjcsNyBAQCB5eTE3OgotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NTsKLSAJCQlnb3RvIHl5MzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTI5MzsKLSsJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMjk0OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MDsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLUBAIC0yNDk1LDE4ICsyNTAyLDIyIEBAIHl5NDg6Ci0gCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTQ5OwotIAlpZiAoeXljaCA8PSAnOScpIGdvdG8geXk1NDsKLSB5eTQ5OgotKyNsaW5lIDE3NTcgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQlnb3RvIHN0ZDsKLSAJfQotKyNsaW5lIDI1MTAgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXk1MDoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlnb3RvIHl5NDk7Ci0geXk1MToKLSAJKytZWUNVUlNPUjsKLSsjbGluZSAxNzYyICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJcy0+cG9zID0gY3Vyc29yOyBzLT5saW5lKys7Ci0gCQlnb3RvIHN0ZDsKLSAJfQotKyNsaW5lIDI1MjEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXk1MzoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlnb3RvIHl5MTI7Ci1AQCAtMjY5MywyMyArMjcwNCwyMyBAQCB5eTU2OgotIAkJCQkJfQotIAkJCQl9IGVsc2UgewotIAkJCQkJaWYgKHl5YWNjZXB0ID09IDI4KSB7Ci0tCQkJCQkJZ290byB5eTEzNzc7Ci0rCQkJCQkJZ290byB5eTEzNzk7Ci0gCQkJCQl9IGVsc2UgewotLQkJCQkJCWdvdG8geXkxNDE1OwotKwkJCQkJCWdvdG8geXkxNDE3OwotIAkJCQkJfQotIAkJCQl9Ci0gCQkJfSBlbHNlIHsKLSAJCQkJaWYgKHl5YWNjZXB0IDw9IDMxKSB7Ci0gCQkJCQlpZiAoeXlhY2NlcHQgPT0gMzApIHsKLS0JCQkJCQlnb3RvIHl5MTQxODsKLSsJCQkJCQlnb3RvIHl5MTQyMDsKLSAJCQkJCX0gZWxzZSB7Ci0tCQkJCQkJZ290byB5eTE0OTg7Ci0rCQkJCQkJZ290byB5eTE1MDA7Ci0gCQkJCQl9Ci0gCQkJCX0gZWxzZSB7Ci0gCQkJCQlpZiAoeXlhY2NlcHQgPT0gMzIpIHsKLS0JCQkJCQlnb3RvIHl5MTUwNjsKLSsJCQkJCQlnb3RvIHl5MTUwODsKLSAJCQkJCX0gZWxzZSB7Ci0tCQkJCQkJZ290byB5eTE1Mjk7Ci0rCQkJCQkJZ290byB5eTE1MzE7Ci0gCQkJCQl9Ci0gCQkJCX0KLSAJCQl9Ci1AQCAtMjkyMCw2ICsyOTMxLDcgQEAgeXk3MzoKLSAJaWYgKHl5Y2ggPT0gJ1MnKSBnb3RvIHl5NzU7Ci0gCWlmICh5eWNoID09ICdzJykgZ290byB5eTc1OwotIHl5NzQ6Ci0rI2xpbmUgMTc0MSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCXRpbWVsaWJfdWxsIGk7Ci0gCQlERUJVR19PVVRQVVQoInJlbGF0aXZlIik7Ci1AQCAtMjkzNCw2ICsyOTQ2LDcgQEAgeXk3NDoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfUkVMQVRJVkU7Ci0gCX0KLSsjbGluZSAyOTUwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5NzU6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPT0gJ0QnKSBnb3RvIHl5NzY7Ci1AQCAtMzcxOSw2ICszNzMyLDcgQEAgeXkxOTA6Ci0gCQl9Ci0gCX0KLSB5eTE5MToKLSsjbGluZSAxNjA0ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJY29uc3QgdGltZWxpYl9yZWx1bml0KiByZWx1bml0OwotIAkJREVCVUdfT1VUUFVUKCJkYXl0ZXh0Iik7Ci1AQCAtMzczNSw2ICszNzQ5LDcgQEAgeXkxOTE6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX1dFRUtEQVk7Ci0gCX0KLSsjbGluZSAzNzUzICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5MTkyOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdLJykgewotQEAgLTQyMjcsNiArNDI0Miw3IEBAIHl5MjE3OgotIAkJfQotIAl9Ci0geXkyMTg6Ci0rI2xpbmUgMTY2MyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCURFQlVHX09VVFBVVCgibW9udGh0ZXh0Iik7Ci0gCQlUSU1FTElCX0lOSVQ7Ci1AQCAtNDIzNSw2ICs0MjUxLDcgQEAgeXkyMTg6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX0RBVEVfVEVYVDsKLSAJfQotKyNsaW5lIDQyNTUgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXkyMTk6Ci0gCSsrWVlDVVJTT1I7Ci0gCWlmICgoWVlMSU1JVCAtIFlZQ1VSU09SKSA8IDIzKSBZWUZJTEwoMjMpOwotQEAgLTQ0NjksNiArNDQ4Niw3IEBAIHl5MjMxOgotIAlpZiAoeXljaCA9PSAndCcpIGdvdG8geXkzMTk7Ci0gCWdvdG8geXkyMzc7Ci0geXkyMzI6Ci0rI2xpbmUgMTQwOSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCWludCBsZW5ndGggPSAwOwotIAkJREVCVUdfT1VUUFVUKCJkYXRldGV4dHVhbCB8IGRhdGVub3llYXIiKTsKLUBAIC00NDgxLDYgKzQ0OTksNyBAQCB5eTIzMjoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfREFURV9URVhUOwotIAl9Ci0rI2xpbmUgNDUwMyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTIzMzoKLSAJeXlhY2NlcHQgPSA2OwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotQEAgLTQ1OTMsNiArNDYxMiw3IEBAIHl5MjQ1OgotIAkJaWYgKHl5Y2ggPD0gJzonKSBnb3RvIHl5MjQ4OwotIAl9Ci0geXkyNDY6Ci0rI2xpbmUgMTcxMSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCWludCB0el9ub3RfZm91bmQ7Ci0gCQlERUJVR19PVVRQVVQoImRhdGVzaG9ydHdpdGh0aW1lc2hvcnQgfCBkYXRlc2hvcnR3aXRodGltZWxvbmcgfCBkYXRlc2hvcnR3aXRodGltZWxvbmd0eiIpOwotQEAgLTQ2MjEsNiArNDY0MSw3IEBAIHl5MjQ2OgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9TSE9SVERBVEVfV0lUSF9USU1FOwotIAl9Ci0rI2xpbmUgNDY0NSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTI0NzoKLSAJeXlhY2NlcHQgPSA3OwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotQEAgLTQ4OTMsNiArNDkxNCw3IEBAIHl5MjY5OgotIAl9Ci0geXkyNzA6Ci0gCSsrWVlDVVJTT1I7Ci0rI2xpbmUgMTY4NyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCURFQlVHX09VVFBVVCgiZGF0ZXNob3J0d2l0aHRpbWVzaG9ydDEyIHwgZGF0ZXNob3J0d2l0aHRpbWVsb25nMTIiKTsKLSAJCVRJTUVMSUJfSU5JVDsKLUBAIC00OTE1LDYgKzQ5MzcsNyBAQCB5eTI3MDoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfU0hPUlREQVRFX1dJVEhfVElNRTsKLSAJfQotKyNsaW5lIDQ5NDEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXkyNzI6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gMHgxRikgewotQEAgLTU0NzAsNiArNTQ5Myw3IEBAIHl5MzIwOgotIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk1NjsKLSAJaWYgKHl5Y2ggPj0gJzonKSBnb3RvIHl5NTY7Ci0gCSsrWVlDVVJTT1I7Ci0rI2xpbmUgMTM4MSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCWludCBsZW5ndGggPSAwOwotIAkJREVCVUdfT1VUUFVUKCJkYXRlbm9kYXkiKTsKLUBAIC01NDgyLDYgKzU1MDYsNyBAQCB5eTMyMDoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfREFURV9OT19EQVk7Ci0gCX0KLSsjbGluZSA1NTEwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5MzIzOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICc5JykgewotQEAgLTU3MDQsNiArNTcyOSw3IEBAIHl5MzI3OgotIAlpZiAoKHl5Y2ggPSAqWVlDVVJTT1IpIDw9ICcvJykgZ290byB5eTMzMDsKLSAJaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MzMxOwotIHl5MzMwOgotKyNsaW5lIDE1MjUgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQlpbnQgbGVuZ3RoID0gMDsKLSAJCURFQlVHX09VVFBVVCgicGd0ZXh0c2hvcnQiKTsKLUBAIC01NzE2LDYgKzU3NDIsNyBAQCB5eTMzMDoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfUEdfVEVYVDsKLSAJfQotKyNsaW5lIDU3NDYgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXkzMzE6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MzMwOwotQEAgLTYyNzAsNiArNjI5Nyw3IEBAIHl5MzU2OgotIAkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OwotIAl9Ci0geXkzNTc6Ci0rI2xpbmUgMTU4MyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCURFQlVHX09VVFBVVCgiYWdvIik7Ci0gCQlUSU1FTElCX0lOSVQ7Ci1AQCAtNjI4OSw2ICs2MzE3LDcgQEAgeXkzNTc6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX0FHTzsKLSAJfQotKyNsaW5lIDYzMjEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXkzNTg6Ci0gCXl5YWNjZXB0ID0gNTsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLUBAIC04MDA5LDYgKzgwMzgsNyBAQCB5eTQxNzoKLSB5eTQxODoKLSAJKytZWUNVUlNPUjsKLSB5eTQxOToKLSsjbGluZSAxMjg2ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJREVCVUdfT1VUUFVUKCJpc284NjAxZGF0ZTQgfCBpc284NjAxZGF0ZTIgfCBpc284NjAxZGF0ZXNsYXNoIHwgZGF0ZXNsYXNoIik7Ci0gCQlUSU1FTElCX0lOSVQ7Ci1AQCAtODAxOSw2ICs4MDQ5LDcgQEAgeXk0MTk6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX0lTT19EQVRFOwotIAl9Ci0rI2xpbmUgODA1MyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTQyMDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotQEAgLTg2NDEsNiArODY3Miw3IEBAIHl5NDM5OgotIAkJfQotIAl9Ci0geXk0NDA6Ci0rI2xpbmUgMTQyMyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCURFQlVHX09VVFBVVCgiZGF0ZW5veWVhcnJldiIpOwotIAkJVElNRUxJQl9JTklUOwotQEAgLTg2NTEsNiArODY4Myw3IEBAIHl5NDQwOgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9EQVRFX1RFWFQ7Ci0gCX0KLSsjbGluZSA4Njg3ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5NDQxOgotIAl5eWFjY2VwdCA9IDk7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci1AQCAtODc3OCw2ICs4ODExLDcgQEAgeXk0NTA6Ci0gCX0KLSB5eTQ1MjoKLSAJKytZWUNVUlNPUjsKLSsjbGluZSAxMTQxICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJREVCVUdfT1VUUFVUKCJ0aW1ldGlueTEyIHwgdGltZXNob3J0MTIgfCB0aW1lbG9uZzEyIik7Ci0gCQlUSU1FTElCX0lOSVQ7Ci1AQCAtODc5Myw2ICs4ODI3LDcgQEAgeXk0NTI6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX1RJTUUxMjsKLSAJfQotKyNsaW5lIDg4MzEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXk0NTQ6Ci0gCXl5YWNjZXB0ID0gMTA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci1AQCAtODgwMyw2ICs4ODM4LDcgQEAgeXk0NTQ6Ci0gCQlpZiAoeXljaCA8PSAnOicpIGdvdG8geXk0NTc7Ci0gCX0KLSB5eTQ1NToKLSsjbGluZSAxMTc4ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJaW50IHR6X25vdF9mb3VuZDsKLSAJCURFQlVHX09VVFBVVCgidGltZXNob3J0MjQgfCB0aW1lbG9uZzI0IHwgaXNvODYwMWxvbmciKTsKLUBAIC04ODI3LDYgKzg4NjMsNyBAQCB5eTQ1NToKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfVElNRTI0X1dJVEhfWk9ORTsKLSAJfQotKyNsaW5lIDg4NjcgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXk0NTY6Ci0gCXl5YWNjZXB0ID0gMTA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci1AQCAtOTEwMyw2ICs5MTQwLDcgQEAgeXk0ODU6Ci0gCX0KLSB5eTQ4NzoKLSAJKytZWUNVUlNPUjsKLSsjbGluZSAxMTU4ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJREVCVUdfT1VUUFVUKCJtc3NxbHRpbWUiKTsKLSAJCVRJTUVMSUJfSU5JVDsKLUBAIC05MTIxLDYgKzkxNTksNyBAQCB5eTQ4NzoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfVElNRTI0X1dJVEhfWk9ORTsKLSAJfQotKyNsaW5lIDkxNjMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXk0ODk6Ci0gCXl5YWNjZXB0ID0gMTA7Ci0gCVlZTUFSS0VSID0gKytZWUNVUlNPUjsKLUBAIC05MjE1LDYgKzkyNTQsNyBAQCB5eTQ5ODoKLSAJaWYgKCh5eWNoID0gKllZQ1VSU09SKSA8PSAnLycpIGdvdG8geXk0OTk7Ci0gCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTUwNTsKLSB5eTQ5OToKLSsjbGluZSAxMzQwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJaW50IGxlbmd0aCA9IDA7Ci0gCQlERUJVR19PVVRQVVQoImRhdGVmdWxsIik7Ci1AQCAtOTIyOCw2ICs5MjY4LDcgQEAgeXk0OTk6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX0RBVEVfRlVMTDsKLSAJfQotKyNsaW5lIDkyNzIgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXk1MDA6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPT0gJ00nKSBnb3RvIHl5NTAxOwotQEAgLTk4OTEsNiArOTkzMiw3IEBAIHl5NTY5OgotIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk1NjsKLSAJaWYgKHl5Y2ggPj0gJzonKSBnb3RvIHl5NTY7Ci0gCSsrWVlDVVJTT1I7Ci0rI2xpbmUgMTM1NSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCURFQlVHX09VVFBVVCgicG9pbnRlZCBkYXRlIFlZWVkiKTsKLSAJCVRJTUVMSUJfSU5JVDsKLUBAIC05OTAxLDYgKzk5NDMsNyBAQCB5eTU2OToKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfREFURV9GVUxMX1BPSU5URUQ7Ci0gCX0KLSsjbGluZSA5OTQ3ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5NTcyOgotIAl5eWFjY2VwdCA9IDEwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotQEAgLTk5MzEsNiArOTk3NCw3IEBAIHl5NTc1OgotIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk1NzY7Ci0gCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTU2OTsKLSB5eTU3NjoKLSsjbGluZSAxMzY3ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJaW50IGxlbmd0aCA9IDA7Ci0gCQlERUJVR19PVVRQVVQoInBvaW50ZWQgZGF0ZSBZWSIpOwotQEAgLTk5NDMsNiArOTk4Nyw3IEBAIHl5NTc2OgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9EQVRFX0ZVTExfUE9JTlRFRDsKLSAJfQotKyNsaW5lIDk5OTEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXk1Nzc6Ci0gCXl5YWNjZXB0ID0gMTA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci1AQCAtMTA1MzgsNiArMTA1ODMsNyBAQCB5eTYyMDoKLSAJCX0KLSAJfQotIHl5NjIxOgotKyNsaW5lIDEzMjYgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQlpbnQgbGVuZ3RoID0gMDsKLSAJCURFQlVHX09VVFBVVCgiZ251ZGF0ZXNob3J0Iik7Ci1AQCAtMTA1NTAsNiArMTA1OTYsNyBAQCB5eTYyMToKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfSVNPX0RBVEU7Ci0gCX0KLSsjbGluZSAxMDYwMCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTYyMjoKLSAJeXlhY2NlcHQgPSAxMjsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLUBAIC0xMDY0NSw2ICsxMDY5Miw3IEBAIHl5NjMwOgotIAkJfQotIAl9Ci0geXk2MzE6Ci0rI2xpbmUgMTI3MCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCWludCBsZW5ndGggPSAwOwotIAkJREVCVUdfT1VUUFVUKCJhbWVyaWNhbnNob3J0IHwgYW1lcmljYW4iKTsKLUBAIC0xMDY1OSw2ICsxMDcwNyw3IEBAIHl5NjMxOgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9BTUVSSUNBTjsKLSAJfQotKyNsaW5lIDEwNzExICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5NjMyOgotIAl5eWFjY2VwdCA9IDEzOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotQEAgLTEwODU3LDYgKzEwOTA2LDcgQEAgeXk2NjQ6Ci0gCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTY2NzsKLSAJaWYgKHl5Y2ggPD0gJzonKSBnb3RvIHl5NjY4OwotIHl5NjY1OgotKyNsaW5lIDE1NTMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQlpbnQgdHpfbm90X2ZvdW5kOwotIAkJREVCVUdfT1VUUFVUKCJjbGYiKTsKLUBAIC0xMDg3Niw2ICsxMDkyNiw3IEBAIHl5NjY1OgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9DTEY7Ci0gCX0KLSsjbGluZSAxMDkzMCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTY2NjoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnNScpIHsKLUBAIC0xMTM2Miw2ICsxMTQxMyw3IEBAIHl5NzI3OgotIAkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5NjI3OwotIAl9Ci0geXk3Mjg6Ci0rI2xpbmUgMTI5OCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCWludCBsZW5ndGggPSAwOwotIAkJREVCVUdfT1VUUFVUKCJpc284NjAxZGF0ZTIiKTsKLUBAIC0xMTM3NCw2ICsxMTQyNiw3IEBAIHl5NzI4OgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9JU09fREFURTsKLSAJfQotKyNsaW5lIDExNDMwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5NzI5OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoID09ICdDJykgZ290byB5eTczMDsKLUBAIC0xMTQwNCw2ICsxMTQ1Nyw3IEBAIHl5NzM0OgotIAlpZiAoeXljaCA+PSAnMicpIGdvdG8geXk1NjsKLSB5eTczNToKLSAJKytZWUNVUlNPUjsKLSsjbGluZSAxNTM5ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJaW50IGxlbmd0aCA9IDA7Ci0gCQlERUJVR19PVVRQVVQoInBndGV4dHJldmVyc2UiKTsKLUBAIC0xMTQxNiw2ICsxMTQ3MCw3IEBAIHl5NzM1OgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9QR19URVhUOwotIAl9Ci0rI2xpbmUgMTE0NzQgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXk3Mzc6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPT0gJ1YnKSBnb3RvIHl5NzMwOwotQEAgLTExNTY4LDYgKzExNjIzLDcgQEAgeXk3NDc6Ci0gCQl9Ci0gCX0KLSB5eTc0ODoKLSsjbGluZSAxNTc0ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJREVCVUdfT1VUUFVUKCJ5ZWFyNCIpOwotIAkJVElNRUxJQl9JTklUOwotQEAgLTExNTc1LDYgKzExNjMxLDcgQEAgeXk3NDg6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX0NMRjsKLSAJfQotKyNsaW5lIDExNjM1ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5NzQ5OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCXN3aXRjaCAoeXljaCkgewotQEAgLTExNzY5LDYgKzExODI2LDcgQEAgeXk3NTc6Ci0gCQlpZiAoeXljaCA8PSAnWCcpIGdvdG8geXk4NDg7Ci0gCX0KLSB5eTc1ODoKLSsjbGluZSAxMzk1ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJaW50IGxlbmd0aCA9IDA7Ci0gCQlERUJVR19PVVRQVVQoImRhdGVub2RheXJldiIpOwotQEAgLTExNzgxLDYgKzExODM5LDcgQEAgeXk3NTg6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX0RBVEVfTk9fREFZOwotIAl9Ci0rI2xpbmUgMTE4NDMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXk3NTk6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5ODkyOwotQEAgLTExOTgwLDYgKzEyMDM5LDcgQEAgeXk3Nzg6Ci0gCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTc3OTsKLSAJaWYgKHl5Y2ggPD0gJzcnKSBnb3RvIHl5NzgxOwotIHl5Nzc5OgotKyNsaW5lIDE1MDYgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQl0aW1lbGliX3NsbCB3LCBkOwotIAkJREVCVUdfT1VUUFVUKCJpc293ZWVrIik7Ci1AQCAtMTE5OTcsMTIgKzEyMDU3LDE0IEBAIHl5Nzc5OgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9JU09fV0VFSzsKLSAJfQotKyNsaW5lIDEyMDYxICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5NzgwOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTU2OwotIAlpZiAoeXljaCA+PSAnOCcpIGdvdG8geXk1NjsKLSB5eTc4MToKLSAJKytZWUNVUlNPUjsKLSsjbGluZSAxNDg3ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJdGltZWxpYl9zbGwgdywgZDsKLSAJCURFQlVHX09VVFBVVCgiaXNvd2Vla2RheSIpOwotQEAgLTEyMDIwLDYgKzEyMDgyLDcgQEAgeXk3ODE6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX0lTT19XRUVLOwotIAl9Ci0rI2xpbmUgMTIwODYgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXk3ODM6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5NjA7Ci1AQCAtMTIwODUsNiArMTIxNDgsNyBAQCB5eTc4NToKLSAJCX0KLSAJfQotIHl5Nzg2OgotKyNsaW5lIDE0NzMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQlpbnQgbGVuZ3RoID0gMDsKLSAJCURFQlVHX09VVFBVVCgicGd5ZG90ZCIpOwotQEAgLTEyMDk3LDYgKzEyMTYxLDcgQEAgeXk3ODY6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX1BHX1lFQVJEQVk7Ci0gCX0KLSsjbGluZSAxMjE2NSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTc4NzoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk2MDsKLUBAIC0xMjE3OCw2ICsxMjI0Myw3IEBAIHl5ODA1OgotIHl5ODA2OgotIAkrK1lZQ1VSU09SOwotIHl5ODA3OgotKyNsaW5lIDE0NDcgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQlpbnQgdHpfbm90X2ZvdW5kOwotIAkJREVCVUdfT1VUUFVUKCJ4bWxycGMgfCB4bWxycGNub2NvbG9uIHwgc29hcCB8IHdkZHggfCBleGlmIik7Ci1AQCAtMTIyMDIsNiArMTIyNjgsNyBAQCB5eTgwNzoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfWE1MUlBDX1NPQVA7Ci0gCX0KLSsjbGluZSAxMjI3MiAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTgwODoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnMicpIHsKLUBAIC0xMjQ5MCw2ICsxMjU1Nyw3IEBAIHl5ODEyOgotIAkJfQotIAl9Ci0geXk4MTM6Ci0rI2xpbmUgMTQzNSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCURFQlVHX09VVFBVVCgiZGF0ZW5vY29sb24iKTsKLSAJCVRJTUVMSUJfSU5JVDsKLUBAIC0xMjUwMCw2ICsxMjU2OCw3IEBAIHl5ODEzOgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9EQVRFX05PQ09MT047Ci0gCX0KLSsjbGluZSAxMjU3MiAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTgxNDoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnSCcpIHsKLUBAIC0xMzI5Myw2ICsxMzM2Miw3IEBAIHl5OTM3OgotIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk5Mzg7Ci0gCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTk2MDsKLSB5eTkzODoKLSsjbGluZSAxMzEyICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJaW50IGxlbmd0aCA9IDA7Ci0gCQlERUJVR19PVVRQVVQoImdudWRhdGVzaG9ydGVyIik7Ci1AQCAtMTMzMDUsNiArMTMzNzUsNyBAQCB5eTkzODoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfSVNPX0RBVEU7Ci0gCX0KLSsjbGluZSAxMzM3OSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTkzOToKLSAJeXlhY2NlcHQgPSAyMTsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLUBAIC0xNDMwMyw2ICsxNDM3NCw3IEBAIHl5MTAzMDoKLSAJCX0KLSAJfQotIHl5MTAzMjoKLSsjbGluZSAxMjA0ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJREVCVUdfT1VUUFVUKCJnbnVub2NvbG9uIik7Ci0gCQlUSU1FTElCX0lOSVQ7Ci1AQCAtMTQzMjQsNiArMTQzOTYsNyBAQCB5eTEwMzI6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX0dOVV9OT0NPTE9OOwotIAl9Ci0rI2xpbmUgMTQ0MDAgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0geXkxMDMzOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTYwOwotQEAgLTE0NDEzLDYgKzE0NDg2LDcgQEAgeXkxMDM5OgotIAkJfQotIAl9Ci0geXkxMDQwOgotKyNsaW5lIDEyNTAgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQlpbnQgdHpfbm90X2ZvdW5kOwotIAkJREVCVUdfT1VUUFVUKCJpc284NjAxbm9jb2xvbiIpOwotQEAgLTE0NDMxLDYgKzE0NTA1LDcgQEAgeXkxMDQwOgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9JU09fTk9DT0xPTjsKLSAJfQotKyNsaW5lIDE0NTA5ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5MTA0MToKLSAJeXlhY2NlcHQgPSAyNDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLUBAIC0xNTM2Miw2ICsxNTQzNyw3IEBAIHl5MTA4MzoKLSAJCX0KLSAJfQotIHl5MTA4NDoKLSsjbGluZSAxNjQ2ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJdGltZWxpYl9zbGwgaTsKLSAJCWludCAgICAgICAgIGJlaGF2aW9yID0gMDsKLUBAIC0xNTM3Nyw2ICsxNTQ1Myw3IEBAIHl5MTA4NDoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfUkVMQVRJVkU7Ci0gCX0KLSsjbGluZSAxNTQ1NyAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTEwODU6Ci0gCSsrWVlDVVJTT1I7Ci0gCWlmICgoWVlMSU1JVCAtIFlZQ1VSU09SKSA8IDIpIFlZRklMTCgyKTsKLUBAIC0xNTQxOCw2ICsxNTQ5NSw3IEBAIHl5MTA5MToKLSAJaWYgKHl5Y2ggIT0gJ2YnKSBnb3RvIHl5NTY7Ci0geXkxMDkyOgotIAkrK1lZQ1VSU09SOwotKyNsaW5lIDExMTkgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQl0aW1lbGliX3NsbCBpOwotIAkJaW50ICAgICAgICAgYmVoYXZpb3IgPSAwOwotQEAgLTE1NDM4LDYgKzE1NTE2LDcgQEAgeXkxMDkyOgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9XRUVLX0RBWV9PRl9NT05USDsKLSAJfQotKyNsaW5lIDE1NTIwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5MTA5NDoKLSAJeXlhY2NlcHQgPSAyNTsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLUBAIC0xNTUzMCw2ICsxNTYwOSw3IEBAIHl5MTEwNzoKLSAJCX0KLSAJfQotIHl5MTEwODoKLSsjbGluZSAxNjIyICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJdGltZWxpYl9zbGwgaTsKLSAJCWludCAgICAgICAgIGJlaGF2aW9yID0gMDsKLUBAIC0xNTU1Miw2ICsxNTYzMiw3IEBAIHl5MTEwODoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfUkVMQVRJVkU7Ci0gCX0KLSsjbGluZSAxNTYzNiAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUuYyIKLSB5eTExMDk6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJZ290byB5eTEwODQ7Ci1AQCAtMTgyMDYsMTAgKzE4Mjg3LDI1IEBAIHl5MTI4MToKLSB5eTEyODM6Ci0gCXl5YWNjZXB0ID0gMjc7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0tCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTEyODc7Ci0tCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTEyODY7Ci0tCWdvdG8geXkxMjg3OwotKwlpZiAoeXljaCA8PSAnQCcpIHsKLSsJCWlmICh5eWNoIDw9IDB4MUYpIHsKLSsJCQlpZiAoeXljaCA9PSAnXHQnKSBnb3RvIHl5MTI4NzsKLSsJCX0gZWxzZSB7Ci0rCQkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTI4NzsKLSsJCQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxMjg0OwotKwkJCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTEyODY7Ci0rCQl9Ci0rCX0gZWxzZSB7Ci0rCQlpZiAoeXljaCA8PSAnYCcpIHsKLSsJCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxMjg5OwotKwkJCWlmICh5eWNoID09ICdQJykgZ290byB5eTEyODk7Ci0rCQl9IGVsc2UgewotKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEyODk7Ci0rCQkJaWYgKHl5Y2ggPT0gJ3AnKSBnb3RvIHl5MTI4OTsKLSsJCX0KLSsJfQotIHl5MTI4NDoKLSsjbGluZSAxMDk2ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJREVCVUdfT1VUUFVUKCJiYWNrb2YgfCBmcm9udG9mIik7Ci0gCQlUSU1FTElCX0lOSVQ7Ci1AQCAtMTgyMzEsNjYgKzE4MzI3LDEwNCBAQCB5eTEyODQ6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX0xGX0RBWV9PRl9NT05USDsKLSAJfQotKyNsaW5lIDE4MzMxICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotIHl5MTI4NToKLSAJeXlhY2NlcHQgPSAyNzsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLS0JaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTI4NzsKLS0JaWYgKHl5Y2ggPj0gJzUnKSBnb3RvIHl5MTI4NzsKLSsJaWYgKHl5Y2ggPD0gJ0AnKSB7Ci0rCQlpZiAoeXljaCA8PSAweDFGKSB7Ci0rCQkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEyODc7Ci0rCQkJZ290byB5eTEyODQ7Ci0rCQl9IGVsc2UgewotKwkJCWlmICh5eWNoIDw9ICcgJykgZ290byB5eTEyODc7Ci0rCQkJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTI4NDsKLSsJCQlpZiAoeXljaCA+PSAnNScpIGdvdG8geXkxMjg0OwotKwkJfQotKwl9IGVsc2UgewotKwkJaWYgKHl5Y2ggPD0gJ2AnKSB7Ci0rCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTI4OTsKLSsJCQlpZiAoeXljaCA9PSAnUCcpIGdvdG8geXkxMjg5OwotKwkJCWdvdG8geXkxMjg0OwotKwkJfSBlbHNlIHsKLSsJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMjg5OwotKwkJCWlmICh5eWNoID09ICdwJykgZ290byB5eTEyODk7Ci0rCQkJZ290byB5eTEyODQ7Ci0rCQl9Ci0rCX0KLSB5eTEyODY6Ci0gCXl5YWNjZXB0ID0gMjc7Ci0tCVlZTUFSS0VSID0gKytZWUNVUlNPUjsKLSsJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSsJaWYgKHl5Y2ggPD0gJ0EnKSB7Ci0rCQlpZiAoeXljaCA8PSAweDFGKSB7Ci0rCQkJaWYgKHl5Y2ggIT0gJ1x0JykgZ290byB5eTEyODQ7Ci0rCQl9IGVsc2UgewotKwkJCWlmICh5eWNoIDw9ICcgJykgZ290byB5eTEyODc7Ci0rCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MTI4NDsKLSsJCQlnb3RvIHl5MTI4OTsKLSsJCX0KLSsJfSBlbHNlIHsKLSsJCWlmICh5eWNoIDw9ICdgJykgewotKwkJCWlmICh5eWNoID09ICdQJykgZ290byB5eTEyODk7Ci0rCQkJZ290byB5eTEyODQ7Ci0rCQl9IGVsc2UgewotKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEyODk7Ci0rCQkJaWYgKHl5Y2ggPT0gJ3AnKSBnb3RvIHl5MTI4OTsKLSsJCQlnb3RvIHl5MTI4NDsKLSsJCX0KLSsJfQotK3l5MTI4NzoKLSsJKytZWUNVUlNPUjsKLSAJaWYgKChZWUxJTUlUIC0gWVlDVVJTT1IpIDwgNSkgWVlGSUxMKDUpOwotIAl5eWNoID0gKllZQ1VSU09SOwotLXl5MTI4NzoKLSAJaWYgKHl5Y2ggPD0gJ0EnKSB7Ci0gCQlpZiAoeXljaCA8PSAweDFGKSB7Ci0tCQkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEyODY7Ci0tCQkJZ290byB5eTEyODQ7Ci0rCQkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEyODc7Ci0rCQkJZ290byB5eTU2OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMjg2OwotLQkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTEyODQ7Ci0rCQkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTI4NzsKLSsJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXk1NjsKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdgJykgewotLQkJCWlmICh5eWNoICE9ICdQJykgZ290byB5eTEyODQ7Ci0rCQkJaWYgKHl5Y2ggIT0gJ1AnKSBnb3RvIHl5NTY7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEyODg7Ci0tCQkJaWYgKHl5Y2ggIT0gJ3AnKSBnb3RvIHl5MTI4NDsKLSsJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMjg5OwotKwkJCWlmICh5eWNoICE9ICdwJykgZ290byB5eTU2OwotIAkJfQotIAl9Ci0teXkxMjg4OgotK3l5MTI4OToKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnTCcpIHsKLSAJCWlmICh5eWNoICE9ICcuJykgZ290byB5eTU2OwotIAl9IGVsc2UgewotLQkJaWYgKHl5Y2ggPD0gJ00nKSBnb3RvIHl5MTI5MDsKLS0JCWlmICh5eWNoID09ICdtJykgZ290byB5eTEyOTA7Ci0rCQlpZiAoeXljaCA8PSAnTScpIGdvdG8geXkxMjkxOwotKwkJaWYgKHl5Y2ggPT0gJ20nKSBnb3RvIHl5MTI5MTsKLSAJCWdvdG8geXk1NjsKLSAJfQotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0tCWlmICh5eWNoID09ICdNJykgZ290byB5eTEyOTA7Ci0rCWlmICh5eWNoID09ICdNJykgZ290byB5eTEyOTE7Ci0gCWlmICh5eWNoICE9ICdtJykgZ290byB5eTU2OwotLXl5MTI5MDoKLSt5eTEyOTE6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gMHgxRikgewotLQkJaWYgKHl5Y2ggPD0gMHgwMCkgZ290byB5eTEyOTI7Ci0tCQlpZiAoeXljaCA9PSAnXHQnKSBnb3RvIHl5MTI5MjsKLSsJCWlmICh5eWNoIDw9IDB4MDApIGdvdG8geXkxMjkzOwotKwkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEyOTM7Ci0gCQlnb3RvIHl5NTY7Ci0gCX0gZWxzZSB7Ci0tCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMjkyOwotKwkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTI5MzsKLSAJCWlmICh5eWNoICE9ICcuJykgZ290byB5eTU2OwotIAl9Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ1x0JykgewotLQkJaWYgKHl5Y2ggPD0gMHgwMCkgZ290byB5eTEyOTI7Ci0rCQlpZiAoeXljaCA8PSAweDAwKSBnb3RvIHl5MTI5MzsKLSAJCWlmICh5eWNoIDw9IDB4MDgpIGdvdG8geXk1NjsKLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoICE9ICcgJykgZ290byB5eTU2OwotIAl9Ci0teXkxMjkyOgotK3l5MTI5MzoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlnb3RvIHl5MTI4NDsKLS15eTEyOTM6Ci0reXkxMjk0OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdCJykgewotQEAgLTE4MzE0LDEzICsxODQ0OCwxMyBAQCB5eTEyOTM6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzE7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ2MnKSBnb3RvIHl5MTI5NDsKLSsJCQkJaWYgKHl5Y2ggPD0gJ2MnKSBnb3RvIHl5MTI5NTsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTEyOTQ6Ci0reXkxMjk1OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdKJykgewotQEAgLTE4MzQ0LDEzICsxODQ3OCwxMyBAQCB5eTEyOTQ6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzU7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ2snKSBnb3RvIHl5MTI5NTsKLSsJCQkJaWYgKHl5Y2ggPD0gJ2snKSBnb3RvIHl5MTI5NjsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTEyOTU6Ci0reXkxMjk2OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICcuJykgewotQEAgLTE4Mzc1LDcgKzE4NTA5LDcgQEAgeXkxMjk1OgotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMjk2OgotK3l5MTI5NzoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnUycpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTE4MzkxLDEyICsxODUyNSwxMiBAQCB5eTEyOTY6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY2OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxMjk3OwotKwkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTEyOTg7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMjk3OgotK3l5MTI5ODoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnVCcpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTE4NDEyLDEyICsxODU0NiwxMiBAQCB5eTEyOTc6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY3OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxMjk4OwotKwkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEyOTk7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMjk4OgotK3l5MTI5OToKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnKCcpIHsKLUBAIC0xODQzOCwxOSArMTg1NzIsMTkgQEAgeXkxMjk4OgotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMjk5OgotK3l5MTMwMDoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotLQlpZiAoeXljaCA9PSAnRCcpIGdvdG8geXkxMzAwOwotKwlpZiAoeXljaCA9PSAnRCcpIGdvdG8geXkxMzAxOwotIAlpZiAoeXljaCAhPSAnZCcpIGdvdG8geXkxMDcwOwotLXl5MTMwMDoKLSt5eTEzMDE6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLS0JaWYgKHl5Y2ggPT0gJ0EnKSBnb3RvIHl5MTMwMTsKLSsJaWYgKHl5Y2ggPT0gJ0EnKSBnb3RvIHl5MTMwMjsKLSAJaWYgKHl5Y2ggIT0gJ2EnKSBnb3RvIHl5NTY7Ci0teXkxMzAxOgotK3l5MTMwMjoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotLQlpZiAoeXljaCA9PSAnWScpIGdvdG8geXkxMzAyOwotKwlpZiAoeXljaCA9PSAnWScpIGdvdG8geXkxMzAzOwotIAlpZiAoeXljaCAhPSAneScpIGdvdG8geXk1NjsKLS15eTEzMDI6Ci0reXkxMzAzOgotIAl5eWFjY2VwdCA9IDI1OwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUicpIHsKLUBAIC0xODQ2MSwxNCArMTg1OTUsMTUgQEAgeXkxMzAyOgotIAkJZ290byB5eTEwODQ7Ci0gCX0KLSAJeXljaCA9ICorK1lZQ1VSU09SOwotLQlpZiAoeXljaCA9PSAnTycpIGdvdG8geXkxMzA0OwotKwlpZiAoeXljaCA9PSAnTycpIGdvdG8geXkxMzA1OwotIAlpZiAoeXljaCAhPSAnbycpIGdvdG8geXk1NjsKLS15eTEzMDQ6Ci0reXkxMzA1OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0tCWlmICh5eWNoID09ICdGJykgZ290byB5eTEzMDU7Ci0rCWlmICh5eWNoID09ICdGJykgZ290byB5eTEzMDY7Ci0gCWlmICh5eWNoICE9ICdmJykgZ290byB5eTU2OwotLXl5MTMwNToKLSt5eTEzMDY6Ci0gCSsrWVlDVVJTT1I7Ci0rI2xpbmUgMTA3OSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCURFQlVHX09VVFBVVCgiZmlyc3RkYXlvZiB8IGxhc3RkYXlvZiIpOwotIAkJVElNRUxJQl9JTklUOwotQEAgLTE4NDg0LDcgKzE4NjE5LDggQEAgeXkxMzA1OgotIAkJVElNRUxJQl9ERUlOSVQ7Ci0gCQlyZXR1cm4gVElNRUxJQl9MRl9EQVlfT0ZfTU9OVEg7Ci0gCX0KLS15eTEzMDc6Ci0rI2xpbmUgMTg2MjMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0reXkxMzA4OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdSJykgewotQEAgLTE4NDk5LDcgKzE4NjM1LDcgQEAgeXkxMzA3OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ1MnKSBnb3RvIHl5MTI5NzsKLSsJCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxMjk4OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NjsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMTg1MDgsMTMgKzE4NjQ0LDEzIEBAIHl5MTMwNzoKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3MTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxMzA4OwotKwkJCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxMzA5OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTMwODoKLSt5eTEzMDk6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ1MnKSB7Ci1AQCAtMTg1MjksNyArMTg2NjUsNyBAQCB5eTEzMDg6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxMjk4OwotKwkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTEyOTk7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0xODUzOCwyMCArMTg2NzQsMjAgQEAgeXkxMzA4OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzMDk7Ci0rCQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzMTA7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxMzA5OgotK3l5MTMxMDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnLScpIHsKLSAJCWlmICh5eWNoIDw9ICcgJykgewotIAkJCWlmICh5eWNoID09ICdcdCcpIGdvdG8geXkxMDY5OwotIAkJCWlmICh5eWNoIDw9IDB4MUYpIGdvdG8geXkzOwotLQkJCWdvdG8geXkxMjk5OwotKwkJCWdvdG8geXkxMzAwOwotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci0gCQkJaWYgKHl5Y2ggPD0gJywnKSBnb3RvIHl5MzsKLUBAIC0xODU3Myw3ICsxODcwOSw3IEBAIHl5MTMwOToKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTEzMTA6Ci0reXkxMzExOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdCJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMTg1ODIsNyArMTg3MTgsNyBAQCB5eTEzMTA6Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7Ci0gCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTY2OwotLQkJCWdvdG8geXkxMzQ2OwotKwkJCWdvdG8geXkxMzQ4OwotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2EnKSB7Ci1AQCAtMTg1OTAsMzUgKzE4NzI2LDM1IEBAIHl5MTMxMDoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjY7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdiJykgZ290byB5eTEzNDY7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2InKSBnb3RvIHl5MTM0ODsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzMTE6Ci0reXkxMzEyOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdSJykgewotIAkJaWYgKHl5Y2ggPD0gJ0AnKSB7Ci0gCQkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OwotIAkJCWdvdG8geXkzOwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA9PSAnRicpIGdvdG8geXkxMzM2OwotKwkJCWlmICh5eWNoID09ICdGJykgZ290byB5eTEzMzg7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1EnKSBnb3RvIHl5MTY2OwotLQkJCWdvdG8geXkxMzM1OwotKwkJCWdvdG8geXkxMzM3OwotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2YnKSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OwotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTY2OwotLQkJCWdvdG8geXkxMzM2OwotKwkJCWdvdG8geXkxMzM4OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA9PSAncicpIGdvdG8geXkxMzM1OwotKwkJCWlmICh5eWNoID09ICdyJykgZ290byB5eTEzMzc7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMzEyOgotK3l5MTMxMzoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnVScpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTE4NjI3LDcgKzE4NzYzLDcgQEAgeXkxMzEyOgotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOwotIAkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTE2NjsKLS0JCQlnb3RvIHl5MTMzMjsKLSsJCQlnb3RvIHl5MTMzNDsKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICd0JykgewotQEAgLTE4NjM1LDE5ICsxODc3MSwxOSBAQCB5eTEzMTI6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY2OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAndScpIGdvdG8geXkxMzMyOwotKwkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTEzMzQ7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMzEzOgotK3l5MTMxNDoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnTycpIHsKLSAJCWlmICh5eWNoIDw9ICdAJykgewotIAkJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKLSAJCQlnb3RvIHl5MzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTMxNTsKLSsJCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxMzE2OwotIAkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE2NjsKLSAJCX0KLSAJfSBlbHNlIHsKLUBAIC0xODY1NSwxNCArMTg3OTEsMTQgQEAgeXkxMzEzOgotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NjsKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWlmICh5eWNoIDw9ICdoJykgZ290byB5eTE2NjsKLS0JCQlnb3RvIHl5MTMxNTsKLSsJCQlnb3RvIHl5MTMxNjsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPT0gJ28nKSBnb3RvIHl5MTMxNDsKLSsJCQlpZiAoeXljaCA9PSAnbycpIGdvdG8geXkxMzE1OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NjsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTMxNDoKLSt5eTEzMTU6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ04nKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0xODY3MSw3ICsxODgwNyw3IEBAIHl5MTMxNDoKLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKLSAJCQlpZiAoeXljaCA8PSAnTScpIGdvdG8geXkxNjc7Ci0tCQkJZ290byB5eTEzMTg7Ci0rCQkJZ290byB5eTEzMTk7Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnbScpIHsKLUBAIC0xODY3OSwxMiArMTg4MTUsMTIgQEAgeXkxMzE0OgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2NzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTMxODsKLSsJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxMzE5OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTMxNToKLSt5eTEzMTY6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ0QnKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0xODcwMCwxMiArMTg4MzYsMTIgQEAgeXkxMzE1OgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE5MTsKLSAJCQlnb3RvIHl5MTY3OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxMzE2OwotKwkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTEzMTc7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OwotIAkJCWdvdG8geXkxOTE7Ci0gCQl9Ci0gCX0KLS15eTEzMTY6Ci0reXkxMzE3OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdBJykgewotIAkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OwotQEAgLTE4NzE1LDEyICsxODg1MSwxMiBAQCB5eTEzMTY6Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OwotIAkJCWdvdG8geXkzOwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMzE3OwotKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzMTg7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY4OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMzE3OgotK3l5MTMxODoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnWScpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTE4NzQyLDcgKzE4ODc4LDcgQEAgeXkxMzE3OgotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMzE4OgotK3l5MTMxOToKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnVCcpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTE4NzU4LDE2ICsxODg5NCwxNiBAQCB5eTEzMTg6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY4OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxMzE5OwotKwkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzMjA7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY4OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMzE5OgotK3l5MTMyMDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnKScpIHsKLS0JCWlmICh5eWNoID09ICcgJykgZ290byB5eTEzMjA7Ci0rCQlpZiAoeXljaCA9PSAnICcpIGdvdG8geXkxMzIxOwotIAkJaWYgKHl5Y2ggPD0gJygnKSBnb3RvIHl5MzsKLSAJCWdvdG8geXkxNjQ7Ci0gCX0gZWxzZSB7Ci1AQCAtMTg3ODAsODggKzE4OTE2LDE0MyBAQCB5eTEzMTk6Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzMjA6Ci0reXkxMzIxOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0tCWlmICh5eWNoID09ICdPJykgZ290byB5eTEzMjE7Ci0rCWlmICh5eWNoID09ICdPJykgZ290byB5eTEzMjI7Ci0gCWlmICh5eWNoICE9ICdvJykgZ290byB5eTU2OwotLXl5MTMyMToKLSt5eTEzMjI6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLS0JaWYgKHl5Y2ggPT0gJ0YnKSBnb3RvIHl5MTMyMjsKLSsJaWYgKHl5Y2ggPT0gJ0YnKSBnb3RvIHl5MTMyMzsKLSAJaWYgKHl5Y2ggIT0gJ2YnKSBnb3RvIHl5NTY7Ci0teXkxMzIyOgotK3l5MTMyMzoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCAhPSAnICcpIGdvdG8geXk1NjsKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk1NjsKLS0JaWYgKHl5Y2ggPD0gJzEnKSBnb3RvIHl5MTMyNDsKLS0JaWYgKHl5Y2ggPD0gJzInKSBnb3RvIHl5MTMyNTsKLS0JaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTMyNjsKLSsJaWYgKHl5Y2ggPD0gJzEnKSBnb3RvIHl5MTMyNTsKLSsJaWYgKHl5Y2ggPD0gJzInKSBnb3RvIHl5MTMyNjsKLSsJaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTMyNzsKLSAJZ290byB5eTU2OwotLXl5MTMyNDoKLS0JeXlhY2NlcHQgPSAyNzsKLS0JeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLS0JaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTMyNzsKLS0JaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTMyNjsKLS0JZ290byB5eTEzMjc7Ci0geXkxMzI1OgotIAl5eWFjY2VwdCA9IDI3OwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotLQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxMzI3OwotLQlpZiAoeXljaCA+PSAnNScpIGdvdG8geXkxMzI3OwotKwlpZiAoeXljaCA8PSAnQCcpIHsKLSsJCWlmICh5eWNoIDw9IDB4MUYpIHsKLSsJCQlpZiAoeXljaCA9PSAnXHQnKSBnb3RvIHl5MTMyODsKLSsJCQlnb3RvIHl5MTI4NDsKLSsJCX0gZWxzZSB7Ci0rCQkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTMyODsKLSsJCQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxMjg0OwotKwkJCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTEzMjc7Ci0rCQkJZ290byB5eTEyODQ7Ci0rCQl9Ci0rCX0gZWxzZSB7Ci0rCQlpZiAoeXljaCA8PSAnYCcpIHsKLSsJCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxMzMwOwotKwkJCWlmICh5eWNoID09ICdQJykgZ290byB5eTEzMzA7Ci0rCQkJZ290byB5eTEyODQ7Ci0rCQl9IGVsc2UgewotKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzMzA7Ci0rCQkJaWYgKHl5Y2ggPT0gJ3AnKSBnb3RvIHl5MTMzMDsKLSsJCQlnb3RvIHl5MTI4NDsKLSsJCX0KLSsJfQotIHl5MTMyNjoKLSAJeXlhY2NlcHQgPSAyNzsKLS0JWVlNQVJLRVIgPSArK1lZQ1VSU09SOwotLQlpZiAoKFlZTElNSVQgLSBZWUNVUlNPUikgPCA1KSBZWUZJTEwoNSk7Ci0tCXl5Y2ggPSAqWVlDVVJTT1I7Ci0rCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0rCWlmICh5eWNoIDw9ICdAJykgewotKwkJaWYgKHl5Y2ggPD0gMHgxRikgewotKwkJCWlmICh5eWNoID09ICdcdCcpIGdvdG8geXkxMzI4OwotKwkJCWdvdG8geXkxMjg0OwotKwkJfSBlbHNlIHsKLSsJCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMzI4OwotKwkJCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTEyODQ7Ci0rCQkJaWYgKHl5Y2ggPj0gJzUnKSBnb3RvIHl5MTI4NDsKLSsJCX0KLSsJfSBlbHNlIHsKLSsJCWlmICh5eWNoIDw9ICdgJykgewotKwkJCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTEzMzA7Ci0rCQkJaWYgKHl5Y2ggPT0gJ1AnKSBnb3RvIHl5MTMzMDsKLSsJCQlnb3RvIHl5MTI4NDsKLSsJCX0gZWxzZSB7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTMzMDsKLSsJCQlpZiAoeXljaCA9PSAncCcpIGdvdG8geXkxMzMwOwotKwkJCWdvdG8geXkxMjg0OwotKwkJfQotKwl9Ci0geXkxMzI3OgotKwl5eWFjY2VwdCA9IDI3OwotKwl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnQScpIHsKLSAJCWlmICh5eWNoIDw9IDB4MUYpIHsKLS0JCQlpZiAoeXljaCA9PSAnXHQnKSBnb3RvIHl5MTMyNjsKLS0JCQlnb3RvIHl5MTI4NDsKLSsJCQlpZiAoeXljaCAhPSAnXHQnKSBnb3RvIHl5MTI4NDsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTMyNjsKLSsJCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMzI4OwotIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTEyODQ7Ci0rCQkJZ290byB5eTEzMzA7Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnYCcpIHsKLS0JCQlpZiAoeXljaCAhPSAnUCcpIGdvdG8geXkxMjg0OwotKwkJCWlmICh5eWNoID09ICdQJykgZ290byB5eTEzMzA7Ci0rCQkJZ290byB5eTEyODQ7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzMjg7Ci0tCQkJaWYgKHl5Y2ggIT0gJ3AnKSBnb3RvIHl5MTI4NDsKLSsJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMzMwOwotKwkJCWlmICh5eWNoID09ICdwJykgZ290byB5eTEzMzA7Ci0rCQkJZ290byB5eTEyODQ7Ci0gCQl9Ci0gCX0KLSB5eTEzMjg6Ci0rCSsrWVlDVVJTT1I7Ci0rCWlmICgoWVlMSU1JVCAtIFlZQ1VSU09SKSA8IDUpIFlZRklMTCg1KTsKLSsJeXljaCA9ICpZWUNVUlNPUjsKLSsJaWYgKHl5Y2ggPD0gJ0EnKSB7Ci0rCQlpZiAoeXljaCA8PSAweDFGKSB7Ci0rCQkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEzMjg7Ci0rCQkJZ290byB5eTU2OwotKwkJfSBlbHNlIHsKLSsJCQlpZiAoeXljaCA8PSAnICcpIGdvdG8geXkxMzI4OwotKwkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTU2OwotKwkJfQotKwl9IGVsc2UgewotKwkJaWYgKHl5Y2ggPD0gJ2AnKSB7Ci0rCQkJaWYgKHl5Y2ggIT0gJ1AnKSBnb3RvIHl5NTY7Ci0rCQl9IGVsc2UgewotKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzMzA7Ci0rCQkJaWYgKHl5Y2ggIT0gJ3AnKSBnb3RvIHl5NTY7Ci0rCQl9Ci0rCX0KLSt5eTEzMzA6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ0wnKSB7Ci0gCQlpZiAoeXljaCAhPSAnLicpIGdvdG8geXk1NjsKLSAJfSBlbHNlIHsKLS0JCWlmICh5eWNoIDw9ICdNJykgZ290byB5eTEzMzA7Ci0tCQlpZiAoeXljaCA9PSAnbScpIGdvdG8geXkxMzMwOwotKwkJaWYgKHl5Y2ggPD0gJ00nKSBnb3RvIHl5MTMzMjsKLSsJCWlmICh5eWNoID09ICdtJykgZ290byB5eTEzMzI7Ci0gCQlnb3RvIHl5NTY7Ci0gCX0KLSAJeXljaCA9ICorK1lZQ1VSU09SOwotLQlpZiAoeXljaCA9PSAnTScpIGdvdG8geXkxMzMwOwotKwlpZiAoeXljaCA9PSAnTScpIGdvdG8geXkxMzMyOwotIAlpZiAoeXljaCAhPSAnbScpIGdvdG8geXk1NjsKLS15eTEzMzA6Ci0reXkxMzMyOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9IDB4MUYpIHsKLS0JCWlmICh5eWNoIDw9IDB4MDApIGdvdG8geXkxMjkyOwotLQkJaWYgKHl5Y2ggPT0gJ1x0JykgZ290byB5eTEyOTI7Ci0rCQlpZiAoeXljaCA8PSAweDAwKSBnb3RvIHl5MTI5MzsKLSsJCWlmICh5eWNoID09ICdcdCcpIGdvdG8geXkxMjkzOwotIAkJZ290byB5eTU2OwotIAl9IGVsc2UgewotLQkJaWYgKHl5Y2ggPD0gJyAnKSBnb3RvIHl5MTI5MjsKLSsJCWlmICh5eWNoIDw9ICcgJykgZ290byB5eTEyOTM7Ci0gCQlpZiAoeXljaCAhPSAnLicpIGdvdG8geXk1NjsKLSAJfQotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdcdCcpIHsKLS0JCWlmICh5eWNoIDw9IDB4MDApIGdvdG8geXkxMjkyOwotKwkJaWYgKHl5Y2ggPD0gMHgwMCkgZ290byB5eTEyOTM7Ci0gCQlpZiAoeXljaCA8PSAweDA4KSBnb3RvIHl5NTY7Ci0tCQlnb3RvIHl5MTI5MjsKLSsJCWdvdG8geXkxMjkzOwotIAl9IGVsc2UgewotLQkJaWYgKHl5Y2ggPT0gJyAnKSBnb3RvIHl5MTI5MjsKLSsJCWlmICh5eWNoID09ICcgJykgZ290byB5eTEyOTM7Ci0gCQlnb3RvIHl5NTY7Ci0gCX0KLS15eTEzMzI6Ci0reXkxMzM0OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdSJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMTg4NzcsMTIgKzE5MDY4LDEyIEBAIHl5MTMzMjoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTEzMzM7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTMzNTsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzMzM6Ci0reXkxMzM1OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdUJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMTg4OTgsMTIgKzE5MDg5LDEyIEBAIHl5MTMzMzoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjg7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzMzQ7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTMzNjsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzMzQ6Ci0reXkxMzM2OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdIJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMTg5MjUsNyArMTkxMTYsNyBAQCB5eTEzMzQ6Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzMzU6Ci0reXkxMzM3OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdTJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMTg5MzQsNyArMTkxMjUsNyBAQCB5eTEzMzU6Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTY3OwotLQkJCWdvdG8geXkxMzM4OwotKwkJCWdvdG8geXkxMzQwOwotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ3InKSB7Ci1AQCAtMTg5NDIsMTIgKzE5MTMzLDEyIEBAIHl5MTMzNToKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTEzMzg7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTM0MDsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzMzY6Ci0reXkxMzM4OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdUJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMTg5NjMsMTIgKzE5MTU0LDEyIEBAIHl5MTMzNjoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzMzc7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTMzOTsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzMzc6Ci0reXkxMzM5OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdIJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMTg5OTAsNyArMTkxODEsNyBAQCB5eTEzMzc6Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzMzg6Ci0reXkxMzQwOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdUJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMTkwMDYsMTIgKzE5MTk3LDEyIEBAIHl5MTMzODoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjg7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzMzk7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTM0MTsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzMzk6Ci0reXkxMzQxOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICcoJykgewotQEAgLTE5MDMyLDE5ICsxOTIyMywxOSBAQCB5eTEzMzk6Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzNDA6Ci0reXkxMzQyOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0tCWlmICh5eWNoID09ICdEJykgZ290byB5eTEzNDE7Ci0rCWlmICh5eWNoID09ICdEJykgZ290byB5eTEzNDM7Ci0gCWlmICh5eWNoICE9ICdkJykgZ290byB5eTExOTc7Ci0teXkxMzQxOgotK3l5MTM0MzoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotLQlpZiAoeXljaCA9PSAnQScpIGdvdG8geXkxMzQyOwotKwlpZiAoeXljaCA9PSAnQScpIGdvdG8geXkxMzQ0OwotIAlpZiAoeXljaCAhPSAnYScpIGdvdG8geXk1NjsKLS15eTEzNDI6Ci0reXkxMzQ0OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0tCWlmICh5eWNoID09ICdZJykgZ290byB5eTEzNDM7Ci0rCWlmICh5eWNoID09ICdZJykgZ290byB5eTEzNDU7Ci0gCWlmICh5eWNoICE9ICd5JykgZ290byB5eTU2OwotLXl5MTM0MzoKLSt5eTEzNDU6Ci0gCXl5YWNjZXB0ID0gMjU7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdSJykgewotQEAgLTE5MDU1LDE0ICsxOTI0NiwxNCBAQCB5eTEzNDM6Ci0gCQlnb3RvIHl5MTA4NDsKLSAJfQotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0tCWlmICh5eWNoID09ICdPJykgZ290byB5eTEzNDU7Ci0rCWlmICh5eWNoID09ICdPJykgZ290byB5eTEzNDc7Ci0gCWlmICh5eWNoICE9ICdvJykgZ290byB5eTU2OwotLXl5MTM0NToKLSt5eTEzNDc6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLS0JaWYgKHl5Y2ggPT0gJ0YnKSBnb3RvIHl5MTMwNTsKLS0JaWYgKHl5Y2ggPT0gJ2YnKSBnb3RvIHl5MTMwNTsKLSsJaWYgKHl5Y2ggPT0gJ0YnKSBnb3RvIHl5MTMwNjsKLSsJaWYgKHl5Y2ggPT0gJ2YnKSBnb3RvIHl5MTMwNjsKLSAJZ290byB5eTU2OwotLXl5MTM0NjoKLSt5eTEzNDg6Ci0gCXl5YWNjZXB0ID0gNTsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJy8nKSB7Ci1AQCAtMTkwOTcsMTMgKzE5Mjg4LDEzIEBAIHl5MTM0NjoKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MjE4OwotIAkJCQlnb3RvIHl5MTY3OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTEzNDc7Ci0rCQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTEzNDk7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKLSAJCQkJZ290byB5eTIxODsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTEzNDc6Ci0reXkxMzQ5OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdVJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMTkxMTksMTIgKzE5MzEwLDEyIEBAIHl5MTM0NzoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjg7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTEzNDg7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3UnKSBnb3RvIHl5MTM1MDsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzNDg6Ci0reXkxMzUwOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdBJykgewotIAkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OwotQEAgLTE5MTM0LDI3ICsxOTMyNSwyNyBAQCB5eTEzNDg6Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY5OwotIAkJCWdvdG8geXkzOwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMzQ5OwotKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzNTE7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY5OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMzQ5OgotK3l5MTM1MToKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUScpIHsKLSAJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKLSAJCWdvdG8geXkzOwotIAl9IGVsc2UgewotLQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTM1MDsKLSsJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTEzNTI7Ci0gCQlpZiAoeXljaCAhPSAncicpIGdvdG8geXkzOwotIAl9Ci0teXkxMzUwOgotK3l5MTM1MjoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA9PSAnWScpIGdvdG8geXkyMjk7Ci0gCWlmICh5eWNoID09ICd5JykgZ290byB5eTIyOTsKLSAJZ290byB5eTU2OwotLXl5MTM1MToKLSt5eTEzNTM6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0EnKSB7Ci1AQCAtMTkxNjksNyArMTkzNjAsNyBAQCB5eTEzNTE6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnQicpIGdvdG8geXkxMzQ2OwotKwkJCWlmICh5eWNoIDw9ICdCJykgZ290byB5eTEzNDg7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0xOTE3OCwxMyArMTkzNjksMTMgQEAgeXkxMzUxOgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTcxOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdiJykgZ290byB5eTEzNjk7Ci0rCQkJCWlmICh5eWNoIDw9ICdiJykgZ290byB5eTEzNzE7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxMzUyOgotK3l5MTM1NDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUScpIHsKLUBAIC0xOTIwMSwxNCArMTkzOTIsMTQgQEAgeXkxMzUyOgotIAkJCQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxNzI7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoID09ICdGJykgZ290byB5eTEzMzY7Ci0rCQkJCWlmICh5eWNoID09ICdGJykgZ290byB5eTEzMzg7Ci0gCQkJCWdvdG8geXkxNjY7Ci0gCQkJfQotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTEzMzU7Ci0rCQkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTEzMzc7Ci0gCQkJCWdvdG8geXkxNjY7Ci0gCQkJfSBlbHNlIHsKLSAJCQkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOwotQEAgLTE5MjE2LDE2ICsxOTQwNywxNiBAQCB5eTEzNTI6Ci0gCQkJfQotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAncScpIHsKLS0JCQkJaWYgKHl5Y2ggPT0gJ2YnKSBnb3RvIHl5MTM2NTsKLSsJCQkJaWYgKHl5Y2ggPT0gJ2YnKSBnb3RvIHl5MTM2NzsKLSAJCQkJZ290byB5eTE3MTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxMzY0OwotKwkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxMzY2OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTM1MzoKLSt5eTEzNTU6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ1QnKSB7Ci1AQCAtMTkyNDAsNyArMTk0MzEsNyBAQCB5eTEzNTM6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnVScpIGdvdG8geXkxMzMyOwotKwkJCWlmICh5eWNoIDw9ICdVJykgZ290byB5eTEzMzQ7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0xOTI0OSwxMyArMTk0NDAsMTMgQEAgeXkxMzUzOgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTcxOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTEzNjE7Ci0rCQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTEzNjM7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxMzU0OgotK3l5MTM1NjoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnTicpIHsKLUBAIC0xOTI3MiwxNCArMTk0NjMsMTQgQEAgeXkxMzU0OgotIAkJCQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxNzI7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoID09ICdJJykgZ290byB5eTEzMTU7Ci0rCQkJCWlmICh5eWNoID09ICdJJykgZ290byB5eTEzMTY7Ci0gCQkJCWdvdG8geXkxNjY7Ci0gCQkJfQotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTEzMTQ7Ci0rCQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTEzMTU7Ci0gCQkJCWdvdG8geXkxNjY7Ci0gCQkJfSBlbHNlIHsKLSAJCQkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOwotQEAgLTE5Mjg3LDE2ICsxOTQ3OCwxNiBAQCB5eTEzNTQ6Ci0gCQkJfQotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnbicpIHsKLS0JCQkJaWYgKHl5Y2ggPT0gJ2knKSBnb3RvIHl5MTM1NjsKLSsJCQkJaWYgKHl5Y2ggPT0gJ2knKSBnb3RvIHl5MTM1ODsKLSAJCQkJZ290byB5eTE3MTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxMzU1OwotKwkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxMzU3OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTM1NToKLSt5eTEzNTc6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ00nKSB7Ci1AQCAtMTkzMTEsNyArMTk1MDIsNyBAQCB5eTEzNTU6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnTicpIGdvdG8geXkxMzE4OwotKwkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTEzMTk7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0xOTMyMCwxMyArMTk1MTEsMTMgQEAgeXkxMzU1OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTEzNTk7Ci0rCQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTEzNjE7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxMzU2OgotK3l5MTM1ODoKLSAJeXlhY2NlcHQgPSA0OwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnQycpIHsKLUBAIC0xOTM0MSw3ICsxOTUzMiw3IEBAIHl5MTM1NjoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTEzMTY7Ci0rCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTMxNzsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MTkxOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMTkzNTAsMTMgKzE5NTQxLDEzIEBAIHl5MTM1NjoKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTkxOwotIAkJCQlnb3RvIHl5MTc1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTEzNTc7Ci0rCQkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTEzNTk7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLSAJCQkJZ290byB5eTE5MTsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTEzNTc6Ci0reXkxMzU5OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdAJykgewotQEAgLTE5MzcwLDE4ICsxOTU2MSwxOCBAQCB5eTEzNTc6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxMzE3OwotKwkJCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTEzMTg7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLS0JCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMzU4OwotKwkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTEzNjA7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc2OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMzU4OgotK3l5MTM2MDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnWCcpIHsKLUBAIC0xOTQxMSw3ICsxOTYwMiw3IEBAIHl5MTM1ODoKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTEzNTk6Ci0reXkxMzYxOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdTJykgewotQEAgLTE5NDI2LDcgKzE5NjE3LDcgQEAgeXkxMzU5OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTMxOTsKLSsJCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxMzIwOwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMTk0MzUsMTggKzE5NjI2LDE4IEBAIHl5MTM1OToKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3NjsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxMzYwOwotKwkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxMzYyOwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTM2MDoKLSt5eTEzNjI6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJy4nKSB7Ci0gCQlpZiAoeXljaCA8PSAnKCcpIHsKLS0JCQlpZiAoeXljaCA9PSAnICcpIGdvdG8geXkxMzIwOwotKwkJCWlmICh5eWNoID09ICcgJykgZ290byB5eTEzMjE7Ci0gCQkJZ290byB5eTM7Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICcpJykgZ290byB5eTE2NDsKLUBAIC0xOTQ2Niw3ICsxOTY1Nyw3IEBAIHl5MTM2MDoKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTM2MToKLSt5eTEzNjM6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ1EnKSB7Ci1AQCAtMTk0ODEsNyArMTk2NzIsNyBAQCB5eTEzNjE6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxMzMzOwotKwkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTEzMzU7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0xOTQ5MCwxMyArMTk2ODEsMTMgQEAgeXkxMzYxOgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTEzNjI7Ci0rCQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTEzNjQ7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxMzYyOgotK3l5MTM2NDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUycpIHsKLUBAIC0xOTUxMSw3ICsxOTcwMiw3IEBAIHl5MTM2MjoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTEzMzQ7Ci0rCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTMzNjsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjg7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTE5NTIwLDEzICsxOTcxMSwxMyBAQCB5eTEzNjI6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzY7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTM2MzsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTM2NTsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc2OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTEzNjM6Ci0reXkxMzY1OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdHJykgewotQEAgLTE5NTU2LDcgKzE5NzQ3LDcgQEAgeXkxMzYzOgotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTM2NDoKLSt5eTEzNjY6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ1InKSB7Ci1AQCAtMTk1NzEsNyArMTk3NjIsNyBAQCB5eTEzNjQ6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxMzM4OwotKwkJCWlmICh5eWNoIDw9ICdTJykgZ290byB5eTEzNDA7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0xOTU4MCwxMyArMTk3NzEsMTMgQEAgeXkxMzY0OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTEzNjc7Ci0rCQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTEzNjk7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxMzY1OgotK3l5MTM2NzoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUycpIHsKLUBAIC0xOTYwMSw3ICsxOTc5Miw3IEBAIHl5MTM2NToKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTEzMzc7Ci0rCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTMzOTsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTE5NjEwLDEzICsxOTgwMSwxMyBAQCB5eTEzNjU6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzU7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTM2NjsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTM2ODsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTEzNjY6Ci0reXkxMzY4OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdHJykgewotQEAgLTE5NjQ2LDcgKzE5ODM3LDcgQEAgeXkxMzY2OgotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTM2NzoKLSt5eTEzNjk6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ1MnKSB7Ci1AQCAtMTk2NjEsNyArMTk4NTIsNyBAQCB5eTEzNjc6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxMzM5OwotKwkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTEzNDE7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0xOTY3MCwyMCArMTk4NjEsMjAgQEAgeXkxMzY3OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc2OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzNjg7Ci0rCQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTEzNzA7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxMzY4OgotK3l5MTM3MDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnLScpIHsKLSAJCWlmICh5eWNoIDw9ICcgJykgewotIAkJCWlmICh5eWNoID09ICdcdCcpIGdvdG8geXkxMTk2OwotIAkJCWlmICh5eWNoIDw9IDB4MUYpIGdvdG8geXkzOwotLQkJCWdvdG8geXkxMzQwOwotKwkJCWdvdG8geXkxMzQyOwotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci0gCQkJaWYgKHl5Y2ggPD0gJywnKSBnb3RvIHl5MzsKLUBAIC0xOTcwNSw3ICsxOTg5Niw3IEBAIHl5MTM2ODoKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTEzNjk6Ci0reXkxMzcxOgotIAl5eWFjY2VwdCA9IDU7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICc5JykgewotQEAgLTE5NzMzLDcgKzE5OTI0LDcgQEAgeXkxMzY5OgotIAkJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkyMTg7Ci0gCQkJCWdvdG8geXkxNjc7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTM0NzsKLSsJCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTM0OTsKLSAJCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OwotIAkJCQlnb3RvIHl5MjE4OwotIAkJCX0KLUBAIC0xOTc0MywxMyArMTk5MzQsMTMgQEAgeXkxMzY5OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkyMTg7Ci0gCQkJCWdvdG8geXkxNzU7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTM3MDsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTM3MjsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OwotIAkJCQlnb3RvIHl5MjE4OwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTM3MDoKLSt5eTEzNzI6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ1QnKSB7Ci1AQCAtMTk3NjQsNyArMTk5NTUsNyBAQCB5eTEzNzA6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnVScpIGdvdG8geXkxMzQ4OwotKwkJCWlmICh5eWNoIDw9ICdVJykgZ290byB5eTEzNTA7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0xOTc3MywxMyArMTk5NjQsMTMgQEAgeXkxMzcwOgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc2OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTEzNzE7Ci0rCQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTEzNzM7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxMzcxOgotK3l5MTM3MzoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnQCcpIHsKLUBAIC0xOTc5MywxOCArMTk5ODQsMTggQEAgeXkxMzcxOgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTM0OTsKLSsJCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxMzUxOwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2OTsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0tCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTM3MjsKLSsJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxMzc0OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NzsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTM3MjoKLSt5eTEzNzQ6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ1EnKSB7Ci1AQCAtMTk4MTgsMzMgKzIwMDA5LDM0IEBAIHl5MTM3MjoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdgJykgewotLQkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTEzNTA7Ci0rCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTM1MjsKLSAJCQlpZiAoeXljaCA9PSAnXycpIGdvdG8geXkxNzI7Ci0gCQkJZ290byB5eTM7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoID09ICdyJykgZ290byB5eTEzNzM7Ci0rCQkJaWYgKHl5Y2ggPT0gJ3InKSBnb3RvIHl5MTM3NTsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzNzM6Ci0reXkxMzc1OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoID09ICdZJykgZ290byB5eTIyOTsKLSAJaWYgKHl5Y2ggPT0gJ3knKSBnb3RvIHl5MzQxOwotIAlnb3RvIHl5MTc5OwotLXl5MTM3NDoKLSt5eTEzNzY6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5NTY7Ci0gCWlmICh5eWNoID49ICc6JykgZ290byB5eTU2OwotLXl5MTM3NToKLSt5eTEzNzc6Ci0gCXl5YWNjZXB0ID0gMjg7Ci0gCVlZTUFSS0VSID0gKytZWUNVUlNPUjsKLSAJaWYgKChZWUxJTUlUIC0gWVlDVVJTT1IpIDwgNykgWVlGSUxMKDcpOwotIAl5eWNoID0gKllZQ1VSU09SOwotLQlpZiAoeXljaCA9PSAnLicpIGdvdG8geXkxMzc4OwotLQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxMzc3OwotLQlpZiAoeXljaCA8PSAnOScpIGdvdG8geXkxMzc1OwotLXl5MTM3NzoKLSsJaWYgKHl5Y2ggPT0gJy4nKSBnb3RvIHl5MTM4MDsKLSsJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTM3OTsKLSsJaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTM3NzsKLSt5eTEzNzk6Ci0rI2xpbmUgMTAyNSAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCXRpbWVsaWJfdWxsIGk7Ci0gCi1AQCAtMTk4NjksNyArMjAwNjEsOCBAQCB5eTEzNzc6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX1JFTEFUSVZFOwotIAl9Ci0teXkxMzc4OgotKyNsaW5lIDIwMDY1ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotK3l5MTM4MDoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk1NjsKLSAJaWYgKHl5Y2ggPj0gJzonKSBnb3RvIHl5NTY7Ci1AQCAtMTk4ODksNiArMjAwODIsNyBAQCB5eTEzNzg6Ci0gCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTU2OwotIAlpZiAoeXljaCA+PSAnOicpIGdvdG8geXk1NjsKLSAJKytZWUNVUlNPUjsKLSsjbGluZSAxMDUxICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJdGltZWxpYl91bGwgaSwgbXM7Ci0gCi1AQCAtMTk5MTUsNyArMjAxMDksOCBAQCB5eTEzNzg6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX1JFTEFUSVZFOwotIAl9Ci0teXkxMzg2OgotKyNsaW5lIDIwMTEzICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotK3l5MTM4ODoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnTicpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTE5OTI0LDcgKzIwMTE5LDcgQEAgeXkxMzg2OgotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOwotIAkJCWlmICh5eWNoIDw9ICdNJykgZ290byB5eTE2NjsKLS0JCQlnb3RvIHl5MTQyNzsKLSsJCQlnb3RvIHl5MTQyOTsKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdtJykgewotQEAgLTE5OTMyLDU4ICsyMDEyNyw1OCBAQCB5eTEzODY6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY2OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDI3OwotKwkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE0Mjk7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxMzg3OgotK3l5MTM4OToKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnVScpIHsKLSAJCWlmICh5eWNoIDw9ICdAJykgewotIAkJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKLSAJCQlnb3RvIHl5MzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTQxOTsKLSsJCQlpZiAoeXljaCA9PSAnSScpIGdvdG8geXkxNDIxOwotIAkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTE2NjsKLS0JCQlnb3RvIHl5MTQyMDsKLSsJCQlnb3RvIHl5MTQyMjsKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdpJykgewotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NjsKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWlmICh5eWNoIDw9ICdoJykgZ290byB5eTE2NjsKLS0JCQlnb3RvIHl5MTQxOTsKLSsJCQlnb3RvIHl5MTQyMTsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPT0gJ3UnKSBnb3RvIHl5MTQyMDsKLSsJCQlpZiAoeXljaCA9PSAndScpIGdvdG8geXkxNDIyOwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NjsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTM4ODoKLSt5eTEzOTA6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ00nKSB7Ci0gCQlpZiAoeXljaCA8PSAnQCcpIHsKLSAJCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci0gCQkJZ290byB5eTM7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoID09ICdEJykgZ290byB5eTE0MDg7Ci0rCQkJaWYgKHl5Y2ggPT0gJ0QnKSBnb3RvIHl5MTQxMDsKLSAJCQlpZiAoeXljaCA8PSAnTCcpIGdvdG8geXkxNjY7Ci0tCQkJZ290byB5eTE0MDk7Ci0rCQkJZ290byB5eTE0MTE7Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnZCcpIHsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlpZiAoeXljaCA8PSAnYycpIGdvdG8geXkxNjY7Ci0tCQkJZ290byB5eTE0MDg7Ci0rCQkJZ290byB5eTE0MTA7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoID09ICdtJykgZ290byB5eTE0MDk7Ci0rCQkJaWYgKHl5Y2ggPT0gJ20nKSBnb3RvIHl5MTQxMTsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzODk6Ci0reXkxMzkxOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdFJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMTk5OTIsNyArMjAxODcsNyBAQCB5eTEzODk6Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7Ci0gCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTY2OwotLQkJCWdvdG8geXkxNDA0OwotKwkJCWdvdG8geXkxNDA2OwotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2QnKSB7Ci1AQCAtMjAwMDAsMTIgKzIwMTk1LDEyIEBAIHl5MTM4OToKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjY7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE0MDQ7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTQwNjsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzOTA6Ci0reXkxMzkyOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdFJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjAwMTQsNyArMjAyMDksNyBAQCB5eTEzOTA6Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7Ci0gCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTY2OwotLQkJCWdvdG8geXkxNDAwOwotKwkJCWdvdG8geXkxNDAyOwotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2QnKSB7Ci1AQCAtMjAwMjIsNjggKzIwMjE3LDY4IEBAIHl5MTM5MDoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjY7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE0MDA7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTQwMjsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTEzOTE6Ci0reXkxMzkzOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICcvJykgewotIAkJaWYgKHl5Y2ggPT0gJy4nKSBnb3RvIHl5MTAyOTsKLSAJCWdvdG8geXk1NjsKLSAJfSBlbHNlIHsKLS0JCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTEzOTQ7Ci0rCQlpZiAoeXljaCA8PSAnOScpIGdvdG8geXkxMzk2OwotIAkJaWYgKHl5Y2ggPD0gJzonKSBnb3RvIHl5MTAyOTsKLSAJCWdvdG8geXk1NjsKLSAJfQotLXl5MTM5MjoKLSt5eTEzOTQ6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJy8nKSB7Ci0gCQlpZiAoeXljaCA9PSAnLicpIGdvdG8geXkxMDI5OwotIAkJZ290byB5eTU2OwotIAl9IGVsc2UgewotLQkJaWYgKHl5Y2ggPD0gJzQnKSBnb3RvIHl5MTM5NDsKLSsJCWlmICh5eWNoIDw9ICc0JykgZ290byB5eTEzOTY7Ci0gCQlpZiAoeXljaCA9PSAnOicpIGdvdG8geXkxMDI5OwotIAkJZ290byB5eTU2OwotIAl9Ci0teXkxMzkzOgotK3l5MTM5NToKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA9PSAnLicpIGdvdG8geXkxMDI5OwotIAlpZiAoeXljaCA9PSAnOicpIGdvdG8geXkxMDI5OwotIAlnb3RvIHl5NTY7Ci0teXkxMzk0OgotK3l5MTM5NjoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnLycpIHsKLSAJCWlmICh5eWNoID09ICcuJykgZ290byB5eTEwMjk7Ci0gCQlnb3RvIHl5NTY7Ci0gCX0gZWxzZSB7Ci0tCQlpZiAoeXljaCA8PSAnNScpIGdvdG8geXkxMzk1OwotKwkJaWYgKHl5Y2ggPD0gJzUnKSBnb3RvIHl5MTM5NzsKLSAJCWlmICh5eWNoID09ICc6JykgZ290byB5eTEwMjk7Ci0gCQlnb3RvIHl5NTY7Ci0gCX0KLS15eTEzOTU6Ci0reXkxMzk3OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTU2OwotIAlpZiAoeXljaCA+PSAnOicpIGdvdG8geXk1NjsKLSAJeXlhY2NlcHQgPSAyMzsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTAzMjsKLS0JaWYgKHl5Y2ggPD0gJzUnKSBnb3RvIHl5MTM5NzsKLS0JaWYgKHl5Y2ggPD0gJzYnKSBnb3RvIHl5MTM5ODsKLSsJaWYgKHl5Y2ggPD0gJzUnKSBnb3RvIHl5MTM5OTsKLSsJaWYgKHl5Y2ggPD0gJzYnKSBnb3RvIHl5MTQwMDsKLSAJZ290byB5eTEwMzI7Ci0teXkxMzk3OgotK3l5MTM5OToKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnLycpIGdvdG8geXk1NjsKLS0JaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTM5OTsKLSsJaWYgKHl5Y2ggPD0gJzknKSBnb3RvIHl5MTQwMTsKLSAJZ290byB5eTU2OwotLXl5MTM5ODoKLSt5eTE0MDA6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggIT0gJzAnKSBnb3RvIHl5NTY7Ci0teXkxMzk5OgotK3l5MTQwMToKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlnb3RvIHl5MTA0MDsKLS15eTE0MDA6Ci0reXkxNDAyOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdMJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjAwOTksMTIgKzIwMjk0LDEyIEBAIHl5MTQwMDoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdsJykgZ290byB5eTE0MDE7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2wnKSBnb3RvIHl5MTQwMzsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0MDE6Ci0reXkxNDAzOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdGJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjAxMjAsMTIgKzIwMzE1LDEyIEBAIHl5MTQwMToKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjg7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdmJykgZ290byB5eTE0MDI7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2YnKSBnb3RvIHl5MTQwNDsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0MDI6Ci0reXkxNDA0OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdUJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjAxNDEsMTIgKzIwMzM2LDEyIEBAIHl5MTQwMjoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjk7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTE0MDM7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQwNTsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjk7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0MDM6Ci0reXkxNDA1OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdHJykgewotQEAgLTIwMTU3LDcgKzIwMzUyLDcgQEAgeXkxNDAzOgotIAkJaWYgKHl5Y2ggPT0gJ2gnKSBnb3RvIHl5MTE5NTsKLSAJCWdvdG8geXkzOwotIAl9Ci0teXkxNDA0OgotK3l5MTQwNjoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnUycpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTIwMTczLDEyICsyMDM2OCwxMiBAQCB5eTE0MDQ6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTkxOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE0MDU7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQwNzsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJZ290byB5eTE5MTsKLSAJCX0KLSAJfQotLXl5MTQwNToKLSt5eTE0MDc6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ0QnKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMDE5NCwxMiArMjAzODksMTIgQEAgeXkxNDA1OgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2ODsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQwNjsKLSsJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDA4OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2ODsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQwNjoKLSt5eTE0MDg6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ0EnKSB7Ci0gCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci1AQCAtMjAyMDksMTIgKzIwNDA0LDEyIEBAIHl5MTQwNjoKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7Ci0gCQkJZ290byB5eTM7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTE0MDc7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQwOTsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjk7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0MDc6Ci0reXkxNDA5OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdYJykgewotIAkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OwotQEAgLTIwMjI0LDIzICsyMDQxOSwyMyBAQCB5eTE0MDc6Ci0gCQlpZiAoeXljaCA9PSAneScpIGdvdG8geXkxOTc7Ci0gCQlnb3RvIHl5MzsKLSAJfQotLXl5MTQwODoKLSt5eTE0MTA6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ0EnKSB7Ci0gCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci0gCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOwotLQkJZ290byB5eTE0MTY7Ci0rCQlnb3RvIHl5MTQxODsKLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdgJykgewotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKLSAJCQlnb3RvIHl5MzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQxNjsKLSsJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDE4OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQwOToKLSt5eTE0MTE6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ08nKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMDI1NiwxMiArMjA0NTEsMTIgQEAgeXkxNDA5OgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2NzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ28nKSBnb3RvIHl5MTQxMDsKLSsJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxNDEyOwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQxMDoKLSt5eTE0MTI6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ1InKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMDI3NywxMiArMjA0NzIsMTIgQEAgeXkxNDEwOgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2ODsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQxMTsKLSsJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDEzOwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2ODsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQxMToKLSt5eTE0MTM6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ1InKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMDI5OCwyOCArMjA0OTMsMjkgQEAgeXkxNDExOgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2OTsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQxMjsKLSsJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDE0OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2OTsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQxMjoKLSt5eTE0MTQ6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ04nKSB7Ci0gCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci0gCQlnb3RvIHl5MzsKLSAJfSBlbHNlIHsKLS0JCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTE0MTM7Ci0rCQlpZiAoeXljaCA8PSAnTycpIGdvdG8geXkxNDE1OwotIAkJaWYgKHl5Y2ggIT0gJ28nKSBnb3RvIHl5MzsKLSAJfQotLXl5MTQxMzoKLSt5eTE0MTU6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLS0JaWYgKHl5Y2ggPT0gJ1cnKSBnb3RvIHl5MTQxNDsKLSsJaWYgKHl5Y2ggPT0gJ1cnKSBnb3RvIHl5MTQxNjsKLSAJaWYgKHl5Y2ggIT0gJ3cnKSBnb3RvIHl5NTY7Ci0teXkxNDE0OgotK3l5MTQxNjoKLSAJKytZWUNVUlNPUjsKLS15eTE0MTU6Ci0reXkxNDE3OgotKyNsaW5lIDEwMTMgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlIgotIAl7Ci0gCQlERUJVR19PVVRQVVQoInRvbW9ycm93Iik7Ci0gCQlUSU1FTElCX0lOSVQ7Ci1AQCAtMjAzMzAsNyArMjA1MjYsOCBAQCB5eTE0MTU6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX1JFTEFUSVZFOwotIAl9Ci0teXkxNDE2OgotKyNsaW5lIDIwNTMwICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotK3l5MTQxODoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnWScpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTIwMzQ2LDIxICsyMDU0MywyMiBAQCB5eTE0MTY6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY4OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAneScpIGdvdG8geXkxNDE3OwotKwkJCWlmICh5eWNoIDw9ICd5JykgZ290byB5eTE0MTk7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY4OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNDE3OgotK3l5MTQxOToKLSAJKytZWUNVUlNPUjsKLSAJaWYgKCh5eWNoID0gKllZQ1VSU09SKSA8PSAnQCcpIHsKLSAJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2OTsKLS0JCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE0MTg7Ci0rCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxNDIwOwotIAkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY5OwotIAl9Ci0teXkxNDE4OgotK3l5MTQyMDoKLSsjbGluZSAxMDAzICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJREVCVUdfT1VUUFVUKCJtaWRuaWdodCB8IHRvZGF5Iik7Ci0gCQlUSU1FTElCX0lOSVQ7Ci1AQCAtMjAzNjksNyArMjA1NjcsOCBAQCB5eTE0MTg6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX1JFTEFUSVZFOwotIAl9Ci0teXkxNDE5OgotKyNsaW5lIDIwNTcxICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotK3l5MTQyMToKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnUycpIHsKLSAJCWlmICh5eWNoIDw9ICdAJykgewotQEAgLTIwMzc3LDggKzIwNTc2LDggQEAgeXkxNDE5OgotIAkJCWdvdG8geXkzOwotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnUScpIGdvdG8geXkxNjc7Ci0tCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTQyNTsKLS0JCQlnb3RvIHl5MTQyNjsKLSsJCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxNDI3OwotKwkJCWdvdG8geXkxNDI4OwotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ3EnKSB7Ci1AQCAtMjAzODYsMTMgKzIwNTg1LDEzIEBAIHl5MTQxOToKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTE0MjU7Ci0tCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQyNjsKLSsJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDI3OwotKwkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE0Mjg7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNDIwOgotK3l5MTQyMjoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnUicpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTIwNDA4LDEyICsyMDYwNywxMiBAQCB5eTE0MjA6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTkxOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTE0MjE7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQyMzsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJZ290byB5eTE5MTsKLSAJCX0KLSAJfQotLXl5MTQyMToKLSt5eTE0MjM6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ1MnKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMDQyOSwxMiArMjA2MjgsMTIgQEAgeXkxNDIxOgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2ODsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQyMjsKLSsJCQlpZiAoeXljaCA8PSAncycpIGdvdG8geXkxNDI0OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2ODsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQyMjoKLSt5eTE0MjQ6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ0QnKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMDQ1MCwyNyArMjA2NDksMjcgQEAgeXkxNDIyOgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2OTsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQyMzsKLSsJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDI1OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2OTsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQyMzoKLSt5eTE0MjU6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0AnKSB7Ci0gCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci0gCQlnb3RvIHl5MzsKLSAJfSBlbHNlIHsKLS0JCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTE0MjQ7Ci0rCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxNDI2OwotIAkJaWYgKHl5Y2ggIT0gJ2EnKSBnb3RvIHl5MzsKLSAJfQotLXl5MTQyNDoKLSt5eTE0MjY6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPT0gJ1knKSBnb3RvIHl5MTk3OwotIAlpZiAoeXljaCA9PSAneScpIGdvdG8geXkxOTc7Ci0gCWdvdG8geXk1NjsKLS15eTE0MjU6Ci0reXkxNDI3OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdEJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjA0OTIsNyArMjA2OTEsNyBAQCB5eTE0MjU6Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0MjY6Ci0reXkxNDI4OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICcoJykgewotQEAgLTIwNTE0LDcgKzIwNzEzLDcgQEAgeXkxNDI2OgotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNDI3OgotK3l5MTQyOToKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnVCcpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTIwNTMwLDEyICsyMDcyOSwxMiBAQCB5eTE0Mjc6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY3OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDI4OwotKwkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTE0MzA7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY3OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNDI4OgotK3l5MTQzMDoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnSCcpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTIwNTU3LDcgKzIwNzU2LDcgQEAgeXkxNDI4OgotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNDI5OgotK3l5MTQzMToKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnTScpIHsKLUBAIC0yMDU3Miw3ICsyMDc3MSw3IEBAIHl5MTQyOToKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE0Mjc7Ci0rCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTQyOTsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIwNTgxLDEzICsyMDc4MCwxMyBAQCB5eTE0Mjk6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzE7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQ1OTsKLSsJCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQ2MTsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0MzA6Ci0reXkxNDMyOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdUJykgewotQEAgLTIwNjA0LDE0ICsyMDgwMywxNCBAQCB5eTE0MzA6Ci0gCQkJCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTE3MjsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTQxOTsKLSsJCQkJaWYgKHl5Y2ggPT0gJ0knKSBnb3RvIHl5MTQyMTsKLSAJCQkJZ290byB5eTE2NjsKLSAJCQl9Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnYCcpIHsKLSAJCQlpZiAoeXljaCA8PSAnWicpIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ1UnKSBnb3RvIHl5MTQyMDsKLSsJCQkJaWYgKHl5Y2ggPD0gJ1UnKSBnb3RvIHl5MTQyMjsKLSAJCQkJZ290byB5eTE2NjsKLSAJCQl9IGVsc2UgewotIAkJCQlpZiAoeXljaCA9PSAnXycpIGdvdG8geXkxNzI7Ci1AQCAtMjA2MTksMTYgKzIwODE4LDE2IEBAIHl5MTQzMDoKLSAJCQl9Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICd0JykgewotLQkJCQlpZiAoeXljaCA9PSAnaScpIGdvdG8geXkxNDUxOwotKwkJCQlpZiAoeXljaCA9PSAnaScpIGdvdG8geXkxNDUzOwotIAkJCQlnb3RvIHl5MTcxOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTE0NTI7Ci0rCQkJCWlmICh5eWNoIDw9ICd1JykgZ290byB5eTE0NTQ7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDMxOgotK3l5MTQzMzoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnTCcpIHsKLUBAIC0yMDY0NSwxNCArMjA4NDQsMTQgQEAgeXkxNDMxOgotIAkJCQlpZiAoeXljaCA8PSAnLycpIGdvdG8geXkxNzI7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoID09ICdEJykgZ290byB5eTE0MDg7Ci0rCQkJCWlmICh5eWNoID09ICdEJykgZ290byB5eTE0MTA7Ci0gCQkJCWdvdG8geXkxNjY7Ci0gCQkJfQotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdNJykgZ290byB5eTE0MDk7Ci0rCQkJCWlmICh5eWNoIDw9ICdNJykgZ290byB5eTE0MTE7Ci0gCQkJCWdvdG8geXkxNjY7Ci0gCQkJfSBlbHNlIHsKLSAJCQkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOwotQEAgLTIwNjYwLDE2ICsyMDg1OSwxNiBAQCB5eTE0MzE6Ci0gCQkJfQotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnbCcpIHsKLS0JCQkJaWYgKHl5Y2ggPT0gJ2QnKSBnb3RvIHl5MTQ0MjsKLSsJCQkJaWYgKHl5Y2ggPT0gJ2QnKSBnb3RvIHl5MTQ0NDsKLSAJCQkJZ290byB5eTE3MTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnbScpIGdvdG8geXkxNDQzOwotKwkJCQlpZiAoeXljaCA8PSAnbScpIGdvdG8geXkxNDQ1OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQzMjoKLSt5eTE0MzQ6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0QnKSB7Ci1AQCAtMjA2ODQsNyArMjA4ODMsNyBAQCB5eTE0MzI6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnRScpIGdvdG8geXkxNDA0OwotKwkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE0MDY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0yMDY5MywxMyArMjA4OTIsMTMgQEAgeXkxNDMyOgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTcxOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE0Mzg7Ci0rCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE0NDA7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDMzOgotK3l5MTQzNToKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnRCcpIHsKLUBAIC0yMDcxNCw3ICsyMDkxMyw3IEBAIHl5MTQzMzoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE0MDA7Ci0rCQkJaWYgKHl5Y2ggPD0gJ0UnKSBnb3RvIHl5MTQwMjsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIwNzIzLDEzICsyMDkyMiwxMyBAQCB5eTE0MzM6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzE7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTQzNDsKLSsJCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTQzNjsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0MzQ6Ci0reXkxNDM2OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdLJykgewotQEAgLTIwNzQ0LDcgKzIwOTQzLDcgQEAgeXkxNDM0OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ0wnKSBnb3RvIHl5MTQwMTsKLSsJCQlpZiAoeXljaCA8PSAnTCcpIGdvdG8geXkxNDAzOwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjA3NTMsMTMgKzIwOTUyLDEzIEBAIHl5MTQzNDoKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3NTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnbCcpIGdvdG8geXkxNDM1OwotKwkJCQlpZiAoeXljaCA8PSAnbCcpIGdvdG8geXkxNDM3OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQzNToKLSt5eTE0Mzc6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0UnKSB7Ci1AQCAtMjA3NzQsNyArMjA5NzMsNyBAQCB5eTE0MzU6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnRicpIGdvdG8geXkxNDAyOwotKwkJCWlmICh5eWNoIDw9ICdGJykgZ290byB5eTE0MDQ7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0yMDc4MywxMyArMjA5ODIsMTMgQEAgeXkxNDM1OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc2OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdmJykgZ290byB5eTE0MzY7Ci0rCQkJCWlmICh5eWNoIDw9ICdmJykgZ290byB5eTE0Mzg7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDM2OgotK3l5MTQzODoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUycpIHsKLUBAIC0yMDgwNCw3ICsyMTAwMyw3IEBAIHl5MTQzNjoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTE0MDM7Ci0rCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTQwNTsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIwODEzLDEzICsyMTAxMiwxMyBAQCB5eTE0MzY6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzc7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQzNzsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQzOTsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc3OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0Mzc6Ci0reXkxNDM5OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdHJykgewotQEAgLTIwODQyLDcgKzIxMDQxLDcgQEAgeXkxNDM3OgotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNDM4OgotK3l5MTQ0MDoKLSAJeXlhY2NlcHQgPSA0OwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUicpIHsKLUBAIC0yMDg1Nyw3ICsyMTA1Niw3IEBAIHl5MTQzODoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdTJykgZ290byB5eTE0MDU7Ci0rCQkJaWYgKHl5Y2ggPD0gJ1MnKSBnb3RvIHl5MTQwNzsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MTkxOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjA4NjYsMTMgKzIxMDY1LDEzIEBAIHl5MTQzODoKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTkxOwotIAkJCQlnb3RvIHl5MTc1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE0Mzk7Ci0rCQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE0NDE7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLSAJCQkJZ290byB5eTE5MTsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0Mzk6Ci0reXkxNDQxOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdDJykgewotQEAgLTIwODg3LDcgKzIxMDg2LDcgQEAgeXkxNDM5OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTQwNjsKLSsJCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNDA4OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjA4OTYsMTMgKzIxMDk1LDEzIEBAIHl5MTQzOToKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3NjsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDQwOwotKwkJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDQyOwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQ0MDoKLSt5eTE0NDI6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0AnKSB7Ci1AQCAtMjA5MTYsMTggKzIxMTE1LDE4IEBAIHl5MTQ0MDoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTE0MDc7Ci0rCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTQwOTsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTE0NDE7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ0MzsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzc7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0NDE6Ci0reXkxNDQzOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdYJykgewotQEAgLTIwOTUwLDcgKzIxMTQ5LDcgQEAgeXkxNDQxOgotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNDQyOgotK3l5MTQ0NDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnQCcpIHsKLUBAIC0yMDk2NCwxOCArMjExNjMsMTggQEAgeXkxNDQyOgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTQxNjsKLSsJCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxNDE4OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0tCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ0OTsKLSsJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDUxOwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQ0MzoKLSt5eTE0NDU6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ04nKSB7Ci1AQCAtMjA5OTAsNyArMjExODksNyBAQCB5eTE0NDM6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnTycpIGdvdG8geXkxNDEwOwotKwkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTE0MTI7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0yMDk5OSwxMyArMjExOTgsMTMgQEAgeXkxNDQzOgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdvJykgZ290byB5eTE0NDQ7Ci0rCQkJCWlmICh5eWNoIDw9ICdvJykgZ290byB5eTE0NDY7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDQ0OgotK3l5MTQ0NjoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUScpIHsKLUBAIC0yMTAyMCw3ICsyMTIxOSw3IEBAIHl5MTQ0NDoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTE0MTE7Ci0rCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTQxMzsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjg7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIxMDI5LDEzICsyMTIyOCwxMyBAQCB5eTE0NDQ6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzY7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQ0NTsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQ0NzsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc2OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0NDU6Ci0reXkxNDQ3OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdRJykgewotQEAgLTIxMDUwLDcgKzIxMjQ5LDcgQEAgeXkxNDQ1OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTQxMjsKLSsJCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxNDE0OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2OTsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjEwNTksMTMgKzIxMjU4LDEzIEBAIHl5MTQ0NToKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3NzsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDQ2OwotKwkJCQlpZiAoeXljaCA8PSAncicpIGdvdG8geXkxNDQ4OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzc7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQ0NjoKLSt5eTE0NDg6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ04nKSB7Ci1AQCAtMjEwNzksMTggKzIxMjc4LDE4IEBAIHl5MTQ0NjoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdgJykgewotLQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTE0MTM7Ci0rCQkJaWYgKHl5Y2ggPD0gJ08nKSBnb3RvIHl5MTQxNTsKLSAJCQlpZiAoeXljaCA9PSAnXycpIGdvdG8geXkxNzI7Ci0gCQkJZ290byB5eTM7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoID09ICdvJykgZ290byB5eTE0NDc7Ci0rCQkJaWYgKHl5Y2ggPT0gJ28nKSBnb3RvIHl5MTQ0OTsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0NDc6Ci0reXkxNDQ5OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0tCWlmICh5eWNoID09ICdXJykgZ290byB5eTE0MTQ7Ci0rCWlmICh5eWNoID09ICdXJykgZ290byB5eTE0MTY7Ci0gCWlmICh5eWNoICE9ICd3JykgZ290byB5eTE3OTsKLSAJeXlhY2NlcHQgPSAyOTsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLUBAIC0yMTA5OSwxMyArMjEyOTgsMTMgQEAgeXkxNDQ3OgotIAl9Ci0gCWlmICh5eWNoIDw9ICcuJykgewotIAkJaWYgKHl5Y2ggPT0gJy0nKSBnb3RvIHl5MTcyOwotLQkJZ290byB5eTE0MTU7Ci0rCQlnb3RvIHl5MTQxNzsKLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTE3MjsKLSAJCWlmICh5eWNoID09ICdfJykgZ290byB5eTE3MjsKLS0JCWdvdG8geXkxNDE1OwotKwkJZ290byB5eTE0MTc7Ci0gCX0KLS15eTE0NDk6Ci0reXkxNDUxOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdYJykgewotQEAgLTIxMTIwLDcgKzIxMzE5LDcgQEAgeXkxNDQ5OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ1knKSBnb3RvIHl5MTQxNzsKLSsJCQlpZiAoeXljaCA8PSAnWScpIGdvdG8geXkxNDE5OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjExMjksMzYgKzIxMzI4LDM2IEBAIHl5MTQ0OToKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3NjsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAneScpIGdvdG8geXkxNDUwOwotKwkJCQlpZiAoeXljaCA8PSAneScpIGdvdG8geXkxNDUyOwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQ1MDoKLSt5eTE0NTI6Ci0gCXl5YWNjZXB0ID0gMzA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICcvJykgewotIAkJaWYgKHl5Y2ggPD0gJywnKSB7Ci0gCQkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OwotLQkJCWdvdG8geXkxNDE4OwotKwkJCWdvdG8geXkxNDIwOwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA9PSAnLicpIGdvdG8geXkxNDE4OwotKwkJCWlmICh5eWNoID09ICcuJykgZ290byB5eTE0MjA7Ci0gCQkJZ290byB5eTE3MjsKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdeJykgewotLQkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTE0MTg7Ci0rCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MTQyMDsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7Ci0tCQkJZ290byB5eTE0MTg7Ci0rCQkJZ290byB5eTE0MjA7Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdfJykgZ290byB5eTE3MjsKLS0JCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxNDE4OwotKwkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE0MjA7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc3OwotLQkJCWdvdG8geXkxNDE4OwotKwkJCWdvdG8geXkxNDIwOwotIAkJfQotIAl9Ci0teXkxNDUxOgotK3l5MTQ1MzoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUicpIHsKLUBAIC0yMTE3MywxMyArMjEzNzIsMTMgQEAgeXkxNDUxOgotIAkJCX0gZWxzZSB7Ci0gCQkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7Ci0gCQkJCWlmICh5eWNoIDw9ICdRJykgZ290byB5eTE2NzsKLS0JCQkJZ290byB5eTE0MjU7Ci0rCQkJCWdvdG8geXkxNDI3OwotIAkJCX0KLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdgJykgewotIAkJCWlmICh5eWNoIDw9ICdaJykgewotLQkJCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxNDI2OwotKwkJCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxNDI4OwotIAkJCQlnb3RvIHl5MTY3OwotIAkJCX0gZWxzZSB7Ci0gCQkJCWlmICh5eWNoID09ICdfJykgZ290byB5eTE3MjsKLUBAIC0yMTE4OCwxNSArMjEzODcsMTUgQEAgeXkxNDUxOgotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAncicpIHsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3EnKSBnb3RvIHl5MTc1OwotLQkJCQlnb3RvIHl5MTQ1NzsKLSsJCQkJZ290byB5eTE0NTk7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQ1ODsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTQ2MDsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0NTI6Ci0reXkxNDU0OgotIAl5eWFjY2VwdCA9IDQ7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdRJykgewotQEAgLTIxMjExLDcgKzIxNDEwLDcgQEAgeXkxNDUyOgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTQyMTsKLSsJCQlpZiAoeXljaCA8PSAnUicpIGdvdG8geXkxNDIzOwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkxOTE7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0yMTIyMCwxMyArMjE0MTksMTMgQEAgeXkxNDUyOgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxOTE7Ci0gCQkJCWdvdG8geXkxNzU7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQ1MzsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTQ1NTsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OwotIAkJCQlnb3RvIHl5MTkxOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQ1MzoKLSt5eTE0NTU6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ1InKSB7Ci1AQCAtMjEyNDEsNyArMjE0NDAsNyBAQCB5eTE0NTM6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxNDIyOwotKwkJCWlmICh5eWNoIDw9ICdTJykgZ290byB5eTE0MjQ7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0yMTI1MCwxMyArMjE0NDksMTMgQEAgeXkxNDUzOgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc2OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE0NTQ7Ci0rCQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE0NTY7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDU0OgotK3l5MTQ1NjoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnQycpIHsKLUBAIC0yMTI3MSw3ICsyMTQ3MCw3IEBAIHl5MTQ1NDoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTE0MjM7Ci0rCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTQyNTsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIxMjgwLDEzICsyMTQ3OSwxMyBAQCB5eTE0NTQ6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzc7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQ1NTsKLSsJCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQ1NzsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc3OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0NTU6Ci0reXkxNDU3OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdAJykgewotQEAgLTIxMzAwLDIyICsyMTQ5OSwyMiBAQCB5eTE0NTU6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxNDI0OwotKwkJCWlmICh5eWNoIDw9ICdBJykgZ290byB5eTE0MjY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTE0NTY7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ1ODsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0NTY6Ci0reXkxNDU4OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoID09ICdZJykgZ290byB5eTE5NzsKLSAJaWYgKHl5Y2ggPT0gJ3knKSBnb3RvIHl5MjEwOwotIAlnb3RvIHl5MTc5OwotLXl5MTQ1NzoKLSt5eTE0NTk6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0MnKSB7Ci1AQCAtMjEzNDUsNyArMjE1NDQsNyBAQCB5eTE0NTc6Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDU4OgotK3l5MTQ2MDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnLScpIHsKLUBAIC0yMTM3NCw3ICsyMTU3Myw3IEBAIHl5MTQ1ODoKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0NTk6Ci0reXkxNDYxOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdTJykgewotQEAgLTIxMzg5LDcgKzIxNTg4LDcgQEAgeXkxNDU5OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTQyODsKLSsJCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxNDMwOwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjEzOTgsMTMgKzIxNTk3LDEzIEBAIHl5MTQ1OToKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3NTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDYwOwotKwkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDYyOwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQ2MDoKLSt5eTE0NjI6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0cnKSB7Ci1AQCAtMjE0MzQsMzAgKzIxNjMzLDMwIEBAIHl5MTQ2MDoKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0NjE6Ci0reXkxNDYzOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdZJykgewotIAkJaWYgKHl5Y2ggPD0gJ0AnKSB7Ci0gCQkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OwotIAkJCWdvdG8geXkzOwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA9PSAnUicpIGdvdG8geXkxNDczOwotKwkJCWlmICh5eWNoID09ICdSJykgZ290byB5eTE0NzU7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1gnKSBnb3RvIHl5MTY2OwotLQkJCWdvdG8geXkxNDc0OwotKwkJCWdvdG8geXkxNDc2OwotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ3InKSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OwotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3EnKSBnb3RvIHl5MTY2OwotLQkJCWdvdG8geXkxNDczOwotKwkJCWdvdG8geXkxNDc1OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA9PSAneScpIGdvdG8geXkxNDc0OwotKwkJCWlmICh5eWNoID09ICd5JykgZ290byB5eTE0NzY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNDYyOgotK3l5MTQ2NDoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnRCcpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTIxNDY2LDcgKzIxNjY1LDcgQEAgeXkxNDYyOgotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOwotIAkJCWlmICh5eWNoIDw9ICdDJykgZ290byB5eTE2NjsKLS0JCQlnb3RvIHl5MTQ2NzsKLSsJCQlnb3RvIHl5MTQ2OTsKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdjJykgewotQEAgLTIxNDc0LDEyICsyMTY3MywxMiBAQCB5eTE0NjI6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY2OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDY3OwotKwkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTE0Njk7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNDYzOgotK3l5MTQ2NToKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnTicpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTIxNDk1LDEyICsyMTY5NCwxMiBAQCB5eTE0NjM6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY2OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDY0OwotKwkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE0NjY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY2OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNDY0OgotK3l5MTQ2NjoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnRCcpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTIxNTE2LDEyICsyMTcxNSwxMiBAQCB5eTE0NjQ6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTkxOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdkJykgZ290byB5eTE0NjU7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQ2NzsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJZ290byB5eTE5MTsKLSAJCX0KLSAJfQotLXl5MTQ2NToKLSt5eTE0Njc6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ0EnKSB7Ci0gCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci1AQCAtMjE1MzEsMTIgKzIxNzMwLDEyIEBAIHl5MTQ2NToKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdhJykgZ290byB5eTE0NjY7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ2ODsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0NjY6Ci0reXkxNDY4OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdZJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjE1NTgsNyArMjE3NTcsNyBAQCB5eTE0NjY6Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0Njc6Ci0reXkxNDY5OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdOJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjE1NzQsMTIgKzIxNzczLDEyIEBAIHl5MTQ2NzoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE0Njg7Ci0rCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQ3MDsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0Njg6Ci0reXkxNDcwOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdJJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjE1OTUsMTIgKzIxNzk0LDEyIEBAIHl5MTQ2ODoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjg7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdpJykgZ290byB5eTE0Njk7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2knKSBnb3RvIHl5MTQ3MTsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0Njk6Ci0reXkxNDcxOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdHJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjE2MTYsMjkgKzIxODE1LDI5IEBAIHl5MTQ2OToKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjk7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdnJykgZ290byB5eTE0NzA7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2cnKSBnb3RvIHl5MTQ3MjsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjk7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0NzA6Ci0reXkxNDcyOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdHJykgewotIAkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OwotIAkJZ290byB5eTM7Ci0gCX0gZWxzZSB7Ci0tCQlpZiAoeXljaCA8PSAnSCcpIGdvdG8geXkxNDcxOwotKwkJaWYgKHl5Y2ggPD0gJ0gnKSBnb3RvIHl5MTQ3MzsKLSAJCWlmICh5eWNoICE9ICdoJykgZ290byB5eTM7Ci0gCX0KLS15eTE0NzE6Ci0reXkxNDczOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0tCWlmICh5eWNoID09ICdUJykgZ290byB5eTE0NzI7Ci0rCWlmICh5eWNoID09ICdUJykgZ290byB5eTE0NzQ7Ci0gCWlmICh5eWNoICE9ICd0JykgZ290byB5eTU2OwotLXl5MTQ3MjoKLSt5eTE0NzQ6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLS0JZ290byB5eTE0MTg7Ci0teXkxNDczOgotKwlnb3RvIHl5MTQyMDsKLSt5eTE0NzU6Ci0gCXl5YWNjZXB0ID0gNTsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJy8nKSB7Ci1AQCAtMjE2NjYsNyArMjE4NjUsNyBAQCB5eTE0NzM6Ci0gCQkJCWlmICh5eWNoIDw9ICc5JykgZ290byB5eTIyMDsKLSAJCQkJZ290byB5eTIxODsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA9PSAnQycpIGdvdG8geXkxNDc1OwotKwkJCQlpZiAoeXljaCA9PSAnQycpIGdvdG8geXkxNDc3OwotIAkJCQlnb3RvIHl5MTY3OwotIAkJCX0KLSAJCX0gZWxzZSB7Ci1AQCAtMjE2NzQsMTMgKzIxODczLDEzIEBAIHl5MTQ3MzoKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MjE4OwotIAkJCQlnb3RvIHl5MTY3OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdjJykgZ290byB5eTE0NzU7Ci0rCQkJCWlmICh5eWNoIDw9ICdjJykgZ290byB5eTE0Nzc7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKLSAJCQkJZ290byB5eTIxODsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0NzQ6Ci0reXkxNDc2OgotIAl5eWFjY2VwdCA9IDU7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICctJykgewotQEAgLTIxNzA1LDcgKzIxOTA0LDcgQEAgeXkxNDc0OgotIAkJCWdvdG8geXkyMTg7Ci0gCQl9Ci0gCX0KLS15eTE0NzU6Ci0reXkxNDc3OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdIJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjE3MjcsNyArMjE5MjYsNyBAQCB5eTE0NzU6Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE0NzY6Ci0reXkxNDc4OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdYJykgewotQEAgLTIxNzQ0LDE0ICsyMTk0MywxNCBAQCB5eTE0NzY6Ci0gCQkJCWlmICh5eWNoIDw9ICcvJykgZ290byB5eTE3MjsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPT0gJ1InKSBnb3RvIHl5MTQ3MzsKLSsJCQkJaWYgKHl5Y2ggPT0gJ1InKSBnb3RvIHl5MTQ3NTsKLSAJCQkJZ290byB5eTE2NjsKLSAJCQl9Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnYCcpIHsKLSAJCQlpZiAoeXljaCA8PSAnWicpIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ1knKSBnb3RvIHl5MTQ3NDsKLSsJCQkJaWYgKHl5Y2ggPD0gJ1knKSBnb3RvIHl5MTQ3NjsKLSAJCQkJZ290byB5eTE2NjsKLSAJCQl9IGVsc2UgewotIAkJCQlpZiAoeXljaCA9PSAnXycpIGdvdG8geXkxNzI7Ci1AQCAtMjE3NTksMTYgKzIxOTU4LDE2IEBAIHl5MTQ3NjoKLSAJCQl9Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICd4JykgewotLQkJCQlpZiAoeXljaCA9PSAncicpIGdvdG8geXkxNDg4OwotKwkJCQlpZiAoeXljaCA9PSAncicpIGdvdG8geXkxNDkwOwotIAkJCQlnb3RvIHl5MTcxOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICd5JykgZ290byB5eTE0ODk7Ci0rCQkJCWlmICh5eWNoIDw9ICd5JykgZ290byB5eTE0OTE7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDc3OgotK3l5MTQ3OToKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnQycpIHsKLUBAIC0yMTc4Myw3ICsyMTk4Miw3IEBAIHl5MTQ3NzoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTE0Njc7Ci0rCQkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTQ2OTsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIxNzkyLDEzICsyMTk5MSwxMyBAQCB5eTE0Nzc6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzE7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQ4MjsKLSsJCQkJaWYgKHl5Y2ggPD0gJ2QnKSBnb3RvIHl5MTQ4NDsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0Nzg6Ci0reXkxNDgwOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdNJykgewotQEAgLTIxODEzLDcgKzIyMDEyLDcgQEAgeXkxNDc4OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTQ2NDsKLSsJCQlpZiAoeXljaCA8PSAnTicpIGdvdG8geXkxNDY2OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NjsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjE4MjIsMTMgKzIyMDIxLDEzIEBAIHl5MTQ3ODoKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3MTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDc5OwotKwkJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDgxOwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQ3OToKLSt5eTE0ODE6Ci0gCXl5YWNjZXB0ID0gNDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0MnKSB7Ci1AQCAtMjE4NDMsNyArMjIwNDIsNyBAQCB5eTE0Nzk6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNDY1OwotKwkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTE0Njc7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTE5MTsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIxODUyLDEzICsyMjA1MSwxMyBAQCB5eTE0Nzk6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE5MTsKLSAJCQkJZ290byB5eTE3NTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDgwOwotKwkJCQlpZiAoeXljaCA8PSAnZCcpIGdvdG8geXkxNDgyOwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7Ci0gCQkJCWdvdG8geXkxOTE7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDgwOgotK3l5MTQ4MjoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnQCcpIHsKLUBAIC0yMTg3MiwxOCArMjIwNzEsMTggQEAgeXkxNDgwOgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ0EnKSBnb3RvIHl5MTQ2NjsKLSsJCQlpZiAoeXljaCA8PSAnQScpIGdvdG8geXkxNDY4OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0tCQkJaWYgKHl5Y2ggPD0gJ2EnKSBnb3RvIHl5MTQ4MTsKLSsJCQlpZiAoeXljaCA8PSAnYScpIGdvdG8geXkxNDgzOwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQ4MToKLSt5eTE0ODM6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ1gnKSB7Ci1AQCAtMjE5MTMsNyArMjIxMTIsNyBAQCB5eTE0ODE6Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDgyOgotK3l5MTQ4NDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnTScpIHsKLUBAIC0yMTkyOCw3ICsyMjEyNyw3IEBAIHl5MTQ4MjoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE0Njg7Ci0rCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTQ3MDsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIxOTM3LDEzICsyMjEzNiwxMyBAQCB5eTE0ODI6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzU7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQ4MzsKLSsJCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQ4NTsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0ODM6Ci0reXkxNDg1OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdIJykgewotQEAgLTIxOTU4LDcgKzIyMTU3LDcgQEAgeXkxNDgzOgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ0knKSBnb3RvIHl5MTQ2OTsKLSsJCQlpZiAoeXljaCA8PSAnSScpIGdvdG8geXkxNDcxOwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjE5NjcsMTMgKzIyMTY2LDEzIEBAIHl5MTQ4MzoKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3NjsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnaScpIGdvdG8geXkxNDg0OwotKwkJCQlpZiAoeXljaCA8PSAnaScpIGdvdG8geXkxNDg2OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQ4NDoKLSt5eTE0ODY6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0YnKSB7Ci1AQCAtMjE5ODgsNyArMjIxODcsNyBAQCB5eTE0ODQ6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnRycpIGdvdG8geXkxNDcwOwotKwkJCWlmICh5eWNoIDw9ICdHJykgZ290byB5eTE0NzI7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY5OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0yMTk5NywxMyArMjIxOTYsMTMgQEAgeXkxNDg0OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc3OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdnJykgZ290byB5eTE0ODU7Ci0rCQkJCWlmICh5eWNoIDw9ICdnJykgZ290byB5eTE0ODc7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NzsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDg1OgotK3l5MTQ4NzoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnRycpIHsKLUBAIC0yMjAxNywxOCArMjIyMTYsMTggQEAgeXkxNDg1OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ0gnKSBnb3RvIHl5MTQ3MTsKLSsJCQlpZiAoeXljaCA8PSAnSCcpIGdvdG8geXkxNDczOwotIAkJCWlmICh5eWNoID09ICdfJykgZ290byB5eTE3MjsKLSAJCQlnb3RvIHl5MzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPT0gJ2gnKSBnb3RvIHl5MTQ4NjsKLSsJCQlpZiAoeXljaCA9PSAnaCcpIGdvdG8geXkxNDg4OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3ODsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQ4NjoKLSt5eTE0ODg6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLS0JaWYgKHl5Y2ggPT0gJ1QnKSBnb3RvIHl5MTQ3MjsKLSsJaWYgKHl5Y2ggPT0gJ1QnKSBnb3RvIHl5MTQ3NDsKLSAJaWYgKHl5Y2ggIT0gJ3QnKSBnb3RvIHl5MTc5OwotIAl5eWFjY2VwdCA9IDMwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotQEAgLTIyMDM3LDEzICsyMjIzNiwxMyBAQCB5eTE0ODY6Ci0gCX0KLSAJaWYgKHl5Y2ggPD0gJy4nKSB7Ci0gCQlpZiAoeXljaCA9PSAnLScpIGdvdG8geXkxNzI7Ci0tCQlnb3RvIHl5MTQxODsKLSsJCWdvdG8geXkxNDIwOwotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTcyOwotIAkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOwotLQkJZ290byB5eTE0MTg7Ci0rCQlnb3RvIHl5MTQyMDsKLSAJfQotLXl5MTQ4ODoKLSt5eTE0OTA6Ci0gCXl5YWNjZXB0ID0gNTsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJzknKSB7Ci1AQCAtMjIwNzEsNyArMjIyNzAsNyBAQCB5eTE0ODg6Ci0gCQkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTIxODsKLSAJCQkJZ290byB5eTE2NzsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnQycpIGdvdG8geXkxNDc1OwotKwkJCQlpZiAoeXljaCA8PSAnQycpIGdvdG8geXkxNDc3OwotIAkJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7Ci0gCQkJCWdvdG8geXkyMTg7Ci0gCQkJfQotQEAgLTIyMDgxLDEzICsyMjI4MCwxMyBAQCB5eTE0ODg6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTIxODsKLSAJCQkJZ290byB5eTE3NTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnYycpIGdvdG8geXkxNDkwOwotKwkJCQlpZiAoeXljaCA8PSAnYycpIGdvdG8geXkxNDkyOwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7Ci0gCQkJCWdvdG8geXkyMTg7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNDg5OgotK3l5MTQ5MToKLSAJeXlhY2NlcHQgPSA1OwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnLicpIHsKLUBAIC0yMjEyMiw3ICsyMjMyMSw3IEBAIHl5MTQ4OToKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE0OTA6Ci0reXkxNDkyOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdHJykgewotQEAgLTIyMTUyLDcgKzIyMzUxLDcgQEAgeXkxNDkwOgotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQ5MToKLSt5eTE0OTM6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ1cnKSB7Ci0gCQlpZiAoeXljaCA8PSAnTicpIHsKLUBAIC0yMjE2MCwyOSArMjIzNTksMjkgQEAgeXkxNDkxOgotIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2NjsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ08nKSBnb3RvIHl5MTQ5OTsKLSsJCQlpZiAoeXljaCA8PSAnTycpIGdvdG8geXkxNTAxOwotIAkJCWlmICh5eWNoIDw9ICdVJykgZ290byB5eTE2NjsKLS0JCQlpZiAoeXljaCA8PSAnVicpIGdvdG8geXkxNTAwOwotLQkJCWdvdG8geXkxNDk3OwotKwkJCWlmICh5eWNoIDw9ICdWJykgZ290byB5eTE1MDI7Ci0rCQkJZ290byB5eTE0OTk7Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnbycpIHsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNjY7Ci0tCQkJZ290byB5eTE0OTk7Ci0rCQkJZ290byB5eTE1MDE7Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICd2JykgewotIAkJCQlpZiAoeXljaCA8PSAndScpIGdvdG8geXkxNjY7Ci0tCQkJCWdvdG8geXkxNTAwOwotKwkJCQlnb3RvIHl5MTUwMjsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAndycpIGdvdG8geXkxNDk3OwotKwkJCQlpZiAoeXljaCA8PSAndycpIGdvdG8geXkxNDk5OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTQ5MjoKLSt5eTE0OTQ6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ1gnKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMjE5MSw3ICsyMjM5MCw3IEBAIHl5MTQ5MjoKLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKLSAJCQlpZiAoeXljaCA8PSAnVycpIGdvdG8geXkxNjY7Ci0tCQkJZ290byB5eTE0OTY7Ci0rCQkJZ290byB5eTE0OTg7Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAndycpIHsKLUBAIC0yMjE5OSwxMiArMjIzOTgsMTIgQEAgeXkxNDkyOgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2NjsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ3gnKSBnb3RvIHl5MTQ5NjsKLSsJCQlpZiAoeXljaCA8PSAneCcpIGdvdG8geXkxNDk4OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NjsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQ5MzoKLSt5eTE0OTU6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ04nKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMjIyMCwxMiArMjI0MTksMTIgQEAgeXkxNDkzOgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2NjsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTQ5NDsKLSsJCQlpZiAoeXljaCA8PSAnbicpIGdvdG8geXkxNDk2OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NjsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQ5NDoKLSt5eTE0OTY6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ1QnKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMjI0MSwxMiArMjI0NDAsMTIgQEAgeXkxNDk0OgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2NzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQ5NTsKLSsJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDk3OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQ5NToKLSt5eTE0OTc6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ0gnKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMjI2OCw3ICsyMjQ2Nyw3IEBAIHl5MTQ5NToKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQ5NjoKLSt5eTE0OTg6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPD0gJ1QnKSB7Ci0gCQlpZiAoeXljaCA8PSAnKScpIHsKLUBAIC0yMjI3Nyw3ICsyMjQ3Niw3IEBAIHl5MTQ5NjoKLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MzsKLSAJCQlpZiAoeXljaCA8PSAnUycpIGdvdG8geXkxNjc7Ci0tCQkJZ290byB5eTE0MjY7Ci0rCQkJZ290byB5eTE0Mjg7Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAncycpIHsKLUBAIC0yMjI4NSwyMSArMjI0ODQsMjIgQEAgeXkxNDk2OgotIAkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE2NzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQyNjsKLSsJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNDI4OwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTQ5NzoKLSt5eTE0OTk6Ci0gCSsrWVlDVVJTT1I7Ci0gCWlmICgoeXljaCA9ICpZWUNVUlNPUikgPD0gJ0AnKSB7Ci0gCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7Ci0tCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxNDk4OwotKwkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTUwMDsKLSAJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2NzsKLSAJfQotLXl5MTQ5ODoKLSt5eTE1MDA6Ci0rI2xpbmUgOTgyICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJREVCVUdfT1VUUFVUKCJub3ciKTsKLSAJCVRJTUVMSUJfSU5JVDsKLUBAIC0yMjMwNyw3ICsyMjUwNyw4IEBAIHl5MTQ5ODoKLSAJCVRJTUVMSUJfREVJTklUOwotIAkJcmV0dXJuIFRJTUVMSUJfUkVMQVRJVkU7Ci0gCX0KLS15eTE0OTk6Ci0rI2xpbmUgMjI1MTEgImV4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLmMiCi0reXkxNTAxOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdOJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjIzMTYsNyArMjI1MTcsNyBAQCB5eTE0OTk6Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTM7Ci0gCQkJaWYgKHl5Y2ggPD0gJ00nKSBnb3RvIHl5MTY3OwotLQkJCWdvdG8geXkxNTA1OwotKwkJCWdvdG8geXkxNTA3OwotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ20nKSB7Ci1AQCAtMjIzMjQsMTIgKzIyNTI1LDEyIEBAIHl5MTQ5OToKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE1MDU7Ci0rCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTUwNzsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE1MDA6Ci0reXkxNTAyOgotIAl5eWFjY2VwdCA9IDU7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICcvJykgewotQEAgLTIyMzY0LDEzICsyMjU2NSwxMyBAQCB5eTE1MDA6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTIxODsKLSAJCQkJZ290byB5eTE2NzsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnZScpIGdvdG8geXkxNTAxOwotKwkJCQlpZiAoeXljaCA8PSAnZScpIGdvdG8geXkxNTAzOwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJCWdvdG8geXkyMTg7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNTAxOgotK3l5MTUwMzoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnTScpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTIyMzg2LDEyICsyMjU4NywxMiBAQCB5eTE1MDE6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY4OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnbScpIGdvdG8geXkxNTAyOwotKwkJCWlmICh5eWNoIDw9ICdtJykgZ290byB5eTE1MDQ7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY4OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNTAyOgotK3l5MTUwNDoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA8PSAnQicpIHsKLSAJCWlmICh5eWNoIDw9ICcpJykgewotQEAgLTIyNDA3LDM2ICsyMjYwOCwzNyBAQCB5eTE1MDI6Ci0gCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTY5OwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA8PSAnYicpIGdvdG8geXkxNTAzOwotKwkJCWlmICh5eWNoIDw9ICdiJykgZ290byB5eTE1MDU7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTY5OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNTAzOgotK3l5MTUwNToKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnRCcpIHsKLSAJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKLSAJCWdvdG8geXkzOwotIAl9IGVsc2UgewotLQkJaWYgKHl5Y2ggPD0gJ0UnKSBnb3RvIHl5MTUwNDsKLSsJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE1MDY7Ci0gCQlpZiAoeXljaCAhPSAnZScpIGdvdG8geXkzOwotIAl9Ci0teXkxNTA0OgotK3l5MTUwNjoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotIAlpZiAoeXljaCA9PSAnUicpIGdvdG8geXkyMjk7Ci0gCWlmICh5eWNoID09ICdyJykgZ290byB5eTIyOTsKLSAJZ290byB5eTU2OwotLXl5MTUwNToKLSt5eTE1MDc6Ci0gCSsrWVlDVVJTT1I7Ci0gCWlmICgoeXljaCA9ICpZWUNVUlNPUikgPD0gJ0AnKSB7Ci0gCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjg7Ci0tCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxNTA2OwotKwkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTUwODsKLSAJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE2ODsKLSAJfQotLXl5MTUwNjoKLSt5eTE1MDg6Ci0rI2xpbmUgOTkxICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAJewotIAkJREVCVUdfT1VUUFVUKCJub29uIik7Ci0gCQlUSU1FTElCX0lOSVQ7Ci1AQCAtMjI0NDcsNyArMjI2NDksOCBAQCB5eTE1MDY6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX1JFTEFUSVZFOwotIAl9Ci0teXkxNTA3OgotKyNsaW5lIDIyNjUzICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotK3l5MTUwOToKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnVicpIHsKLUBAIC0yMjQ2NSwxNSArMjI2NjgsMTUgQEAgeXkxNTA3OgotIAkJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTY2OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTE0OTk7Ci0rCQkJCWlmICh5eWNoIDw9ICdPJykgZ290byB5eTE1MDE7Ci0gCQkJCWlmICh5eWNoIDw9ICdVJykgZ290byB5eTE2NjsKLS0JCQkJZ290byB5eTE1MDA7Ci0rCQkJCWdvdG8geXkxNTAyOwotIAkJCX0KLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICduJykgewotIAkJCWlmICh5eWNoIDw9ICdeJykgewotLQkJCQlpZiAoeXljaCA8PSAnVycpIGdvdG8geXkxNDk3OwotKwkJCQlpZiAoeXljaCA8PSAnVycpIGdvdG8geXkxNDk5OwotIAkJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0gZWxzZSB7Ci1AQCAtMjI0ODMsMTcgKzIyNjg2LDE3IEBAIHl5MTUwNzoKLSAJCQl9Ci0gCQl9IGVsc2UgewotIAkJCWlmICh5eWNoIDw9ICd2JykgewotLQkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxNTE0OwotKwkJCQlpZiAoeXljaCA8PSAnbycpIGdvdG8geXkxNTE2OwotIAkJCQlpZiAoeXljaCA8PSAndScpIGdvdG8geXkxNzE7Ci0tCQkJCWdvdG8geXkxNTE1OwotKwkJCQlnb3RvIHl5MTUxNzsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAndycpIGdvdG8geXkxNTEzOwotKwkJCQlpZiAoeXljaCA8PSAndycpIGdvdG8geXkxNTE1OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzE7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTUwODoKLSt5eTE1MTA6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ1cnKSB7Ci1AQCAtMjI1MDgsNyArMjI3MTEsNyBAQCB5eTE1MDg6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnWCcpIGdvdG8geXkxNDk2OwotKwkJCWlmICh5eWNoIDw9ICdYJykgZ290byB5eTE0OTg7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY2OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0yMjUxNywxMyArMjI3MjAsMTMgQEAgeXkxNTA4OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTcxOwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICd4JykgZ290byB5eTE1MTI7Ci0rCQkJCWlmICh5eWNoIDw9ICd4JykgZ290byB5eTE1MTQ7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3MTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNTA5OgotK3l5MTUxMToKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnTScpIHsKLUBAIC0yMjUzOCw3ICsyMjc0MSw3IEBAIHl5MTUwOToKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE0OTQ7Ci0rCQkJaWYgKHl5Y2ggPD0gJ04nKSBnb3RvIHl5MTQ5NjsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIyNTQ3LDEzICsyMjc1MCwxMyBAQCB5eTE1MDk6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzE7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTUxMDsKLSsJCQkJaWYgKHl5Y2ggPD0gJ24nKSBnb3RvIHl5MTUxMjsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE1MTA6Ci0reXkxNTEyOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdTJykgewotQEAgLTIyNTY4LDcgKzIyNzcxLDcgQEAgeXkxNTEwOgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTQ5NTsKLSsJCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxNDk3OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjI1NzcsMTMgKzIyNzgwLDEzIEBAIHl5MTUxMDoKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3NTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNTExOwotKwkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNTEzOwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTUxMToKLSt5eTE1MTM6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0cnKSB7Ci1AQCAtMjI2MTMsNyArMjI4MTYsNyBAQCB5eTE1MTE6Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNTEyOgotK3l5MTUxNDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUycpIHsKLUBAIC0yMjYyOCw3ICsyMjgzMSw3IEBAIHl5MTUxMjoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdUJykgZ290byB5eTE0MjY7Ci0rCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTQyODsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjc7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIyNjM3LDM2ICsyMjg0MCwzNiBAQCB5eTE1MTI6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzU7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQ1ODsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTQ2MDsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc1OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE1MTM6Ci0reXkxNTE1OgotIAl5eWFjY2VwdCA9IDMxOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnLycpIHsKLSAJCWlmICh5eWNoIDw9ICcsJykgewotIAkJCWlmICh5eWNoID09ICcpJykgZ290byB5eTE2NDsKLS0JCQlnb3RvIHl5MTQ5ODsKLSsJCQlnb3RvIHl5MTUwMDsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPT0gJy4nKSBnb3RvIHl5MTQ5ODsKLSsJCQlpZiAoeXljaCA9PSAnLicpIGdvdG8geXkxNTAwOwotIAkJCWdvdG8geXkxNzI7Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXicpIHsKLS0JCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkxNDk4OwotKwkJCWlmICh5eWNoIDw9ICdAJykgZ290byB5eTE1MDA7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OwotLQkJCWdvdG8geXkxNDk4OwotKwkJCWdvdG8geXkxNTAwOwotIAkJfSBlbHNlIHsKLSAJCQlpZiAoeXljaCA8PSAnXycpIGdvdG8geXkxNzI7Ci0tCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTQ5ODsKLSsJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkxNTAwOwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLS0JCQlnb3RvIHl5MTQ5ODsKLSsJCQlnb3RvIHl5MTUwMDsKLSAJCX0KLSAJfQotLXl5MTUxNDoKLSt5eTE1MTY6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ00nKSB7Ci1AQCAtMjI2ODEsNyArMjI4ODQsNyBAQCB5eTE1MTQ6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnTicpIGdvdG8geXkxNTA1OwotKwkJCWlmICh5eWNoIDw9ICdOJykgZ290byB5eTE1MDc7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY3OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0yMjY5MCwxMyArMjI4OTMsMTMgQEAgeXkxNTE0OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE1MjA7Ci0rCQkJCWlmICh5eWNoIDw9ICduJykgZ290byB5eTE1MjI7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNTE1OgotK3l5MTUxNzoKLSAJeXlhY2NlcHQgPSA1OwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnOScpIHsKLUBAIC0yMjcyNCw3ICsyMjkyNyw3IEBAIHl5MTUxNToKLSAJCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MjE4OwotIAkJCQlnb3RvIHl5MTY3OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE1MDE7Ci0rCQkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE1MDM7Ci0gCQkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKLSAJCQkJZ290byB5eTIxODsKLSAJCQl9Ci1AQCAtMjI3MzQsMTMgKzIyOTM3LDEzIEBAIHl5MTUxNToKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MjE4OwotIAkJCQlnb3RvIHl5MTc1OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MTY7Ci0rCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MTg7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NTsKLSAJCQkJZ290byB5eTIxODsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE1MTY6Ci0reXkxNTE4OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdMJykgewotQEAgLTIyNzU1LDcgKzIyOTU4LDcgQEAgeXkxNTE2OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ00nKSBnb3RvIHl5MTUwMjsKLSsJCQlpZiAoeXljaCA8PSAnTScpIGdvdG8geXkxNTA0OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjI3NjQsMTMgKzIyOTY3LDEzIEBAIHl5MTUxNjoKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3NjsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAnbScpIGdvdG8geXkxNTE3OwotKwkJCQlpZiAoeXljaCA8PSAnbScpIGdvdG8geXkxNTE5OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTUxNzoKLSt5eTE1MTk6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0EnKSB7Ci1AQCAtMjI3ODUsNyArMjI5ODgsNyBAQCB5eTE1MTc6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnQicpIGdvdG8geXkxNTAzOwotKwkJCWlmICh5eWNoIDw9ICdCJykgZ290byB5eTE1MDU7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY5OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0yMjc5NCwxMyArMjI5OTcsMTMgQEAgeXkxNTE3OgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc3OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdiJykgZ290byB5eTE1MTg7Ci0rCQkJCWlmICh5eWNoIDw9ICdiJykgZ290byB5eTE1MjA7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NzsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNTE4OgotK3l5MTUyMDoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnRCcpIHsKLUBAIC0yMjgxNCw0NCArMjMwMTcsNDQgQEAgeXkxNTE4OgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ2AnKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ0UnKSBnb3RvIHl5MTUwNDsKLSsJCQlpZiAoeXljaCA8PSAnRScpIGdvdG8geXkxNTA2OwotIAkJCWlmICh5eWNoID09ICdfJykgZ290byB5eTE3MjsKLSAJCQlnb3RvIHl5MzsKLSAJCX0gZWxzZSB7Ci0tCQkJaWYgKHl5Y2ggPT0gJ2UnKSBnb3RvIHl5MTUxOTsKLSsJCQlpZiAoeXljaCA9PSAnZScpIGdvdG8geXkxNTIxOwotIAkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3ODsKLSAJCQlnb3RvIHl5MzsKLSAJCX0KLSAJfQotLXl5MTUxOToKLSt5eTE1MjE6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLSAJaWYgKHl5Y2ggPT0gJ1InKSBnb3RvIHl5MjI5OwotIAlpZiAoeXljaCA9PSAncicpIGdvdG8geXkzNDE7Ci0gCWdvdG8geXkxNzk7Ci0teXkxNTIwOgotK3l5MTUyMjoKLSAJeXlhY2NlcHQgPSAzMjsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJy8nKSB7Ci0gCQlpZiAoeXljaCA8PSAnLCcpIHsKLSAJCQlpZiAoeXljaCA9PSAnKScpIGdvdG8geXkxNjQ7Ci0tCQkJZ290byB5eTE1MDY7Ci0rCQkJZ290byB5eTE1MDg7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoID09ICcuJykgZ290byB5eTE1MDY7Ci0rCQkJaWYgKHl5Y2ggPT0gJy4nKSBnb3RvIHl5MTUwODsKLSAJCQlnb3RvIHl5MTcyOwotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ14nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ0AnKSBnb3RvIHl5MTUwNjsKLSsJCQlpZiAoeXljaCA8PSAnQCcpIGdvdG8geXkxNTA4OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2ODsKLS0JCQlnb3RvIHl5MTUwNjsKLSsJCQlnb3RvIHl5MTUwODsKLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKHl5Y2ggPD0gJ18nKSBnb3RvIHl5MTcyOwotLQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTE1MDY7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MTUwODsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzY7Ci0tCQkJZ290byB5eTE1MDY7Ci0rCQkJZ290byB5eTE1MDg7Ci0gCQl9Ci0gCX0KLS15eTE1MjE6Ci0reXkxNTIzOgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdTJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjI4NjcsMTIgKzIzMDcwLDEyIEBAIHl5MTUyMToKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjY7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdzJykgZ290byB5eTE1MjI7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTUyNDsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjY7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE1MjI6Ci0reXkxNTI0OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdUJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjI4ODgsMTIgKzIzMDkxLDEyIEBAIHl5MTUyMjoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjc7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICd0JykgZ290byB5eTE1MjM7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3QnKSBnb3RvIHl5MTUyNTsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjc7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE1MjM6Ci0reXkxNTI1OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdFJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjI5MDksMTIgKzIzMTEyLDEyIEBAIHl5MTUyMzoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjg7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MjQ7Ci0rCQkJaWYgKHl5Y2ggPD0gJ2UnKSBnb3RvIHl5MTUyNjsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjg7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE1MjQ6Ci0reXkxNTI2OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0gCWlmICh5eWNoIDw9ICdSJykgewotIAkJaWYgKHl5Y2ggPD0gJyknKSB7Ci1AQCAtMjI5MzAsMzIgKzIzMTMzLDMzIEBAIHl5MTUyNDoKLSAJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNjk7Ci0gCQl9IGVsc2UgewotLQkJCWlmICh5eWNoIDw9ICdyJykgZ290byB5eTE1MjU7Ci0rCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTUyNzsKLSAJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNjk7Ci0gCQkJZ290byB5eTM7Ci0gCQl9Ci0gCX0KLS15eTE1MjU6Ci0reXkxNTI3OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdDJykgewotIAkJaWYgKHl5Y2ggPT0gJyknKSBnb3RvIHl5MTY0OwotIAkJZ290byB5eTM7Ci0gCX0gZWxzZSB7Ci0tCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNTI2OwotKwkJaWYgKHl5Y2ggPD0gJ0QnKSBnb3RvIHl5MTUyODsKLSAJCWlmICh5eWNoICE9ICdkJykgZ290byB5eTM7Ci0gCX0KLS15eTE1MjY6Ci0reXkxNTI4OgotIAl5eWNoID0gKisrWVlDVVJTT1I7Ci0tCWlmICh5eWNoID09ICdBJykgZ290byB5eTE1Mjc7Ci0rCWlmICh5eWNoID09ICdBJykgZ290byB5eTE1Mjk7Ci0gCWlmICh5eWNoICE9ICdhJykgZ290byB5eTU2OwotLXl5MTUyNzoKLSt5eTE1Mjk6Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLS0JaWYgKHl5Y2ggPT0gJ1knKSBnb3RvIHl5MTUyODsKLSsJaWYgKHl5Y2ggPT0gJ1knKSBnb3RvIHl5MTUzMDsKLSAJaWYgKHl5Y2ggIT0gJ3knKSBnb3RvIHl5NTY7Ci0teXkxNTI4OgotK3l5MTUzMDoKLSAJKytZWUNVUlNPUjsKLS15eTE1Mjk6Ci0reXkxNTMxOgotKyNsaW5lIDk3MCAiZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUiCi0gCXsKLSAJCURFQlVHX09VVFBVVCgieWVzdGVyZGF5Iik7Ci0gCQlUSU1FTElCX0lOSVQ7Ci1AQCAtMjI5NjYsNyArMjMxNzAsOCBAQCB5eTE1Mjk6Ci0gCQlUSU1FTElCX0RFSU5JVDsKLSAJCXJldHVybiBUSU1FTElCX1JFTEFUSVZFOwotIAl9Ci0teXkxNTMwOgotKyNsaW5lIDIzMTc0ICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5jIgotK3l5MTUzMjoKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUicpIHsKLUBAIC0yMjk4MSw3ICsyMzE4Niw3IEBAIHl5MTUzMDoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdTJykgZ290byB5eTE1MjI7Ci0rCQkJaWYgKHl5Y2ggPD0gJ1MnKSBnb3RvIHl5MTUyNDsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIyOTkwLDEzICsyMzE5NSwxMyBAQCB5eTE1MzA6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzE7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTUzMTsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3MnKSBnb3RvIHl5MTUzMzsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTcxOwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE1MzE6Ci0reXkxNTMzOgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdTJykgewotQEAgLTIzMDExLDcgKzIzMjE2LDcgQEAgeXkxNTMxOgotIAkJfQotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJ18nKSB7Ci0tCQkJaWYgKHl5Y2ggPD0gJ1QnKSBnb3RvIHl5MTUyMzsKLSsJCQlpZiAoeXljaCA8PSAnVCcpIGdvdG8geXkxNTI1OwotIAkJCWlmICh5eWNoIDw9ICdaJykgZ290byB5eTE2NzsKLSAJCQlpZiAoeXljaCA8PSAnXicpIGdvdG8geXkzOwotIAkJCWdvdG8geXkxNzI7Ci1AQCAtMjMwMjAsMTMgKzIzMjI1LDEzIEBAIHl5MTUzMToKLSAJCQkJaWYgKHl5Y2ggPD0gJ2AnKSBnb3RvIHl5MzsKLSAJCQkJZ290byB5eTE3NTsKLSAJCQl9IGVsc2UgewotLQkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNTMyOwotKwkJCQlpZiAoeXljaCA8PSAndCcpIGdvdG8geXkxNTM0OwotIAkJCQlpZiAoeXljaCA8PSAneicpIGdvdG8geXkxNzU7Ci0gCQkJCWdvdG8geXkzOwotIAkJCX0KLSAJCX0KLSAJfQotLXl5MTUzMjoKLSt5eTE1MzQ6Ci0gCXl5YWNjZXB0ID0gMDsKLSAJeXljaCA9ICooWVlNQVJLRVIgPSArK1lZQ1VSU09SKTsKLSAJaWYgKHl5Y2ggPD0gJ0QnKSB7Ci1AQCAtMjMwNDEsNyArMjMyNDYsNyBAQCB5eTE1MzI6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnXycpIHsKLS0JCQlpZiAoeXljaCA8PSAnRScpIGdvdG8geXkxNTI0OwotKwkJCWlmICh5eWNoIDw9ICdFJykgZ290byB5eTE1MjY7Ci0gCQkJaWYgKHl5Y2ggPD0gJ1onKSBnb3RvIHl5MTY4OwotIAkJCWlmICh5eWNoIDw9ICdeJykgZ290byB5eTM7Ci0gCQkJZ290byB5eTE3MjsKLUBAIC0yMzA1MCwxMyArMjMyNTUsMTMgQEAgeXkxNTMyOgotIAkJCQlpZiAoeXljaCA8PSAnYCcpIGdvdG8geXkzOwotIAkJCQlnb3RvIHl5MTc2OwotIAkJCX0gZWxzZSB7Ci0tCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MzM7Ci0rCQkJCWlmICh5eWNoIDw9ICdlJykgZ290byB5eTE1MzU7Ci0gCQkJCWlmICh5eWNoIDw9ICd6JykgZ290byB5eTE3NjsKLSAJCQkJZ290byB5eTM7Ci0gCQkJfQotIAkJfQotIAl9Ci0teXkxNTMzOgotK3l5MTUzNToKLSAJeXlhY2NlcHQgPSAwOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotIAlpZiAoeXljaCA8PSAnUScpIHsKLUBAIC0yMzA3MSw3ICsyMzI3Niw3IEBAIHl5MTUzMzoKLSAJCX0KLSAJfSBlbHNlIHsKLSAJCWlmICh5eWNoIDw9ICdfJykgewotLQkJCWlmICh5eWNoIDw9ICdSJykgZ290byB5eTE1MjU7Ci0rCQkJaWYgKHl5Y2ggPD0gJ1InKSBnb3RvIHl5MTUyNzsKLSAJCQlpZiAoeXljaCA8PSAnWicpIGdvdG8geXkxNjk7Ci0gCQkJaWYgKHl5Y2ggPD0gJ14nKSBnb3RvIHl5MzsKLSAJCQlnb3RvIHl5MTcyOwotQEAgLTIzMDgwLDEzICsyMzI4NSwxMyBAQCB5eTE1MzM6Ci0gCQkJCWlmICh5eWNoIDw9ICdgJykgZ290byB5eTM7Ci0gCQkJCWdvdG8geXkxNzc7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTUzNDsKLSsJCQkJaWYgKHl5Y2ggPD0gJ3InKSBnb3RvIHl5MTUzNjsKLSAJCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc3OwotIAkJCQlnb3RvIHl5MzsKLSAJCQl9Ci0gCQl9Ci0gCX0KLS15eTE1MzQ6Ci0reXkxNTM2OgotIAl5eWFjY2VwdCA9IDA7Ci0gCXl5Y2ggPSAqKFlZTUFSS0VSID0gKytZWUNVUlNPUik7Ci0gCWlmICh5eWNoIDw9ICdDJykgewotQEAgLTIzMTAwLDIxICsyMzMwNSwyMSBAQCB5eTE1MzQ6Ci0gCQl9Ci0gCX0gZWxzZSB7Ci0gCQlpZiAoeXljaCA8PSAnYCcpIHsKLS0JCQlpZiAoeXljaCA8PSAnRCcpIGdvdG8geXkxNTI2OwotKwkJCWlmICh5eWNoIDw9ICdEJykgZ290byB5eTE1Mjg7Ci0gCQkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOwotIAkJCWdvdG8geXkzOwotIAkJfSBlbHNlIHsKLS0JCQlpZiAoeXljaCA9PSAnZCcpIGdvdG8geXkxNTM1OwotKwkJCWlmICh5eWNoID09ICdkJykgZ290byB5eTE1Mzc7Ci0gCQkJaWYgKHl5Y2ggPD0gJ3onKSBnb3RvIHl5MTc4OwotIAkJCWdvdG8geXkzOwotIAkJfQotIAl9Ci0teXkxNTM1OgotK3l5MTUzNzoKLSAJeXljaCA9ICorK1lZQ1VSU09SOwotLQlpZiAoeXljaCA9PSAnQScpIGdvdG8geXkxNTI3OwotKwlpZiAoeXljaCA9PSAnQScpIGdvdG8geXkxNTI5OwotIAlpZiAoeXljaCAhPSAnYScpIGdvdG8geXkxNzk7Ci0gCXl5Y2ggPSAqKytZWUNVUlNPUjsKLS0JaWYgKHl5Y2ggPT0gJ1knKSBnb3RvIHl5MTUyODsKLSsJaWYgKHl5Y2ggPT0gJ1knKSBnb3RvIHl5MTUzMDsKLSAJaWYgKHl5Y2ggIT0gJ3knKSBnb3RvIHl5MTc5OwotIAl5eWFjY2VwdCA9IDMzOwotIAl5eWNoID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOwotQEAgLTIzMTIzLDEzICsyMzMyOCwxNCBAQCB5eTE1MzU6Ci0gCX0KLSAJaWYgKHl5Y2ggPD0gJy4nKSB7Ci0gCQlpZiAoeXljaCA9PSAnLScpIGdvdG8geXkxNzI7Ci0tCQlnb3RvIHl5MTUyOTsKLSsJCWdvdG8geXkxNTMxOwotIAl9IGVsc2UgewotIAkJaWYgKHl5Y2ggPD0gJy8nKSBnb3RvIHl5MTcyOwotIAkJaWYgKHl5Y2ggPT0gJ18nKSBnb3RvIHl5MTcyOwotLQkJZ290byB5eTE1Mjk7Ci0rCQlnb3RvIHl5MTUzMTsKLSAJfQotIH0KLSsjbGluZSAxNzcyICJleHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZSIKLSAKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvZXh0L2RhdGUvbGliL3BhcnNlX2RhdGUucmUgYi9leHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZQotaW5kZXggNzRkOWVhMy4uZjI2ZTI3NiAxMDA2NDQKLS0tLSBhL2V4dC9kYXRlL2xpYi9wYXJzZV9kYXRlLnJlCi0rKysgYi9leHQvZGF0ZS9saWIvcGFyc2VfZGF0ZS5yZQotQEAgLTkzMSw4ICs5MzEsOCBAQCBpc293ZWVrICAgICAgICAgID0geWVhcjQgIi0iPyAiVyIgd2Vla29meWVhcjsKLSBleGlmICAgICAgICAgICAgID0geWVhcjQgIjoiIG1vbnRobHogIjoiIGRheWx6ICIgIiBob3VyMjRseiAiOiIgbWludXRlbHogIjoiIHNlY29uZGx6OwotIGZpcnN0ZGF5b2YgICAgICAgPSAnZmlyc3QgZGF5IG9mJzsKLSBsYXN0ZGF5b2YgICAgICAgID0gJ2xhc3QgZGF5IG9mJzsKLS1iYWNrb2YgICAgICAgICAgID0gJ2JhY2sgb2YgJyBob3VyMjQgc3BhY2U/IG1lcmlkaWFuPzsKLS1mcm9udG9mICAgICAgICAgID0gJ2Zyb250IG9mICcgaG91cjI0IHNwYWNlPyBtZXJpZGlhbj87Ci0rYmFja29mICAgICAgICAgICA9ICdiYWNrIG9mICcgaG91cjI0IChzcGFjZT8gbWVyaWRpYW4pPzsKLStmcm9udG9mICAgICAgICAgID0gJ2Zyb250IG9mICcgaG91cjI0IChzcGFjZT8gbWVyaWRpYW4pPzsKLSAKLSAvKiBDb21tb24gTG9nIEZvcm1hdDogMTAvT2N0LzIwMDA6MTM6NTU6MzYgLTA3MDAgKi8KLSBjbGYgICAgICAgICAgICAgID0gZGF5ICIvIiBtb250aGFiYnIgIi8iIHllYXI0ICI6IiBob3VyMjRseiAiOiIgbWludXRlbHogIjoiIHNlY29uZGx6IHNwYWNlIHR6Y29ycmVjdGlvbjsKLWRpZmYgLS1naXQgYS9leHQvZGF0ZS90ZXN0cy9idWc1MzQzN192YXIzLnBocHQgYi9leHQvZGF0ZS90ZXN0cy9idWc1MzQzN192YXIzLnBocHQKLWluZGV4IDhmNDhiMWIuLjhkY2Q0YzggMTAwNjQ0Ci0tLS0gYS9leHQvZGF0ZS90ZXN0cy9idWc1MzQzN192YXIzLnBocHQKLSsrKyBiL2V4dC9kYXRlL3Rlc3RzL2J1ZzUzNDM3X3ZhcjMucGhwdAotQEAgLTQwLDcgKzQwLDcgQEAgb2JqZWN0KERhdGVJbnRlcnZhbCkjJWQgKDE2KSB7Ci0gICBbInNwZWNpYWxfYW1vdW50Il09PgotICAgaW50KC0xKQotICAgWyJoYXZlX3dlZWtkYXlfcmVsYXRpdmUiXT0+Ci0tICBpbnQoOSkKLSsgIGludCgwKQotICAgWyJoYXZlX3NwZWNpYWxfcmVsYXRpdmUiXT0+Ci0gICBpbnQoMCkKLSAgIFsiZiJdPT4KLWRpZmYgLS1naXQgYS9leHQvd2RkeC90ZXN0cy9idWc3NTA1NS5waHB0IGIvZXh0L3dkZHgvdGVzdHMvYnVnNzUwNTUucGhwdAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjI5NTYyODQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2V4dC93ZGR4L3Rlc3RzL2J1Zzc1MDU1LnBocHQKLUBAIC0wLDAgKzEsMjAgQEAKLSstLVRFU1QtLQotK0J1ZyAjNzUwNTUgT3V0LU9mLUJvdW5kcyBSZWFkIGluIHRpbWVsaWJfbWVyaWRpYW4oKQotKy0tU0tJUElGLS0KLSs8P3BocCBpZiAoIWV4dGVuc2lvbl9sb2FkZWQoIndkZHgiKSkgcHJpbnQgInNraXAiOyA/PgotKy0tRklMRS0tCi0rPD9waHAKLSsKLSskZmlsZV9zdHIgPSBkaXJuYW1lKF9fRklMRV9fKSAuICIvYnVnNzUwNTUud2RkeCI7Ci0rCi0rJHdkZHhfc3RyID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGVfc3RyKTsKLStwcmludCBzdHJsZW4oJHdkZHhfc3RyKSAuICIgYnl0ZXMgcmVhZC5cbiI7Ci0rCi0rdmFyX2R1bXAod2RkeF9kZXNlcmlhbGl6ZSgkd2RkeF9zdHIpKTsKLSs/PgotKy0tRVhQRUNULS0KLSszMjMgYnl0ZXMgcmVhZC4KLSthcnJheSgxKSB7Ci0rICBbImFEYXRlVGltZSJdPT4KLSsgIHN0cmluZygxMikgImZyT050IG9mIDAgMCIKLSt9Ci1kaWZmIC0tZ2l0IGEvZXh0L3dkZHgvdGVzdHMvYnVnNzUwNTUud2RkeCBiL2V4dC93ZGR4L3Rlc3RzL2J1Zzc1MDU1LndkZHgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42NDkzMzUyCi0tLS0gL2Rldi9udWxsCi0rKysgYi9leHQvd2RkeC90ZXN0cy9idWc3NTA1NS53ZGR4Ci1AQCAtMCwwICsxLDEzIEBACi0rPD94bWwgdmVyc2lvbj0nMS4wJz8+Ci0rPCFET0NUWVBFIHdkZHhQYWNrZXQgU1lTVEVNICd3ZGR4XzAxMDAuZHRkJz4KLSs8d2RkeFBhY2tldCB2ZXJzaW9uPScxLjAnPgotKzxoZWFkZXIvPgotKwk8ZGF0YT4KLSsgICAgICAgIAk8c3RydWN0PgotKyAgICAgICAgICAgICAgICAgICAgPHZhciBuYW1lPSdhRGF0ZVRpbWUnPgotKyAgICAgICAgICAgICAgICAgICAgICAgICA8ZGF0ZVRpbWU+ZnJPTnQgb2YgMCAwPC9kYXRlVGltZT4KLSsgICAgICAgICAgICAgICAgICAgICA8L3Zhcj4KLSsgICAgICAgICAgICAgICAgPC9zdHJ1Y3Q+Ci0rCTwvZGF0YT4KLSs8L3dkZHhQYWNrZXQ+Ci0rCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLTcuMS45L2NoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC03LjEuOS9jaGFuZ2UtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzljMzM0Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLTcuMS45L2NoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotW1BBVENIXSBjb25maWcubTQ6IGNoYW5nZSBBQ19UUllfUlVOIHRvIEFDX1RSWV9MSU5LCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1BQ19UUllfUlVOIGlzIG5vdCBzdWl0YWJsZSBmb3IgY3Jvc3MtY29tcGlsZQotCi1TaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBleHQvZmlsZWluZm8vY29uZmlnLm00IHwgMzEgKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZXh0L2ZpbGVpbmZvL2NvbmZpZy5tNCBiL2V4dC9maWxlaW5mby9jb25maWcubTQKLWluZGV4IDdlOThkNjIuLjhhOGVhMGUgMTAwNjQ0Ci0tLS0gYS9leHQvZmlsZWluZm8vY29uZmlnLm00Ci0rKysgYi9leHQvZmlsZWluZm8vY29uZmlnLm00Ci1AQCAtMTQsMzEgKzE0LDEyIEBAIGlmIHRlc3QgIiRQSFBfRklMRUlORk8iICE9ICJubyI7IHRoZW4KLSAgICAgbGlibWFnaWMvcmVhZGNkZi5jIGxpYm1hZ2ljL3NvZnRtYWdpYy5jIgotIAotICAgQUNfTVNHX0NIRUNLSU5HKFtmb3Igc3RyY2FzZXN0cl0pCi0tICBBQ19UUllfUlVOKFsKLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPHN0cmluZ3MuaD4KLS0jaW5jbHVkZSA8c3RkbGliLmg+Ci0tCi0taW50IG1haW4odm9pZCkKLS17Ci0tICAgICAgICBjaGFyICpzMCwgKnMxLCAqcmV0OwotLQotLSAgICAgICAgczAgPSAoY2hhciAqKSBtYWxsb2MoNDIpOwotLSAgICAgICAgczEgPSAoY2hhciAqKSBtYWxsb2MoOCk7Ci0tCi0tICAgICAgICBtZW1zZXQoczAsICdYJywgNDIpOwotLSAgICAgICAgczBbMjRdID0gJ1knOwotLSAgICAgICAgczBbMjZdID0gJ1onOwotLSAgICAgICAgczBbNDFdID0gJ1wwJzsKLS0gICAgICAgIG1lbXNldChzMSwgJ3gnLCA4KTsKLS0gICAgICAgIHMxWzBdID0gJ3knOwotLSAgICAgICAgczFbMl0gPSAnWic7Ci0tICAgICAgICBzMVs3XSA9ICdcMCc7Ci0tCi0tICAgICAgICByZXQgPSBzdHJjYXNlc3RyKHMwLCBzMSk7Ci0tCi0tICAgICAgICByZXR1cm4gIShOVUxMICE9IHJldCk7Ci0tfQotKyAgQUNfVFJZX0NPTVBJTEUoWwotKyAgICAgI2luY2x1ZGUgPHN0cmluZy5oPgotKyAgICAgI2luY2x1ZGUgPHN0cmluZ3MuaD4KLSsgICAgICNpbmNsdWRlIDxzdGRsaWIuaD4KLSsgIF0sWwotKyAgICAgc3RyY2FzZXN0cihOVUxMLCBOVUxMKTsKLSAgIF0sWwotICAgICBkbmwgdXNpbmcgdGhlIHBsYXRmb3JtIGltcGxlbWVudGF0aW9uCi0gICAgIEFDX01TR19SRVNVTFQoeWVzKQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAuaW5jCmluZGV4IDI4M2Q2MzAuLjA2NmI5N2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAuaW5jCkBAIC02LDI2ICs2LDIyIEBACiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgogREVQRU5EUyA9ICJ6bGliIGJ6aXAyIGxpYnhtbDIgdmlydHVhbC9saWJpY29udiBwaHAtbmF0aXZlIGxlbW9uLW5hdGl2ZSBcCi0gICAgICAgICAgIG9wZW5zc2wgbGlibWNyeXB0IgorICAgICAgICAgICBvcGVuc3NsIgogREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiemxpYi1uYXRpdmUgbGlieG1sMi1uYXRpdmUiCiAKIFBIUF9NQUpPUl9WRVJTSU9OID0gIiR7QGQuZ2V0VmFyKCdQVicsIFRydWUpLnNwbGl0KCcuJylbMF19IgogCiBTUkNfVVJJID0gImh0dHA6Ly9waHAubmV0L2Rpc3RyaWJ1dGlvbnMvcGhwLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vYWNpbmNsdWRlLXhtbDItY29uZmlnLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtcGhwLWRvbi10LXVzZS1icm9rZW4td3JhcHBlci1mb3ItbWtkaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hY2luY2x1ZGUtdXNlLXBrZ2NvbmZpZy1mb3ItbGlieG1sMi1jb25maWcucGF0Y2ggXAogICAgICAgICAgICIKIAogU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCiAgICAgICAgICAgICBmaWxlOi8vaWNvbnYucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovL2ltYXAtZml4LWF1dG9mb28ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3BlYXItbWFrZWZpbGUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3BoYXItbWFrZWZpbGUucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovL3BocF9leGVjX25hdGl2ZS5wYXRjaCBcCiAgICAgICAgICAgICBmaWxlOi8vcGhwLWZwbS5jb25mIFwKICAgICAgICAgICAgIGZpbGU6Ly9waHAtZnBtLWFwYWNoZS5jb25mIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtYWNpbmNsdWRlLm00LWRvbi10LXVuc2V0LWNhY2hlLXZhcmlhYmxlcy5wYXRjaCBcCiAgICAgICAgICAgICBmaWxlOi8vNzBfbW9kX3BocCR7UEhQX01BSk9SX1ZFUlNJT059LmNvbmYgXAogICAgICAgICAgICAgZmlsZTovL3BocC1mcG0uc2VydmljZSBcCiAgICAgICAgICAgIgpAQCAtNDQsNyArNDAsNiBAQAogQ09NTU9OX0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zb2NrZXRzIFwKICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtcGNudGwgXAogICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1zaGFyZWQgXAotICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtb3BjYWNoZSBcCiAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aCBcCiAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1waWMgXAogICAgICAgICAgICAgICAgICAgICAgICAtLWxpYmRpcj0ke1BIUF9MSUJESVJ9IFwKQEAgLTU3LDIwICs1MiwyMiBAQAogICAgICAgICAgICAgICAgIC0td2l0aC1nZXR0ZXh0PSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKICAgICAgICAgICAgICAgICAtLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCiAgICAgICAgICAgICAgICAgLS13aXRoLWljb252PSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtbWNyeXB0PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7ZXhlY19wcmVmaXh9IFwKICAgICAgICAgICAgICAgICAtLXdpdGgtYnoyPSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7ZXhlY19wcmVmaXh9IFwKICAgICAgICAgICAgICAgICAtLXdpdGgtY29uZmlnLWZpbGUtcGF0aD0ke3N5c2NvbmZkaXJ9L3BocC9hcGFjaGUyLXBocCR7UEhQX01BSk9SX1ZFUlNJT059IFwKLSAgICAgICAgICAgICAgICAke0BiYXNlX2NvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJ2FjX2N2X2NfYmlnZW5kaWFuX3BocD1ubycsICdhY19jdl9jX2JpZ2VuZGlhbl9waHA9eWVzJywgZCl9IFwKKyAgICAgICAgICAgICAgICAke0BvZS51dGlscy5jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICdhY19jdl9jX2JpZ2VuZGlhbl9waHA9bm8nLCAnYWNfY3ZfY19iaWdlbmRpYW5fcGhwPXllcycsIGQpfSBcCiAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncGFtJywgJycsICdhY19jdl9saWJfcGFtX3BhbV9zdGFydD1ubycsIGQpfSBcCiAgICAgICAgICAgICAgICAgJHtDT01NT05fRVhUUkFfT0VDT05GfSBcCiAiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9mdW5jX2Rsb3Blbj15ZXMgYWNfY3ZfbGliX2RsX2Rsb3Blbj15ZXMiCisKIEVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiIFwKICAgICAgICAgICAgICAgICAtLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vLi4gXAogICAgICAgICAgICAgICAgIC0td2l0aG91dC1pY29udiBcCiAgICAgICAgICAgICAgICAgJHtDT01NT05fRVhUUkFfT0VDT05GfSBcCiAiCiAKLVBBQ0tBR0VDT05GSUcgPz89ICJteXNxbCBzcWxpdGUzIGltYXAgXAorUEFDS0FHRUNPTkZJRyA/Pz0gIm15c3FsIHNxbGl0ZTMgaW1hcCBvcGNhY2hlIFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2IHBhbScsIGQpfSBcCiAiCiBQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCkBAIC05NCw3ICs5MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICwtLXdpdGhvdXQtaW1hcCAtLXdpdGhvdXQtaW1hcC1zc2wgXAogICAgICAgICAgICAgICAgICAgICAgICAsdXctaW1hcCIKIFBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KK1BBQ0tBR0VDT05GSUdbb3BjYWNoZV0gPSAiLC0tZGlzYWJsZS1vcGNhY2hlIgogCiBleHBvcnQgUEhQX05BVElWRV9ESVIgPSAiJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9IgogZXhwb3J0IFBIUF9QRUFSX1BIUF9CSU4gPSAiJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BocCIKQEAgLTIwMSwxNCArMTk4LDE0IEBACiAKIE1PRFBIUF9QQUNLQUdFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FwYWNoZTInLCAnJHtQTn0tbW9kcGhwJywgJycsIGQpfSIKIAotUEFDS0FHRVMgPSAiJHtQTn0tZGJnICR7UE59LWNsaSAke1BOfS1jZ2kgJHtQTn0tZnBtICR7UE59LWZwbS1hcGFjaGUyICR7UE59LXBlYXIgJHtQTn0tcGhhciAke01PRFBIUF9QQUNLQUdFfSAke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2ICR7UE59LWRvYyAke1BOfSIKK1BBQ0tBR0VTID0gIiR7UE59LWRiZyAke1BOfS1jbGkgJHtQTn0tY2dpICR7UE59LWZwbSAke1BOfS1mcG0tYXBhY2hlMiAke1BOfS1wZWFyICR7UE59LXBoYXIgJHtNT0RQSFBfUEFDS0FHRX0gJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiAke1BOfS1kb2MgJHtQTn0tb3BjYWNoZSAke1BOfSIKIAogUkRFUEVORFNfJHtQTn0gKz0gImxpYmdjYyIKIFJERVBFTkRTXyR7UE59LXBlYXIgPSAiJHtQTn0iCiBSREVQRU5EU18ke1BOfS1waGFyID0gIiR7UE59LWNsaSIKIFJERVBFTkRTXyR7UE59LWNsaSA9ICIke1BOfSIKIFJERVBFTkRTXyR7UE59LW1vZHBocCA9ICIke1BOfSBhcGFjaGUyIgotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiR7UE59IgorUkRFUEVORFNfJHtQTn0tb3BjYWNoZSA9ICIke1BOfSIKIAogSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1mcG0iCiBpbmhlcml0IHVwZGF0ZS1yYy5kCkBAIC0yMzcsNiArMjM0LDggQEAKICAgICAgICAgICAgICAgICAke2JpbmRpcn0vcGhwLWNvbmZpZyAke1BIUF9MSUJESVJ9L3BocC8uZGVwZGIgXAogICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwLy5kZXBkYmxvY2sgJHtQSFBfTElCRElSfS9waHAvLmZpbGVtYXAgXAogICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwLy5sb2NrICR7UEhQX0xJQkRJUn0vcGhwL3Rlc3QiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UEhQX0xJQkRJUn0vZXh0ZW5zaW9ucy8qLyouYSIKK0ZJTEVTXyR7UE59LW9wY2FjaGUgPSAiJHtQSFBfTElCRElSfS9leHRlbnNpb25zLyovb3BjYWNoZSR7U09MSUJTREVWfSIKIEZJTEVTXyR7UE59ID0gIiR7UEhQX0xJQkRJUn0vcGhwIgogRklMRVNfJHtQTn0gKz0gIiR7YmluZGlyfSIKIApAQCAtMjUzLDE4ICsyNTIsNiBAQAogICAgICAgICBQSFBfUEVBUl9TWVNDT05GX0RJUj0ke3N5c2NvbmZkaXJ9LwogfQogCi1TU1RBVEVQT1NUSU5TVEZVTkNTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHBocF9zc3RhdGVfcG9zdGluc3QgIgotCi1waHBfc3N0YXRlX3Bvc3RpbnN0KCkgewotICAgIGlmIFsgIiR7QkJfQ1VSUkVOVFRBU0t9IiA9ICJwb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lIiBdCi0gICAgdGhlbgotICAgICAgICBoZWFkIC1uMSAke3N5c2NvbmZkaXJ9L3BlYXIuY29uZiA+ICR7c3lzY29uZmRpcn0vcGVhci50bXAuY29uZgotICAgICAgICBmb3IgcCBpbiBgdGFpbCAtbjEgICR7c3lzY29uZmRpcn0vcGVhci5jb25mIHwgc2VkIC1zICdzLzsvIC9nJ2A7IGRvCi0gICAgICAgICAgICBlY2hvICRwIHwgYXdrIC1GOiAnQkVHSU4ge09GUyA9ICI6IjsgT1JTID0gIjsifXtpZihORj09Myl7cHJpbnQgJDEsIGxlbmd0aCgkMyktMiptYXRjaCgkMywgL14iLyksICQzfSBlbHNlIHtwcmludCAkMH19JzsKLSAgICAgICAgZG9uZSA+PiAke3N5c2NvbmZkaXJ9L3BlYXIudG1wLmNvbmYKLSAgICAgICAgbXYgLWYgJHtzeXNjb25mZGlyfS9wZWFyLnRtcC5jb25mICR7c3lzY29uZmRpcn0vcGVhci5jb25mCi0gICAgZmkKLX0KIAogIyBGYWlscyB0byBidWlsZCB3aXRoIHRodW1iLTEgKHFlbXVhcm0pCiAjIHwge3N0YW5kYXJkIGlucHV0fTogQXNzZW1ibGVyIG1lc3NhZ2VzOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC01LjYuMzEvMDAwMS1BZGQtbHB0aHJlYWQtdG8tbGluay5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1BZGQtbHB0aHJlYWQtdG8tbGluay5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC01LjYuMzEvMDAwMS1BZGQtbHB0aHJlYWQtdG8tbGluay5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLUFkZC1scHRocmVhZC10by1saW5rLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtYWNpbmNsdWRlLm00LWRvbi10LXVuc2V0LWNhY2hlLXZhcmlhYmxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1hY2luY2x1ZGUubTQtZG9uLXQtdW5zZXQtY2FjaGUtdmFyaWFibGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyNTBjYWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtYWNpbmNsdWRlLm00LWRvbi10LXVuc2V0LWNhY2hlLXZhcmlhYmxlcy5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIGRmZWJlODFmOTQ2YTgzZmUyNDk5ZmM4NGQ0ZjNkYmRjNTYxMjI3NmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorRGF0ZTogVHVlLCAzIEFwciAyMDE4IDExOjM1OjAzICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGFjaW5jbHVkZS5tNDogZG9uJ3QgdW5zZXQgY2FjaGUgdmFyaWFibGVzCisKK1Vuc2V0dGluZyBwcmV2ZW50cyBjYWNoZSB2YXJpYWJsZSBmcm9tIGJlaW5nIHBhc3NlZCB0byBjb25maWd1cmUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Utc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBhY2luY2x1ZGUubTQgfCA0IC0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2FjaW5jbHVkZS5tNCBiL2FjaW5jbHVkZS5tNAoraW5kZXggZjZhNTVlYy4uZDMzNDZkZiAxMDA2NDQKKy0tLSBhL2FjaW5jbHVkZS5tNAorKysrIGIvYWNpbmNsdWRlLm00CitAQCAtMTg5MCw4ICsxODkwLDYgQEAgZGVmaW5lKFtwaHBzaGlmdF0sW2lmZWxzZShpbmRleChbJEBdLFssXSksLTEsLFtzdWJzdHIoWyRAXSxpbmNyKGluZGV4KFskQF0sWyxdKSkKKyBkbmwKKyBBQ19ERUZVTihbUEhQX0NIRUNLX0ZVTkNfTElCXSxbCisgICBpZmVsc2UoJDIsLDosWworLSAgdW5zZXQgYWNfY3ZfbGliXyQyW11fJDEKKy0gIHVuc2V0IGFjX2N2X2xpYl8kMltdX19fJDEKKyAgIHVuc2V0IGZvdW5kCisgICBBQ19DSEVDS19MSUIoJDIsICQxLCBbZm91bmQ9eWVzXSwgWworICAgICBBQ19DSEVDS19MSUIoJDIsIF9fJDEsIFtmb3VuZD15ZXNdLCBbZm91bmQ9bm9dKQorQEAgLTE5MjMsOCArMTkyMSw2IEBAIGRubCBpbiB0aGUgZGVmYXVsdCBsaWJyYXJpZXMgYW5kIGFzIGEgZmFsbCBiYWNrIGluIHRoZSBzcGVjaWZpZWQgbGlicmFyeS4KKyBkbmwgRGVmaW5lcyBIQVZFX2Z1bmMgYW5kIEhBVkVfbGlicmFyeSBpZiBmb3VuZCBhbmQgYWRkcyB0aGUgbGlicmFyeSB0byBMSUJTLgorIGRubAorIEFDX0RFRlVOKFtQSFBfQ0hFQ0tfRlVOQ10sWworLSAgdW5zZXQgYWNfY3ZfZnVuY18kMQorLSAgdW5zZXQgYWNfY3ZfZnVuY19fXyQxCisgICB1bnNldCBmb3VuZAorICAgCisgICBBQ19DSEVDS19GVU5DKCQxLCBbZm91bmQ9eWVzXSxbIEFDX0NIRUNLX0ZVTkMoX18kMSxbZm91bmQ9eWVzXSxbZm91bmQ9bm9dKSBdKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtYWNpbmNsdWRlLm00LXNraXAtYmluY29uZmlnLWNoZWNrLWZvci1saWJ4bWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtYWNpbmNsdWRlLm00LXNraXAtYmluY29uZmlnLWNoZWNrLWZvci1saWJ4bWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTUzMjkyNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1hY2luY2x1ZGUubTQtc2tpcC1iaW5jb25maWctY2hlY2stZm9yLWxpYnhtbC5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIGEyZDE0NmI4ZGQ5ZDAyZjUyM2QxZTIwNWQ3OTc5MjYyNmE3MWRlYzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorRGF0ZTogTW9uLCAyIEFwciAyMDE4IDE1OjI3OjA5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGFjaW5jbHVkZS5tNDogc2tpcCBiaW5jb25maWcgY2hlY2sgZm9yIGxpYnhtbAorCitXZSB3YW50IGxpYnhtbCBmbGFncyB0byBiZSBwaWNrZWQgdXAgdXNpbmcgcGtnLWNvbmZpZyBpbnN0ZWFkIG9mIHRoZQoreG1sMi1jb25maWcgZmlsZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1zcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKworLS0tCisgYWNpbmNsdWRlLm00IHwgMjkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hY2luY2x1ZGUubTQgYi9hY2luY2x1ZGUubTQKK2luZGV4IGQ0MmQ3MDguLmQzMjc2NmEgMTAwNjQ0CistLS0gYS9hY2luY2x1ZGUubTQKKysrKyBiL2FjaW5jbHVkZS5tNAorQEAgLTI1MjUsMzUgKzI1MjUsNiBAQCBkbmwKKyBBQ19ERUZVTihbUEhQX1NFVFVQX0xJQlhNTF0sIFsKKyAgIGZvdW5kX2xpYnhtbD1ubworIAorLSAgZG5sIEZpcnN0IHRyeSB0byBmaW5kIHhtbDItY29uZmlnCistICBBQ19DQUNIRV9DSEVDSyhbZm9yIHhtbDItY29uZmlnIHBhdGhdLCBhY19jdl9waHBfeG1sMl9jb25maWdfcGF0aCwKKy0gIFsKKy0gICAgZm9yIGkgaW4gJFBIUF9MSUJYTUxfRElSIC91c3IvbG9jYWwgL3VzcjsgZG8KKy0gICAgICBpZiB0ZXN0IC14ICIkaS9iaW4veG1sMi1jb25maWciOyB0aGVuCistICAgICAgICBhY19jdl9waHBfeG1sMl9jb25maWdfcGF0aD0iJGkvYmluL3htbDItY29uZmlnIgorLSAgICAgICAgYnJlYWsKKy0gICAgICBmaQorLSAgICBkb25lCistICBdKQorLQorLSAgaWYgdGVzdCAteCAiJGFjX2N2X3BocF94bWwyX2NvbmZpZ19wYXRoIjsgdGhlbgorLSAgICBYTUwyX0NPTkZJRz0iJGFjX2N2X3BocF94bWwyX2NvbmZpZ19wYXRoIgorLSAgICBsaWJ4bWxfZnVsbF92ZXJzaW9uPWAkWE1MMl9DT05GSUcgLS12ZXJzaW9uYAorLSAgICBhY19JRlM9JElGUworLSAgICBJRlM9Ii4iCistICAgIHNldCAkbGlieG1sX2Z1bGxfdmVyc2lvbgorLSAgICBJRlM9JGFjX0lGUworLSAgICBMSUJYTUxfVkVSU0lPTj1gZXhwciBbJF0xIFwqIDEwMDAwMDAgKyBbJF0yIFwqIDEwMDAgKyBbJF0zYAorLSAgICBpZiB0ZXN0ICIkTElCWE1MX1ZFUlNJT04iIC1nZSAiMjAwNjAxMSI7IHRoZW4KKy0gICAgICBmb3VuZF9saWJ4bWw9eWVzCistICAgICAgTElCWE1MX0xJQlM9YCRYTUwyX0NPTkZJRyAtLWxpYnNgCistICAgICAgTElCWE1MX0lOQ1M9YCRYTUwyX0NPTkZJRyAtLWNmbGFnc2AKKy0gICAgZWxzZQorLSAgICAgIEFDX01TR19FUlJPUihbbGlieG1sMiB2ZXJzaW9uIDIuNi4xMSBvciBncmVhdGVyIHJlcXVpcmVkLl0pCistICAgIGZpCistICBmaQorLQorLSAgZG5sIElmIHhtbDItY29uZmlnIGZhaWxzLCB0cnkgcGtnLWNvbmZpZworICAgaWYgdGVzdCAiJGZvdW5kX2xpYnhtbCIgPSAibm8iOyB0aGVuCisgICAgIGlmIHRlc3QgLXogIiRQS0dfQ09ORklHIjsgdGhlbgorICAgICAgIEFDX1BBVEhfUFJPRyhQS0dfQ09ORklHLCBwa2ctY29uZmlnLCBubykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1maXgtZXJyb3ItY2F1c2VkLWJ5LWEtbmV3LXZhcmlhYmxlLWlzLWRlY2xhcmVkLWFmdGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLWZpeC1lcnJvci1jYXVzZWQtYnktYS1uZXctdmFyaWFibGUtaXMtZGVjbGFyZWQtYWZ0ZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFiMTAxYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1maXgtZXJyb3ItY2F1c2VkLWJ5LWEtbmV3LXZhcmlhYmxlLWlzLWRlY2xhcmVkLWFmdGVyLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gMGQ4OGQ3MzU4ODdjNmYyZmEwMGE3NDNjMjcxMjRjN2E1MjAwNmE0MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFN1biwgMTUgQXByIDIwMTggMTk6MTc6MjcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGVycm9yIGNhdXNlZCBieSBhIG5ldyB2YXJpYWJsZSBpcyBkZWNsYXJlZCBhZnRlciB0aGUKKyBsYWJlbAorCitUaGVyZSBpcyBhIGJ1aWxkIGZhaWx1cmUgb24gbWlwczoKKy4uLgorfHNsaml0TmF0aXZlTUlQU19jb21tb24uYzogSW4gZnVuY3Rpb24gJ3Nsaml0X2hhc19jcHVfZmVhdHVyZSc6Cit8c2xqaXROYXRpdmVNSVBTX2NvbW1vbi5jOjUwNjozOiBlcnJvcjogYSBsYWJlbCBjYW4gb25seSBiZSBwYXJ0CitvZiBhIHN0YXRlbWVudCBhbmQgYSBkZWNsYXJhdGlvbiBpcyBub3QgYSBzdGF0ZW1lbnQKK3wgICBzbGppdF9zdyBmaXI7Cit8ICAgXn5+fn5+fn4KKy4uLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgZXh0L3BjcmUvcGNyZWxpYi9zbGppdC9zbGppdE5hdGl2ZU1JUFNfY29tbW9uLmMgfCA0ICsrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9leHQvcGNyZS9wY3JlbGliL3Nsaml0L3Nsaml0TmF0aXZlTUlQU19jb21tb24uYyBiL2V4dC9wY3JlL3BjcmVsaWIvc2xqaXQvc2xqaXROYXRpdmVNSVBTX2NvbW1vbi5jCitpbmRleCBlZTIwN2ZlLi5hZGZkMzQyIDEwMDY0NAorLS0tIGEvZXh0L3BjcmUvcGNyZWxpYi9zbGppdC9zbGppdE5hdGl2ZU1JUFNfY29tbW9uLmMKKysrKyBiL2V4dC9wY3JlL3BjcmVsaWIvc2xqaXQvc2xqaXROYXRpdmVNSVBTX2NvbW1vbi5jCitAQCAtNDk4LDEyICs0OTgsMTQgQEAgU0xKSVRfQVBJX0ZVTkNfQVRUUklCVVRFIHZvaWQqIHNsaml0X2dlbmVyYXRlX2NvZGUoc3RydWN0IHNsaml0X2NvbXBpbGVyICpjb21waWwKKyAKKyBTTEpJVF9BUElfRlVOQ19BVFRSSUJVVEUgc2xqaXRfczMyIHNsaml0X2hhc19jcHVfZmVhdHVyZShzbGppdF9zMzIgZmVhdHVyZV90eXBlKQorIHsKKysjaWYgZGVmaW5lZChfX0dOVUNfXykKKysJc2xqaXRfc3cgZmlyOworKyNlbmRpZgorIAlzd2l0Y2ggKGZlYXR1cmVfdHlwZSkgeworIAljYXNlIFNMSklUX0hBU19GUFU6CisgI2lmZGVmIFNMSklUX0lTX0ZQVV9BVkFJTEFCTEUKKyAJCXJldHVybiBTTEpJVF9JU19GUFVfQVZBSUxBQkxFOworICNlbGlmIGRlZmluZWQoX19HTlVDX18pCistCQlzbGppdF9zdyBmaXI7CisgCQlhc20gKCJjZmMxICUwLCAkMCIgOiAiPXIiKGZpcikpOworIAkJcmV0dXJuIChmaXIgPj4gMjIpICYgMHgxOworICNlbHNlCistLSAKKzIuMTAuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtbWFpbi1waHBfaW5pLmMtYnVpbGQtZW1wdHktcGhwX2xvYWRfemVuZF9leHRlbnNpb25fYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1tYWluLXBocF9pbmkuYy1idWlsZC1lbXB0eS1waHBfbG9hZF96ZW5kX2V4dGVuc2lvbl9jLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjZTk3MzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtbWFpbi1waHBfaW5pLmMtYnVpbGQtZW1wdHktcGhwX2xvYWRfemVuZF9leHRlbnNpb25fYy5wYXRjaApAQCAtMCwwICsxLDYzIEBACitGcm9tIDI4NDJhYTJhMDc4ZWIxY2FkNTU1NDBiNjFlN2VkZjExMTM5NTE1MGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaG9tYXMgUGV0YXp6b25pIDx0aG9tYXMucGV0YXp6b25pQGJvb3RsaW4uY29tPgorRGF0ZTogTW9uLCAyNiBGZWIgMjAxOCAxOTozMDo1NSArMDEwMAorU3ViamVjdDogW1BBVENIXSBtYWluL3BocF9pbmkuYzogYnVpbGQgZW1wdHkgcGhwX2xvYWRfemVuZF9leHRlbnNpb25fY2IoKSB3aGVuCisgIUhBVkVfTElCREwKKworQ29tbWl0IDA3ODJhN2ZjNjMxNGM4YmQzY2JmZDU3ZjEyZDA0NzliZjljYzhkYzcgKCJGaXhlZCBidWcgIzc0ODY2CitleHRlbnNpb25fZGlyID0gIi4vZXh0IiBub3cgdXNlIGN1cnJlbnQgZGlyZWN0b3J5IGZvciBiYXNlIikgbW9kaWZpZWQKK3RoZSBwaHBfbG9hZF96ZW5kX2V4dGVuc2lvbl9jYigpIGZ1bmN0aW9uIHRvIHVzZSBwaHBfbG9hZF9zaGxpYigpLCBhbmQKK3Bhc3MgYSBoYW5kbGUgdG8gdGhlIG5ld2x5IGludHJvZHVjZWQgemVuZF9sb2FkX2V4dGVuc2lvbl9oYW5kbGUoKQorZnVuY3Rpb24gaW5zdGVhZCBvZiBwYXNzaW5nIHRoZSBleHRlbnNpb24gcGF0aCB0bworemVuZF9sb2FkX2V4dGVuc2lvbigpLgorCitXaGlsZSBkb2luZyBzbywgaXQgaW50cm9kdWNlZCBhIGNhbGwgdG8gcGhwX2xvYWRfc2hsaWIoKSBmcm9tIGNvZGUKK3RoYXQgaXMgYnVpbHQgZXZlbiB3aGVuIEhBVkVfTElCREwgaXMgbm90IGRlZmluZWQuIEhvd2V2ZXIsCitwaHBfbG9hZF9zaGxpYigpIGlzIG5vdCBpbXBsZW1lbnRlZCB3aGVuIEhBVkVfTElCREwgaXMgbm90IGRlZmluZWQsCitmb3Igb2J2aW91cyByZWFzb25zLgorCitJdCB0dXJucyBvdXQgdGhhdCB6ZW5kX2xvYWRfZXh0ZW5zaW9uX2hhbmRsZSgpIGFueXdheSBkb2Vzbid0IGRvCithbnl0aGluZyB3aGVuIFpFTkRfRVhURU5TSU9OU19TVVBQT1JUIGlzIGRlZmluZWQgdG8gMCwgYW5kCitaRU5EX0VYVEVOU0lPTlNfU1VQUE9SVCBpcyBub3QgZGVmaW5lZCB3aGVuIEhBVkVfTElCREwgaXMgbm90IGRlZmluZWQKKyhaZW5kL3plbmRfcG9ydGFiaWxpdHkuaCkuCisKK0ZpeGVzIHRoZSBmb2xsb3dpbmcgYnVpbGQgZmFpbHVyZSB3aGVuIGJ1aWxkaW5nIG9uIGEgc3lzdGVtIHRoYXQKK2RvZXNuJ3QgaGF2ZSBsaWJkbDoKKworbWFpbi9waHBfaW5pLm86IEluIGZ1bmN0aW9uIGBwaHBfbG9hZF96ZW5kX2V4dGVuc2lvbl9jYic6CitwaHBfaW5pLmM6KC50ZXh0KzB4NDc4KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgcGhwX2xvYWRfc2hsaWInCitwaHBfaW5pLmM6KC50ZXh0KzB4NGIwKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgcGhwX2xvYWRfc2hsaWInCitjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cDovL2dpdC5waHAubmV0Lz9wPXBocC1zcmMuZ2l0O2E9Y29tbWl0O2g9Mjg0MmFhMmEwNzhlYjFjYWQ1NTU0MGI2MWU3ZWRmMTExMzk1MTUwZF0KK1NpZ25lZC1vZmYtYnk6IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAYm9vdGxpbi5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorLS0tCisgbWFpbi9waHBfaW5pLmMgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9tYWluL3BocF9pbmkuYyBiL21haW4vcGhwX2luaS5jCitpbmRleCBiYTU4ZWIxLi5mY2EyNjNlIDEwMDY0NAorLS0tIGEvbWFpbi9waHBfaW5pLmMKKysrKyBiL21haW4vcGhwX2luaS5jCitAQCAtMzUwLDYgKzM1MCw3IEBAIHN0YXRpYyB2b2lkIHBocF9sb2FkX3BocF9leHRlbnNpb25fY2Iodm9pZCAqYXJnKQorIAorIC8qIHt7eyBwaHBfbG9hZF96ZW5kX2V4dGVuc2lvbl9jYgorICAqLworKyNpZmRlZiBIQVZFX0xJQkRMCisgc3RhdGljIHZvaWQgcGhwX2xvYWRfemVuZF9leHRlbnNpb25fY2Iodm9pZCAqYXJnKQorIHsKKyAJY2hhciAqZmlsZW5hbWUgPSAqKChjaGFyICoqKSBhcmcpOworQEAgLTQwOSw2ICs0MTAsOSBAQCBzdGF0aWMgdm9pZCBwaHBfbG9hZF96ZW5kX2V4dGVuc2lvbl9jYih2b2lkICphcmcpCisgCQllZnJlZShsaWJwYXRoKTsKKyAJfQorIH0KKysjZWxzZQorK3N0YXRpYyB2b2lkIHBocF9sb2FkX3plbmRfZXh0ZW5zaW9uX2NiKHZvaWQgKmFyZykgeyB9CisrI2VuZGlmCisgLyogfX19ICovCisgCisgLyoge3t7IHBocF9pbml0X2NvbmZpZworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtb3BjYWNoZS1jb25maWcubTQtZW5hYmxlLW9wY2FjaGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtb3BjYWNoZS1jb25maWcubTQtZW5hYmxlLW9wY2FjaGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQyNGQzNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1vcGNhY2hlLWNvbmZpZy5tNC1lbmFibGUtb3BjYWNoZS5wYXRjaApAQCAtMCwwICsxLDM4NSBAQAorRnJvbSBiMmZiNzI1ZGM0MDRkNDcxMzcxNzMxYjY2MzIzNGU4N2NiMGZjYTg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgMiBBcHIgMjAxOCAxNzo1NDo1MiArMDgwMAorU3ViamVjdDogW1BBVENIXSBvcGNhY2hlL2NvbmZpZy5tNDogZW5hYmxlIG9wY2FjaGUKKworV2UgY2FuJ3QgdXNlIEFDX1RSWV9SVU4gdG8gcnVuIHByb2dyYW1zIGluIGEgY3Jvc3MgY29tcGlsZSBlbnZpcm9ubWVudC4gU2V0Cit0aGUgdmFyaWFibGVzIGRpcmVjdGx5IGluc3RlYWQgc2luY2Ugd2Uga25vdyB0aGF0IHdlJ2QgYmUgcnVubmluZyBvbiBsYXRlc3QKK2Vub3VnaCBsaW51eCBrZXJuZWwuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbQ29uZmlndXJhdGlvbl0KKworU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKy0tLQorIGV4dC9vcGNhY2hlL2NvbmZpZy5tNCB8IDM0OSArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDM0MSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2V4dC9vcGNhY2hlL2NvbmZpZy5tNCBiL2V4dC9vcGNhY2hlL2NvbmZpZy5tNAoraW5kZXggN2I1MDBmMC4uMTBiYjk5YSAxMDA2NDQKKy0tLSBhL2V4dC9vcGNhY2hlL2NvbmZpZy5tNAorKysrIGIvZXh0L29wY2FjaGUvY29uZmlnLm00CitAQCAtMjgsMzUzICsyOCwyMCBAQCBpZiB0ZXN0ICIkUEhQX09QQ0FDSEUiICE9ICJubyI7IHRoZW4KKyAKKyAgIEFDX0NIRUNLX0hFQURFUlMoW3VuaXN0ZC5oIHN5cy91aW8uaF0pCisgCistICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIHN5c3ZpcGMgc2hhcmVkIG1lbW9yeSBzdXBwb3J0KQorLSAgQUNfVFJZX1JVTihbCistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSNpbmNsdWRlIDxzeXMvd2FpdC5oPgorLSNpbmNsdWRlIDxzeXMvaXBjLmg+CistI2luY2x1ZGUgPHN5cy9zaG0uaD4KKy0jaW5jbHVkZSA8dW5pc3RkLmg+CistI2luY2x1ZGUgPHN0cmluZy5oPgorKyAgQUNfREVGSU5FKEhBVkVfU0hNX0lQQywgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBTeXNWIElQQyBTSE0gc3VwcG9ydF0pCisgCistaW50IG1haW4oKSB7CistICBwaWRfdCBwaWQ7CistICBpbnQgc3RhdHVzOworLSAgaW50IGlwY19pZDsKKy0gIGNoYXIgKnNobTsKKy0gIHN0cnVjdCBzaG1pZF9kcyBzaG1idWY7CisrICBBQ19ERUZJTkUoSEFWRV9TSE1fTU1BUF9BTk9OLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIG1tYXAoTUFQX0FOT04pIFNITSBzdXBwb3J0XSkKKyAKKy0gIGlwY19pZCA9IHNobWdldChJUENfUFJJVkFURSwgNDA5NiwgKElQQ19DUkVBVCB8IFNITV9SIHwgU0hNX1cpKTsKKy0gIGlmIChpcGNfaWQgPT0gLTEpIHsKKy0gICAgcmV0dXJuIDE7CistICB9CisrICBBQ19ERUZJTkUoSEFWRV9TSE1fTU1BUF9aRVJPLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIG1tYXAoIi9kZXYvemVybyIpIFNITSBzdXBwb3J0XSkKKyAKKy0gIHNobSA9IHNobWF0KGlwY19pZCwgTlVMTCwgMCk7CistICBpZiAoc2htID09ICh2b2lkICopLTEpIHsKKy0gICAgc2htY3RsKGlwY19pZCwgSVBDX1JNSUQsIE5VTEwpOworLSAgICByZXR1cm4gMjsKKy0gIH0KKy0KKy0gIGlmIChzaG1jdGwoaXBjX2lkLCBJUENfU1RBVCwgJnNobWJ1ZikgIT0gMCkgeworLSAgICBzaG1kdChzaG0pOworLSAgICBzaG1jdGwoaXBjX2lkLCBJUENfUk1JRCwgTlVMTCk7CistICAgIHJldHVybiAzOworLSAgfQorLQorLSAgc2htYnVmLnNobV9wZXJtLnVpZCA9IGdldHVpZCgpOworLSAgc2htYnVmLnNobV9wZXJtLmdpZCA9IGdldGdpZCgpOworLSAgc2htYnVmLnNobV9wZXJtLm1vZGUgPSAwNjAwOworLQorLSAgaWYgKHNobWN0bChpcGNfaWQsIElQQ19TRVQsICZzaG1idWYpICE9IDApIHsKKy0gICAgc2htZHQoc2htKTsKKy0gICAgc2htY3RsKGlwY19pZCwgSVBDX1JNSUQsIE5VTEwpOworLSAgICByZXR1cm4gNDsKKy0gIH0KKy0KKy0gIHNobWN0bChpcGNfaWQsIElQQ19STUlELCBOVUxMKTsKKy0KKy0gIHN0cmNweShzaG0sICJoZWxsbyIpOworLQorLSAgcGlkID0gZm9yaygpOworLSAgaWYgKHBpZCA8IDApIHsKKy0gICAgcmV0dXJuIDU7CistICB9IGVsc2UgaWYgKHBpZCA9PSAwKSB7CistICAgIHN0cmNweShzaG0sICJieWUiKTsKKy0gICAgcmV0dXJuIDY7CistICB9CistICBpZiAod2FpdCgmc3RhdHVzKSAhPSBwaWQpIHsKKy0gICAgcmV0dXJuIDc7CistICB9CistICBpZiAoIVdJRkVYSVRFRChzdGF0dXMpIHx8IFdFWElUU1RBVFVTKHN0YXR1cykgIT0gNikgeworLSAgICByZXR1cm4gODsKKy0gIH0KKy0gIGlmIChzdHJjbXAoc2htLCAiYnllIikgIT0gMCkgeworLSAgICByZXR1cm4gOTsKKy0gIH0KKy0gIHJldHVybiAwOworLX0KKy1dLGRubAorLSAgICBBQ19ERUZJTkUoSEFWRV9TSE1fSVBDLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIFN5c1YgSVBDIFNITSBzdXBwb3J0XSkKKy0gICAgbXNnPXllcyxtc2c9bm8sbXNnPW5vKQorLSAgQUNfTVNHX1JFU1VMVChbJG1zZ10pCistCistICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG1tYXAoKSB1c2luZyBNQVBfQU5PTiBzaGFyZWQgbWVtb3J5IHN1cHBvcnQpCistICBBQ19UUllfUlVOKFsKKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHN5cy93YWl0Lmg+CistI2luY2x1ZGUgPHN5cy9tbWFuLmg+CistI2luY2x1ZGUgPHVuaXN0ZC5oPgorLSNpbmNsdWRlIDxzdHJpbmcuaD4KKy0KKy0jaWZuZGVmIE1BUF9BTk9OCistIyBpZmRlZiBNQVBfQU5PTllNT1VTCistIyAgZGVmaW5lIE1BUF9BTk9OIE1BUF9BTk9OWU1PVVMKKy0jIGVuZGlmCistI2VuZGlmCistI2lmbmRlZiBNQVBfRkFJTEVECistIyBkZWZpbmUgTUFQX0ZBSUxFRCAoKHZvaWQqKS0xKQorLSNlbmRpZgorLQorLWludCBtYWluKCkgeworLSAgcGlkX3QgcGlkOworLSAgaW50IHN0YXR1czsKKy0gIGNoYXIgKnNobTsKKy0KKy0gIHNobSA9IG1tYXAoTlVMTCwgNDA5NiwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCB8IE1BUF9BTk9OLCAtMSwgMCk7CistICBpZiAoc2htID09IE1BUF9GQUlMRUQpIHsKKy0gICAgcmV0dXJuIDE7CistICB9CistCistICBzdHJjcHkoc2htLCAiaGVsbG8iKTsKKy0KKy0gIHBpZCA9IGZvcmsoKTsKKy0gIGlmIChwaWQgPCAwKSB7CistICAgIHJldHVybiA1OworLSAgfSBlbHNlIGlmIChwaWQgPT0gMCkgeworLSAgICBzdHJjcHkoc2htLCAiYnllIik7CistICAgIHJldHVybiA2OworLSAgfQorLSAgaWYgKHdhaXQoJnN0YXR1cykgIT0gcGlkKSB7CistICAgIHJldHVybiA3OworLSAgfQorLSAgaWYgKCFXSUZFWElURUQoc3RhdHVzKSB8fCBXRVhJVFNUQVRVUyhzdGF0dXMpICE9IDYpIHsKKy0gICAgcmV0dXJuIDg7CistICB9CistICBpZiAoc3RyY21wKHNobSwgImJ5ZSIpICE9IDApIHsKKy0gICAgcmV0dXJuIDk7CistICB9CistICByZXR1cm4gMDsKKy19CistXSxkbmwKKy0gICAgQUNfREVGSU5FKEhBVkVfU0hNX01NQVBfQU5PTiwgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBtbWFwKE1BUF9BTk9OKSBTSE0gc3VwcG9ydF0pCistICAgIG1zZz15ZXMsbXNnPW5vLG1zZz1ubykKKy0gIEFDX01TR19SRVNVTFQoWyRtc2ddKQorLQorLSAgQUNfTVNHX0NIRUNLSU5HKGZvciBtbWFwKCkgdXNpbmcgL2Rldi96ZXJvIHNoYXJlZCBtZW1vcnkgc3VwcG9ydCkKKy0gIEFDX1RSWV9SVU4oWworLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVkZSA8c3lzL3dhaXQuaD4KKy0jaW5jbHVkZSA8c3lzL21tYW4uaD4KKy0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KKy0jaW5jbHVkZSA8ZmNudGwuaD4KKy0jaW5jbHVkZSA8dW5pc3RkLmg+CistI2luY2x1ZGUgPHN0cmluZy5oPgorLQorLSNpZm5kZWYgTUFQX0ZBSUxFRAorLSMgZGVmaW5lIE1BUF9GQUlMRUQgKCh2b2lkKiktMSkKKy0jZW5kaWYKKy0KKy1pbnQgbWFpbigpIHsKKy0gIHBpZF90IHBpZDsKKy0gIGludCBzdGF0dXM7CistICBpbnQgZmQ7CistICBjaGFyICpzaG07CistCistICBmZCA9IG9wZW4oIi9kZXYvemVybyIsIE9fUkRXUiwgU19JUlVTUiB8IFNfSVdVU1IpOworLSAgaWYgKGZkID09IC0xKSB7CistICAgIHJldHVybiAxOworLSAgfQorLQorLSAgc2htID0gbW1hcChOVUxMLCA0MDk2LCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBmZCwgMCk7CistICBpZiAoc2htID09IE1BUF9GQUlMRUQpIHsKKy0gICAgcmV0dXJuIDI7CistICB9CistCistICBzdHJjcHkoc2htLCAiaGVsbG8iKTsKKy0KKy0gIHBpZCA9IGZvcmsoKTsKKy0gIGlmIChwaWQgPCAwKSB7CistICAgIHJldHVybiA1OworLSAgfSBlbHNlIGlmIChwaWQgPT0gMCkgeworLSAgICBzdHJjcHkoc2htLCAiYnllIik7CistICAgIHJldHVybiA2OworLSAgfQorLSAgaWYgKHdhaXQoJnN0YXR1cykgIT0gcGlkKSB7CistICAgIHJldHVybiA3OworLSAgfQorLSAgaWYgKCFXSUZFWElURUQoc3RhdHVzKSB8fCBXRVhJVFNUQVRVUyhzdGF0dXMpICE9IDYpIHsKKy0gICAgcmV0dXJuIDg7CistICB9CistICBpZiAoc3RyY21wKHNobSwgImJ5ZSIpICE9IDApIHsKKy0gICAgcmV0dXJuIDk7CistICB9CistICByZXR1cm4gMDsKKy19CistXSxkbmwKKy0gICAgQUNfREVGSU5FKEhBVkVfU0hNX01NQVBfWkVSTywgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBtbWFwKCIvZGV2L3plcm8iKSBTSE0gc3VwcG9ydF0pCistICAgIG1zZz15ZXMsbXNnPW5vLG1zZz1ubykKKy0gIEFDX01TR19SRVNVTFQoWyRtc2ddKQorLQorLSAgQUNfTVNHX0NIRUNLSU5HKGZvciBtbWFwKCkgdXNpbmcgc2htX29wZW4oKSBzaGFyZWQgbWVtb3J5IHN1cHBvcnQpCistICBBQ19UUllfUlVOKFsKKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHN5cy93YWl0Lmg+CistI2luY2x1ZGUgPHN5cy9tbWFuLmg+CistI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CistI2luY2x1ZGUgPGZjbnRsLmg+CistI2luY2x1ZGUgPHVuaXN0ZC5oPgorLSNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPHN0ZGlvLmg+CistCistI2lmbmRlZiBNQVBfRkFJTEVECistIyBkZWZpbmUgTUFQX0ZBSUxFRCAoKHZvaWQqKS0xKQorLSNlbmRpZgorLQorLWludCBtYWluKCkgeworLSAgcGlkX3QgcGlkOworLSAgaW50IHN0YXR1czsKKy0gIGludCBmZDsKKy0gIGNoYXIgKnNobTsKKy0gIGNoYXIgdG1wbmFtZVs0MDk2XTsKKy0KKy0gIHNwcmludGYodG1wbmFtZSwidGVzdC5zaG0uJWRYWFhYWFgiLCBnZXRwaWQoKSk7CistICBpZiAobWt0ZW1wKHRtcG5hbWUpID09IE5VTEwpIHsKKy0gICAgcmV0dXJuIDE7CistICB9CistICBmZCA9IHNobV9vcGVuKHRtcG5hbWUsIE9fUkRXUiB8IE9fQ1JFQVQsIFNfSVJVU1IgfCBTX0lXVVNSKTsKKy0gIGlmIChmZCA9PSAtMSkgeworLSAgICByZXR1cm4gMjsKKy0gIH0KKy0gIGlmIChmdHJ1bmNhdGUoZmQsIDQwOTYpIDwgMCkgeworLSAgICBjbG9zZShmZCk7CistICAgIHNobV91bmxpbmsodG1wbmFtZSk7CistICAgIHJldHVybiAzOworLSAgfQorLQorLSAgc2htID0gbW1hcChOVUxMLCA0MDk2LCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBmZCwgMCk7CistICBpZiAoc2htID09IE1BUF9GQUlMRUQpIHsKKy0gICAgcmV0dXJuIDQ7CistICB9CistICBzaG1fdW5saW5rKHRtcG5hbWUpOworLSAgY2xvc2UoZmQpOworLQorLSAgc3RyY3B5KHNobSwgImhlbGxvIik7CistCistICBwaWQgPSBmb3JrKCk7CistICBpZiAocGlkIDwgMCkgeworLSAgICByZXR1cm4gNTsKKy0gIH0gZWxzZSBpZiAocGlkID09IDApIHsKKy0gICAgc3RyY3B5KHNobSwgImJ5ZSIpOworLSAgICByZXR1cm4gNjsKKy0gIH0KKy0gIGlmICh3YWl0KCZzdGF0dXMpICE9IHBpZCkgeworLSAgICByZXR1cm4gNzsKKy0gIH0KKy0gIGlmICghV0lGRVhJVEVEKHN0YXR1cykgfHwgV0VYSVRTVEFUVVMoc3RhdHVzKSAhPSA2KSB7CistICAgIHJldHVybiA4OworLSAgfQorLSAgaWYgKHN0cmNtcChzaG0sICJieWUiKSAhPSAwKSB7CistICAgIHJldHVybiA5OworLSAgfQorLSAgcmV0dXJuIDA7CistfQorLV0sZG5sCistICAgIEFDX0RFRklORShIQVZFX1NITV9NTUFQX1BPU0lYLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIFBPU0lYIG1tYXAoKSBTSE0gc3VwcG9ydF0pCistICAgIG1zZz15ZXMsbXNnPW5vLG1zZz1ubykKKy0gIEFDX01TR19SRVNVTFQoWyRtc2ddKQorKyAgQUNfREVGSU5FKEhBVkVfU0hNX01NQVBfUE9TSVgsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgUE9TSVggbW1hcCgpIFNITSBzdXBwb3J0XSkKKyAKKyAgIEFDX01TR19DSEVDS0lORyhmb3IgbW1hcCgpIHVzaW5nIHJlZ3VsYXIgZmlsZSBzaGFyZWQgbWVtb3J5IHN1cHBvcnQpCistICBBQ19UUllfUlVOKFsKKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHN5cy93YWl0Lmg+CistI2luY2x1ZGUgPHN5cy9tbWFuLmg+CistI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CistI2luY2x1ZGUgPGZjbnRsLmg+CistI2luY2x1ZGUgPHVuaXN0ZC5oPgorLSNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPHN0ZGlvLmg+CistCistI2lmbmRlZiBNQVBfRkFJTEVECistIyBkZWZpbmUgTUFQX0ZBSUxFRCAoKHZvaWQqKS0xKQorLSNlbmRpZgorLQorLWludCBtYWluKCkgeworLSAgcGlkX3QgcGlkOworLSAgaW50IHN0YXR1czsKKy0gIGludCBmZDsKKy0gIGNoYXIgKnNobTsKKy0gIGNoYXIgdG1wbmFtZVs0MDk2XTsKKy0KKy0gIHNwcmludGYodG1wbmFtZSwidGVzdC5zaG0uJWRYWFhYWFgiLCBnZXRwaWQoKSk7CistICBpZiAobWt0ZW1wKHRtcG5hbWUpID09IE5VTEwpIHsKKy0gICAgcmV0dXJuIDE7CistICB9CistICBmZCA9IG9wZW4odG1wbmFtZSwgT19SRFdSIHwgT19DUkVBVCwgU19JUlVTUiB8IFNfSVdVU1IpOworLSAgaWYgKGZkID09IC0xKSB7CistICAgIHJldHVybiAyOworLSAgfQorLSAgaWYgKGZ0cnVuY2F0ZShmZCwgNDA5NikgPCAwKSB7CistICAgIGNsb3NlKGZkKTsKKy0gICAgdW5saW5rKHRtcG5hbWUpOworLSAgICByZXR1cm4gMzsKKy0gIH0KKy0KKy0gIHNobSA9IG1tYXAoTlVMTCwgNDA5NiwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCwgZmQsIDApOworLSAgaWYgKHNobSA9PSBNQVBfRkFJTEVEKSB7CistICAgIHJldHVybiA0OworLSAgfQorLSAgdW5saW5rKHRtcG5hbWUpOworLSAgY2xvc2UoZmQpOworLQorLSAgc3RyY3B5KHNobSwgImhlbGxvIik7CistCistICBwaWQgPSBmb3JrKCk7CistICBpZiAocGlkIDwgMCkgeworLSAgICByZXR1cm4gNTsKKy0gIH0gZWxzZSBpZiAocGlkID09IDApIHsKKy0gICAgc3RyY3B5KHNobSwgImJ5ZSIpOworLSAgICByZXR1cm4gNjsKKy0gIH0KKy0gIGlmICh3YWl0KCZzdGF0dXMpICE9IHBpZCkgeworLSAgICByZXR1cm4gNzsKKy0gIH0KKy0gIGlmICghV0lGRVhJVEVEKHN0YXR1cykgfHwgV0VYSVRTVEFUVVMoc3RhdHVzKSAhPSA2KSB7CistICAgIHJldHVybiA4OworLSAgfQorLSAgaWYgKHN0cmNtcChzaG0sICJieWUiKSAhPSAwKSB7CistICAgIHJldHVybiA5OworLSAgfQorLSAgcmV0dXJuIDA7CistfQorLV0sZG5sCistICAgIEFDX0RFRklORShIQVZFX1NITV9NTUFQX0ZJTEUsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgbW1hcCgpIFNITSBzdXBwb3J0XSkKKy0gICAgbXNnPXllcyxtc2c9bm8sbXNnPW5vKQorLSAgQUNfTVNHX1JFU1VMVChbJG1zZ10pCistCistZmxvY2tfdHlwZT11bmtub3duCistQUNfTVNHX0NIRUNLSU5HKCJ3aGV0aGVyIGZsb2NrIHN0cnVjdCBpcyBsaW51eCBvcmRlcmVkIikKKy1BQ19UUllfUlVOKFsKKy0gICNpbmNsdWRlIDxmY250bC5oPgorLSAgc3RydWN0IGZsb2NrIGxvY2sgPSB7IDEsIDIsIDMsIDQsIDUgfTsKKy0gIGludCBtYWluKCkgeyAKKy0gICAgaWYobG9jay5sX3R5cGUgPT0gMSAmJiBsb2NrLmxfd2hlbmNlID09IDIgJiYgbG9jay5sX3N0YXJ0ID09IDMgJiYgbG9jay5sX2xlbiA9PSA0KSB7CistCQlyZXR1cm4gMDsKKy0gICAgfQorLSAgICByZXR1cm4gMTsKKy0gIH0gCistXSwgWworLQlmbG9ja190eXBlPWxpbnV4CistICAgIEFDX0RFRklORShbSEFWRV9GTE9DS19MSU5VWF0sIFtdLCBbU3RydWN0IGZsb2NrIGlzIExpbnV4LXR5cGVdKQorLSAgICBBQ19NU0dfUkVTVUxUKCJ5ZXMiKQorLV0sIEFDX01TR19SRVNVTFQoIm5vIikgKQorKyAgCisrICBBQ19ERUZJTkUoSEFWRV9TSE1fTU1BUF9GSUxFLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIG1tYXAoKSBTSE0gc3VwcG9ydF0pCisgCistQUNfTVNHX0NIRUNLSU5HKCJ3aGV0aGVyIGZsb2NrIHN0cnVjdCBpcyBCU0Qgb3JkZXJlZCIpCistQUNfVFJZX1JVTihbCistICAjaW5jbHVkZSA8ZmNudGwuaD4KKy0gIHN0cnVjdCBmbG9jayBsb2NrID0geyAxLCAyLCAzLCA0LCA1IH07CistICBpbnQgbWFpbigpIHsgCistICAgIGlmKGxvY2subF9zdGFydCA9PSAxICYmIGxvY2subF9sZW4gPT0gMiAmJiBsb2NrLmxfdHlwZSA9PSA0ICYmIGxvY2subF93aGVuY2UgPT0gNSkgeworLQkJcmV0dXJuIDA7CistICAgIH0KKy0gICAgcmV0dXJuIDE7CistICB9IAorLV0sIFsKKy0JZmxvY2tfdHlwZT1ic2QKKy0gICAgQUNfREVGSU5FKFtIQVZFX0ZMT0NLX0JTRF0sIFtdLCBbU3RydWN0IGZsb2NrIGlzIEJTRC10eXBlXSkgCistICAgIEFDX01TR19SRVNVTFQoInllcyIpCistXSwgQUNfTVNHX1JFU1VMVCgibm8iKSApCisrICBmbG9ja190eXBlPWxpbnV4CisrICBBQ19ERUZJTkUoW0hBVkVfRkxPQ0tfTElOVVhdLCBbXSwgW1N0cnVjdCBmbG9jayBpcyBMaW51eC10eXBlXSkKKyAKKyBpZiB0ZXN0ICIkZmxvY2tfdHlwZSIgPSAidW5rbm93biI7IHRoZW4KKyAJQUNfTVNHX0VSUk9SKFtEb24ndCBrbm93IGhvdyB0byBkZWZpbmUgc3RydWN0IGZsb2NrIG9uIHRoaXMgc3lzdGVtWyxdIHNldCAtLWVuYWJsZS1vcGNhY2hlPW5vXSkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC01LjYuMzEvY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL2NoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggNzUlCmNvcHkgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLTUuNi4zMS9jaGFuZ2UtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy5wYXRjaApjb3B5IHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2gKaW5kZXggMzljMzM0Zi4uM2U5MDE4NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC01LjYuMzEvY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9jaGFuZ2UtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy5wYXRjaApAQCAtMSwyMCArMSwyNSBAQAotW1BBVENIXSBjb25maWcubTQ6IGNoYW5nZSBBQ19UUllfUlVOIHRvIEFDX1RSWV9MSU5LCitGcm9tIDNiZmNjN2ZkZDIyMjYxZWFlZDEwOTQ5NzE0ZGUwYTkwZDMxZTEwYWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDIwIEF1ZyAyMDE1IDE2OjI5OjM1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIFtQQVRDSF0gY29uZmlnLm00OiBjaGFuZ2UgQUNfVFJZX1JVTiB0byBBQ19UUllfTElOSwogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogQUNfVFJZX1JVTiBpcyBub3Qgc3VpdGFibGUgZm9yIGNyb3NzLWNvbXBpbGUKIAogU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorCislJSBvcmlnaW5hbCBwYXRjaDogY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2gKIC0tLQogIGV4dC9maWxlaW5mby9jb25maWcubTQgfCAzMSArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9leHQvZmlsZWluZm8vY29uZmlnLm00IGIvZXh0L2ZpbGVpbmZvL2NvbmZpZy5tNAotaW5kZXggN2U5OGQ2Mi4uOGE4ZWEwZSAxMDA2NDQKK2luZGV4IDUyM2I0ZmQuLjBhYWE0YzggMTAwNjQ0CiAtLS0gYS9leHQvZmlsZWluZm8vY29uZmlnLm00CiArKysgYi9leHQvZmlsZWluZm8vY29uZmlnLm00CiBAQCAtMTQsMzEgKzE0LDEyIEBAIGlmIHRlc3QgIiRQSFBfRklMRUlORk8iICE9ICJubyI7IHRoZW4KLSAgICAgbGlibWFnaWMvcmVhZGNkZi5jIGxpYm1hZ2ljL3NvZnRtYWdpYy5jIgorICAgICBsaWJtYWdpYy9yZWFkY2RmLmMgbGlibWFnaWMvc29mdG1hZ2ljLmMgbGlibWFnaWMvZGVyLmMiCiAgCiAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzdHJjYXNlc3RyXSkKIC0gIEFDX1RSWV9SVU4oWwpAQCAtNTIsNSArNTcsNSBAQAogICAgICBkbmwgdXNpbmcgdGhlIHBsYXRmb3JtIGltcGxlbWVudGF0aW9uCiAgICAgIEFDX01TR19SRVNVTFQoeWVzKQogLS0gCi0xLjkuMQorMi43LjQKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL2NvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUzMzRjNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL2NvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLS0tLSBwaHAtNS4xLjYvY29uZmlndXJlLm9sZAkyMDA2LTA5LTEyIDA3OjU0OjE0LjAwMDAwMDAwMCAtMDcwMAotKysrIHBocC01LjEuNi9jb25maWd1cmUJMjAwNi0wOS0xMiAwNzo1NDozNy4wMDAwMDAwMDAgLTA3MDAKLUBAIC0xNDcxNSw4ICsxNDcxNSw2IEBACi0gCi0gCi0gCi0tICB1bnNldCBhY19jdl9mdW5jX2Rsb3BlbgotLSAgdW5zZXQgYWNfY3ZfZnVuY19fX2Rsb3BlbgotICAgdW5zZXQgZm91bmQKLSAgIAotICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGRsb3BlbiIiLi4uICRhY19jIiAxPiY2CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL2ljb252LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9pY29udi5wYXRjaAppbmRleCAyNTVmYmIwLi5iNmUzY2ViIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL2ljb252LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvaWNvbnYucGF0Y2gKQEAgLTEsMTAgKzEsMTggQEAKLVVwc3RyZWFtLXN0YXR1czogVW5rbm93bgorRnJvbSAxN2NjNTY0NWYzYWNmOTQzYTVhMDY0NjVkMDlkMGViY2ZlYTk4N2JkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KK0RhdGU6IFdlZCwgMiBOb3YgMjAxMSAxNjo1NDo1NyArMDEwMAorU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1zdGF0dXM6IFVua25vd24KKworLS0tCisgYWNpbmNsdWRlLm00ICAgICAgICB8IDMgKystCisgZXh0L2ljb252L2NvbmZpZy5tNCB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2FjaW5jbHVkZS5tNCBiL2FjaW5jbHVkZS5tNAotaW5kZXggYTZjMGQ4NC4uZGYxMWFiZCAxMDA2NDQKK2luZGV4IGQzMjc2NmEuLmFkNTE2NmUgMTAwNjQ0CiAtLS0gYS9hY2luY2x1ZGUubTQKICsrKyBiL2FjaW5jbHVkZS5tNAotQEAgLTI0NTIsNyArMjQ1Miw4IEBAIEFDX0RFRlVOKFtQSFBfU0VUVVBfSUNPTlZdLCBbCitAQCAtMjQ0NSw3ICsyNDQ1LDggQEAgQUNfREVGVU4oW1BIUF9TRVRVUF9JQ09OVl0sIFsKICAgIGRubCBDaGVjayBsaWJjIGZpcnN0IGlmIG5vIHBhdGggaXMgcHJvdmlkZWQgaW4gLS13aXRoLWljb252CiAgICBkbmwKICAKQEAgLTE1LDcgKzIzLDcgQEAKICAgICAgZG5sIC1saWNvbnYgaW4uCiAgICAgIExJQlNfc2F2ZT0iJExJQlMiCiBkaWZmIC0tZ2l0IGEvZXh0L2ljb252L2NvbmZpZy5tNCBiL2V4dC9pY29udi9jb25maWcubTQKLWluZGV4IGQ2NzNiMGEuLjFmYmVmMTMgMTAwNjQ0CitpbmRleCA2YTA1Njk3Li45NzNlNzUwIDEwMDY0NAogLS0tIGEvZXh0L2ljb252L2NvbmZpZy5tNAogKysrIGIvZXh0L2ljb252L2NvbmZpZy5tNAogQEAgLTE1LDcgKzE1LDcgQEAgaWYgdGVzdCAiJFBIUF9JQ09OViIgIT0gIm5vIjsgdGhlbgpAQCAtMjcsNiArMzUsMyBAQAogICAgICAgICAgaWYgdGVzdCAtZiAiJGkvaW5jbHVkZS9pY29udi5oIiB8fCB0ZXN0IC1mICIkaS9pbmNsdWRlL2dpY29udi5oIjsgdGhlbgogICAgICAgICAgICBQSFBfSUNPTlZfUFJFRklYPSIkaSIKICAgICAgICAgICAgYnJlYWsKLS0tIAotMS45LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9pbWFwLWZpeC1hdXRvZm9vLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9pbWFwLWZpeC1hdXRvZm9vLnBhdGNoCmluZGV4IGRhMDRjMmQuLmI1ZmI3ZDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvaW1hcC1maXgtYXV0b2Zvby5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL2ltYXAtZml4LWF1dG9mb28ucGF0Y2gKQEAgLTEsMTAgKzEsMTggQEAKLVVwc3RyZWFtLXN0YXR1czogVW5rbm93bgorRnJvbSBjMDg0YzgzNDlkMTc4MDk4MGUyMzJjYjI4YjYwYTEwOWUzZDg5NDM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KK0RhdGU6IFdlZCwgMiBOb3YgMjAxMSAxNjo1NDo1NyArMDEwMAorU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1zdGF0dXM6IFVua25vd24KKworLS0tCisgYWNpbmNsdWRlLm00ICAgICAgIHwgIDIgKy0KKyBleHQvaW1hcC9jb25maWcubTQgfCAxMCArKy0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9hY2luY2x1ZGUubTQgYi9hY2luY2x1ZGUubTQKLWluZGV4IGRmMTFhYmQuLjA2ZTcyMzYgMTAwNjQ0CitpbmRleCBhZDUxNjZlLi5mNmE1NWVjIDEwMDY0NAogLS0tIGEvYWNpbmNsdWRlLm00CiArKysgYi9hY2luY2x1ZGUubTQKLUBAIC0yMzU3LDcgKzIzNTcsNyBAQCBBQ19ERUZVTihbUEhQX1NFVFVQX09QRU5TU0xdLFsKK0BAIC0yMzUwLDcgKzIzNTAsNyBAQCBBQ19ERUZVTihbUEhQX1NFVFVQX09QRU5TU0xdLFsKICAgICAgICBQSFBfT1BFTlNTTF9ESVI9Ii91c3IvbG9jYWwvc3NsIC91c3IvbG9jYWwgL3VzciAvdXNyL2xvY2FsL29wZW5zc2wiCiAgICAgIGZpCiAgCkBAIC0xNCw3ICsyMiw3IEBACiAgICAgICAgICBPUEVOU1NMX0lOQ0RJUj0kaS9pbmNsdWRlCiAgICAgICAgZmkKIGRpZmYgLS1naXQgYS9leHQvaW1hcC9jb25maWcubTQgYi9leHQvaW1hcC9jb25maWcubTQKLWluZGV4IDNmY2Y2NzQuLmYwOGNhZjcgMTAwNjQ0CitpbmRleCBiYWRiNmUyLi44ZmY4MDNjIDEwMDY0NAogLS0tIGEvZXh0L2ltYXAvY29uZmlnLm00CiArKysgYi9leHQvaW1hcC9jb25maWcubTQKIEBAIC0xMDksNyArMTA5LDcgQEAgaWYgdGVzdCAiJFBIUF9JTUFQIiAhPSAibm8iOyB0aGVuCkBAIC00MSw2ICs0OSwzIEBACiAgICAgICAgSU1BUF9MSUI9JGxpYgogICAgICAgIElNQVBfTElCX0NISygkUEhQX0xJQkRJUikKICAgICAgICBJTUFQX0xJQl9DSEsoYy1jbGllbnQpCi0tLSAKLTEuOS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvcGVhci1tYWtlZmlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvcGVhci1tYWtlZmlsZS5wYXRjaAppbmRleCA5OTI3ZDJkLi40YmMxMDI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BlYXItbWFrZWZpbGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9wZWFyLW1ha2VmaWxlLnBhdGNoCkBAIC0xLDExICsxLDE4IEBACi1VcHN0cmVhbS1zdGF0dXM6IFVua25vd24KK0Zyb20gZWRkNTc1YTU0NmQ1NmJiNTY4M2FmZjE5NzgyYjE2OTYzZDYxZmQwYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+CitEYXRlOiBXZWQsIDIgTm92IDIwMTEgMTY6NTQ6NTcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gVXBzdHJlYW0tc3RhdHVzOiBVbmtub3duCisKKy0tLQorIHBlYXIvTWFrZWZpbGUuZnJhZyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3BlYXIvTWFrZWZpbGUuZnJhZyBiL3BlYXIvTWFrZWZpbGUuZnJhZwotaW5kZXggMDBiYWNhZS4uNzM5ZWVjYSAxMDA2NDQKK2luZGV4IGJiZThlYzMuLjE2ZjQzZTIgMTAwNjQ0CiAtLS0gYS9wZWFyL01ha2VmaWxlLmZyYWcKICsrKyBiL3BlYXIvTWFrZWZpbGUuZnJhZwotQEAgLTExLDcgKzExLDcgQEAgUEVBUl9QUkVGSVggPSAtZHAgYSR7cHJvZ3JhbV9wcmVmaXh9Ci0gUEVBUl9TVUZGSVggPSAtZHMgYSQocHJvZ3JhbV9zdWZmaXgpCitAQCAtMTIsNyArMTIsNyBAQCBQRUFSX1NVRkZJWCA9IC1kcyBhJChwcm9ncmFtX3N1ZmZpeCkKKyBQRUFSX0lOU1RBTExFUl9VUkwgPSBodHRwczovL3BlYXIucGhwLm5ldC9pbnN0YWxsLXBlYXItbm96bGliLnBoYXIKICAKICBpbnN0YWxsLXBlYXItaW5zdGFsbGVyOiAkKFNBUElfQ0xJX1BBVEgpCiAtCUAkKHRvcF9idWlsZGRpcikvc2FwaS9jbGkvcGhwICQoUEVBUl9JTlNUQUxMX0ZMQUdTKSBwZWFyL2luc3RhbGwtcGVhci1ub3psaWIucGhhciAtZCAiJChwZWFyZGlyKSIgLWIgIiQoYmluZGlyKSIgJHtQRUFSX1BSRUZJWH0gJHtQRUFSX1NVRkZJWH0KQEAgLTEzLDYgKzIwLDMgQEAKICAKICBpbnN0YWxsLXBlYXI6CiAgCUBlY2hvICJJbnN0YWxsaW5nIFBFQVIgZW52aXJvbm1lbnQ6ICAgICAgJChJTlNUQUxMX1JPT1QpJChwZWFyZGlyKS8iCi0tLSAKLTEuOS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvcGhhci1tYWtlZmlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvcGhhci1tYWtlZmlsZS5wYXRjaAppbmRleCAyZjdmZTM0Li4zMzZjZjBkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BoYXItbWFrZWZpbGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waGFyLW1ha2VmaWxlLnBhdGNoCkBAIC0xLDE3ICsxLDI0IEBACi1GaXggcGhhciBwYWNrYWdpbmcKK0Zyb20gMDg5NjJhNTZmNjk5NjNlMDE4OTJkOThjYTViNzVkZTgzNTRiZDNmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+CitEYXRlOiBXZWQsIDIgTm92IDIwMTEgMTY6NTQ6NTcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IHBoYXIgcGFja2FnaW5nCiAKIEluaGVyaXRlZCBmcm9tIE9FLUNsYXNzaWMsIHdpdGggc29tZSBhZGRpdGlvbnMgdG8gZml4IGhvc3QgcGF0aHMgbGVha2luZwogaW50byB0aGUgdGFyZ2V0IHBhY2thZ2UuCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlnXQogCistLS0KKyBleHQvcGhhci9NYWtlZmlsZS5mcmFnIHwgMTcgKysrLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKKwogZGlmZiAtLWdpdCBhL2V4dC9waGFyL01ha2VmaWxlLmZyYWcgYi9leHQvcGhhci9NYWtlZmlsZS5mcmFnCi1pbmRleCA2NTE2ZGRmLi4zNmU2Y2Y0IDEwMDY0NAoraW5kZXggMGUzNzEzZi4uMjJmNzg5OCAxMDA2NDQKIC0tLSBhL2V4dC9waGFyL01ha2VmaWxlLmZyYWcKICsrKyBiL2V4dC9waGFyL01ha2VmaWxlLmZyYWcKLUBAIC01LDIwICs1LDkgQEAgcGhhcmNtZDogJChidWlsZGRpcikvcGhhci5waHAgJChidWlsZGRpcikvcGhhci5waGFyCitAQCAtMTAsMjAgKzEwLDkgQEAgcGhhcmNtZDogJChidWlsZGRpcikvcGhhci5waHAgJChidWlsZGRpcikvcGhhci5waGFyCiAgCi0gUEhQX1BIQVJDTURfU0VUVElOR1MgPSAtZCAnb3Blbl9iYXNlZGlyPScgLWQgJ291dHB1dF9idWZmZXJpbmc9MCcgLWQgJ21lbW9yeV9saW1pdD0tMScgLWQgcGhhci5yZWFkb25seT0wIC1kICdzYWZlX21vZGU9MCcKKyBQSFBfUEhBUkNNRF9TRVRUSU5HUyA9IC1uIC1kICdvcGVuX2Jhc2VkaXI9JyAtZCAnb3V0cHV0X2J1ZmZlcmluZz0wJyAtZCAnbWVtb3J5X2xpbWl0PS0xJyAtZCBwaGFyLnJlYWRvbmx5PTAgLWQgJ3NhZmVfbW9kZT0wJwogIFBIUF9QSEFSQ01EX0VYRUNVVEFCTEUgPSBgIFwKIC0JaWYgdGVzdCAteCAiJCh0b3BfYnVpbGRkaXIpLyQoU0FQSV9DTElfUEFUSCkiOyB0aGVuIFwKIC0JCSQodG9wX3NyY2RpcikvYnVpbGQvc2h0b29sIGVjaG8gLW4gLS0gIiQodG9wX2J1aWxkZGlyKS8kKFNBUElfQ0xJX1BBVEgpIC1uIjsgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waHA1LTAwMDEtb3BjYWNoZS1jb25maWcubTQtZW5hYmxlLW9wY2FjaGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BocDUtMDAwMS1vcGNhY2hlLWNvbmZpZy5tNC1lbmFibGUtb3BjYWNoZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YmU2N2VhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waHA1LTAwMDEtb3BjYWNoZS1jb25maWcubTQtZW5hYmxlLW9wY2FjaGUucGF0Y2gKQEAgLTAsMCArMSwzODcgQEAKK0Zyb20gZmFmY2ZhYzA5MzNjMTdlMWJmNTUxNjAwMDgwZWIwNTQxMTg2Y2FmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CitEYXRlOiBNb24sIDIgQXByIDIwMTggMTc6NTQ6NTIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gb3BjYWNoZS9jb25maWcubTQ6IGVuYWJsZSBvcGNhY2hlCisKK1dlIGNhbid0IHVzZSBBQ19UUllfUlVOIHRvIHJ1biBwcm9ncmFtcyBpbiBhIGNyb3NzIGNvbXBpbGUgZW52aXJvbm1lbnQuIFNldAordGhlIHZhcmlhYmxlcyBkaXJlY3RseSBpbnN0ZWFkIHNpbmNlIHdlIGtub3cgdGhhdCB3ZSdkIGJlIHJ1bm5pbmcgb24gbGF0ZXN0Citlbm91Z2ggbGludXgga2VybmVsLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0NvbmZpZ3VyYXRpb25dCisKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CisKKyUlIG9yaWdpbmFsIHBhdGNoOiBwaHA1LTAwMDEtb3BjYWNoZS1jb25maWcubTQtZW5hYmxlLW9wY2FjaGUucGF0Y2gKKy0tLQorIGV4dC9vcGNhY2hlL2NvbmZpZy5tNCB8IDM0OSArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDM0MSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2V4dC9vcGNhY2hlL2NvbmZpZy5tNCBiL2V4dC9vcGNhY2hlL2NvbmZpZy5tNAoraW5kZXggNWE4Yjg2Yy4uNmU4N2ZhNSAxMDA2NDQKKy0tLSBhL2V4dC9vcGNhY2hlL2NvbmZpZy5tNAorKysrIGIvZXh0L29wY2FjaGUvY29uZmlnLm00CitAQCAtMTEsMzUzICsxMSwyMCBAQCBpZiB0ZXN0ICIkUEhQX09QQ0FDSEUiICE9ICJubyI7IHRoZW4KKyAgICAgQUNfREVGSU5FKEhBVkVfTVBST1RFQ1QsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgbXByb3RlY3QoKSBmdW5jdGlvbl0pCisgICBdKQorIAorLSAgQUNfTVNHX0NIRUNLSU5HKGZvciBzeXN2aXBjIHNoYXJlZCBtZW1vcnkgc3VwcG9ydCkKKy0gIEFDX1RSWV9SVU4oWworLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVkZSA8c3lzL3dhaXQuaD4KKy0jaW5jbHVkZSA8c3lzL2lwYy5oPgorLSNpbmNsdWRlIDxzeXMvc2htLmg+CistI2luY2x1ZGUgPHVuaXN0ZC5oPgorLSNpbmNsdWRlIDxzdHJpbmcuaD4KKysgIEFDX0RFRklORShIQVZFX1NITV9JUEMsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgU3lzViBJUEMgU0hNIHN1cHBvcnRdKQorIAorLWludCBtYWluKCkgeworLSAgcGlkX3QgcGlkOworLSAgaW50IHN0YXR1czsKKy0gIGludCBpcGNfaWQ7CistICBjaGFyICpzaG07CistICBzdHJ1Y3Qgc2htaWRfZHMgc2htYnVmOworKyAgQUNfREVGSU5FKEhBVkVfU0hNX01NQVBfQU5PTiwgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBtbWFwKE1BUF9BTk9OKSBTSE0gc3VwcG9ydF0pCisgCistICBpcGNfaWQgPSBzaG1nZXQoSVBDX1BSSVZBVEUsIDQwOTYsIChJUENfQ1JFQVQgfCBTSE1fUiB8IFNITV9XKSk7CistICBpZiAoaXBjX2lkID09IC0xKSB7CistICAgIHJldHVybiAxOworLSAgfQorKyAgQUNfREVGSU5FKEhBVkVfU0hNX01NQVBfWkVSTywgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBtbWFwKCIvZGV2L3plcm8iKSBTSE0gc3VwcG9ydF0pCisgCistICBzaG0gPSBzaG1hdChpcGNfaWQsIE5VTEwsIDApOworLSAgaWYgKHNobSA9PSAodm9pZCAqKS0xKSB7CistICAgIHNobWN0bChpcGNfaWQsIElQQ19STUlELCBOVUxMKTsKKy0gICAgcmV0dXJuIDI7CistICB9CistCistICBpZiAoc2htY3RsKGlwY19pZCwgSVBDX1NUQVQsICZzaG1idWYpICE9IDApIHsKKy0gICAgc2htZHQoc2htKTsKKy0gICAgc2htY3RsKGlwY19pZCwgSVBDX1JNSUQsIE5VTEwpOworLSAgICByZXR1cm4gMzsKKy0gIH0KKy0KKy0gIHNobWJ1Zi5zaG1fcGVybS51aWQgPSBnZXR1aWQoKTsKKy0gIHNobWJ1Zi5zaG1fcGVybS5naWQgPSBnZXRnaWQoKTsKKy0gIHNobWJ1Zi5zaG1fcGVybS5tb2RlID0gMDYwMDsKKy0KKy0gIGlmIChzaG1jdGwoaXBjX2lkLCBJUENfU0VULCAmc2htYnVmKSAhPSAwKSB7CistICAgIHNobWR0KHNobSk7CistICAgIHNobWN0bChpcGNfaWQsIElQQ19STUlELCBOVUxMKTsKKy0gICAgcmV0dXJuIDQ7CistICB9CistCistICBzaG1jdGwoaXBjX2lkLCBJUENfUk1JRCwgTlVMTCk7CistCistICBzdHJjcHkoc2htLCAiaGVsbG8iKTsKKy0KKy0gIHBpZCA9IGZvcmsoKTsKKy0gIGlmIChwaWQgPCAwKSB7CistICAgIHJldHVybiA1OworLSAgfSBlbHNlIGlmIChwaWQgPT0gMCkgeworLSAgICBzdHJjcHkoc2htLCAiYnllIik7CistICAgIHJldHVybiA2OworLSAgfQorLSAgaWYgKHdhaXQoJnN0YXR1cykgIT0gcGlkKSB7CistICAgIHJldHVybiA3OworLSAgfQorLSAgaWYgKCFXSUZFWElURUQoc3RhdHVzKSB8fCBXRVhJVFNUQVRVUyhzdGF0dXMpICE9IDYpIHsKKy0gICAgcmV0dXJuIDg7CistICB9CistICBpZiAoc3RyY21wKHNobSwgImJ5ZSIpICE9IDApIHsKKy0gICAgcmV0dXJuIDk7CistICB9CistICByZXR1cm4gMDsKKy19CistXSxkbmwKKy0gICAgQUNfREVGSU5FKEhBVkVfU0hNX0lQQywgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBTeXNWIElQQyBTSE0gc3VwcG9ydF0pCistICAgIG1zZz15ZXMsbXNnPW5vLG1zZz1ubykKKy0gIEFDX01TR19SRVNVTFQoWyRtc2ddKQorLQorLSAgQUNfTVNHX0NIRUNLSU5HKGZvciBtbWFwKCkgdXNpbmcgTUFQX0FOT04gc2hhcmVkIG1lbW9yeSBzdXBwb3J0KQorLSAgQUNfVFJZX1JVTihbCistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSNpbmNsdWRlIDxzeXMvd2FpdC5oPgorLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgorLSNpbmNsdWRlIDx1bmlzdGQuaD4KKy0jaW5jbHVkZSA8c3RyaW5nLmg+CistCistI2lmbmRlZiBNQVBfQU5PTgorLSMgaWZkZWYgTUFQX0FOT05ZTU9VUworLSMgIGRlZmluZSBNQVBfQU5PTiBNQVBfQU5PTllNT1VTCistIyBlbmRpZgorLSNlbmRpZgorLSNpZm5kZWYgTUFQX0ZBSUxFRAorLSMgZGVmaW5lIE1BUF9GQUlMRUQgKCh2b2lkKiktMSkKKy0jZW5kaWYKKy0KKy1pbnQgbWFpbigpIHsKKy0gIHBpZF90IHBpZDsKKy0gIGludCBzdGF0dXM7CistICBjaGFyICpzaG07CistCistICBzaG0gPSBtbWFwKE5VTEwsIDQwOTYsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1BUF9TSEFSRUQgfCBNQVBfQU5PTiwgLTEsIDApOworLSAgaWYgKHNobSA9PSBNQVBfRkFJTEVEKSB7CistICAgIHJldHVybiAxOworLSAgfQorLQorLSAgc3RyY3B5KHNobSwgImhlbGxvIik7CistCistICBwaWQgPSBmb3JrKCk7CistICBpZiAocGlkIDwgMCkgeworLSAgICByZXR1cm4gNTsKKy0gIH0gZWxzZSBpZiAocGlkID09IDApIHsKKy0gICAgc3RyY3B5KHNobSwgImJ5ZSIpOworLSAgICByZXR1cm4gNjsKKy0gIH0KKy0gIGlmICh3YWl0KCZzdGF0dXMpICE9IHBpZCkgeworLSAgICByZXR1cm4gNzsKKy0gIH0KKy0gIGlmICghV0lGRVhJVEVEKHN0YXR1cykgfHwgV0VYSVRTVEFUVVMoc3RhdHVzKSAhPSA2KSB7CistICAgIHJldHVybiA4OworLSAgfQorLSAgaWYgKHN0cmNtcChzaG0sICJieWUiKSAhPSAwKSB7CistICAgIHJldHVybiA5OworLSAgfQorLSAgcmV0dXJuIDA7CistfQorLV0sZG5sCistICAgIEFDX0RFRklORShIQVZFX1NITV9NTUFQX0FOT04sIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgbW1hcChNQVBfQU5PTikgU0hNIHN1cHBvcnRdKQorLSAgICBtc2c9eWVzLG1zZz1ubyxtc2c9bm8pCistICBBQ19NU0dfUkVTVUxUKFskbXNnXSkKKy0KKy0gIEFDX01TR19DSEVDS0lORyhmb3IgbW1hcCgpIHVzaW5nIC9kZXYvemVybyBzaGFyZWQgbWVtb3J5IHN1cHBvcnQpCistICBBQ19UUllfUlVOKFsKKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHN5cy93YWl0Lmg+CistI2luY2x1ZGUgPHN5cy9tbWFuLmg+CistI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CistI2luY2x1ZGUgPGZjbnRsLmg+CistI2luY2x1ZGUgPHVuaXN0ZC5oPgorLSNpbmNsdWRlIDxzdHJpbmcuaD4KKy0KKy0jaWZuZGVmIE1BUF9GQUlMRUQKKy0jIGRlZmluZSBNQVBfRkFJTEVEICgodm9pZCopLTEpCistI2VuZGlmCistCistaW50IG1haW4oKSB7CistICBwaWRfdCBwaWQ7CistICBpbnQgc3RhdHVzOworLSAgaW50IGZkOworLSAgY2hhciAqc2htOworLQorLSAgZmQgPSBvcGVuKCIvZGV2L3plcm8iLCBPX1JEV1IsIFNfSVJVU1IgfCBTX0lXVVNSKTsKKy0gIGlmIChmZCA9PSAtMSkgeworLSAgICByZXR1cm4gMTsKKy0gIH0KKy0KKy0gIHNobSA9IG1tYXAoTlVMTCwgNDA5NiwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCwgZmQsIDApOworLSAgaWYgKHNobSA9PSBNQVBfRkFJTEVEKSB7CistICAgIHJldHVybiAyOworLSAgfQorLQorLSAgc3RyY3B5KHNobSwgImhlbGxvIik7CistCistICBwaWQgPSBmb3JrKCk7CistICBpZiAocGlkIDwgMCkgeworLSAgICByZXR1cm4gNTsKKy0gIH0gZWxzZSBpZiAocGlkID09IDApIHsKKy0gICAgc3RyY3B5KHNobSwgImJ5ZSIpOworLSAgICByZXR1cm4gNjsKKy0gIH0KKy0gIGlmICh3YWl0KCZzdGF0dXMpICE9IHBpZCkgeworLSAgICByZXR1cm4gNzsKKy0gIH0KKy0gIGlmICghV0lGRVhJVEVEKHN0YXR1cykgfHwgV0VYSVRTVEFUVVMoc3RhdHVzKSAhPSA2KSB7CistICAgIHJldHVybiA4OworLSAgfQorLSAgaWYgKHN0cmNtcChzaG0sICJieWUiKSAhPSAwKSB7CistICAgIHJldHVybiA5OworLSAgfQorLSAgcmV0dXJuIDA7CistfQorLV0sZG5sCistICAgIEFDX0RFRklORShIQVZFX1NITV9NTUFQX1pFUk8sIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgbW1hcCgiL2Rldi96ZXJvIikgU0hNIHN1cHBvcnRdKQorLSAgICBtc2c9eWVzLG1zZz1ubyxtc2c9bm8pCistICBBQ19NU0dfUkVTVUxUKFskbXNnXSkKKy0KKy0gIEFDX01TR19DSEVDS0lORyhmb3IgbW1hcCgpIHVzaW5nIHNobV9vcGVuKCkgc2hhcmVkIG1lbW9yeSBzdXBwb3J0KQorLSAgQUNfVFJZX1JVTihbCistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSNpbmNsdWRlIDxzeXMvd2FpdC5oPgorLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgorLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgorLSNpbmNsdWRlIDxmY250bC5oPgorLSNpbmNsdWRlIDx1bmlzdGQuaD4KKy0jaW5jbHVkZSA8c3RyaW5nLmg+CistI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNpbmNsdWRlIDxzdGRpby5oPgorLQorLSNpZm5kZWYgTUFQX0ZBSUxFRAorLSMgZGVmaW5lIE1BUF9GQUlMRUQgKCh2b2lkKiktMSkKKy0jZW5kaWYKKy0KKy1pbnQgbWFpbigpIHsKKy0gIHBpZF90IHBpZDsKKy0gIGludCBzdGF0dXM7CistICBpbnQgZmQ7CistICBjaGFyICpzaG07CistICBjaGFyIHRtcG5hbWVbNDA5Nl07CistCistICBzcHJpbnRmKHRtcG5hbWUsInRlc3Quc2htLiVkWFhYWFhYIiwgZ2V0cGlkKCkpOworLSAgaWYgKG1rdGVtcCh0bXBuYW1lKSA9PSBOVUxMKSB7CistICAgIHJldHVybiAxOworLSAgfQorLSAgZmQgPSBzaG1fb3Blbih0bXBuYW1lLCBPX1JEV1IgfCBPX0NSRUFULCBTX0lSVVNSIHwgU19JV1VTUik7CistICBpZiAoZmQgPT0gLTEpIHsKKy0gICAgcmV0dXJuIDI7CistICB9CistICBpZiAoZnRydW5jYXRlKGZkLCA0MDk2KSA8IDApIHsKKy0gICAgY2xvc2UoZmQpOworLSAgICBzaG1fdW5saW5rKHRtcG5hbWUpOworLSAgICByZXR1cm4gMzsKKy0gIH0KKy0KKy0gIHNobSA9IG1tYXAoTlVMTCwgNDA5NiwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCwgZmQsIDApOworLSAgaWYgKHNobSA9PSBNQVBfRkFJTEVEKSB7CistICAgIHJldHVybiA0OworLSAgfQorLSAgc2htX3VubGluayh0bXBuYW1lKTsKKy0gIGNsb3NlKGZkKTsKKy0KKy0gIHN0cmNweShzaG0sICJoZWxsbyIpOworLQorLSAgcGlkID0gZm9yaygpOworLSAgaWYgKHBpZCA8IDApIHsKKy0gICAgcmV0dXJuIDU7CistICB9IGVsc2UgaWYgKHBpZCA9PSAwKSB7CistICAgIHN0cmNweShzaG0sICJieWUiKTsKKy0gICAgcmV0dXJuIDY7CistICB9CistICBpZiAod2FpdCgmc3RhdHVzKSAhPSBwaWQpIHsKKy0gICAgcmV0dXJuIDc7CistICB9CistICBpZiAoIVdJRkVYSVRFRChzdGF0dXMpIHx8IFdFWElUU1RBVFVTKHN0YXR1cykgIT0gNikgeworLSAgICByZXR1cm4gODsKKy0gIH0KKy0gIGlmIChzdHJjbXAoc2htLCAiYnllIikgIT0gMCkgeworLSAgICByZXR1cm4gOTsKKy0gIH0KKy0gIHJldHVybiAwOworLX0KKy1dLGRubAorLSAgICBBQ19ERUZJTkUoSEFWRV9TSE1fTU1BUF9QT1NJWCwgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBQT1NJWCBtbWFwKCkgU0hNIHN1cHBvcnRdKQorLSAgICBtc2c9eWVzLG1zZz1ubyxtc2c9bm8pCistICBBQ19NU0dfUkVTVUxUKFskbXNnXSkKKysgIEFDX0RFRklORShIQVZFX1NITV9NTUFQX1BPU0lYLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIFBPU0lYIG1tYXAoKSBTSE0gc3VwcG9ydF0pCisgCisgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG1tYXAoKSB1c2luZyByZWd1bGFyIGZpbGUgc2hhcmVkIG1lbW9yeSBzdXBwb3J0KQorLSAgQUNfVFJZX1JVTihbCistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSNpbmNsdWRlIDxzeXMvd2FpdC5oPgorLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgorLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgorLSNpbmNsdWRlIDxmY250bC5oPgorLSNpbmNsdWRlIDx1bmlzdGQuaD4KKy0jaW5jbHVkZSA8c3RyaW5nLmg+CistI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNpbmNsdWRlIDxzdGRpby5oPgorLQorLSNpZm5kZWYgTUFQX0ZBSUxFRAorLSMgZGVmaW5lIE1BUF9GQUlMRUQgKCh2b2lkKiktMSkKKy0jZW5kaWYKKy0KKy1pbnQgbWFpbigpIHsKKy0gIHBpZF90IHBpZDsKKy0gIGludCBzdGF0dXM7CistICBpbnQgZmQ7CistICBjaGFyICpzaG07CistICBjaGFyIHRtcG5hbWVbNDA5Nl07CistCistICBzcHJpbnRmKHRtcG5hbWUsInRlc3Quc2htLiVkWFhYWFhYIiwgZ2V0cGlkKCkpOworLSAgaWYgKG1rdGVtcCh0bXBuYW1lKSA9PSBOVUxMKSB7CistICAgIHJldHVybiAxOworLSAgfQorLSAgZmQgPSBvcGVuKHRtcG5hbWUsIE9fUkRXUiB8IE9fQ1JFQVQsIFNfSVJVU1IgfCBTX0lXVVNSKTsKKy0gIGlmIChmZCA9PSAtMSkgeworLSAgICByZXR1cm4gMjsKKy0gIH0KKy0gIGlmIChmdHJ1bmNhdGUoZmQsIDQwOTYpIDwgMCkgeworLSAgICBjbG9zZShmZCk7CistICAgIHVubGluayh0bXBuYW1lKTsKKy0gICAgcmV0dXJuIDM7CistICB9CistCistICBzaG0gPSBtbWFwKE5VTEwsIDQwOTYsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1BUF9TSEFSRUQsIGZkLCAwKTsKKy0gIGlmIChzaG0gPT0gTUFQX0ZBSUxFRCkgeworLSAgICByZXR1cm4gNDsKKy0gIH0KKy0gIHVubGluayh0bXBuYW1lKTsKKy0gIGNsb3NlKGZkKTsKKy0KKy0gIHN0cmNweShzaG0sICJoZWxsbyIpOworLQorLSAgcGlkID0gZm9yaygpOworLSAgaWYgKHBpZCA8IDApIHsKKy0gICAgcmV0dXJuIDU7CistICB9IGVsc2UgaWYgKHBpZCA9PSAwKSB7CistICAgIHN0cmNweShzaG0sICJieWUiKTsKKy0gICAgcmV0dXJuIDY7CistICB9CistICBpZiAod2FpdCgmc3RhdHVzKSAhPSBwaWQpIHsKKy0gICAgcmV0dXJuIDc7CistICB9CistICBpZiAoIVdJRkVYSVRFRChzdGF0dXMpIHx8IFdFWElUU1RBVFVTKHN0YXR1cykgIT0gNikgeworLSAgICByZXR1cm4gODsKKy0gIH0KKy0gIGlmIChzdHJjbXAoc2htLCAiYnllIikgIT0gMCkgeworLSAgICByZXR1cm4gOTsKKy0gIH0KKy0gIHJldHVybiAwOworLX0KKy1dLGRubAorLSAgICBBQ19ERUZJTkUoSEFWRV9TSE1fTU1BUF9GSUxFLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIG1tYXAoKSBTSE0gc3VwcG9ydF0pCistICAgIG1zZz15ZXMsbXNnPW5vLG1zZz1ubykKKy0gIEFDX01TR19SRVNVTFQoWyRtc2ddKQorLQorLWZsb2NrX3R5cGU9dW5rbm93bgorLUFDX01TR19DSEVDS0lORygid2hldGhlciBmbG9jayBzdHJ1Y3QgaXMgbGludXggb3JkZXJlZCIpCistQUNfVFJZX1JVTihbCistICAjaW5jbHVkZSA8ZmNudGwuaD4KKy0gIHN0cnVjdCBmbG9jayBsb2NrID0geyAxLCAyLCAzLCA0LCA1IH07CistICBpbnQgbWFpbigpIHsgCistICAgIGlmKGxvY2subF90eXBlID09IDEgJiYgbG9jay5sX3doZW5jZSA9PSAyICYmIGxvY2subF9zdGFydCA9PSAzICYmIGxvY2subF9sZW4gPT0gNCkgeworLQkJcmV0dXJuIDA7CistICAgIH0KKy0gICAgcmV0dXJuIDE7CistICB9IAorLV0sIFsKKy0JZmxvY2tfdHlwZT1saW51eAorLSAgICBBQ19ERUZJTkUoW0hBVkVfRkxPQ0tfTElOVVhdLCBbXSwgW1N0cnVjdCBmbG9jayBpcyBMaW51eC10eXBlXSkKKy0gICAgQUNfTVNHX1JFU1VMVCgieWVzIikKKy1dLCBBQ19NU0dfUkVTVUxUKCJubyIpICkKKysgIAorKyAgQUNfREVGSU5FKEhBVkVfU0hNX01NQVBfRklMRSwgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBtbWFwKCkgU0hNIHN1cHBvcnRdKQorIAorLUFDX01TR19DSEVDS0lORygid2hldGhlciBmbG9jayBzdHJ1Y3QgaXMgQlNEIG9yZGVyZWQiKQorLUFDX1RSWV9SVU4oWworLSAgI2luY2x1ZGUgPGZjbnRsLmg+CistICBzdHJ1Y3QgZmxvY2sgbG9jayA9IHsgMSwgMiwgMywgNCwgNSB9OworLSAgaW50IG1haW4oKSB7IAorLSAgICBpZihsb2NrLmxfc3RhcnQgPT0gMSAmJiBsb2NrLmxfbGVuID09IDIgJiYgbG9jay5sX3R5cGUgPT0gNCAmJiBsb2NrLmxfd2hlbmNlID09IDUpIHsKKy0JCXJldHVybiAwOworLSAgICB9CistICAgIHJldHVybiAxOworLSAgfSAKKy1dLCBbCistCWZsb2NrX3R5cGU9YnNkCistICAgIEFDX0RFRklORShbSEFWRV9GTE9DS19CU0RdLCBbXSwgW1N0cnVjdCBmbG9jayBpcyBCU0QtdHlwZV0pIAorLSAgICBBQ19NU0dfUkVTVUxUKCJ5ZXMiKQorLV0sIEFDX01TR19SRVNVTFQoIm5vIikgKQorKyAgZmxvY2tfdHlwZT1saW51eAorKyAgQUNfREVGSU5FKFtIQVZFX0ZMT0NLX0xJTlVYXSwgW10sIFtTdHJ1Y3QgZmxvY2sgaXMgTGludXgtdHlwZV0pCisgCisgaWYgdGVzdCAiJGZsb2NrX3R5cGUiID0gInVua25vd24iOyB0aGVuCisgCUFDX01TR19FUlJPUihbRG9uJ3Qga25vdyBob3cgdG8gZGVmaW5lIHN0cnVjdCBmbG9jayBvbiB0aGlzIHN5c3RlbVssXSBzZXQgLS1lbmFibGUtb3BjYWNoZT1ub10pCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAtNS42LjMxL2NoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waHA1LWNoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggNzglCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAtNS42LjMxL2NoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BocDUtY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2gKaW5kZXggMzljMzM0Zi4uMWQyMWY4YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC01LjYuMzEvY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waHA1LWNoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoCkBAIC0xLDEwICsxLDE3IEBACi1bUEFUQ0hdIGNvbmZpZy5tNDogY2hhbmdlIEFDX1RSWV9SVU4gdG8gQUNfVFJZX0xJTksKK0Zyb20gNWY0OTk4N2U4OGRmY2JkYjg0YmU2ZTBjOTAyNTQzMmZiZDk5ODcwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjAgQXVnIDIwMTUgMTY6Mjk6MzUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlnLm00OiBjaGFuZ2UgQUNfVFJZX1JVTiB0byBBQ19UUllfTElOSwogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogQUNfVFJZX1JVTiBpcyBub3Qgc3VpdGFibGUgZm9yIGNyb3NzLWNvbXBpbGUKIAogU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorCislJSBvcmlnaW5hbCBwYXRjaDogY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2gKKworJSUgb3JpZ2luYWwgcGF0Y2g6IHBocDUtY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2gKIC0tLQogIGV4dC9maWxlaW5mby9jb25maWcubTQgfCAzMSArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCkBAIC01Miw1ICs1OSw1IEBACiAgICAgIGRubCB1c2luZyB0aGUgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24KICAgICAgQUNfTVNHX1JFU1VMVCh5ZXMpCiAtLSAKLTEuOS4xCisyLjcuNAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BocDUtcGVhci1tYWtlZmlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvcGhwNS1wZWFyLW1ha2VmaWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmZjY0MjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BocDUtcGVhci1tYWtlZmlsZS5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDc5NzI1ZTgyZDU5ODFmYzk0ZWI2NTdmMGY0NmE0OTlkYmZjMWNjNDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgorRGF0ZTogV2VkLCAyIE5vdiAyMDExIDE2OjU0OjU3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFVwc3RyZWFtLXN0YXR1czogVW5rbm93bgorCislJSBvcmlnaW5hbCBwYXRjaDogcGhwNS1wZWFyLW1ha2VmaWxlLnBhdGNoCistLS0KKyBwZWFyL01ha2VmaWxlLmZyYWcgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9wZWFyL01ha2VmaWxlLmZyYWcgYi9wZWFyL01ha2VmaWxlLmZyYWcKK2luZGV4IDAwYmFjYWUuLjczOWVlY2EgMTAwNjQ0CistLS0gYS9wZWFyL01ha2VmaWxlLmZyYWcKKysrKyBiL3BlYXIvTWFrZWZpbGUuZnJhZworQEAgLTExLDcgKzExLDcgQEAgUEVBUl9QUkVGSVggPSAtZHAgYSR7cHJvZ3JhbV9wcmVmaXh9CisgUEVBUl9TVUZGSVggPSAtZHMgYSQocHJvZ3JhbV9zdWZmaXgpCisgCisgaW5zdGFsbC1wZWFyLWluc3RhbGxlcjogJChTQVBJX0NMSV9QQVRIKQorLQlAJCh0b3BfYnVpbGRkaXIpL3NhcGkvY2xpL3BocCAkKFBFQVJfSU5TVEFMTF9GTEFHUykgcGVhci9pbnN0YWxsLXBlYXItbm96bGliLnBoYXIgLWQgIiQocGVhcmRpcikiIC1iICIkKGJpbmRpcikiICR7UEVBUl9QUkVGSVh9ICR7UEVBUl9TVUZGSVh9CisrCUAkKFBIUF9OQVRJVkVfRElSKS9waHAgJChQRUFSX0lOU1RBTExfRkxBR1MpICQoYnVpbGRkaXIpL2luc3RhbGwtcGVhci1ub3psaWIucGhhciAtZCAiJChwZWFyZGlyKSIgLWIgIiQoYmluZGlyKSIgJHtQRUFSX1BSRUZJWH0gJHtQRUFSX1NVRkZJWH0KKyAKKyBpbnN0YWxsLXBlYXI6CisgCUBlY2hvICJJbnN0YWxsaW5nIFBFQVIgZW52aXJvbm1lbnQ6ICAgICAgJChJTlNUQUxMX1JPT1QpJChwZWFyZGlyKS8iCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvcGhwNS1waGFyLW1ha2VmaWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waHA1LXBoYXItbWFrZWZpbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUxZWZkNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvcGhwNS1waGFyLW1ha2VmaWxlLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gM2VhNjI2YThkMDgxZjU2YjAxMDA0Yjc5OTI1MzRkNGU2YjgxYTljYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+CitEYXRlOiBXZWQsIDIgTm92IDIwMTEgMTY6NTQ6NTcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IHBoYXIgcGFja2FnaW5nCisKK0luaGVyaXRlZCBmcm9tIE9FLUNsYXNzaWMsIHdpdGggc29tZSBhZGRpdGlvbnMgdG8gZml4IGhvc3QgcGF0aHMgbGVha2luZworaW50byB0aGUgdGFyZ2V0IHBhY2thZ2UuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlnXQorCislJSBvcmlnaW5hbCBwYXRjaDogcGhwNS1waGFyLW1ha2VmaWxlLnBhdGNoCistLS0KKyBleHQvcGhhci9NYWtlZmlsZS5mcmFnIHwgMTcgKysrLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2V4dC9waGFyL01ha2VmaWxlLmZyYWcgYi9leHQvcGhhci9NYWtlZmlsZS5mcmFnCitpbmRleCBiOGIxYjQyLi4xMDA1YjJkIDEwMDY0NAorLS0tIGEvZXh0L3BoYXIvTWFrZWZpbGUuZnJhZworKysrIGIvZXh0L3BoYXIvTWFrZWZpbGUuZnJhZworQEAgLTUsMjAgKzUsOSBAQCBwaGFyY21kOiAkKGJ1aWxkZGlyKS9waGFyLnBocCAkKGJ1aWxkZGlyKS9waGFyLnBoYXIKKyAKKyBQSFBfUEhBUkNNRF9TRVRUSU5HUyA9IC1kICdvcGVuX2Jhc2VkaXI9JyAtZCAnb3V0cHV0X2J1ZmZlcmluZz0wJyAtZCAnbWVtb3J5X2xpbWl0PS0xJyAtZCBwaGFyLnJlYWRvbmx5PTAgLWQgJ3NhZmVfbW9kZT0wJworIFBIUF9QSEFSQ01EX0VYRUNVVEFCTEUgPSBgIFwKKy0JaWYgdGVzdCAteCAiJCh0b3BfYnVpbGRkaXIpLyQoU0FQSV9DTElfUEFUSCkiOyB0aGVuIFwKKy0JCSQodG9wX3NyY2RpcikvYnVpbGQvc2h0b29sIGVjaG8gLW4gLS0gIiQodG9wX2J1aWxkZGlyKS8kKFNBUElfQ0xJX1BBVEgpIC1uIjsgXAorLQkJaWYgdGVzdCAieCQoUEhQX01PRFVMRVMpIiAhPSAieCI7IHRoZW4gXAorLQkJJCh0b3Bfc3JjZGlyKS9idWlsZC9zaHRvb2wgZWNobyAtbiAtLSAiIC1kIGV4dGVuc2lvbl9kaXI9JCh0b3BfYnVpbGRkaXIpL21vZHVsZXMiOyBcCistCQlmb3IgaSBpbiBiejIgemxpYiBwaGFyOyBkbyBcCistCQkJaWYgdGVzdCAtZiAiJCh0b3BfYnVpbGRkaXIpL21vZHVsZXMvJCRpLmxhIjsgdGhlbiBcCistCQkJCS4gJCh0b3BfYnVpbGRkaXIpL21vZHVsZXMvJCRpLmxhOyAkKHRvcF9zcmNkaXIpL2J1aWxkL3NodG9vbCBlY2hvIC1uIC0tICIgLWQgZXh0ZW5zaW9uPSQkZGxuYW1lIjsgXAorLQkJCWZpOyBcCistCQlkb25lOyBcCistCQlmaTsgXAorLQllbHNlIFwKKy0JCSQodG9wX3NyY2RpcikvYnVpbGQvc2h0b29sIGVjaG8gLW4gLS0gIiQoUEhQX0VYRUNVVEFCTEUpIjsgXAorLQlmaTtgCistUEhQX1BIQVJDTURfQkFORyA9IGAkKHRvcF9zcmNkaXIpL2J1aWxkL3NodG9vbCBlY2hvIC1uIC0tICIkKElOU1RBTExfUk9PVCkkKGJpbmRpcikvJChwcm9ncmFtX3ByZWZpeClwaHAkKHByb2dyYW1fc3VmZml4KSQoRVhFRVhUKSI7YAorKwkJJCh0b3Bfc3JjZGlyKS9idWlsZC9zaHRvb2wgZWNobyAtbiAtLSAiJChQSFBfRVhFQ1VUQUJMRSkiOyBgCisrCisrUEhQX1BIQVJDTURfQkFORyA9IGAkKHRvcF9zcmNkaXIpL2J1aWxkL3NodG9vbCBlY2hvIC1uIC0tICIkKGJpbmRpcikvJChwcm9ncmFtX3ByZWZpeClwaHAkKHByb2dyYW1fc3VmZml4KSQoRVhFRVhUKSI7YAorIAorICQoYnVpbGRkaXIpL3BoYXIvcGhhci5pbmM6ICQoc3JjZGlyKS9waGFyL3BoYXIuaW5jCisgCS1AdGVzdCAtZCAkKGJ1aWxkZGlyKS9waGFyIHx8IG1rZGlyICQoYnVpbGRkaXIpL3BoYXIKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waHBfZXhlY19uYXRpdmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BocF9leGVjX25hdGl2ZS5wYXRjaAppbmRleCAwNTA2YmRkLi42YWYwZGM4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BocF9leGVjX25hdGl2ZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BocF9leGVjX25hdGl2ZS5wYXRjaApAQCAtMSwxMCArMSwxNyBAQAotVXBzdHJlYW0tc3RhdHVzOiBJbmFwcHJpYXRlCitGcm9tIGQyNTFiNWFhM2QyMzgwM2QwMTZjYTE2ODE4ZTJlMWQyZjJiNzBhMDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgorRGF0ZTogV2VkLCAyIE5vdiAyMDExIDE2OjU0OjU3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFVwc3RyZWFtLXN0YXR1czogSW5hcHByaWF0ZQorCistLS0KKyBzYXBpL2NsaS9jb25maWcubTQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9zYXBpL2NsaS9jb25maWcubTQgYi9zYXBpL2NsaS9jb25maWcubTQKLWluZGV4IGNkZmExZjcuLjBmZTExZTMgMTAwNjQ0CitpbmRleCAyMTY4MTUxLi4yMGE4MWRiIDEwMDY0NAogLS0tIGEvc2FwaS9jbGkvY29uZmlnLm00CiArKysgYi9zYXBpL2NsaS9jb25maWcubTQKLUBAIC0zNiw3ICszNiw3IEBAIGlmIHRlc3QgIiRQSFBfQ0xJIiAhPSAibm8iOyB0aGVuCitAQCAtNTAsNyArNTAsNyBAQCBpZiB0ZXN0ICIkUEhQX0NMSSIgIT0gIm5vIjsgdGhlbgogICAgZXNhYwogIAogICAgZG5sIFNldCBleGVjdXRhYmxlIGZvciB0ZXN0cwpAQCAtMTMsNiArMjAsMyBAQAogICAgUEhQX1NVQlNUKFBIUF9FWEVDVVRBQkxFKQogIAogICAgZG5sIEV4cG9zZSB0byBNYWtlZmlsZQotLS0gCi0xLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzUuNi4zMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNS42LjMxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDgwNDdiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNS42LjMxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBwaHAuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI2MDI2MzZkNDZhNjFjMGFjMDQzMmJiZjVjMDc4ZmU0IgotCi1TUkNfVVJJICs9ICJmaWxlOi8vY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3B0aHJlYWQtY2hlY2stdGhyZWFkcy1tNC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtbHB0aHJlYWQtdG8tbGluay5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2MjBhYmUyNWUwZDZjZDVmMDQxYTM2MGEzMGNlNTc4MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZjM5NzE2OWNiNjVmMDUzOWYzYmNiMDQwNjBmOTc3NzBkNzNlMTkwNzRhMzdiZDJjNThiOThlYmY2ZWNiMTBmIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF81LjYuMzUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzUuNi4zNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTdjMGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF81LjYuMzUuYmIKQEAgLTAsMCArMSwyMyBAQAorcmVxdWlyZSBwaHAuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI2MDI2MzZkNDZhNjFjMGFjMDQzMmJiZjVjMDc4ZmU0IgorCitTUkNfVVJJICs9ICJmaWxlOi8vcGhwNS1jaGFuZ2UtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcHRocmVhZC1jaGVjay10aHJlYWRzLW00LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1scHRocmVhZC10by1saW5rLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9hY2luY2x1ZGUteG1sMi1jb25maWcucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtYWNpbmNsdWRlLXVzZS1wa2djb25maWctZm9yLWxpYnhtbDItY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9waHA1LXBlYXItbWFrZWZpbGUucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGhwNS1waGFyLW1ha2VmaWxlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BocDUtMDAwMS1vcGNhY2hlLWNvbmZpZy5tNC1lbmFibGUtb3BjYWNoZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjkwNWFlNWY1ODYzNTFmM2NhMjlkMDQ0Yzk0ODRkNDc1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVlNzhhN2U5Y2EyMWQ4ZWEzOTRkMDM3YzU1ZWZmZmY0NzdhNDlkYmFlMzFjNzc1M2M1NDcwMzZmNWJkNzNiOTIiCisKK0RFUEVORFMgKz0gImxpYm1jcnlwdCIKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLW1jcnlwdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0ke2V4ZWNfcHJlZml4fSBcCisgICAgICAgICAgICAgICAgICIgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzcuMS45LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF83LjEuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNmNjhhMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzcuMS45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotcmVxdWlyZSBwaHAuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWMwYWY1OTlmNjZkMDQ2MWM1ODM3YzY5NWZjYmM1YzFlIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtU3BlY2lmeS10YWctd2l0aC1saWJ0b29sLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNjY0Mi5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyMzk3YmU1NGYzMjgxY2RmMzBjN2VmMDc2YjI4ZjdkMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMTRkY2MxMGRmZGQ3YzQ0NDNlZGI0ZmUxZTEzM2E0NGYyYjJhODM1MWJlOGM5ZWI2YWI5MjIyZDQ1ZmQ5YmFlIgotCi1QQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWxpPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L215c3FsX2NvbmZpZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtcGRvLW15c3FsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L215c3FsX2NvbmZpZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAsLS13aXRob3V0LW15c3FsaSAtLXdpdGhvdXQtcGRvLW15c3FsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICxteXNxbDUiCi0KLUZJTEVTXyR7UE59LWZwbSArPSAiJHtzeXNjb25mZGlyfS9waHAtZnBtLmQvd3d3LmNvbmYuZGVmYXVsdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNy4yLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzcuMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZDFlNjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzcuMi40LmJiCkBAIC0wLDAgKzEsMjQgQEAKK3JlcXVpcmUgcGhwLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02N2UzNjliYzhkMWYyZTY0MTIzNmI4MDAyMDM5YTZhMiIKKworU1JDX1VSSSArPSAiZmlsZTovL2NoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFjaW5jbHVkZS5tNC1za2lwLWJpbmNvbmZpZy1jaGVjay1mb3ItbGlieG1sLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1haW4tcGhwX2luaS5jLWJ1aWxkLWVtcHR5LXBocF9sb2FkX3plbmRfZXh0ZW5zaW9uX2MucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWVycm9yLWNhdXNlZC1ieS1hLW5ldy12YXJpYWJsZS1pcy1kZWNsYXJlZC1hZnRlci5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGVhci1tYWtlZmlsZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9waGFyLW1ha2VmaWxlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovLzAwMDEtb3BjYWNoZS1jb25maWcubTQtZW5hYmxlLW9wY2FjaGUucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4NjRjNjRmZmQyZjE2ODZiMDM1ZWY4Y2U2YTZkODQ3OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxMTY1OGEwZDc2NGRjOTQwMjNiOWZiNjBkNGI1ZWI3NWQ0MzhhZDE3OTgxZWZlNzBhYmIwZDBkMDlhNDQ3ZWYzIgorCitQQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWxpPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L215c3FsX2NvbmZpZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtcGRvLW15c3FsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L215c3FsX2NvbmZpZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAsLS13aXRob3V0LW15c3FsaSAtLXdpdGhvdXQtcGRvLW15c3FsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICxteXNxbDUiCisKK0ZJTEVTXyR7UE59LWZwbSArPSAiJHtzeXNjb25mZGlyfS9waHAtZnBtLmQvd3d3LmNvbmYuZGVmYXVsdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzNhOGQxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWYvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMzggQEAKKyMhL2Jpbi9iYXNoCitESVI9IiQoIGNkICIkKCBkaXJuYW1lICIke0JBU0hfU09VUkNFWzBdfSIgKSIgJiYgcHdkICkiCitURVNUX0ZJTEU9Ii90bXAvdGVzdC5kYXRhIgorCitSRVRWQUw9MAorIyBUZXN0IGV2ZXJ5IHdyaXRpbmcgdGVzdCBhcHBsaWNhdGlvbgorZm9yIHdyaXRlX2V4ZV9mdWxsX3BhdGggaW4gJHtESVJ9L2FkZF9wZXJzb25fKjsgZG8KKwlpZiBbIC14ICIke3dyaXRlX2V4ZV9mdWxsX3BhdGh9IiBdOyB0aGVuCisJCXdyaXRlX2V4ZT1gYmFzZW5hbWUgJHt3cml0ZV9leGVfZnVsbF9wYXRofWAKKwkJZWNobyAiR2VuZXJhdGluZyBuZXcgdGVzdCBmaWxlIHVzaW5nICR7d3JpdGVfZXhlfS4uLiIKKwkJJHt3cml0ZV9leGVfZnVsbF9wYXRofSAiJHtURVNUX0ZJTEV9IgorCQlSRVRWQUw9JD8KKwkJWyAkUkVUVkFMIC1lcSAwIF0gfHwgZXhpdCAkUkVUVkFMCisKKwkJIyBUZXN0IGV2ZXJ5IHJlYWRpbmcgdGVzdCBhcHBsaWNhdGlvbgorCQlmb3IgcmVhZF9leGVfZnVsbF9wYXRoIGluICR7RElSfS9saXN0X3Blb3BsZV8qOyBkbworCQkJcmVhZF9leGU9YGJhc2VuYW1lICR7cmVhZF9leGVfZnVsbF9wYXRofWAKKwkJCWVjaG8gIlRlc3Q6IFdyaXRlIHdpdGggJHt3cml0ZV9leGV9OyBSZWFkIHdpdGggJHtyZWFkX2V4ZX0uLi4iCisJCQlpZiBbIC14ICIke3JlYWRfZXhlX2Z1bGxfcGF0aH0iIF07IHRoZW4KKwkJCQkke3JlYWRfZXhlX2Z1bGxfcGF0aH0gIiR7VEVTVF9GSUxFfSIKKwkJCQlSRVRWQUw9JD8KKwkJCQlbICRSRVRWQUwgLWVxIDAgXSB8fCBleGl0ICRSRVRWQUwKKwkJCWZpCisJCWRvbmUKKworCQkjIENsZWFudXAuLi4KKwkJaWYgWyAtZSAiJHtURVNUX0ZJTEV9IiBdOyB0aGVuCisJCQlybSAiJHtURVNUX0ZJTEV9IgorCQlmaQorCWZpCitkb25lCisKK2lmIFsgJFJFVFZBTCAtZXEgMCBdIDsgdGhlbgorICAgIGVjaG8gIlBBU1M6IHByb3RvYnVmIgorZWxzZQorICAgIGVjaG8gIkZBSUw6IHByb3RvYnVmIgorZmkKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWZfMy40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zl8zLjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFlN2MxOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zl8zLjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLVNVTU1BUlkgPSAiUHJvdG9jb2wgQnVmZmVycyAtIHN0cnVjdHVyZWQgZGF0YSBzZXJpYWxpc2F0aW9uIG1lY2hhbmlzbSIKLURFU0NSSVBUSU9OID0gIlByb3RvY29sIEJ1ZmZlcnMgYXJlIGEgd2F5IG9mIGVuY29kaW5nIHN0cnVjdHVyZWQgZGF0YSBpbiBhbiBcCi1lZmZpY2llbnQgeWV0IGV4dGVuc2libGUgZm9ybWF0LiBHb29nbGUgdXNlcyBQcm90b2NvbCBCdWZmZXJzIGZvciBhbG1vc3QgXAotYWxsIG9mIGl0cyBpbnRlcm5hbCBSUEMgcHJvdG9jb2xzIGFuZCBmaWxlIGZvcm1hdHMuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9wcm90b2J1ZiIKLVNFQ1RJT04gPSAiY29uc29sZS90b29scyIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotCi1QQUNLQUdFX0JFRk9SRV9QTiA9ICIke1BOfS1jb21waWxlciAke1BOfS1saXRlIgotCi1ERVBFTkRTID0gInpsaWIiCi1SREVQRU5EU18ke1BOfS1jb21waWxlciA9ICIke1BOfSIKLVJERVBFTkRTXyR7UE59LWRldiArPSAiJHtQTn0tY29tcGlsZXIiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM1OTUzYzc1MmVmYzkyOTliMTg0ZjkxYmVmNTQwMDk1IgotCi1TUkNSRVYgPSAiYjA0ZTVjYmEzNTYyMTJlNGU4YzY2YzYxYmJlMGMzYTIwNTM3YzViOSIKLQotUFYgPSAiMy40LjErZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9nb29nbGUvcHJvdG9idWYuZ2l0O2JyYW5jaD0zLjQueCIKLQotRVhUUkFfT0VDT05GICs9ICIgLS13aXRoLXByb3RvYz1lY2hvIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRklMRVNfJHtQTn0tY29tcGlsZXIgPSAiJHtiaW5kaXJ9ICR7bGliZGlyfS9saWJwcm90b2Mke1NPTElCU30iCi1GSUxFU18ke1BOfS1saXRlID0gIiR7YmluZGlyfSAke2xpYmRpcn0vbGlicHJvdG9idWYtbGl0ZSR7U09MSUJTfSIKLQotTUlQU19JTlNUUlVDVElPTl9TRVQgPSAibWlwcyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWZfMy41LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zl8zLjUuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmZiNzlkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWZfMy41LjEuYmIKQEAgLTAsMCArMSw4NCBAQAorU1VNTUFSWSA9ICJQcm90b2NvbCBCdWZmZXJzIC0gc3RydWN0dXJlZCBkYXRhIHNlcmlhbGlzYXRpb24gbWVjaGFuaXNtIgorREVTQ1JJUFRJT04gPSAiUHJvdG9jb2wgQnVmZmVycyBhcmUgYSB3YXkgb2YgZW5jb2Rpbmcgc3RydWN0dXJlZCBkYXRhIGluIGFuIFwKK2VmZmljaWVudCB5ZXQgZXh0ZW5zaWJsZSBmb3JtYXQuIEdvb2dsZSB1c2VzIFByb3RvY29sIEJ1ZmZlcnMgZm9yIGFsbW9zdCBcCithbGwgb2YgaXRzIGludGVybmFsIFJQQyBwcm90b2NvbHMgYW5kIGZpbGUgZm9ybWF0cy4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL3Byb3RvYnVmIgorU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCisKK1BBQ0tBR0VfQkVGT1JFX1BOID0gIiR7UE59LWNvbXBpbGVyICR7UE59LWxpdGUiCisKK0RFUEVORFMgPSAiemxpYiIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCAgPSAiIHByb3RvYnVmLW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59LWNvbXBpbGVyID0gIiR7UE59IgorUkRFUEVORFNfJHtQTn0tZGV2ICs9ICIke1BOfS1jb21waWxlciIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2ggcHl0aG9uLXByb3RvYnVmIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zNTk1M2M3NTJlZmM5Mjk5YjE4NGY5MWJlZjU0MDA5NSIKKworU1JDUkVWID0gIjEwNmZmYzA0YmUxYWJmM2ZmMzM5OWY1NGNjZjE0OTgxNWIyODdkZDkiCisKK1BWID0gIjMuNS4xK2dpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZ29vZ2xlL3Byb3RvYnVmLmdpdDticmFuY2g9My41LnggXAorCSAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICIKKworRVhUUkFfT0VDT05GICs9ICIgLS13aXRoLXByb3RvYz1lY2hvIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIHB0ZXN0CisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitURVNUX1NSQ19ESVI9ImV4YW1wbGVzIgorTEFOR19TVVBQT1JUPSJjcHAgcHl0aG9uIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworCSMgTW9kaWZ5IG1ha2VmaWxlIHRvIHVzZSB0aGUgY3Jvc3MtY29tcGlsZXIKKwlzZWQgLWUgInN8YysrfCR7Q1hYfSBcJChMREZMQUdTKXxnIiAtaSAiJHtTfS8ke1RFU1RfU1JDX0RJUn0vTWFrZWZpbGUiCisKKwlta2RpciAtcCAiJHtCfS8ke1RFU1RfU1JDX0RJUn0iCisKKwkjIEFkZCB0aGUgbG9jYXRpb24gb2YgdGhlIGNyb3NzLWNvbXBpbGVkIGhlYWRlciBhbmQgbGlicmFyeSBmaWxlcworCSMgd2hpY2ggaGF2ZW4ndCBiZWVuIGluc3RhbGxlZCB5ZXQuCisJY3AgIiR7Qn0vcHJvdG9idWYucGMiICIke0J9LyR7VEVTVF9TUkNfRElSfS9wcm90b2J1Zi5wYyIKKwlzZWQgLWUgJ3N8bGliZGlyPXxsaWJkaXI9JHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfXwnIC1pICIke0J9LyR7VEVTVF9TUkNfRElSfS9wcm90b2J1Zi5wYyIKKwlzZWQgLWUgJ3N8Q2ZsYWdzOnxDZmxhZ3M6IC1JJHtTfS9zcmN8JyAtaSAiJHtCfS8ke1RFU1RfU1JDX0RJUn0vcHJvdG9idWYucGMiCisJc2VkIC1lICdzfExpYnM6fExpYnM6IC1MJHtCfS9zcmMvLmxpYnN8JyAtaSAiJHtCfS8ke1RFU1RfU1JDX0RJUn0vcHJvdG9idWYucGMiCisJZXhwb3J0IFBLR19DT05GSUdfUEFUSD0iJHtCfS8ke1RFU1RfU1JDX0RJUn0iCisKKwkjIFNhdmUgdGhlIHBrZ2NmZyBzeXNyb290IHZhcmlhYmxlLCBhbmQgdXBkYXRlIGl0IHRvIG5vdGhpbmcgc28KKwkjIHRoYXQgaXQgZG9lc24ndCBhcHBlbmQgdGhlIHN5c3Jvb3QgdG8gdGhlIGJlZ2lubmluZyBvZiBwYXRocy4KKwkjIFRoZSBoZWFkZXIgYW5kIGxpYnJhcnkgZmlsZXMgYXJlbid0IGluc3RhbGxlZCB0byB0aGUgdGFyZ2V0CisJIyBzeXN0ZW0geWV0LiAgU28gdGhlIGFic29sdXRlIHBhdGhzIHdlcmUgc3BlY2lmaWVkIGFib3ZlLgorCXNhdmVfcGtnX2NvbmZpZ19zeXNyb290X2Rpcj0kUEtHX0NPTkZJR19TWVNST09UX0RJUgorCWV4cG9ydCBQS0dfQ09ORklHX1NZU1JPT1RfRElSPQorCisJIyBDb21waWxlIHRoZSB0ZXN0cworCWZvciBsYW5nIGluICR7TEFOR19TVVBQT1JUfTsgZG8KKwkJb2VfcnVubWFrZSAtQyAiJHtTfS8ke1RFU1RfU1JDX0RJUn0iICR7bGFuZ30KKwlkb25lCisKKwkjIFJlc3RvcmUgdGhlIHBrZ2NvbmZpZyBzeXNyb290IHZhcmlhYmxlCisJZXhwb3J0IFBLR19DT05GSUdfU1lTUk9PVF9ESVI9JHNhdmVfcGtnX2NvbmZpZ19zeXNyb290X2RpcgorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWxvY2FsIG9sZGRpcj1gcHdkYAorCisJY2QgIiR7U30vJHtURVNUX1NSQ19ESVJ9IgorCWluc3RhbGwgLWQgIiR7RH0vJHtQVEVTVF9QQVRIfSIKKwlmb3IgaSBpbiBhZGRfcGVyc29uKiBsaXN0X3Blb3BsZSo7IGRvCisJCWlmIFsgLXggIiRpIiBdOyB0aGVuCisJCQlpbnN0YWxsICIkaSIgIiR7RH0vJHtQVEVTVF9QQVRIfSIKKwkJZmkKKwlkb25lCisJY3AgIiR7U30vJHtURVNUX1NSQ19ESVJ9L2FkZHJlc3Nib29rX3BiMi5weSIgIiR7RH0vJHtQVEVTVF9QQVRIfSIKKwljZCAiJG9sZGRpciIKK30KKworRklMRVNfJHtQTn0tY29tcGlsZXIgPSAiJHtiaW5kaXJ9ICR7bGliZGlyfS9saWJwcm90b2Mke1NPTElCU30iCitGSUxFU18ke1BOfS1saXRlID0gIiR7YmluZGlyfSAke2xpYmRpcn0vbGlicHJvdG9idWYtbGl0ZSR7U09MSUJTfSIKKworTUlQU19JTlNUUlVDVElPTl9TRVQgPSAibWlwcyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcHVzZXRfMS41LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNwdXNldF8xLjUuNy5iYgppbmRleCA4ZjY1MzJjLi4xNTZlNTJhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNwdXNldF8xLjUuNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNwdXNldF8xLjUuNy5iYgpAQCAtMywxNCArMyw5IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCiAKLVNSQ05BTUUgPSAiY3B1c2V0IgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9scGVjaGFjZWsvJHtTUkNOQU1FfS9hcmNoaXZlL3Yke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2YWQ3OWIyNmJhMDNmNTU5NjA0ZDc0NTEzY2MzNDM5MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMjMzNGUxNjQ0MTVlZDVhZWM4M2M1ZmZjM2RjMDFjNDE4NDA2ZWIwMmQ5NmQ4ODFmZGZkNDk1NTg3ZmYwYzAxIgotCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKK1MgPSAiJHtXT1JLRElSfS9naXQiCitTUkNSRVYgPSAiYWU2MjlhYTFkYzk1OTM0Mjc0NWFkOTc0MDZhZGRkZjYzYmI2ZGJkZCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9scGVjaGFjZWsvY3B1c2V0LmdpdDtwcm90b2NvbD1odHRwczsiCiAKIGluaGVyaXQgZGlzdHV0aWxzCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZnV0dXJlc18zLjAuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZnV0dXJlc18zLjAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg1ZmM1Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZ1dHVyZXNfMy4wLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGUgY29uY3VycmVudC5mdXR1cmVzIG1vZHVsZSBwcm92aWRlcyBhIGhpZ2gtbGV2ZWwgaW50ZXJmYWNlIGZvciBhc3luY2hyb25vdXNseSBleGVjdXRpbmcgY2FsbGFibGVzLiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9M2Q3OGM1YmIxNWFjNjQxZDM0ZjJkZGMzYmQ3ZjUxZmEiCi1IT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvcHl0aG9uZnV0dXJlcyIKLURFUEVORFMgPSAicHl0aG9uIgotCi1TUkNfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3NvdXJjZS9mL2Z1dHVyZXMvZnV0dXJlcy0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiY2VkMmMzNjVlNTE4MjQyNTEyZDdhMzk4YjUxNWZmOTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDU0MjUyNTE0NWQ1YWZjOTg0Yzg4ZjkxNGEwYzg1Yzc3NTI3ZjY1OTQ2NjE3ZWRiNTI3NGY3MjQwNmY5ODFkZiIKLQotUyA9ICIke1dPUktESVJ9L2Z1dHVyZXMtJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZnV0dXJlc18zLjIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZnV0dXJlc18zLjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWU5NDVmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mdXR1cmVzXzMuMi4wLmJiCkBAIC0wLDAgKzEsMTMgQEAKK0RFU0NSSVBUSU9OID0gIlRoZSBjb25jdXJyZW50LmZ1dHVyZXMgbW9kdWxlIHByb3ZpZGVzIGEgaGlnaC1sZXZlbCBpbnRlcmZhY2UgZm9yIGFzeW5jaHJvbm91c2x5IGV4ZWN1dGluZyBjYWxsYWJsZXMuIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIlBTRiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTgzNGQ5ODJmOTczYzQ4YjZkNjYyYjU5NDRjNWFiNTY3IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Fncm9uaG9sbS9weXRob25mdXR1cmVzIgorREVQRU5EUyA9ICJweXRob24iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMWIyOTlhMDZiOTZjY2I1OWY3MDMyNDcxNmRjMDAxNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZWMwMmFhN2Q2NzRhY2I4NjE4YWZiMTI3ZTI3ZmRlN2ZjNjg5OTRjMDQzN2FkNzU5ZmEwOTRhNTc0YWRiMjY1IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Z29iamVjdC8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtc3lzcm9vdC1wYXRoLXRvLUdJX0RBVEFESVItZG9uLXQtc2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Z29iamVjdC8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtc3lzcm9vdC1wYXRoLXRvLUdJX0RBVEFESVItZG9uLXQtc2UucGF0Y2gKaW5kZXggYTM5MWY3ZS4uOWExMTQ0MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdvYmplY3QvMDAwMS1jb25maWd1cmUuYWMtYWRkLXN5c3Jvb3QtcGF0aC10by1HSV9EQVRBRElSLWRvbi10LXNlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlnb2JqZWN0LzAwMDEtY29uZmlndXJlLmFjLWFkZC1zeXNyb290LXBhdGgtdG8tR0lfREFUQURJUi1kb24tdC1zZS5wYXRjaApAQCAtMTQsMjggKzE0LDE1IEBACiBpbmRleCAyYzBjZmJkLi5jZmNiM2JmIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0xOTQsNyArMTk0LDcgQEAgUEtHX0NIRUNLX01PRFVMRVMoR0ksCi0gICAgIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAgPj0gaW50cm9zcGVjdGlvbl9yZXF1aXJlZF92ZXJzaW9uCi0gKQorQEAgLTE1NSw3ICsxNTUsNyBAQCBQS0dfQ0hFQ0tfTU9EVUxFUyhHSSwKKyAKKyBHT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0soaW50cm9zcGVjdGlvbl9yZXF1aXJlZF92ZXJzaW9uKQogIAogLUdJX0RBVEFESVI9JCgkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdpZGF0YWRpciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wKQogK0dJX0RBVEFESVI9JFBLR19DT05GSUdfU1lTUk9PVF9ESVIkKCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z2lkYXRhZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjApCiAgQUNfU1VCU1QoR0lfREFUQURJUikKICAKICBpZiB0ZXN0ICIkZW5hYmxlX2NhaXJvIiAhPSBubzsgdGhlbgotQEAgLTIxOSwxMiArMjE5LDYgQEAgQUNfQVJHX1dJVEgoY29tbW9uLAotICAgICB3aXRoX2NvbW1vbj15ZXMpCi0gQU1fQ09ORElUSU9OQUwoV0lUSF9DT01NT04sIHRlc3QgIiR3aXRoX2NvbW1vbiIgPSAieWVzIikKLSAKLS1JTlRST1NQRUNUSU9OX1NDQU5ORVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9zY2FubmVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tSU5UUk9TUEVDVElPTl9DT01QSUxFUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2NvbXBpbGVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tCi0tQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKQotLUFDX1NVQlNUKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpCi0tCi0gIyBjb21waWxlciB3YXJuaW5ncywgZXJyb3JzLCByZXF1aXJlZCBjZmxhZ3MsIGFuZCBjb2RlIGNvdmVyYWdlIHN1cHBvcnQKLSBHTk9NRV9DT01QSUxFX1dBUk5JTkdTKFttYXhpbXVtXSkKLSBBQ19NU0dfQ0hFQ0tJTkcoZm9yIEdub21lIGNvZGUgY292ZXJhZ2Ugc3VwcG9ydCkKIC0tIAogMi4xLjQKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdvYmplY3RfMy4yMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdvYmplY3RfMy4yOC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggODIlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlnb2JqZWN0XzMuMjIuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdvYmplY3RfMy4yOC4wLmJiCmluZGV4IDlkMmUxNjUuLmFiNjViYTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlnb2JqZWN0XzMuMjIuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Z29iamVjdF8zLjI4LjAuYmIKQEAgLTE3LDggKzE3LDggQEAKICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtYWRkLXN5c3Jvb3QtcGF0aC10by1HSV9EQVRBRElSLWRvbi10LXNlLnBhdGNoIFwKICIKIAotU1JDX1VSSVttZDVzdW1dID0gImVkNDExN2VkNWQ1NTRkMjVmZDc3MTg4MDdmYmY4MTlmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA4YjI5Y2ZiMDhlZmM4MGY3YTg2MzBhMjczNGRlYzY1YTk5YzFiNTlmMWU1NzcxYzY3MWQyZTRlZDhhNWNiZTciCitTUkNfVVJJW21kNXN1bV0gPSAiYjI5ZDY5ZWRiNjNhZTFmNTU1YWZlYjE5ZjkwYjk5OTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDJiNDdiMjYxYjQ1YWVkZmM3N2UwMmUzYzkwYTAxY2Q3NGQ2Zjg2YzMyNzNjMTg2MGEwNTRkNTMxZDYwNmU1YSIKIAogUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCiAKQEAgLTI2LDcgKzI2LDcgQEAKIAogRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1jYWlybyAtLXdpdGgtcHl0aG9uPSR7UFlUSE9OfSIKIAotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1zZXR1cHRvb2xzIHB5dGhvbi1pbXBvcnRsaWIiCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uLXNldHVwdG9vbHMiCiBSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3NpcC9zaXBfNC4xOS4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvc2lwL3NpcF80LjE5LjguYmIKc2ltaWxhcml0eSBpbmRleCA5MiUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvc2lwL3NpcF80LjE5LjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3NpcC9zaXBfNC4xOS44LmJiCmluZGV4IDFkODM3YzUuLmVhOTQ0YjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3NpcC9zaXBfNC4xOS4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3NpcC9zaXBfNC4xOS44LmJiCkBAIC05LDggKzksOCBAQAogREVQRU5EUyA9ICJweXRob24iCiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvcHlxdC9zaXAvc2lwLSR7UFZ9L3NpcC0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiNGY0OGUyMTI4OTBlYmU1ODRlOGQ4MDRjZmJjZmM2MWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDMyYjRhYWQyNTI1NGU2OTk3OTEzZTMzYjFjYTNjZjVmZDIxZDU3MjlhNTBhM2NlMmVkY2NiZWE4MmM4MDUzMyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNjI1ZmIyMDM0N2Q0ZmYxYjVkYTU1MTUzOWJlMDcyNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZWFmN2EyZWE3ZDRkMzhhNTZkZDZkMjUwNjU3NDQ2NGJkZGY3Y2YyODRjOTYwODAxNjc5OTQyMzc3YzI5N2JjIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGsvY29uZnNlYXJjaC5kaWZmIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGsvY29uZnNlYXJjaC5kaWZmCmluZGV4IGM1MWU0NzUuLjRkYmQ5YTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RrL2NvbmZzZWFyY2guZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90ay9jb25mc2VhcmNoLmRpZmYKQEAgLTQsMjkgKzQsMzIgQEAKIAogLS0tIHRrOC41LTguNS44Lm9yaWcvdW5peC9jb25maWd1cmUKICsrKyB0azguNS04LjUuOC91bml4L2NvbmZpZ3VyZQotQEAgLTE0MzEsNiArMTQzMSw3IEBACi0gCQkJYGxzIC1kICR7cHJlZml4fS9saWIgMj4vZGV2L251bGxgIFwKLSAJCQlgbHMgLWQgL3Vzci9sb2NhbC9saWIgMj4vZGV2L251bGxgIFwKK0BAIC0xNDMxLDcgKzE0MzEsOCBAQAogIAkJCWBscyAtZCAvdXNyL2NvbnRyaWIvbGliIDI+L2Rldi9udWxsYCBcCisgCQkJYGxzIC1kIC91c3IvbG9jYWwvbGliIDI+L2Rldi9udWxsYCBcCisgCQkJYGxzIC1kIC91c3IvcGtnL2xpYiAyPi9kZXYvbnVsbGAgXAogKwkJCWBscyAtZCAvdXNyL3NoYXJlL3RjbHRrL3RjbDguNSAyPi9kZXYvbnVsbGAgXAogIAkJCWBscyAtZCAvdXNyL2xpYiAyPi9kZXYvbnVsbGAgXAorIAkJCWBscyAtZCAvdXNyL2xpYjY0IDI+L2Rldi9udWxsYCBcCiAgCQkJOyBkbwogIAkJICAgIGlmIHRlc3QgLWYgIiRpL3RjbENvbmZpZy5zaCIgOyB0aGVuCiAtLS0gdGs4LjUtOC41Ljgub3JpZy91bml4L3RjbC5tNAogKysrIHRrOC41LTguNS44L3VuaXgvdGNsLm00Ci1AQCAtOTMsNiArOTMsNyBAQAotIAkJCWBscyAtZCAke3ByZWZpeH0vbGliIDI+L2Rldi9udWxsYCBcCi0gCQkJYGxzIC1kIC91c3IvbG9jYWwvbGliIDI+L2Rldi9udWxsYCBcCitAQCAtOTMsNyArOTMsOCBAQAogIAkJCWBscyAtZCAvdXNyL2NvbnRyaWIvbGliIDI+L2Rldi9udWxsYCBcCisgCQkJYGxzIC1kIC91c3IvbG9jYWwvbGliIDI+L2Rldi9udWxsYCBcCisgCQkJYGxzIC1kIC91c3IvcGtnL2xpYiAyPi9kZXYvbnVsbGAgXAogKwkJCWBscyAtZCAvdXNyL3NoYXJlL3RjbHRrL3RjbDguNSAyPi9kZXYvbnVsbGAgXAogIAkJCWBscyAtZCAvdXNyL2xpYiAyPi9kZXYvbnVsbGAgXAorIAkJCWBscyAtZCAvdXNyL2xpYjY0IDI+L2Rldi9udWxsYCBcCiAgCQkJOyBkbwogIAkJICAgIGlmIHRlc3QgLWYgIiRpL3RjbENvbmZpZy5zaCIgOyB0aGVuCi1AQCAtMjIzLDYgKzIyNCw3IEBACitAQCAtMjIzLDcgKzIyNCw4IEBACiAgCQkJYGxzIC1kICR7cHJlZml4fS9saWIgMj4vZGV2L251bGxgIFwKICAJCQlgbHMgLWQgL3Vzci9sb2NhbC9saWIgMj4vZGV2L251bGxgIFwKICAJCQlgbHMgLWQgL3Vzci9jb250cmliL2xpYiAyPi9kZXYvbnVsbGAgXAogKwkJCWBscyAtZCAvdXNyL3NoYXJlL3RjbHRrL3RrOC41IDI+L2Rldi9udWxsYCBcCiAgCQkJYGxzIC1kIC91c3IvbGliIDI+L2Rldi9udWxsYCBcCisgCQkJYGxzIC1kIC91c3IvbGliNjQgMj4vZGV2L251bGxgIFwKICAJCQk7IGRvCiAgCQkgICAgaWYgdGVzdCAtZiAiJGkvdGtDb25maWcuc2giIDsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGtfOC42LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90a184LjYuOC5iYgpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90a184LjYuNi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGtfOC42LjguYmIKaW5kZXggZDNiZjM5Ny4uMTNkYzRkNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGtfOC42LjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGtfOC42LjguYmIKQEAgLTI2LDggKzI2LDggQEAKICAgICBmaWxlOi8vZml4LXhmdC5kaWZmIFwKICAgICBmaWxlOi8vY29uZmlndXJlLnVzZS5mb250Y29uZmlnLndpdGgueGZ0LnBhdGNoIFwKICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkZDdkYmIzYTY1MjNjNDJkMDVmNmFiNmU4NjA5NmU5OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkNjJjMzcxYTcxYjQ3NDRlZDgzMGUzYzIxZDI3OTY4YzMxZGJhNzRkZDJjNDVmMzZiOWIwNzFlNmQ4OGViMTlkIgorU1JDX1VSSVttZDVzdW1dID0gIjVlMGZhZWNiYTQ1OGVlMTM4NjA3OGZiMjI4ZDAwOGJhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ5ZTdiY2EwOGRkZTk1MTk1YTI3ZjU5NGY3Yzg1MGIwODhiZTM1N2E3YzcwOTZlNDRlMTE1OGM3YTVmZDdiMzMiCiAKIFMgPSAiJHtXT1JLRElSfS8ke0JQTn0ke1BWfS91bml4IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZS1tYXN0ZXJmaWxlcy9yZW1vdmUtcG9saWN5LW9mLXVzci1sb2NhbC1zYmluLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmUtbWFzdGVyZmlsZXMvcmVtb3ZlLXBvbGljeS1vZi11c3ItbG9jYWwtc2Jpbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y4ZGViYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZS1tYXN0ZXJmaWxlcy9yZW1vdmUtcG9saWN5LW9mLXVzci1sb2NhbC1zYmluLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1EaXJlY3RvcnkgL3Vzci9sb2NhbCBpcyBub3QgdXNlZCBmb3IgdXMuIFJlbW92ZSB0aGUgcG9saWN5IHRoYXQgbm90IHRvIGluc3RhbGwKLWJpbmFyaWVzIHRvIC91c3IvbG9jYWwvc2Jpbi4KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLWRpZmYgLS1naXQgYS9jZmVfaW50ZXJuYWwvdXBkYXRlL3VwZGF0ZV9iaW5zLmNmIGIvY2ZlX2ludGVybmFsL3VwZGF0ZS91cGRhdGVfYmlucy5jZgotaW5kZXggMTc5NmNhYS4uNjk3YWYwZCAxMDA2NDQKLS0tLSBhL2NmZV9pbnRlcm5hbC91cGRhdGUvdXBkYXRlX2JpbnMuY2YKLSsrKyBiL2NmZV9pbnRlcm5hbC91cGRhdGUvdXBkYXRlX2JpbnMuY2YKLUBAIC01NSwxNiArNTUsNiBAQCBidW5kbGUgYWdlbnQgY2ZlX2ludGVybmFsX2JpbnMKLSAgICAgICBkZXB0aF9zZWFyY2ggPT4gdV9yZWN1cnNlX2Jhc2VkaXIoImluZiIpLAotICAgICAgIGFjdGlvbiA9PiB1X2ltbWVkaWF0ZTsKLSAKLS0gICAgICAiL3Vzci9sb2NhbC9zYmluLyQoYWdlbnRzKSIKLS0gICAgICBjb21tZW50ID0+ICJDcmVhdGUgc3ltbGlua3Mgb2YgQ0ZFIGJpbmFyaWVzIGluIC91c3IvbG9jYWwvc2JpbiIsCi0tICAgICAgaGFuZGxlID0+IGNhbm9uaWZ5KCJjZmVfaW50ZXJuYWxfYmluc19maWxlc19zYmluXyQoYWdlbnRzKSIpLAotLSAgICAgIG1vdmVfb2JzdHJ1Y3Rpb25zID0+ICJ0cnVlIiwKLS0gICAgICBsaW5rX2Zyb20gPT4gdV9sbl9zKCIkKHN5cy53b3JrZGlyKS9iaW4vJChhZ2VudHMpIik7Ci0tCi0tICAgICAgIi91c3IvbG9jYWwvc2Jpbi8kKGFnZW50cykuY2ZzYXZlZCIKLS0gICAgICBjb21tZW50ID0+ICJSZW1vdmUgYWxsIC5jZnNhdmVkIGZpbGUgZXh0ZW5zaW9uIiwKLS0gICAgICBoYW5kbGUgPT4gY2Fub25pZnkoImNmZV9pbnRlcm5hbF9iaW5zX2ZpbGVzX3JlbW92ZV8kKGFnZW50KV9jZnNhdmVkIiksCi0tICAgICAgZGVsZXRlID0+IHVfdGlkeTsKLSB9Ci0gCi0gYnVuZGxlIGFnZW50IGNmZV9pbnRlcm5hbF91cGRhdGVfYmlucwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmUtbWFzdGVyZmlsZXNfMy45LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZS1tYXN0ZXJmaWxlc18zLjEwLjIuYmIKc2ltaWxhcml0eSBpbmRleCA2NCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmUtbWFzdGVyZmlsZXNfMy45LjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lLW1hc3RlcmZpbGVzXzMuMTAuMi5iYgppbmRleCA5ZDAxYzUxLi5iNTJlN2NjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZS1tYXN0ZXJmaWxlc18zLjkuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZS1tYXN0ZXJmaWxlc18zLjEwLjIuYmIKQEAgLTEsNSArMSw1IEBACiAjCi0jIENvcHlyaWdodCAoQykgMjAxNCAtIDIwMTYgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCisjIENvcHlyaWdodCAoQykgMjAxNCAtIDIwMTcgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCiAjCiBTVU1NQVJZID0gIkJhc2UgcG9saWN5IGZvciBDRkVuZ2luZSIKIApAQCAtMTgsMjAgKzE4LDE5IEBACiBIT01FUEFHRSA9ICJodHRwOi8vY2ZlbmdpbmUuY29tIgogCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTUyY2QzZDEzYWY5MzE4MDgyMjg4OGFiMDA4OGU5MzI4IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OWY3NjQyNmY5ZWY4YzZmNjczOWZhZGQyMWQ4MTdhNGYiCiAKLVNSQ19VUkkgPSAiaHR0cHM6Ly9jZmVuZ2luZS1wYWNrYWdlLXJlcG9zLnMzLmFtYXpvbmF3cy5jb20vdGFyYmFsbHMvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1wb2xpY3ktb2YtdXNyLWxvY2FsLXNiaW4ucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImIxMDFkZGNkNTQ2NzM4YWY2ZWM5MWJlNWMyOTdjYjI0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYzZGVjMmY4NjQ5ZjVmMjc4OGNkNDYzZGNjZjQ3ZjhkYmU5NDE1MjJhY2ZjZjMwOTM1MTdmOTgzYmJmYTA2MDYiCitTUkNfVVJJID0gImh0dHBzOi8vY2ZlbmdpbmUtcGFja2FnZS1yZXBvcy5zMy5hbWF6b25hd3MuY29tL3RhcmJhbGxzLyR7QlB9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjEyNDdlZjRlOGYzY2VlNWVmYTk4ZGE1MGMzMjZlNWE0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVkMThhOGQ3MWY0NTFkMGI1ZGQxZjVlNTc5NDUyYjI5Yjk5YjY2NGYyYmIwODI3ZGJiYTlhNjE1ZjI3NjRkZjYiCiAKIGluaGVyaXQgYXV0b3Rvb2xzCiAKIGV4cG9ydCBFWFBMSUNJVF9WRVJTSU9OPSIke1BWfSIKIAotRVhUUkFfT0VDT05GID0gIi0tcHJlZml4PSR7bG9jYWxzdGF0ZWRpcn0vY2ZlbmdpbmUiCitFWFRSQV9PRUNPTkYgPSAiLS1wcmVmaXg9JHtkYXRhZGlyfS9jZmVuZ2luZSIKIAotRklMRVNfJHtQTn0gKz0gIiR7bG9jYWxzdGF0ZWRpcn0vY2ZlbmdpbmUiCitGSUxFU18ke1BOfSA9ICIke2RhdGFkaXJ9L2NmZW5naW5lIgogCiBSREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWNvcmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZV8zLjkuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lXzMuMTAuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDgxJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZV8zLjkuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmVfMy4xMC4yLmJiCmluZGV4IDRhYThkZWQuLmI4NmIwYTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lXzMuOS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lXzMuMTAuMi5iYgpAQCAtMSw1ICsxLDUgQEAKICMKLSMgQ29weXJpZ2h0IChDKSAyMDE0IC0gMjAxNiBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDE0IC0gMjAxNyBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KICMKIFNVTU1BUlkgPSAiQ0ZFbmdpbmUgaXMgYW4gSVQgaW5mcmFzdHJ1Y3R1cmUgYXV0b21hdGlvbiBmcmFtZXdvcmsiCiAKQEAgLTExLDcgKzExLDcgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly9jZmVuZ2luZS5jb20iCiAKIExJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jZDU5YzM2NTBjOGI3ZmYzNmJhYjFjYzY1ODdiMDk3YSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWY4YjM0ODI4YWIzNzNkNmIxYmI0YjBmYzYwYTc4NDk0IgogCiBERVBFTkRTID0gImF0dHIgdG9reW9jYWJpbmV0IgogCkBAIC0yMCwxNCArMjAsMTcgQEAKICAgICAgICAgICAgZmlsZTovL3NldC1wYXRoLW9mLWRlZmF1bHQtY29uZmlnLWZpbGUucGF0Y2ggXAogIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNjNkYTM5NjU1Y2ZjYTMwY2E4ODVmY2M0YTFiZjhhYTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzJhMzhhZWRmMTE5OWMyMzYxZTEzMzVlMGQ0YTFkOThmOWVmYTdjZDU5MWJjYjY0N2YzNWM3Mzk1YmI2NmYyZCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjMTZiYWYwODE4OWExYWY2ZmNmMmUyZmY2MTEwMjk5MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNGZhOWFjNzI3NmRiYTdiODVkNjc1N2FhYjJmMDkyOWFiOGQzYjExNWNiMGU3YjBjZjk4NDc2MDM0NzQyOWQ3IgogCiBpbmhlcml0IGF1dG90b29scyBzeXN0ZW1kCiAKIGV4cG9ydCBFWFBMSUNJVF9WRVJTSU9OPSIke1BWfSIKIAotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImNmZW5naW5lMy5zZXJ2aWNlIGNmZW5naW5lMy13ZWIuc2VydmljZSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjZmVuZ2luZTMuc2VydmljZSBjZi1hcGFjaGUuc2VydmljZSBjZi1odWIuc2VydmljZSBjZi1wb3N0Z3Jlcy5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjZi1ydW5hbGVydHMuc2VydmljZSBjZi1jb25zdW1lci5zZXJ2aWNlIGNmLWV4ZWNkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGNmLW1vbml0b3JkLnNlcnZpY2UgIGNmLXJlZGlzLXNlcnZlci5zZXJ2aWNlICBjZi1zZXJ2ZXJkLnNlcnZpY2UgXAorIgogU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfSA9ICJkaXNhYmxlIgogCiBQQUNLQUdFQ09ORklHID8/PSAibGlicGNyZSBvcGVuc3NsIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NtcGktYmluZGluZ3MvY21waS1iaW5kaW5nc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jbXBpLWJpbmRpbmdzL2NtcGktYmluZGluZ3NfZ2l0LmJiCmluZGV4IDI1MTY2YWIuLjk4N2MwOWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NtcGktYmluZGluZ3MvY21waS1iaW5kaW5nc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY21waS1iaW5kaW5ncy9jbXBpLWJpbmRpbmdzX2dpdC5iYgpAQCAtMjQsNiArMjQsMTAgQEAKIEVYVFJBX09FQ01BS0UgPSAiLURMSUI9JyR7YmFzZWxpYn0nIFwKICAgICAgICAgICAgICAgICAgLURQWVRIT05fSU5DTFVERV9QQVRIPSR7U1RBR0lOR19JTkNESVJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSIKIAorIyBXaXRoIE5pbmphIGl0IGZhaWxzIHdpdGg6CisjIG5pbmphOiBlcnJvcjogYnVpbGQubmluamE6MjgyOiBiYWQgJC1lc2NhcGUgKGxpdGVyYWwgJCBtdXN0IGJlIHdyaXR0ZW4gYXMgJCQpCitPRUNNQUtFX0dFTkVSQVRPUiA9ICJVbml4IE1ha2VmaWxlcyIKKwogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CiAgICAgZXhwb3J0IFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9CiAgICAgZXhwb3J0IFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kZHJlc2N1ZS9kZHJlc2N1ZV8xLjE5LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGRyZXNjdWUvZGRyZXNjdWVfMS4yMi5iYgpzaW1pbGFyaXR5IGluZGV4IDg5JQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kZHJlc2N1ZS9kZHJlc2N1ZV8xLjE5LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kZHJlc2N1ZS9kZHJlc2N1ZV8xLjIyLmJiCmluZGV4IDI3ZTAwYTUuLjJkZjdkYjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RkcmVzY3VlL2RkcmVzY3VlXzEuMTkuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGRyZXNjdWUvZGRyZXNjdWVfMS4yMi5iYgpAQCAtMTAsOCArMTAsOCBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbWFpbl9jb21tb24uY2M7YmVnaW5saW5lPTU7ZW5kbGluZT0xNjttZDU9M2VjMjg4YjI2NzY1MjhjZDJiMDY5MzY0ZTMxMzAxNmYiCiAKIFNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmx6IgotU1JDX1VSSVttZDVzdW1dID0gImVkNmI1YjgyZDc0Y2JkOTI1ZGIyYjgyOTM1MGU3NGIxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVkOGQwYzlkOWFhYzgwYTkxMTBlOWNiMGQwYTkxYTczOTBkM2JmOWY4MTZiNjdhNjJjYTRlYjE0MGY0NzQ3YjgiCitTUkNfVVJJW21kNXN1bV0gPSAiNDljODQ1ZWQ4OWQyNWI1MzQ4NDJlNDAzNjYxNTRjYjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDk4NTdiMmU4MDc0ODEzYWMxOWRhNWQyNjI4OTBmNzIyZTVmNzkwMGU1MjFhNGM2MDM1NGNlZjk1ZWVhMTBhNyIKIAogIyBUaGlzIGlzbid0IGFscmVhZHkgYWRkZWQgYnkgYmFzZS5iYmNsYXNzCiBkb191bnBhY2tbZGVwZW5kc10gKz0gImx6aXAtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kaWFsb2cvZGlhbG9nXzEuMy0yMDE2MDgyOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RpYWxvZy9kaWFsb2dfMS4zLTIwMTcxMjA5LmJiCnNpbWlsYXJpdHkgaW5kZXggODYlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RpYWxvZy9kaWFsb2dfMS4zLTIwMTYwODI4LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kaWFsb2cvZGlhbG9nXzEuMy0yMDE3MTIwOS5iYgppbmRleCA4NWRlZGUxLi42M2M2NWM0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kaWFsb2cvZGlhbG9nXzEuMy0yMDE2MDgyOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kaWFsb2cvZGlhbG9nXzEuMy0yMDE3MTIwOS5iYgpAQCAtMTAsOCArMTAsOCBAQAogCiBTUkNfVVJJID0gImZ0cDovL2Z0cC5pbnZpc2libGUtaXNsYW5kLm5ldC8ke0JQTn0vJHtCUH0udGd6IFwKICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYTM5ZWMxODM1MTdiYzFmZWFmZjAxN2QwNjczMDBiOGMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDUzMDk1YWJhZWMyODhiZmJjMWNhOWZhY2VkOTE3ZTE3NzQyY2ZmMWVhNDVlYzQ2MjEwMDcxYWMxNTM1NjJmOSIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmNjZmMjhiZWNhOTAwYjU0ZjVmYzkwZmRjY2U5MzUwOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMDEzOTQ0MjExOWUyZWZmNWMzNTIzNmU4ZTVlMzEzYzkwMTUzOTAwOGQ5Y2NjZjhjOGFiMzg1MWI0MTI2N2U2IgogCiAjIGhhcmRjb2RlZCBoZXJlIGZvciB1c2UgaW4gZGlhbG9nLXN0YXRpYyByZWNpcGUKIFMgPSAiJHtXT1JLRElSfS9kaWFsb2ctJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kdW1iLWluaXQvZHVtYi1pbml0XzEuMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZHVtYi1pbml0L2R1bWItaW5pdF8xLjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWE2ZDk1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZHVtYi1pbml0L2R1bWItaW5pdF8xLjIuMC5iYgpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gIlNpbXBsZSB3cmFwcGVyIHNjcmlwdCB3aGljaCBwcm94aWVzIHNpZ25hbHMgdG8gYSBjaGlsZCIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ZZWxwL2R1bWItaW5pdC8iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTU5NDBkMzk5OTVlYTY4NTdkMDFiODIyNzEwOWMyZTljIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ZZWxwL2R1bWItaW5pdC9hcmNoaXZlL3Yke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiNGViN2Y0M2Q3ODIzNjg2NzIzZmY3YWMxYmFkMDk3Y2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzQ0ODY5OTczMjFiZDkzOWNhZDJlZTZhZjAzMGY0ODFkMzk3NTFiYzlhYTBlY2U4NGVkNTVmODY0ZTMwOWEzZiIKKworRVhUUkFfT0VNQUtFID0gIkNDPScke0NDfScgQ0ZMQUdTPScke0NGTEFHU30gJHtMREZMQUdTfSciCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX3NiaW5kaXJ9CisgICAgaW5zdGFsbCAke1N9L2R1bWItaW5pdCAke0R9JHtiYXNlX3NiaW5kaXJ9LworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci9tdXNsLXN0cm5kdXBhLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZWZpdmFyL2VmaXZhci9tdXNsLXN0cm5kdXBhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzhmOGM4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2VmaXZhci9lZml2YXIvbXVzbC1zdHJuZHVwYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRha2VuIGZyb20gdm9pZCBsaW51eAotCi1JbmRleDogZ2l0L3NyYy9saW51eC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvc3JjL2xpbnV4LmMKLSsrKyBnaXQvc3JjL2xpbnV4LmMKLUBAIC00MCw2ICs0MCwxMCBAQAotICNpbmNsdWRlIDxlZml2YXIuaD4KLSAjaW5jbHVkZSA8ZWZpYm9vdC5oPgotIAotKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCi0rI2RlZmluZSBzdHJuZHVwYSh4LHMpIHN0cm5jcHkoYWxsb2NhKHN0cmxlbih4KSsxKSx4LHMpCi0rI2VuZGlmCi0rCi0gI2luY2x1ZGUgImRwLmgiCi0gI2luY2x1ZGUgImxpbnV4LmgiCi0gI2luY2x1ZGUgInV0aWwuaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tLzAwMDEtUmVtb3ZlLXVuZGVmaW5lZC1iZWhhdmlvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tLzAwMDEtUmVtb3ZlLXVuZGVmaW5lZC1iZWhhdmlvci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEzOTdkYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbS8wMDAxLVJlbW92ZS11bmRlZmluZWQtYmVoYXZpb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi1Gcm9tIGQyYTAzYjNlNDMwNDNiNTk2YTc5ODAzYmNiOTNmNzBlNTEzYmJiNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXRyaWNrIEdlb3JnaSA8cGdlb3JnaUBnb29nbGUuY29tPgotRGF0ZTogTW9uLCAxMyBNYXIgMjAxNyAxMzo0ODowMyArMDEwMAotU3ViamVjdDogW1BBVENIXSBSZW1vdmUgdW5kZWZpbmVkIGJlaGF2aW9yCi0KLVBlciBjbGFuZy0zLjksIHRoZSBjb21waWxlciBmYWlscyBvbiAjZGVmaW5lIC4uLmRlZmluZWQoLi4uKSBzdGF0ZW1lbnRzCi1hcyB0aGV5J3JlIHVuZGVmaW5lZCBiZWhhdmlvciAoYXBwYXJlbnRseSB3aXRoIGRpZmZlcmVudCBiZWhhdmlvcgotYmV0d2VlbiBnY2MvY2xhbmcgYW5kIG1zdmMsIHRvbykuCi0KLVNlZSBjbGFuZydzIGNmZSByZXBvIGNvbW1pdCByMjU4MTI4IGZvciBkZXRhaWxzLgotCi1DaGFuZ2UtSWQ6IEk4MmI2MjM1ZTExYjQyNWZhZTQ1ZWViYmUwNmIwOGY4MWM1YmRiYjk4Ci1TaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIEdlb3JnaSA8cGdlb3JnaUBnb29nbGUuY29tPgotUmV2aWV3ZWQtb246IGh0dHBzOi8vcmV2aWV3LmNvcmVib290Lm9yZy8xODc5MgotUmV2aWV3ZWQtYnk6IFN0ZWZhbiBSZWluYXVlciA8c3RlZmFuLnJlaW5hdWVyQGNvcmVib290Lm9yZz4KLVRlc3RlZC1ieTogYnVpbGQgYm90IChKZW5raW5zKSA8bm8tcmVwbHlAY29yZWJvb3Qub3JnPgotLS0tCi0gaHdhY2Nlc3MuYyB8IDE4ICsrKysrKysrKysrKysrKy0tLQotIHBsYXRmb3JtLmggfCAxOCArKysrKysrKysrKysrKystLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9od2FjY2Vzcy5jIGIvaHdhY2Nlc3MuYwotaW5kZXggYWVkZTdlMy4uMmJmNmY0MiAxMDA2NDQKLS0tLSBhL2h3YWNjZXNzLmMKLSsrKyBiL2h3YWNjZXNzLmMKLUBAIC0zNyw5ICszNywyMSBAQAotICNlcnJvciAiVW5rbm93biBvcGVyYXRpbmcgc3lzdGVtIgotICNlbmRpZgotIAotLSNkZWZpbmUgVVNFX0lPUEwJKElTX0xJTlVYIHx8IElTX01BQ09TWCB8fCBkZWZpbmVkKF9fTmV0QlNEX18pIHx8IGRlZmluZWQoX19PcGVuQlNEX18pKQotLSNkZWZpbmUgVVNFX0RFVl9JTwkoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykpCi0tI2RlZmluZSBVU0VfSU9QRVJNCShkZWZpbmVkKF9fZ251X2h1cmRfXykpCi0rI2lmIElTX0xJTlVYIHx8IElTX01BQ09TWCB8fCBkZWZpbmVkKF9fTmV0QlNEX18pIHx8IGRlZmluZWQoX19PcGVuQlNEX18pCi0rI2RlZmluZSBVU0VfSU9QTCAxCi0rI2Vsc2UKLSsjZGVmaW5lIFVTRV9JT1BMIDAKLSsjZW5kaWYKLSsjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykKLSsjZGVmaW5lIFVTRV9ERVZfSU8gMQotKyNlbHNlCi0rI2RlZmluZSBVU0VfREVWX0lPIDAKLSsjZW5kaWYKLSsjaWYgZGVmaW5lZChfX2dudV9odXJkX18pCi0rI2RlZmluZSBVU0VfSU9QRVJNIDEKLSsjZWxzZQotKyNkZWZpbmUgVVNFX0lPUEVSTSAwCi0rI2VuZGlmCi0gCi0gI2lmIFVTRV9JT1BFUk0KLSAjaW5jbHVkZSA8c3lzL2lvLmg+Ci1kaWZmIC0tZ2l0IGEvcGxhdGZvcm0uaCBiL3BsYXRmb3JtLmgKLWluZGV4IGM1YTUyZWYuLmIyZmRjZDAgMTAwNjQ0Ci0tLS0gYS9wbGF0Zm9ybS5oCi0rKysgYi9wbGF0Zm9ybS5oCi1AQCAtMjUsOSArMjUsMjEgQEAKLSAjZGVmaW5lIF9fUExBVEZPUk1fSF9fIDEKLSAKLSAvLyBIZWxwZXIgZGVmaW5lcyBmb3Igb3BlcmF0aW5nIHN5c3RlbXMKLS0jZGVmaW5lIElTX0xJTlVYCShkZWZpbmVkKF9fZ251X2xpbnV4X18pIHx8IGRlZmluZWQoX19saW51eF9fKSkKLS0jZGVmaW5lIElTX01BQ09TWAkoZGVmaW5lZChfX0FQUExFX18pICYmIGRlZmluZWQoX19NQUNIX18pKSAvKiB5ZXMsIGJvdGguICovCi0tI2RlZmluZSBJU19XSU5ET1dTCShkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQpIHx8IGRlZmluZWQoX19XSU4zMl9fKSB8fCBkZWZpbmVkKF9fV0lORE9XU19fKSkKLSsjaWYgZGVmaW5lZChfX2dudV9saW51eF9fKSB8fCBkZWZpbmVkKF9fbGludXhfXykKLSsjZGVmaW5lIElTX0xJTlVYIDEKLSsjZWxzZQotKyNkZWZpbmUgSVNfTElOVVggMAotKyNlbmRpZgotKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgZGVmaW5lZChfX01BQ0hfXykgLyogeWVzLCBib3RoLiAqLwotKyNkZWZpbmUgSVNfTUFDT1NYIDEKLSsjZWxzZQotKyNkZWZpbmUgSVNfTUFDT1NYIDAKLSsjZW5kaWYKLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX1dJTjY0KSB8fCBkZWZpbmVkKF9fV0lOMzJfXykgfHwgZGVmaW5lZChfX1dJTkRPV1NfXykKLSsjZGVmaW5lIElTX1dJTkRPV1MgMQotKyNlbHNlCi0rI2RlZmluZSBJU19XSU5ET1dTIDAKLSsjZW5kaWYKLSAKLSAvLyBMaWtld2lzZSBmb3IgdGFyZ2V0IGFyY2hpdGVjdHVyZXMKLSAjaWYgZGVmaW5lZCAoX19pMzg2X18pIHx8IGRlZmluZWQgKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hbWQ2NF9fKQotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vMDAwMS1zcGktRGVmaW5lLV9YT1BFTl9TT1VSQ0UtdG8tZW5hYmxlLWZmcy1saWJjLUFQSS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tLzAwMDEtc3BpLURlZmluZS1fWE9QRU5fU09VUkNFLXRvLWVuYWJsZS1mZnMtbGliYy1BUEkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxNzBmZWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmxhc2hyb20vZmxhc2hyb20vMDAwMS1zcGktRGVmaW5lLV9YT1BFTl9TT1VSQ0UtdG8tZW5hYmxlLWZmcy1saWJjLUFQSS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gN2M2NWE0NjVhM2RkZWI3YWZiOWE3YzQ5ZDAxMGFlN2U1ZDViMWFkMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE4IEp1bCAyMDE3IDIwOjI1OjQ5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNwaTogRGVmaW5lIF9YT1BFTl9TT1VSQ0UgdG8gZW5hYmxlIGZmcygpIGxpYmMgQVBJCi0KLW11c2wgZXhwb3NlcyB0aGlzIGlzc3VlCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcGkuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NwaS5jIGIvc3BpLmMKLWluZGV4IDg5NGY3M2YuLmFlYjY1MTggMTAwNjQ0Ci0tLS0gYS9zcGkuYwotKysrIGIvc3BpLmMKLUBAIC0yMSw3ICsyMSw3IEBACi0gLyoKLSAgKiBDb250YWlucyB0aGUgZ2VuZXJpYyBTUEkgZnJhbWV3b3JrCi0gICovCi0tCi0rI2RlZmluZSBfWE9QRU5fU09VUkNFCi0gI2luY2x1ZGUgPHN0cmluZ3MuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgImZsYXNoLmgiCi0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbGFzaHJvbS9mbGFzaHJvbV8wLjkuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tXzAuOS45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Y2RkOGFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsYXNocm9tL2ZsYXNocm9tXzAuOS45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiZmxhc2hyb20gaXMgYSB1dGlsaXR5IGZvciBpZGVudGlmeWluZywgcmVhZGluZywgd3JpdGluZywgdmVyaWZ5aW5nIGFuZCBlcmFzaW5nIGZsYXNoIGNoaXBzIgotTElDRU5TRSA9ICJHUEx2MiIKLUhPTUVQQUdFID0gImh0dHA6Ly9mbGFzaHJvbS5vcmciCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotREVQRU5EUyA9ICJwY2l1dGlscyBsaWJ1c2IgbGlidXNiLWNvbXBhdCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuZmxhc2hyb20ub3JnL3JlbGVhc2VzL2ZsYXNocm9tLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zcGktRGVmaW5lLV9YT1BFTl9TT1VSQ0UtdG8tZW5hYmxlLWZmcy1saWJjLUFQSS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zc3QyNi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS11bmRlZmluZWQtYmVoYXZpb3IucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYWFiOWM5ODkyNWQ5Y2ZiNWZmYjI4YjY3YTYxMTI1MzAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2IzMTU2YjBmNjNlYjE5MjAyNGI3NmMwODE0MTM1OTMwMjk3YWFjNDFmODA3NjFhNWQyOTNkZTc2OTc4M2M0NSIKLQotaW5oZXJpdCBwa2djb25maWcKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIFBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IGluc3RhbGwKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsdWVudGJpdC9mbHVlbnRiaXRfMC4xMi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmx1ZW50Yml0L2ZsdWVudGJpdF8wLjEyLjEuYmIKaW5kZXggZTJlZGQwOS4uOTlmNjgwZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmx1ZW50Yml0L2ZsdWVudGJpdF8wLjEyLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZmx1ZW50Yml0L2ZsdWVudGJpdF8wLjEyLjEuYmIKQEAgLTIxLDYgKzIxLDEwIEBACiAKIEVYVFJBX09FQ01BS0UgPSAiLURHTlVfSE9TVD0ke0hPU1RfU1lTfSAtREZMQl9BTEw9T04gLURGTEJfVEQ9MSIKIAorIyBXaXRoIE5pbmphIGl0IGZhaWxzIHdpdGg6CisjIG5pbmphOiBlcnJvcjogYnVpbGQubmluamE6MTM0OiBiYWQgJC1lc2NhcGUgKGxpdGVyYWwgJCBtdXN0IGJlIHdyaXR0ZW4gYXMgJCQpCitPRUNNQUtFX0dFTkVSQVRPUiA9ICJVbml4IE1ha2VmaWxlcyIKKwogU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInRkLWFnZW50LWJpdC5zZXJ2aWNlIgogCiBUQVJHRVRfQ0NfQVJDSF9hcHBlbmQgPSAiICR7U0VMRUNURURfT1BUSU1JWkFUSU9OfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3QuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWVlODc0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJHbnVwbG90IGlzIGEgcG9ydGFibGUgY29tbWFuZC1saW5lIGRyaXZlbiBpbnRlcmFjdGl2ZSBkYXRhZmlsZSBcCi0odGV4dCBvciBiaW5hcnkpIGFuZCBmdW5jdGlvbiBwbG90dGluZyB1dGlsaXR5LiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGxvdC5pbmZvLyIKLVNFQ1RJT04gPSAiY29uc29sZS9zY2llbnRpZmljIgotTElDRU5TRSA9ICJnbnVwbG90IgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0O21kNT0yNDNhMTg2ZmMyZmQzYjk5MjEyNWQ2MGQ1YjFiYWI4ZiIKLURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgZ2QgcmVhZGxpbmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGRpc3Ryb19mZWF0dXJlc19jaGVjawotIyBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1hY3BhdGhzID0gIiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImNhaXJvIgotUEFDS0FHRUNPTkZJR1tjYWlyb10gPSAiLS13aXRoLWNhaXJvLC0td2l0aG91dC1jYWlybyxjYWlybyBwYW5nbyIKLVBBQ0tBR0VDT05GSUdbbHVhXSA9ICItLXdpdGgtbHVhLC0td2l0aG91dC1sdWEsbHVhIgotIyB0aGVyZSdzIGNvbXBpbGF0aW9uIGZhaWx1cmUgaWYgcXQ0IGlzIGVuYWJsZWQKLVBBQ0tBR0VDT05GSUdbcXQ0XSA9ICItLXdpdGgtcXQsLS13aXRob3V0LXF0LHF0NC14MTEtZnJlZSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1yZWFkbGluZT0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXR1dG9yaWFsIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtd3h3aWRnZXRzIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcXRwbG90LTAuMi9xdG9waWEudHJtICR7U30vdGVybS8KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZ251cGxvdC5kZXNrdG9wICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy8KLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L3BpeG1hcHMvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZ251cGxvdC5wbmcgJHtEfSR7ZGF0YWRpcn0vcGl4bWFwcy8KLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXgxMS1kYmcgJHtQTn0teDExIgotREVTQ1JJUFRJT05fJHtQTn0teDExID0gIlgxMSBkaXNwbGF5IHRlcm1pbmFsIGZvciBHbnVwbG90LiIKLVNFQ1RJT05fJHtQTn0teDExID0gIngxMS9zY2llbnRpZmljIgotRklMRVNfJHtQTn0teDExID0gIiR7bGliZXhlY2Rpcn0gJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMgJHtkYXRhZGlyfS9waXhtYXBzICR7bGliZGlyfS9YMTEgIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS90ZXhtZiIKLUZJTEVTXyR7UE59LXgxMS1kYmcgKz0gIiR7bGliZXhlY2Rpcn0vZ251cGxvdC8qLy5kZWJ1ZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC8wMDAxLXJlZHVjZS1idWlsZC10by1jb252ZXJzaW9uLXRvb2xzLWZvci1uYXRpdmUtYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3QvMDAwMS1yZWR1Y2UtYnVpbGQtdG8tY29udmVyc2lvbi10b29scy1mb3ItbmF0aXZlLWJ1aWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4ZjFmZDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3QvMDAwMS1yZWR1Y2UtYnVpbGQtdG8tY29udmVyc2lvbi10b29scy1mb3ItbmF0aXZlLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gYTJhYzk2NjgxM2ZkYzA0Yjc4OGJlOWM4NDc0YTRjNWUzNmMxMDlhMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDYgTWFyIDIwMTggMjE6NTM6MjYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVkdWNlIGJ1aWxkIHRvIGNvbnZlcnNpb24gdG9vbHMgZm9yIG5hdGl2ZSBidWlsZAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA5MjQxY2U1Li5iMjRlMjkxIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMSw3ICsxLDcgQEAKKyAjIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9tYWtlIHRvIHByb2R1Y2UgTWFrZWZpbGUuaW4gLSotTWFrZWZpbGUtKi0KKyBBVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbgorIAorLVNVQkRJUlMgPSBjb25maWcgbTQgdGVybSBzcmMgZG9jcyBtYW4gZGVtbyB0dXRvcmlhbCBzaGFyZQorK1NVQkRJUlMgPSBkb2NzCisgCisgRVhUUkFfRElTVCA9IEJVR1MgQ29weXJpZ2h0IEZBUS5wZGYgR05VbWFrZWZpbGUgSU5TVEFMTCBJTlNUQUxMLmdudSBcCisgTWFrZWZpbGUubWFpbnQgUEFUQ0hMRVZFTCBQR1BLRVlTIFJFQURNRSBSRUxFQVNFX05PVEVTIFwKKy0tIAorMi4xNC4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC8wMDAyLWRvLW5vdC1idWlsZC1kZW1vcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC8wMDAyLWRvLW5vdC1idWlsZC1kZW1vcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTBiNGEyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZ251cGxvdC9nbnVwbG90LzAwMDItZG8tbm90LWJ1aWxkLWRlbW9zLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gYTJhYzk2NjgxM2ZkYzA0Yjc4OGJlOWM4NDc0YTRjNWUzNmMxMDlhMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDYgTWFyIDIwMTggMjE6NTM6MjYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGJ1aWxkIGRlbW9zCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IDkyNDFjZTUuLmIyNGUyOTEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC0xLDcgKzEsNyBAQAorICMjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b21ha2UgdG8gcHJvZHVjZSBNYWtlZmlsZS5pbiAtKi1NYWtlZmlsZS0qLQorIEFVVE9NQUtFX09QVElPTlMgPSBmb3JlaWduCisgCistU1VCRElSUyA9IGNvbmZpZyBtNCB0ZXJtIHNyYyBkb2NzIG1hbiBkZW1vIHR1dG9yaWFsIHNoYXJlCisrU1VCRElSUyA9IGNvbmZpZyBtNCB0ZXJtIHNyYyBkb2NzIG1hbiB0dXRvcmlhbCBzaGFyZQorIAorIEVYVFJBX0RJU1QgPSBCVUdTIENvcHlyaWdodCBGQVEucGRmIEdOVW1ha2VmaWxlIElOU1RBTEwgSU5TVEFMTC5nbnUgXAorIE1ha2VmaWxlLm1haW50IFBBVENITEVWRUwgUEdQS0VZUyBSRUFETUUgUkVMRUFTRV9OT1RFUyBcCistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3QvMDAwMy1Vc2UtbmF0aXZlLXRvb2xzLXRvLWJ1aWxkLWRvY3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3QvMDAwMy1Vc2UtbmF0aXZlLXRvb2xzLXRvLWJ1aWxkLWRvY3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQwMzljMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC8wMDAzLVVzZS1uYXRpdmUtdG9vbHMtdG8tYnVpbGQtZG9jcy5wYXRjaApAQCAtMCwwICsxLDExMSBAQAorRnJvbSAxMTI4YTk4ZmQxNjc2OTgxZTUzNmQ4NzczZjM2M2NiODMyY2ZhNmJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNiBNYXIgMjAxOCAyMjoyODo1NiArMDEwMAorU3ViamVjdDogW1BBVENIXSBVc2UgbmF0aXZlIHRvb2xzIHRvIGJ1aWxkIGRvY3MKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKy0tLQorIGRvY3MvTWFrZWZpbGUuYW0gfCAyMiArKysrKysrKysrKy0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZG9jcy9NYWtlZmlsZS5hbSBiL2RvY3MvTWFrZWZpbGUuYW0KK2luZGV4IDNiYWYwYzQuLmU4MmY4N2QgMTAwNjQ0CistLS0gYS9kb2NzL01ha2VmaWxlLmFtCisrKysgYi9kb2NzL01ha2VmaWxlLmFtCitAQCAtMTUyLDcgKzE1Miw3IEBAIGdudXBsb3QtZ3JvZmYucHM6IGdudXBsb3QubXMgJChzcmNkaXIpL3RpdGxlcGFnLm1zCisgCisgIyMjIGRvYzJ4eHggZGVwZW5kZW5jaWVzCisgZ251cGxvdC5tczogZG9jMm1zJChFWEVFWFQpICQoc3JjZGlyKS9nbnVwbG90LmRvYworLQkkKEFNX1ZfR0VOKSAuL2RvYzJtcyQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2MgZ251cGxvdC5tcyAiJChzcmNkaXIpL3RpdGxlcGFnLm1zIgorKwkkKEFNX1ZfR0VOKSBkb2MybXMkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jIGdudXBsb3QubXMgIiQoc3JjZGlyKS90aXRsZXBhZy5tcyIKKyAKKyBkb2MybXNfU09VUkNFUyA9IGRvYzJtcy5jIHRlcm1kb2MuYworIGRvYzJtc19DUFBGTEFHUyA9IC1EQUxMX1RFUk1fRE9DICQoQU1fQ1BQRkxBR1MpCitAQCAtMTczLDEwICsxNzMsMTAgQEAgcGRmX2ZpZ3VyZXM6ICQoR05VUExPVF9FWEUpICQoc3JjZGlyKS9wbG90c3R5bGVzLmdudQorIAkkKEFNX1ZfR0VOKXRvdWNoICRACisgCisgZmlndXJlcy50ZXg6IGFsbHRlcm0uaCBkb2MydGV4JChFWEVFWFQpICQoc3JjZGlyKS9nbnVwbG90LmRvYworLQkkKEFNX1ZfR0VOKS4vZG9jMnRleCQoRVhFRVhUKSAtZmlndXJlcyAkKHNyY2RpcikvZ251cGxvdC5kb2MgJEAKKysJJChBTV9WX0dFTikgZG9jMnRleCQoRVhFRVhUKSAtZmlndXJlcyAkKHNyY2RpcikvZ251cGxvdC5kb2MgJEAKKyAKKyBub2ZpZ3VyZXMudGV4OiBhbGx0ZXJtLmggZG9jMnRleCQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2MKKy0JJChBTV9WX0dFTikuL2RvYzJ0ZXgkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jICRACisrCSQoQU1fVl9HRU4pIGRvYzJ0ZXgkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jICRACisgCisgcGRmOiBnbnVwbG90LnBkZgorIHBkZl9ub2ZpZzogbm9maWd1cmVzLnBkZgorQEAgLTI1Niw3ICsyNTYsNyBAQCBnbnVwbG90LnBzOiBnbnVwbG90LmR2aQorIGhscDogZ251cGxvdC5obHAKKyAKKyBnbnVwbG90LmhscDogZG9jMmhscCQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2MKKy0JJChBTV9WX0dFTikuL2RvYzJobHAkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jIGdudXBsb3QuaGxwCisrCSQoQU1fVl9HRU4pZG9jMmhscCQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2MgZ251cGxvdC5obHAKKyAKKyBkb2MyaGxwX1NPVVJDRVMgPSBkb2MyaGxwLmMgdGVybWRvYy5jCisgCitAQCAtMjY0LDE0ICsyNjQsMTQgQEAgZG9jMmhscF9TT1VSQ0VTID0gZG9jMmhscC5jIHRlcm1kb2MuYworIGdpaDogZ251cGxvdC5naWgKKyAKKyBnbnVwbG90LmdpaDogZG9jMmdpaCQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2MKKy0JJChBTV9WX0dFTikuL2RvYzJnaWgkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jIGdudXBsb3QuZ2loCisrCSQoQU1fVl9HRU4pZG9jMmdpaCQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2MgZ251cGxvdC5naWgKKyAKKyBkb2MyZ2loX1NPVVJDRVMgPSBkb2MyZ2loLmMgdGVybWRvYy5jCisgCisgIyBUbyBpbmNsdWRlIGFsbCB0ZXJtaW5hbHMgaW4gdGhlIC5naWggZmlsZQorIGFsbGdpaDogYWxsZG9jMmdpaCQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2MKKyAJQGVjaG8gImdlbmVyYXRlIGdudXBsb3QuZ2loIHdpdGggYWxsIHRlcm1pbmFscyIKKy0JJChBTV9WX2F0KS4vYWxsZG9jMmdpaCQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2MgZ251cGxvdC5naWgKKysJJChBTV9WX2F0KWFsbGRvYzJnaWgkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jIGdudXBsb3QuZ2loCisgCisgYWxsZG9jMmdpaF9TT1VSQ0VTID0gZG9jMmdpaC5jIHRlcm1kb2MuYworIGFsbGRvYzJnaWhfQ1BQRkxBR1MgPSAtREFMTF9URVJNX0RPQyAkKEFNX0NQUEZMQUdTKQorQEAgLTI4Niw3ICsyODYsNyBAQCAkKHNyY2Rpcikvd2luZG93cy93Z251cGxvdC5oaGsKKyB3eGhlbHAvd2dudXBsb3QuaGhjIHd4aGVscC93Z251cGxvdC5oaGsgd3hoZWxwLyouaHRtbCB3aW5kb3dzLyoucG5nCisgCisgd3hoZWxwL3dnbnVwbG90Lmh0bWw6IGRvYzJ3eGh0bWwkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jIAorLQkkKEFNX1ZfR0VOKSAuL2RvYzJ3eGh0bWwkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jIHd4aGVscC8KKysJJChBTV9WX0dFTikgZG9jMnd4aHRtbCQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2Mgd3hoZWxwLworIAorICNkb2Myd3hodG1sX1NPVVJDRVMgPSB3aW5kb3dzL2RvYzJodG1sLmMgdGVybWRvYy5jIHhyZWYuYyBhbGx0ZXJtLmgKKyAjZG9jMnd4aHRtbF9DUFBGTEFHUyA9IC1EQUxMX1RFUk1fRE9DIC1EV1hIRUxQIC1JLi4vc3JjICQoQU1fQ1BQRkxBR1MpCitAQCAtMzM2LDcgKzMzNiw3IEBAIGluc3RhbGwtaW5mbzogZ251cGxvdC5pbmZvCisgaXBmOiBnbnVwbG90LmlwZgorIAorIGdudXBsb3QuaXBmOiBkb2MyaXBmJChFWEVFWFQpICQoc3JjZGlyKS9nbnVwbG90LmRvYworLQkkKEFNX1ZfR0VOKSAuL2RvYzJpcGYkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jIGdudXBsb3QuaXBmCisrCSQoQU1fVl9HRU4pIGRvYzJpcGYkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jIGdudXBsb3QuaXBmCisgCisgZG9jMmlwZl9TT1VSQ0VTID0gZG9jMmlwZi5jIHRlcm1kb2MuYyB4cmVmLmMKKyAKK0BAIC0zNDQsNyArMzQ0LDcgQEAgZG9jMmlwZl9TT1VSQ0VTID0gZG9jMmlwZi5jIHRlcm1kb2MuYyB4cmVmLmMKKyBydGY6IGdudXBsb3QucnRmCisgCisgZ251cGxvdC5ydGY6IGRvYzJydGYkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jCistCSQoQU1fVl9HRU4pIC4vZG9jMnJ0ZiQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2MgZ251cGxvdC5ydGYKKysJJChBTV9WX0dFTikgZG9jMnJ0ZiQoRVhFRVhUKSAkKHNyY2RpcikvZ251cGxvdC5kb2MgZ251cGxvdC5ydGYKKyAKKyBkb2MycnRmX1NPVVJDRVMgPSBkb2MycnRmLmMgdGVybWRvYy5jIHhyZWYuYworIAorQEAgLTM1MiwxMyArMzUyLDEzIEBAIGRvYzJydGZfU09VUkNFUyA9IGRvYzJydGYuYyB0ZXJtZG9jLmMgeHJlZi5jCisgcm5oOiBnbnVwbG90LnJuaAorIAorIGdudXBsb3Qucm5oOiBkb2Mycm5oJChFWEVFWFQpICQoc3JjZGlyKS9nbnVwbG90LmRvYworLQkkKEFNX1ZfR0VOKSAuL2RvYzJybmgkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jIGdudXBsb3Qucm5oCisrCSQoQU1fVl9HRU4pIGRvYzJybmgkKEVYRUVYVCkgJChzcmNkaXIpL2dudXBsb3QuZG9jIGdudXBsb3Qucm5oCisgCisgZG9jMnJuaF9TT1VSQ0VTID0gZG9jMnJuaC5jIHRlcm1kb2MuYworIAorICMgdGhpcyBpcyBob3cgdG8gY2hlY2sgdGhlIGdudXBsb3QuZG9jIGZpbGUKKyBjaGVjay1sb2NhbDogY2hlY2tkb2MkKEVYRUVYVCkKKy0JJChBTV9WX2F0KS4vY2hlY2tkb2MkKEVYRUVYVCkgPCAkKHNyY2RpcikvZ251cGxvdC5kb2M7IFwKKysJJChBTV9WX2F0KWNoZWNrZG9jJChFWEVFWFQpIDwgJChzcmNkaXIpL2dudXBsb3QuZG9jOyBcCisgCWlmIHRlc3QgJCQ/IC1lcSAwOyB0aGVuIFwKKyAJICBlY2hvICJQQVNTOiBnbnVwbG90LmRvYyI7IFwKKyAJZWxzZSBcCistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3QvMDAwNC1BZGQtY29uZmlndXJlLW9wdGlvbi10by1maW5kLXF0NS1uYXRpdmUtdG9vbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3QvMDAwNC1BZGQtY29uZmlndXJlLW9wdGlvbi10by1maW5kLXF0NS1uYXRpdmUtdG9vbHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VkOWU3NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC8wMDA0LUFkZC1jb25maWd1cmUtb3B0aW9uLXRvLWZpbmQtcXQ1LW5hdGl2ZS10b29scy5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIDU3N2UyMTYyMjQ3NWZhMjlmZDQ3MTE0OWNmMjM4MGM1M2ZkYmZjYmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorRGF0ZTogVHVlLCA2IE1hciAyMDE4IDIyOjI2OjQ4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBjb25maWd1cmUgb3B0aW9uIHRvIGZpbmQgcXQ1IG5hdGl2ZSB0b29scworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitQa2ctY29uZmlnIGNoZWNrcyBmb3IgdGFyZ2V0IGxvY2F0aW9ucy4gV2l0aCB0aGVzZSBxdDUgdG9vbHMgYXMgdWljL21vYy4uCitjYW5ub3QgYmUgdXNlZC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDYgKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBjZGQ4MzFhLi5mZGQxOTJiIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMTMzLDExICsxMTMzLDE1IEBAIGlmIHRlc3QgIiR7ZW5hYmxlX3F0fSIgPSB5ZXMgOyB0aGVuCisgICBlbHNlCisgICAgIHRyeV9xdDQ9eWVzCisgICBmaQorKyAgQUNfQVJHX1dJVEgocXQ1bmF0aXZlc3lzcm9vdCwKKysgICAgQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1xdDVuYXRpdmVzeXNyb290PVBBVEhdLCBbcHJlcGVuZCBwYXRoIC0gZm9yIG5hdGl2ZSBxdDUgdG9vbHNdKSwKKysgICAgW1FUNU5BVElWRVNZU1JPT1Q9IiR3aXRodmFsIl0sIFtRVDVOQVRJVkVTWVNST09UPSIiXSkKKysKKyAgIGlmIHRlc3QgIngke3dpdGhfcXR9IiAhPSAieHF0NCI7IHRoZW4KKyAgICAgUEtHX0NIRUNLX01PRFVMRVNfTk9GQUlMKFFULCBbUXQ1Q29yZSBRdDVHdWkgUXQ1TmV0d29yayBRdDVTdmcgUXQ1UHJpbnRTdXBwb3J0XSkKKyAgICAgaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IG5vOyB0aGVuCisgICAgICAgdHJ5X3F0ND1ubworLSAgICAgIFFUNUxPQz1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1ob3N0X2JpbnMgUXQ1Q29yZWAKKysgICAgICBRVDVMT0M9JHtRVDVOQVRJVkVTWVNST09UfWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWhvc3RfYmlucyBRdDVDb3JlYAorICAgICAgIGlmIHRlc3QgIngke1FUNUxPQ30iICE9ICJ4IjsgdGhlbgorICAgICAgICAgVUlDPSR7UVQ1TE9DfS91aWMKKyAgICAgICAgIE1PQz0ke1FUNUxPQ30vbW9jCistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3QvZ251cGxvdC5kZXNrdG9wIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZ251cGxvdC9nbnVwbG90L2dudXBsb3QuZGVza3RvcAppbmRleCBmNjdkZjllLi4xMDEyZTQ3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3QvZ251cGxvdC5kZXNrdG9wCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC9nbnVwbG90LmRlc2t0b3AKQEAgLTEsOCArMSw4IEBACiBbRGVza3RvcCBFbnRyeV0KIE5hbWU9R251cGxvdAogQ29tbWVudD1QbG90IGRhdGEgYW5kIGZ1bmN0aW9uIGdyYXBocwotRXhlYz14LXRlcm1pbmFsLWVtdWxhdG9yIC1lIGdudXBsb3QKLVRlcm1pbmFsPWZhbHNlCitFeGVjPWdudXBsb3QKK1Rlcm1pbmFsPXRydWUKIFR5cGU9QXBwbGljYXRpb24KIEljb249Z251cGxvdAogQ2F0ZWdvcmllcz1TY2llbmNlOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZ251cGxvdC9nbnVwbG90L2x1YS1sb2FkbGlicy1jb25maWd1cmUtaW4tZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZ251cGxvdC9nbnVwbG90L2x1YS1sb2FkbGlicy1jb25maWd1cmUtaW4tZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2YyY2QyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC9sdWEtbG9hZGxpYnMtY29uZmlndXJlLWluLWZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLUluZGV4OiBnbnVwbG90LTQuNi41L2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdudXBsb3QtNC42LjUub3JpZy9jb25maWd1cmUuaW4KLSsrKyBnbnVwbG90LTQuNi41L2NvbmZpZ3VyZS5pbgotQEAgLTY5MCw2ICs2OTAsMTEgQEAgaWYgdGVzdCAiJHt3aXRoX2x1YX0iID0geWVzIDsgdGhlbgotICAgZmkKLSAKLSAgIGlmIHRlc3QgIiR3aXRoX2x1YSIgIT0gbm87IHRoZW4KLSsgICAgZG5sIGNoZWNrIGZvciBkbG9wZW4vZGwgdG8gZml4IGxvYWRsaWJzIGxpbmsgZmFpbHVyZQotKyAgICBBQ19DSEVDS19GVU5DKFtkbG9wZW5dLCBbXSwKLSsgICAgICBBQ19DSEVDS19MSUIoW2RsXSwgW2Rsb3Blbl0sIERMT1BFTl9MSUJTPSItbGRsIikpCi0rICAgIEFDX1NVQlNUKERMT1BFTl9MSUJTKQotKyAgICBMVUFfTElCUz0iJExVQV9MSUJTICRETE9QRU5fTElCUyIKLSAgICAgVEVSTUxJQlM9IiRURVJNTElCUyAkTFVBX0xJQlMiCi0gICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJExVQV9DRkxBR1MiCi0gICBlbHNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3QvcXRvcGlhLnRybSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC9xdG9waWEudHJtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTJmOWJiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC9xdG9waWEudHJtCisrKyAvZGV2L251bGwKQEAgLTEsNDgzICswLDAgQEAKLS8qCi0gKiAkSWQ6IGR1bWIudHJtLHYgMS4xNiAyMDA0LzA0LzEzIDE3OjI0OjE2IGJyb2VrZXIgRXhwICQKLSAqCi0gKi8KLQotLyogR05VUExPVCAtIHF0b3BpYS50cm0gKi8KLQotLypbCi0gKiBDb3B5cmlnaHQgMTk5MSAtIDE5OTMsIDE5OTgsIDIwMDQgICBUaG9tYXMgV2lsbGlhbXMsIENvbGluIEtlbGxleQotICoKLSAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZCBpdHMKLSAqIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsCi0gKiBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZAotICogdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIKLSAqIGluIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiBQZXJtaXNzaW9uIHRvIG1vZGlmeSB0aGUgc29mdHdhcmUgaXMgZ3JhbnRlZCwgYnV0IG5vdCB0aGUgcmlnaHQgdG8KLSAqIGRpc3RyaWJ1dGUgdGhlIGNvbXBsZXRlIG1vZGlmaWVkIHNvdXJjZSBjb2RlLiAgTW9kaWZpY2F0aW9ucyBhcmUgdG8KLSAqIGJlIGRpc3RyaWJ1dGVkIGFzIHBhdGNoZXMgdG8gdGhlIHJlbGVhc2VkIHZlcnNpb24uICBQZXJtaXNzaW9uIHRvCi0gKiBkaXN0cmlidXRlIGJpbmFyaWVzIHByb2R1Y2VkIGJ5IGNvbXBpbGluZyBtb2RpZmllZCBzb3VyY2VzIGlzIGdyYW50ZWQsCi0gKiBwcm92aWRlZCB5b3UKLSAqICAgMS4gZGlzdHJpYnV0ZSB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgbW9kaWZpY2F0aW9ucyBmcm9tIHRoZQotICogICAgcmVsZWFzZWQgdmVyc2lvbiBpbiB0aGUgZm9ybSBvZiBhIHBhdGNoIGZpbGUgYWxvbmcgd2l0aCB0aGUgYmluYXJpZXMsCi0gKiAgIDIuIGFkZCBzcGVjaWFsIHZlcnNpb24gaWRlbnRpZmljYXRpb24gdG8gZGlzdGluZ3Vpc2ggeW91ciB2ZXJzaW9uCi0gKiAgICBpbiBhZGRpdGlvbiB0byB0aGUgYmFzZSByZWxlYXNlIHZlcnNpb24gbnVtYmVyLAotICogICAzLiBwcm92aWRlIHlvdXIgbmFtZSBhbmQgYWRkcmVzcyBhcyB0aGUgcHJpbWFyeSBjb250YWN0IGZvciB0aGUKLSAqICAgIHN1cHBvcnQgb2YgeW91ciBtb2RpZmllZCB2ZXJzaW9uLCBhbmQKLSAqICAgNC4gcmV0YWluIG91ciBjb250YWN0IGluZm9ybWF0aW9uIGluIHJlZ2FyZCB0byB1c2Ugb2YgdGhlIGJhc2UKLSAqICAgIHNvZnR3YXJlLgotICogUGVybWlzc2lvbiB0byBkaXN0cmlidXRlIHRoZSByZWxlYXNlZCB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgY29kZSBhbG9uZwotICogd2l0aCBjb3JyZXNwb25kaW5nIHNvdXJjZSBtb2RpZmljYXRpb25zIGluIHRoZSBmb3JtIG9mIGEgcGF0Y2ggZmlsZSBpcwotICogZ3JhbnRlZCB3aXRoIHNhbWUgcHJvdmlzaW9ucyAyIHRocm91Z2ggNCBmb3IgYmluYXJ5IGRpc3RyaWJ1dGlvbnMuCi0gKgotICogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5Ci0gKiB0byB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdy4KLV0qLwotCi0vKgotICogVGhpcyBmaWxlIGlzIGluY2x1ZGVkIGJ5IC4uL3Rlcm0uYy4KLSAqCi0gKiBUaGlzIHRlcm1pbmFsIGRyaXZlciBzdXBwb3J0czoKLSAqICAgcXRvcGlhIHRlcm1pbmFscwotICoKLSAqIEFVVEhPUlMKLSAqICAgTWljaGFlbCBOZXVyb3RoLCAyMDA0LTA1LTE2Ci0gKiAgICAgICAgICAgSU5URVJORVQ6IG1pY2hhZWwubmV1cm90aEBmcmVlbmV0LmRlCi0gKgotICogc2VuZCB5b3VyIGNvbW1lbnRzIG9yIHN1Z2dlc3Rpb25zIHRvIChnbnVwbG90LWluZm9AbGlzdHMuc291cmNlZm9yZ2UubmV0KS4KLSAqCi0gKi8KLSNpbmNsdWRlICJkcml2ZXIuaCIKLQotI2RlZmluZSBOT19RVE9QSUFfRU5IQU5DRURfU1VQUE9SVAotCi0jaWZkZWYgVEVSTV9SRUdJU1RFUgotcmVnaXN0ZXJfdGVybShxdG9waWFfZHJpdmVyKQotI2VuZGlmCi0KLSNpZmRlZiBURVJNX1BST1RPCi1URVJNX1BVQkxJQyB2b2lkIFFUT1BJQV9vcHRpb25zIF9fUFJPVE8oKHZvaWQpKTsKLVRFUk1fUFVCTElDIHZvaWQgUVRPUElBX2luaXQgX19QUk9UTygodm9pZCkpOwotVEVSTV9QVUJMSUMgdm9pZCBRVE9QSUFfZ3JhcGhpY3MgX19QUk9UTygodm9pZCkpOwotVEVSTV9QVUJMSUMgdm9pZCBRVE9QSUFfdGV4dCBfX1BST1RPKCh2b2lkKSk7Ci1URVJNX1BVQkxJQyB2b2lkIFFUT1BJQV9yZXNldCBfX1BST1RPKCh2b2lkKSk7Ci1URVJNX1BVQkxJQyB2b2lkIFFUT1BJQV9saW5ldHlwZSBfX1BST1RPKChpbnQgbGluZXR5cGUpKTsKLVRFUk1fUFVCTElDIHZvaWQgUVRPUElBX21vdmUgX19QUk9UTygodW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5KSk7Ci1URVJNX1BVQkxJQyB2b2lkIFFUT1BJQV9wb2ludCBfX1BST1RPKCh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHksCi0JCQkJICAgICBpbnQgcG9pbnQpKTsKLVRFUk1fUFVCTElDIHZvaWQgUVRPUElBX3ZlY3RvciBfX1BST1RPKCh1bnNpZ25lZCBpbnQgeCwgdW5zaWduZWQgaW50IHkpKTsKLVRFUk1fUFVCTElDIHZvaWQgUVRPUElBX3B1dF90ZXh0IF9fUFJPVE8oKHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSwKLQkJCQkJY29uc3QgY2hhciAqc3RyKSk7Ci1URVJNX1BVQkxJQyB2b2lkIFFUT1BJQV9hcnJvdyBfX1BST1RPKCh1bnNpZ25lZCBpbnQgc3gsIHVuc2lnbmVkIGludCBzeSwKLQkJCQkgICAgIHVuc2lnbmVkIGludCBleCwgdW5zaWduZWQgaW50IGV5LAotCQkJCSAgICAgaW50IGhlYWQpKTsKLQotI2RlZmluZSBFTkhxdG9waWFfcHV0X3RleHQgTlVMTAotCi0KLSNkZWZpbmUgUVRPUElBX1hNQVggNDA5NgotI2RlZmluZSBRVE9QSUFfWU1BWCA0MDk2Ci0KLSNpZmRlZiBaQVVSVVMKLSNkZWZpbmUgUVRPUElBX1ZDSEFSIChRVE9QSUFfWU1BWC8yNSkKLSNkZWZpbmUgUVRPUElBX0hDSEFSIChRVE9QSUFfWE1BWC80MCkKLSNkZWZpbmUgUVRPUElBX1ZUSUMgKFFUT1BJQV9ZTUFYLzUwKQotI2RlZmluZSBRVE9QSUFfSFRJQyAoUVRPUElBX1hNQVgvNDApCi0jZWxzZQotI2RlZmluZSBRVE9QSUFfVkNIQVIgKFFUT1BJQV9ZTUFYLzI1KQotI2RlZmluZSBRVE9QSUFfSENIQVIgKFFUT1BJQV9YTUFYLzUwKQotI2RlZmluZSBRVE9QSUFfVlRJQyAoUVRPUElBX1lNQVgvMTAwKQotI2RlZmluZSBRVE9QSUFfSFRJQyAoUVRPUElBX1hNQVgvMTUwKQotI2VuZGlmCi0KLSNlbmRpZiAvKiBURVJNX1BST1RPICovCi0KLSNpZmRlZiBURVJNX0JPRFkKLQotLyojaW5jbHVkZSA8d2luc29jazIuaD4qLwotLyogbmVlZHM6IHdzMl8zMi5saWIgKi8KLSNpZm5kZWYgX01TQ19WRVIKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2luY2x1ZGUgPGFycGEvaW5ldC5oPgotI2VuZGlmCi0KLSNkZWZpbmUgUVRPUElBX01BWF9CVUZGRVIJCTUxMgotI2RlZmluZSBRVE9QSUFfTUFYX0RFTEFZX0NPVU5UCTIwCS8qICogMTAwIG1zID0gMiBzICovCi0KLSNpZmRlZiBfTVNDX1ZFUgotI2RlZmluZSBRVE9QSUFfQkFEX1NPQ0tFVAkJSU5WQUxJRF9TT0NLRVQJCS8qIC0xICovCi0jZGVmaW5lIFFUT1BJQV9CQURfQ09OTkVDVAkJU09DS0VUX0VSUk9SCi0jZWxzZQotI2RlZmluZSBRVE9QSUFfQkFEX1NPQ0tFVAkJLTEKLSNkZWZpbmUgUVRPUElBX0JBRF9DT05ORUNUCQktMQotI2VuZGlmCi0jZGVmaW5lIFFUT1BJQV9QT1JUX05PCQkJNTA1MAotCi1zdGF0aWMgaW50IHF0b3BpYV9jbGllbnRfc29ja2V0ID0gUVRPUElBX0JBRF9TT0NLRVQ7Ci1zdGF0aWMgdW5zaWduZWQgc2hvcnQgcXRvcGlhX3BvcnRfbm8gPSBRVE9QSUFfUE9SVF9OTzsKLXN0YXRpYyBjaGFyIHF0b3BpYV9ob3N0X25hbWVbUVRPUElBX01BWF9CVUZGRVIrMV0gPSB7ICJsb2NhbGhvc3QiIH07Ci0KLXN0YXRpYyBpbnQgT3BlbkNsaWVudCBfX1BST1RPKCggaW50IHRlc3QpKTsKLXN0YXRpYyB2b2lkIENsb3NlQ2xpZW50KCk7Ci0KLXN0YXRpYyB2b2lkIE15U2xlZXAoIGRlbGF5ICkKLWludCBkZWxheTsKLXsKLSNpZmRlZiBfTVNDX1ZFUgotCVNsZWVwKCBkZWxheSApOwotI2Vsc2UKLQl1c2xlZXAoIGRlbGF5ICk7Ci0jZW5kaWYKLX0KLQotc3RhdGljIHZvaWQgSW5pdFNvY2tldHMoKQotewotI2lmZGVmIF9NU0NfVkVSCi0JV09SRCB3VmVyc2lvblJlcXVlc3RlZDsKLQlXU0FEQVRBIHdzYURhdGE7Ci0JaW50IGVycjsKLQotCXdWZXJzaW9uUmVxdWVzdGVkID0gTUFLRVdPUkQoIDIsIDIgKTsKLQotCWVyciA9IFdTQVN0YXJ0dXAoIHdWZXJzaW9uUmVxdWVzdGVkLCAmd3NhRGF0YSApOwotI2VuZGlmCi19Ci0KLXN0YXRpYyB2b2lkIEV4aXRTb2NrZXRzKCkKLXsKLSNpZmRlZiBfTVNDX1ZFUgotCVdTQUNsZWFudXAoKTsKLSNlbmRpZgotfQotCi1zdGF0aWMgaW50IENoZWNrRm9yUXRwbG90KCBjb3VudCApCi1pbnQgY291bnQ7Ci17Ci0JLyogdGVzdCAodmlhIHNvY2tldHMpIGlmIHF0cGxvdCBpcyBhbGxyZWFkeSBydW5uaW5nICovCi0JaWYoICFPcGVuQ2xpZW50KCAxICkgKQotCXsKLQkJLyogZ2l2ZSBxdHBsb3QgYSBsaXRsZSBiaXQgdGltZSB0byBzdGFydC4uLiAqLwotCQlpZiggY291bnQgPCBRVE9QSUFfTUFYX0RFTEFZX0NPVU5UICkKLQkJewotCQkJaWYoIGNvdW50ID09IDAgKQotCQkJewotI2lmZGVmIF9NU0NfVkVSCi0JCQkJc3lzdGVtKCAic3RhcnQgcXRwbG90IiApOwotI2Vsc2UKLQkJCQlzeXN0ZW0oICJxdHBsb3QmIiApOwotI2VuZGlmCi0JCQl9Ci0JCQotCQkJTXlTbGVlcCgxMDApOwotCi0JCQlyZXR1cm4gQ2hlY2tGb3JRdHBsb3QoIGNvdW50KzEgKTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCXJldHVybiAwOwotCQl9Ci0JfQotCWVsc2UKLQl7Ci0JCUNsb3NlQ2xpZW50KCk7Ci0KLQkJcmV0dXJuIDE7Ci0JfQotfQotCi1zdGF0aWMgaW50IE9wZW5DbGllbnQoIHRlc3QgKQotaW50IHRlc3Q7Ci17Ci0gICAgaW50IGxlbjsKLSAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcmVzczsKLSAgICBpbnQgcmVzdWx0OwotCi0JLyogIENyZWF0ZSBhIHNvY2tldCBmb3IgdGhlIGNsaWVudC4gICovCi0KLSAgICBxdG9waWFfY2xpZW50X3NvY2tldCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgMCk7Ci0KLQlpZiggcXRvcGlhX2NsaWVudF9zb2NrZXQgIT0gUVRPUElBX0JBRF9TT0NLRVQgKQotCXsKLQkJLyogIE5hbWUgdGhlIHNvY2tldCwgYXMgYWdyZWVkIHdpdGggdGhlIHNlcnZlci4gICovCi0KLQkJYWRkcmVzcy5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKLQkJYWRkcmVzcy5zaW5fYWRkci5zX2FkZHIgPSBpbmV0X2FkZHIoLypxdG9waWFfaG9zdF9uYW1lKi8iMTI3LjAuMC4xIik7CS8qIGxvY2FsaG9zdCAqLwotCQlhZGRyZXNzLnNpbl9wb3J0ID0gaHRvbnMocXRvcGlhX3BvcnRfbm8pOwotCQlsZW4gPSBzaXplb2YoYWRkcmVzcyk7Ci0KLQkJLyogIE5vdyBjb25uZWN0IG91ciBzb2NrZXQgdG8gdGhlIHNlcnZlcidzIHNvY2tldC4gICovCi0KLQkJcmVzdWx0ID0gY29ubmVjdChxdG9waWFfY2xpZW50X3NvY2tldCwgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyZXNzLCBsZW4pOwotCQkKLQkJaWYoIHJlc3VsdCA9PSBRVE9QSUFfQkFEX1NPQ0tFVCApCi0JCXsKLQkJCS8qIG1hcmsgdGhpcyBzb2NrZXQgYXMgYmFkICovCi0KLQkJCWNsb3NlKCBxdG9waWFfY2xpZW50X3NvY2tldCApOwotCi0JCQlxdG9waWFfY2xpZW50X3NvY2tldCA9IFFUT1BJQV9CQURfU09DS0VUOwotCi0JCQlpZiggIXRlc3QgKQotCQkJewotCQkJCWZwcmludGYoIGdwb3V0ZmlsZSwgImVycm9yIGNvbm5lY3RpbmcgdG8gc2VydmVyICFcbiIgKTsKLQkJCX0KLQkJCXJldHVybiAwOwkvKiBzb21ldGhpbmcgd2VudCB3cm9uZyAqLwotCQl9Ci0JfQotCWVsc2UKLQl7Ci0JCWlmKCAhdGVzdCApCi0JCXsKLQkJCWZwcmludGYoIGdwb3V0ZmlsZSwgImVycm9yIGNyZWF0aW5nIHNvY2tldCAhXG4iICk7Ci0JCX0KLQkJcmV0dXJuIDA7CS8qIHNvbWV0aGluZyB3ZW50IHdyb25nICovCi0JfQotCi0JcmV0dXJuIDE7CS8qIGV2ZXJ5dGhpbmcgaXN0IG9rICEgKi8KLX0KLQotc3RhdGljIHZvaWQgQ2xvc2VDbGllbnQoKQotewotICAgIGNsb3NlKCBxdG9waWFfY2xpZW50X3NvY2tldCApOwotfQotCi1zdGF0aWMgaW50IElzQ2xpZW50T2soKQotewotCXJldHVybiBxdG9waWFfY2xpZW50X3NvY2tldCAhPSBRVE9QSUFfQkFEX1NPQ0tFVDsKLX0KLQotc3RhdGljIHZvaWQgU2VuZERhdGFUb1NvY2tldCggc0xpbmUgKQotY29uc3QgY2hhciAqIHNMaW5lOwotewotCWlmKCBJc0NsaWVudE9rKCkgKQotCXsKLQkJaW50IHNlbmRfY291bnQ7Ci0KLQkJc2VuZF9jb3VudCA9IHNlbmQoIHF0b3BpYV9jbGllbnRfc29ja2V0LCBzTGluZSwgc3RybGVuKCBzTGluZSApLCAwICk7Ci0KLQkJaWYoIHNlbmRfY291bnQgPD0gMCApCi0JCXsKLQkJCWZwcmludGYoIGdwb3V0ZmlsZSwgImVycm9yIHdyaXRpbmcgdG8gc29ja2V0IHN0cj0lcyFcbiIsIHNMaW5lICk7Ci0JCX0KLQkJLyoKLQkJZWxzZQotCQl7Ci0JCQlmcHJpbnRmKCBncG91dGZpbGUsICJ3cm90ZSAlZCBieXRlc1xuIiwgc2VuZF9jb3VudCApOwotCQl9Ci0JCSovCi0JfQotCWVsc2UKLQl7Ci0JCS8qIGZvciB0ZXN0aW5nLi4uICovCi0JCS8qZnByaW50ZiggZ3BvdXRmaWxlLCBzTGluZSApOyovCi0JfQotfQotCi0vKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotCi1lbnVtIFFUT1BJQV9pZCB7IFFUT1BJQV9QT1JULCBRVE9QSUFfSE9TVCwgUVRPUElBX09USEVSIH07Ci0KLXN0YXRpYyBzdHJ1Y3QgZ2VuX3RhYmxlIFFUT1BJQV9vcHRzW10gPQotewotICAgIHsgInBvJHJ0IiwgUVRPUElBX1BPUlQgfSwKLSAgICB7ICJobyRzdCIsIFFUT1BJQV9IT1NUIH0sCi0gICAgeyBOVUxMLCBRVE9QSUFfT1RIRVIgfQotfTsKLQotVEVSTV9QVUJMSUMgdm9pZAotUVRPUElBX29wdGlvbnMoKQotewotICAgIC8qIHRoaXMgaXMgbm90IGZvciB0aGUgcXRvcGlhIHRlcm1pbmFsICEgKi8KLQkvKlNlbmREYXRhVG9Tb2NrZXQoICJxdGQgb3B0aW9uc1xuIiApOyovCi0KLSAgICBpbnQgeCwgeTsKLSAgICBzdHJ1Y3QgdmFsdWUgYTsKLQotICAgIHdoaWxlICghRU5EX09GX0NPTU1BTkQpIAotCXsKLQkJc3dpdGNoKGxvb2t1cF90YWJsZSgmUVRPUElBX29wdHNbMF0sY190b2tlbikpIAotCQl7Ci0JCQljYXNlIFFUT1BJQV9QT1JUOgotCQkJCWNfdG9rZW4rKzsKLQkJCQlpZiAoRU5EX09GX0NPTU1BTkQpCi0JCQkJCWludF9lcnJvcihjX3Rva2VuLCAiZXhwZWN0aW5nIHBvcnQgbnVtYmVyIik7Ci0JCQkJcXRvcGlhX3BvcnRfbm8gPSAoaW50KSByZWFsKGNvbnN0X2V4cHJlc3MoJmEpKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgUVRPUElBX0hPU1Q6Ci0JCQkJY190b2tlbisrOwotCQkJCWlmIChFTkRfT0ZfQ09NTUFORCkKLQkJCQkJaW50X2Vycm9yKGNfdG9rZW4sICJleHBlY3RpbmcgaG9zdCBuYW1lIik7Ci0JCQkJaWYgKGlzc3RyaW5nKGNfdG9rZW4pKQotCQkJCQlxdW90ZV9zdHIoIHF0b3BpYV9ob3N0X25hbWUsIGNfdG9rZW4sIHNpemVvZihxdG9waWFfaG9zdF9uYW1lKSApOwotCQkJCWVsc2UKLSAJCQkJCWNvcHlfc3RyKCBxdG9waWFfaG9zdF9uYW1lLCBjX3Rva2VuLCBzaXplb2YocXRvcGlhX2hvc3RfbmFtZSkgKTsKLQkJCQljX3Rva2VuKys7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIFFUT1BJQV9PVEhFUjoKLQkJCWRlZmF1bHQ6Ci0JCQkJYnJlYWs7Ci0JCX0KLSAgICB9Ci0KLSAgICBzcHJpbnRmKHRlcm1fb3B0aW9ucywgImhvc3Q9JXMgcG9ydD0lZCIscXRvcGlhX2hvc3RfbmFtZSxxdG9waWFfcG9ydF9ubyk7Ci19Ci0KLQotVEVSTV9QVUJMSUMgdm9pZAotUVRPUElBX2luaXQoKQotewotCS8qIGluaXRpYWxpemUgbGliIChpZiBuZWNhc3NhcnkpICovCi0JSW5pdFNvY2tldHMoKTsKLQlDaGVja0ZvclF0cGxvdCggMCApOwotCU9wZW5DbGllbnQoIDAgKTsgCi0KLQlTZW5kRGF0YVRvU29ja2V0KCAicXRkIGluaXRcbiIgKTsKLX0KLQotCi1URVJNX1BVQkxJQyB2b2lkCi1RVE9QSUFfZ3JhcGhpY3MoKQotewotCVNlbmREYXRhVG9Tb2NrZXQoICJxdGQgZ3JhcGhpY3NcbiIgKTsKLX0KLQotVEVSTV9QVUJMSUMgdm9pZAotUVRPUElBX3RleHQoKQotewotCVNlbmREYXRhVG9Tb2NrZXQoICJxdGQgdGV4dFxuIiApOwotfQotCi0KLVRFUk1fUFVCTElDIHZvaWQKLVFUT1BJQV9yZXNldCgpCi17Ci0JU2VuZERhdGFUb1NvY2tldCggInF0ZCByZXNldFxuIiApOwotCi0JLyogZ2l2ZSB0aGUgcXRwbG90IGEgbGl0bGUgYml0IHRpbWUgdG8gc2h1dGRvd24gKi8KLQlNeVNsZWVwKDEwMCk7Ci0KLQlDbG9zZUNsaWVudCgpOwotCUV4aXRTb2NrZXRzKCk7Ci19Ci0KLQotVEVSTV9QVUJMSUMgdm9pZAotUVRPUElBX2xpbmV0eXBlKGxpbmV0eXBlKQotaW50IGxpbmV0eXBlOwotewotCWNoYXIgc0J1ZmZlcltRVE9QSUFfTUFYX0JVRkZFUl07Ci0KLQlzcHJpbnRmKCBzQnVmZmVyLCAicXRkIGxpbmV0eXBlIHR5cGU9JWRcbiIsbGluZXR5cGUgKTsKLQotCVNlbmREYXRhVG9Tb2NrZXQoIHNCdWZmZXIgKTsKLX0KLQotCi1URVJNX1BVQkxJQyB2b2lkCi1RVE9QSUFfbW92ZSh4LCB5KQotdW5zaWduZWQgaW50IHgsIHk7Ci17Ci0JY2hhciBzQnVmZmVyW1FUT1BJQV9NQVhfQlVGRkVSXTsKLQotCXNwcmludGYoIHNCdWZmZXIsICJxdGQgbW92ZSB4PSVkIHk9JWRcbiIseCx5ICk7Ci0KLQlTZW5kRGF0YVRvU29ja2V0KCBzQnVmZmVyICk7Ci19Ci0KLQotVEVSTV9QVUJMSUMgdm9pZAotUVRPUElBX3BvaW50KHgsIHksIHBvaW50KQotdW5zaWduZWQgaW50IHgsIHk7Ci1pbnQgcG9pbnQ7Ci17Ci0JY2hhciBzQnVmZmVyW1FUT1BJQV9NQVhfQlVGRkVSXTsKLQotCXNwcmludGYoIHNCdWZmZXIsICJxdGQgcG9pbnQgeD0lZCB5PSVkIHBvaW50PSVkXG4iLHgseSxwb2ludCApOwotCi0JU2VuZERhdGFUb1NvY2tldCggc0J1ZmZlciApOwotfQotCi0KLVRFUk1fUFVCTElDIHZvaWQKLVFUT1BJQV92ZWN0b3IoX3gsIF95KQotdW5zaWduZWQgaW50IF94LCBfeTsKLXsKLQljaGFyIHNCdWZmZXJbUVRPUElBX01BWF9CVUZGRVJdOwotCi0Jc3ByaW50Ziggc0J1ZmZlciwgInF0ZCB2ZWN0b3IgeD0lZCB5PSVkXG4iLF94LF95ICk7Ci0KLQlTZW5kRGF0YVRvU29ja2V0KCBzQnVmZmVyICk7Ci19Ci0KLQotVEVSTV9QVUJMSUMgdm9pZAotUVRPUElBX3B1dF90ZXh0KHgsIHksIHN0cikKLXVuc2lnbmVkIGludCB4LCB5OwotY29uc3QgY2hhciAqc3RyOwotewotCWNoYXIgc0J1ZmZlcltRVE9QSUFfTUFYX0JVRkZFUl07Ci0KLQlzcHJpbnRmKCBzQnVmZmVyLCAicXRkIHB1dF90ZXh0IHg9JWQgeT0lZCBzdHI9JXNcbiIseCx5LHN0ciApOwotCi0JU2VuZERhdGFUb1NvY2tldCggc0J1ZmZlciApOwotfQotCi0vKiBub3Qgc3Vwb3J0ZWQgeWV0ICEgKi8KLVRFUk1fUFVCTElDIHZvaWQKLVFUT1BJQV9hcnJvdyhzeCwgc3ksIGV4LCBleSwgaGVhZCkKLSAgICB1bnNpZ25lZCBpbnQgc3gsIHN5LCBleCwgZXk7Ci0gICAgaW50IGhlYWQ7CQkvKiBpZ25vcmVkICovCi17Ci0JY2hhciBzQnVmZmVyW1FUT1BJQV9NQVhfQlVGRkVSXTsKLQotCXNwcmludGYoIHNCdWZmZXIsICJxdGQgYXJyb3cgc3g9JWQgc3k9JWQgZXg9JWQgZXk9JWQgaGVhZD0lZFxuIixzeCxzeSxleCxleSxoZWFkICk7Ci0KLQlTZW5kRGF0YVRvU29ja2V0KCBzQnVmZmVyICk7Ci19Ci0KLQotI2VuZGlmIC8qIFRFUk1fQk9EWSAqLwotCi0jaWZkZWYgVEVSTV9UQUJMRQotVEVSTV9UQUJMRV9TVEFSVChxdG9waWFfZHJpdmVyKQotICAgICJxdG9waWEiLCAicXRvcGlhIG9yIFF0IiwKLSAgICBRVE9QSUFfWE1BWCwgUVRPUElBX1lNQVgsIFFUT1BJQV9WQ0hBUiwgUVRPUElBX0hDSEFSLAotICAgIFFUT1BJQV9WVElDLCBRVE9QSUFfSFRJQywgUVRPUElBX29wdGlvbnMsIFFUT1BJQV9pbml0LCBRVE9QSUFfcmVzZXQsCi0gICAgUVRPUElBX3RleHQsIG51bGxfc2NhbGUsIFFUT1BJQV9ncmFwaGljcywgUVRPUElBX21vdmUsIFFUT1BJQV92ZWN0b3IsCi0gICAgUVRPUElBX2xpbmV0eXBlLCBRVE9QSUFfcHV0X3RleHQsIG51bGxfdGV4dF9hbmdsZSwKLSAgICBudWxsX2p1c3RpZnlfdGV4dCwgUVRPUElBX3BvaW50LCAvKlFUT1BJQV9hcnJvdyovMCwgc2V0X2ZvbnRfbnVsbCwKLSAgICAwLAkJCQkvKiBwb2ludHNpemUgKi8KLSAgICBURVJNX0NBTl9NVUxUSVBMT1QsCi0gICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTAotI2lmZGVmIFVTRV9NT1VTRQotICAgICwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTAotI2VuZGlmCi0jaWZkZWYgUE0zRAotICAgICwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTAotI2VuZGlmCi1URVJNX1RBQkxFX0VORChxdG9waWFfZHJpdmVyKQotCi0jdW5kZWYgTEFTVF9URVJNCi0jZGVmaW5lIExBU1RfVEVSTSBxdG9waWFfZHJpdmVyCi0KLSNlbmRpZiAvKiBURVJNX1RBQkxFICovCi0KLSNpZmRlZiBURVJNX0hFTFAKLVNUQVJUX0hFTFAocXRvcGlhKQotIjEgcXRvcGlhIiwKLSI/Y29tbWFuZHMgc2V0IHRlcm1pbmFsIHF0b3BpYSIsCi0iP3NldCB0ZXJtaW5hbCBxdG9waWEiLAotIj9zZXQgdGVybSBxdG9waWEiLAotIj90ZXJtaW5hbCBxdG9waWEiLAotIj90ZXJtIHF0b3BpYSIsCi0iP3F0b3BpYSIsCi0iIFRoZSBgcXRvcGlhYCB0ZXJtaW5hbCBkcml2ZXIgaGFzIG5vIGFkZGl0aW9uYWwgb3B0aW9ucy4iLAotIiIsCi0iIFN5bnRheDoiLAotIiAgICAgICBzZXQgdGVybWluYWwgcXRvcGlhIiwKLSIiCi1FTkRfSEVMUChxdG9waWEpCi0jZW5kaWYgLyogVEVSTV9IRUxQICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3Qvc3ViZGlycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC9zdWJkaXJzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzdkMWYwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdC9zdWJkaXJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotLS0tIC90bXAvTWFrZWZpbGUuYW0JMjAwNy0wOC0yMyAxMzoxMDoxNS41NjA2NTkwMjMgKzAyMDAKLSsrKyBnbnVwbG90LTQuMi4wL01ha2VmaWxlLmFtCTIwMDctMDgtMjMgMTM6MTA6MzQuOTYxNzY0NjI5ICswMjAwCi1AQCAtMSw3ICsxLDcgQEAKLSAjIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9tYWtlIHRvIHByb2R1Y2UgTWFrZWZpbGUuaW4gLSotTWFrZWZpbGUtKi0KLSBBVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbiAxLjJoCi0gCi0tU1VCRElSUyA9IGNvbmZpZyBtNCB0ZXJtIHNyYyBkb2NzICQoTElTUERJUikgbWFuIGRlbW8gdHV0b3JpYWwgc2hhcmUKLStTVUJESVJTID0gY29uZmlnIG00IHRlcm0gc3JjICAkKExJU1BESVIpIG1hbiBzaGFyZQotIAotIEVYVFJBX0RJU1QgPSBCVUdTIENvZGVTdHlsZSBDb3B5cmlnaHQgRkFRIEdOVW1ha2VmaWxlIElOU1RBTEwgSU5TVEFMTC5nbnUgXAotIE1ha2VmaWxlLm1haW50IFBBVENITEVWRUwgUEdQS0VZUyBQT1JUSU5HIFJFQURNRSBSRUFETUUuMVNUIFJFQURNRS5leHAgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZ251cGxvdC9nbnVwbG90XzUuMC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZ251cGxvdC9nbnVwbG90XzUuMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjMwOGJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdF81LjAuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLXJlcXVpcmUgZ251cGxvdC5pbmMKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZ251cGxvdC8ke0JQfS50YXIuZ3o7bmFtZT1hcmNoaXZlIFwKLSAgICBodHRwOi8vd3d3Lm1uZXVyb3RoLmRlL3ByaXZhdC96YXVydXMvcXRwbG90LTAuMi50YXIuZ3o7bmFtZT1xdHBsb3QgXAotICAgIGZpbGU6Ly9zdWJkaXJzLnBhdGNoIFwKLSAgICBmaWxlOi8vbHVhLWxvYWRsaWJzLWNvbmZpZ3VyZS1pbi1maXgucGF0Y2ggXAotICAgIGZpbGU6Ly9nbnVwbG90LmRlc2t0b3AgXAotICAgIGZpbGU6Ly9nbnVwbG90LnBuZyBcCi0iCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImM1ZTk2ZmNhNzNhZmJlZTRmNTdjYmMxYmZjZTZiM2I4IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMjVmM2UwYmYxOTJlMDExMTVjNTgwZjI3OGMzNzI1ZDdhNTY5ZWI4NDg3ODZlMTJiNDU1YTNmZGE3MDMxMjA1MyIKLVNSQ19VUklbcXRwbG90Lm1kNXN1bV0gPSAiMGE0ODE4ODVhNDk2MDkyYzc3ZWI0MDE3NTQwYjVjZjYiCi1TUkNfVVJJW3F0cGxvdC5zaGEyNTZzdW1dID0gIjZkZjMxNzE4M2ZmNjJjYzgyZjNkY2Y4ODIwN2EyNjdjZDY0NzhjYjUxNDdmNTVkNzUzMGM5NGYxYWQ1ZjQxMzIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3RfNS4yLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3RfNS4yLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNjMjg5ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdF81LjIuMi5iYgpAQCAtMCwwICsxLDY5IEBACitTVU1NQVJZID0gIkdudXBsb3QgaXMgYSBwb3J0YWJsZSBjb21tYW5kLWxpbmUgZHJpdmVuIGdyYXBoaW5nIHV0aWxpdHkiCitERVNDUklQVElPTiA9ICJHbnVwbG90IGlzIGEgcG9ydGFibGUgY29tbWFuZC1saW5lIGRyaXZlbiBpbnRlcmFjdGl2ZSBkYXRhZmlsZSBcCisodGV4dCBvciBiaW5hcnkpIGFuZCBmdW5jdGlvbiBwbG90dGluZyB1dGlsaXR5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGxvdC5pbmZvLyIKK1NFQ1RJT04gPSAiY29uc29sZS9zY2llbnRpZmljIgorTElDRU5TRSA9ICJnbnVwbG90IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0O21kNT0yNDNhMTg2ZmMyZmQzYjk5MjEyNWQ2MGQ1YjFiYWI4ZiIKK0RFUEVORFMgPSAiJHtCUE59LW5hdGl2ZSB2aXJ0dWFsL2xpYngxMSBnZCByZWFkbGluZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisjIGRlcGVuZHMgb24gdmlydHVhbC9saWJ4MTEKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2dudXBsb3QvJHtCUH0udGFyLmd6O25hbWU9YXJjaGl2ZSBcCisgICAgaHR0cDovL3d3dy5tbmV1cm90aC5kZS9wcml2YXQvemF1cnVzL3F0cGxvdC0wLjIudGFyLmd6O25hbWU9cXRwbG90IFwKKyAgICBmaWxlOi8vZ251cGxvdC5kZXNrdG9wIFwKKyAgICBmaWxlOi8vZ251cGxvdC5wbmcgXAorIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCisgICAgZmlsZTovLzAwMDItZG8tbm90LWJ1aWxkLWRlbW9zLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMy1Vc2UtbmF0aXZlLXRvb2xzLXRvLWJ1aWxkLWRvY3MucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA0LUFkZC1jb25maWd1cmUtb3B0aW9uLXRvLWZpbmQtcXQ1LW5hdGl2ZS10b29scy5wYXRjaCBcCisiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjYwYWVkZDA4OTk4MTYwNTkzMTk5NDU5ZGVhODQ2N2ZlIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYTQxNmQyMmYwMmJkZjM4NzNlZjgyYzVlYjdmOGU5NDE0Njc5NTgxMWVmODA4ZTEyYjAzNWFkYTg4ZWY3YjFhMSIKK1NSQ19VUklbcXRwbG90Lm1kNXN1bV0gPSAiMGE0ODE4ODVhNDk2MDkyYzc3ZWI0MDE3NTQwYjVjZjYiCitTUkNfVVJJW3F0cGxvdC5zaGEyNTZzdW1dID0gIjZkZjMxNzE4M2ZmNjJjYzgyZjNkY2Y4ODIwN2EyNjdjZDY0NzhjYjUxNDdmNTVkNzUzMGM5NGYxYWQ1ZjQxMzIiCisKKyMgZm9yIGJ1aWxkaW5nIGRvY3MgKHRoZXkgZGVzZXJ2ZSBpdCkgd2UgbmVlZCAqZG9jMiogdG9vbHMgbmF0aXZlCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gInJlYWRsaW5lLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gImZpbGU6Ly8wMDAxLXJlZHVjZS1idWlsZC10by1jb252ZXJzaW9uLXRvb2xzLWZvci1uYXRpdmUtYnVpbGQucGF0Y2giCisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgJHtCfS9kb2NzLypkb2MqICR7RH0ke2JpbmRpcn0KKyAgICBybSAke0R9JHtiaW5kaXJ9LyoubworfQorCitQQUNLQUdFQ09ORklHID8/PSAiY2Fpcm8iCitQQUNLQUdFQ09ORklHW2NhaXJvXSA9ICItLXdpdGgtY2Fpcm8sLS13aXRob3V0LWNhaXJvLGNhaXJvIHBhbmdvIgorUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0td2l0aC1sdWEsLS13aXRob3V0LWx1YSxsdWEiCitQQUNLQUdFQ09ORklHW3F0NV0gPSAiLS13aXRoLXF0IC0td2l0aC1xdDVuYXRpdmVzeXNyb290PSR7U1RBR0lOR19ESVJfTkFUSVZFfSwtLXdpdGhvdXQtcXQscXRiYXNlLW5hdGl2ZSBxdGJhc2UgcXRzdmcgcXR0b29scy1uYXRpdmUiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtcmVhZGxpbmU9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC10dXRvcmlhbCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXd4d2lkZ2V0cyIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3F0cGxvdC0wLjIvcXRvcGlhLnRybSAke1N9L3Rlcm0vCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9nbnVwbG90LmRlc2t0b3AgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zLworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vcGl4bWFwcy8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9nbnVwbG90LnBuZyAke0R9JHtkYXRhZGlyfS9waXhtYXBzLworfQorCitQQUNLQUdFUyA9KyAiJHtQTn0teDExLWRiZyAke1BOfS14MTEiCitERVNDUklQVElPTl8ke1BOfS14MTEgPSAiWDExIGRpc3BsYXkgdGVybWluYWwgZm9yIEdudXBsb3QuIgorU0VDVElPTl8ke1BOfS14MTEgPSAieDExL3NjaWVudGlmaWMiCitGSUxFU18ke1BOfS14MTEgPSAiJHtsaWJleGVjZGlyfSAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucyAke2RhdGFkaXJ9L3BpeG1hcHMgJHtsaWJkaXJ9L1gxMSAiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3RleG1mIgorRklMRVNfJHtQTn0teDExLWRiZyArPSAiJHtsaWJleGVjZGlyfS9nbnVwbG90LyovLmRlYnVnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaGF2ZWdlZC9oYXZlZ2VkL2hhdmVnZWQtaW5pdC5kLU1ha2VmaWxlLmFtLWFkZC1taXNzaW5nLWRlcGVuZGVuY3kucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oYXZlZ2VkL2hhdmVnZWQvaGF2ZWdlZC1pbml0LmQtTWFrZWZpbGUuYW0tYWRkLW1pc3NpbmctZGVwZW5kZW5jeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmZkNTdjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaGF2ZWdlZC9oYXZlZ2VkL2hhdmVnZWQtaW5pdC5kLU1ha2VmaWxlLmFtLWFkZC1taXNzaW5nLWRlcGVuZGVuY3kucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBiMDRlZWVhNzc3ZGYzMjM2NGRmNzRiZDYzZmM1YjdmYjA1ZDIxYzhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjcgTWFyIDIwMTggMTA6MjE6MDkgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5pdC5kL01ha2VmaWxlLmFtOiBhZGQgbWlzc2luZyBkZXBlbmRlbmN5CisKK2luc3RhbGwtZGF0YS1ob29rIHNob3VsZCBlcGVuZCBvbiBpbnN0YWxsLWV4ZWMtaG9vaywgb3IgdGhlCitoYXZlZ2VkLnNlcnZpY2UgbWlnaHQgYmUgaW5zdGFsbGVkIGluY29ycmVjdGx5IHdoZW4gYnVpbGQKK3dpdGggLWogb3B0aW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW25vIHVwc3RyZWFtIG1haWxpbmcgbGlzdF0KKworU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGluaXQuZC9NYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2luaXQuZC9NYWtlZmlsZS5hbSBiL2luaXQuZC9NYWtlZmlsZS5hbQoraW5kZXggNTk0MGY3OC4uMDdiY2RmNyAxMDA2NDQKKy0tLSBhL2luaXQuZC9NYWtlZmlsZS5hbQorKysrIGIvaW5pdC5kL01ha2VmaWxlLmFtCitAQCAtMzMsNyArMzMsNyBAQCBpZiBFTkFCTEVfU1lTVEVNRAorIGluc3RhbGwtZXhlYy1ob29rOgorIAkkKGRvX3N1YnN0KSA8ICQoc3JjZGlyKS8kKHNyY190bXBsKSA+IGhhdmVnZWQuc2VydmljZTsKKyAKKy1pbnN0YWxsLWRhdGEtaG9vazoKKytpbnN0YWxsLWRhdGEtaG9vazogaW5zdGFsbC1leGVjLWhvb2sKKyBpZiBFTkFCTEVfU1lTVEVNRF9MT09LVVAKKyAJaW5zdGFsbCAtcCAtRCAtbTY0NCBoYXZlZ2VkLnNlcnZpY2UgJChERVNURElSKWBwa2ctY29uZmlnIC0tdmFyaWFibGU9c3lzdGVtZHN5c3RlbXVuaXRkaXIgc3lzdGVtZGAvaGF2ZWdlZC5zZXJ2aWNlOworIGVsc2UKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hhdmVnZWQvaGF2ZWdlZC9yZW1vdmUtc3lzdGVtZC11bml0LTUwMy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hhdmVnZWQvaGF2ZWdlZC9yZW1vdmUtc3lzdGVtZC11bml0LTUwMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYyN2JjYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oYXZlZ2VkL2hhdmVnZWQvcmVtb3ZlLXN5c3RlbWQtdW5pdC01MDMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0tLS0gYS9pbml0LmQvTWFrZWZpbGUuYW0JMjAxNC0wMS0wMiAxODo1NTo1My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBiL2luaXQuZC9NYWtlZmlsZS5hbQkyMDE0LTA4LTExIDEwOjU5OjQwLjAwMDAwMDAwMCArMDIwMAotQEAgLTM0LDExICszNCwxMSBAQAotIAkkKGRvX3N1YnN0KSA8ICQoc3JjZGlyKS8kKHNyY190bXBsKSA+IGhhdmVnZWQuc2VydmljZTsKLSAKLSBpbnN0YWxsLWRhdGEtaG9vazoKLS1pZiBFTkFCTEVfU1lTVEVNRF9MT09LVVAKLS0JaW5zdGFsbCAtcCAtbTY0NCBoYXZlZ2VkLnNlcnZpY2UgYHBrZy1jb25maWcgLS12YXJpYWJsZT1zeXN0ZW1kc3lzdGVtdW5pdGRpciBzeXN0ZW1kYC9oYXZlZ2VkLnNlcnZpY2U7Ci0tZWxzZQotLQlpbnN0YWxsIC1wIC1tNjQ0IGhhdmVnZWQuc2VydmljZSAoJHVuaXRfZGlyKS9oYXZlZ2VkLnNlcnZpY2U7Ci0tZW5kaWYKLS0Jc3lzdGVtY3RsIGVuYWJsZSBoYXZlZ2VkLnNlcnZpY2U7Ci0rI2lmIEVOQUJMRV9TWVNURU1EX0xPT0tVUAotKyMJaW5zdGFsbCAtcCAtbTY0NCBoYXZlZ2VkLnNlcnZpY2UgYHBrZy1jb25maWcgLS12YXJpYWJsZT1zeXN0ZW1kc3lzdGVtdW5pdGRpciBzeXN0ZW1kYC9oYXZlZ2VkLnNlcnZpY2U7Ci0rI2Vsc2UKLSsjCWluc3RhbGwgLXAgLW02NDQgaGF2ZWdlZC5zZXJ2aWNlICgkdW5pdF9kaXIpL2hhdmVnZWQuc2VydmljZTsKLSsjZW5kaWYKLSsjCXN5c3RlbWN0bCBlbmFibGUgaGF2ZWdlZC5zZXJ2aWNlOwotIAotIGVuZGlmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oYXZlZ2VkL2hhdmVnZWRfMS45LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oYXZlZ2VkL2hhdmVnZWRfMS45LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiNDRjNDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaGF2ZWdlZC9oYXZlZ2VkXzEuOS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJoYXZlZ2VkIC0gQSBzaW1wbGUgZW50cm9weSBkYWVtb24iCi1ERVNDUklQVElPTiA9ICJUaGUgaGF2ZWdlZCBwcm9qZWN0IGlzIGFuIGF0dGVtcHQgdG8gcHJvdmlkZSBhbiBlYXN5LXRvLXVzZSwgdW5wcmVkaWN0YWJsZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvciBiYXNlZCB1cG9uIGFuIGFkYXB0YXRpb24gb2YgdGhlIEhBVkVHRSBhbGdvcml0aG0uIEhhdmVnZWQgd2FzIGNyZWF0ZWQgdG8gcmVtZWR5IGxvdy1lbnRyb3B5IGNvbmRpdGlvbnMgaW4gdGhlIExpbnV4IHJhbmRvbSBkZXZpY2UgdGhhdCBjYW4gb2NjdXIgdW5kZXIgc29tZSB3b3JrbG9hZHMsIGVzcGVjaWFsbHkgb24gaGVhZGxlc3Mgc2VydmVycy4iCi1BVVRIT1IgPSAiR2FyeSBXdWVydHoiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmlzc2lob3N0cy5jb20vaGF2ZWdlZC9pbmRleC5odG1sIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU09ImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lmlzc2lob3N0cy5jb20vaGF2ZWdlZC9oYXZlZ2VkLSR7UFZ9LnRhci5neiBcCi0gICAgZmlsZTovL3JlbW92ZS1zeXN0ZW1kLXVuaXQtNTAzLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjAxNWZmNThjZDEwNjA3ZGIwZTBkZTYwYWVjYTJmNWY4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljMjM2M2VkOTU0MmE2Nzg0ZmYwOGUyNDcxODIxMzdlNzFmMmRkYjc5ZThlNmMxYWM0YWQ1MGQyMWNlZDM3MTUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWVuYWJsZS1pbml0PXNlcnZpY2UucmVkaGF0IFwKLSAgICAtLWVuYWJsZS1uaXN0ZXN0PXllcyBcCi0gICAgLS1lbmFibGUtb2x0PXllcyBcCi0gICAgLS1lbmFibGUtdGhyZWFkcz1ubyBcCi0iCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0iCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiaGF2ZWdlZC5zZXJ2aWNlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBta2RpciAtcCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLXAgLW02NDQgJHtCfS9pbml0LmQvaGF2ZWdlZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi19Ci0KLU1JUFNfSU5TVFJVQ1RJT05fU0VUID0gIm1pcHMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oYXZlZ2VkL2hhdmVnZWRfMS45LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oYXZlZ2VkL2hhdmVnZWRfMS45LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVlZTg0MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hhdmVnZWQvaGF2ZWdlZF8xLjkuMi5iYgpAQCAtMCwwICsxLDQwIEBACitTVU1NQVJZID0gImhhdmVnZWQgLSBBIHNpbXBsZSBlbnRyb3B5IGRhZW1vbiIKK0RFU0NSSVBUSU9OID0gIlRoZSBoYXZlZ2VkIHByb2plY3QgaXMgYW4gYXR0ZW1wdCB0byBwcm92aWRlIGFuIGVhc3ktdG8tdXNlLCB1bnByZWRpY3RhYmxlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGJhc2VkIHVwb24gYW4gYWRhcHRhdGlvbiBvZiB0aGUgSEFWRUdFIGFsZ29yaXRobS4gSGF2ZWdlZCB3YXMgY3JlYXRlZCB0byByZW1lZHkgbG93LWVudHJvcHkgY29uZGl0aW9ucyBpbiB0aGUgTGludXggcmFuZG9tIGRldmljZSB0aGF0IGNhbiBvY2N1ciB1bmRlciBzb21lIHdvcmtsb2FkcywgZXNwZWNpYWxseSBvbiBoZWFkbGVzcyBzZXJ2ZXJzLiIKK0FVVEhPUiA9ICJHYXJ5IFd1ZXJ0eiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuaXNzaWhvc3RzLmNvbS9oYXZlZ2VkL2luZGV4Lmh0bWwiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTT0iZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuaXNzaWhvc3RzLmNvbS9oYXZlZ2VkL2hhdmVnZWQtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2hhdmVnZWQtaW5pdC5kLU1ha2VmaWxlLmFtLWFkZC1taXNzaW5nLWRlcGVuZGVuY3kucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZmIxZDhiM2RjYmI5ZDA2YjMwZWNjZDhhYTUwMGZkMzEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjc3ZDlhZGJkZjQyMWI2MTYwMWZhMjlmYWE5Y2UzYjQ3OWQ5MTBmNzNjNjZiOWUzNjRiYTg2NDJjY2JmYmU3MCIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZAorCitFWFRSQV9PRUNPTkYgPSAiXAorICAgIC0tZW5hYmxlLW5pc3Rlc3Q9eWVzIFwKKyAgICAtLWVuYWJsZS1vbHQ9eWVzIFwKKyAgICAtLWVuYWJsZS10aHJlYWRzPW5vIFwKKyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLWluaXQ9c2VydmljZS5yZWRoYXQgLS1lbmFibGUtaW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LCAtLWVuYWJsZS1pbml0PXN5c3YucmVkaGF0LCBzeXN0ZW1kIgorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59IgorSU5JVFNDUklQVF9OQU1FID0gImhhdmVnZWQiCitJTklUU0NSSVBUX1BBUkFNU18ke1BOfSA9ICJkZWZhdWx0cyA5IgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImhhdmVnZWQuc2VydmljZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBUaGUgZXhpdCBzdGF0dXMgaXMgMTQzIHdoZW4gdGhlIHNlcnZpY2UgaXMgc3RvcHBlZAorICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIHNlZCAtaSAnL0V4ZWNTdGFydC9hIFN1Y2Nlc3NFeGl0U3RhdHVzPTE0MycgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vaGF2ZWdlZC5zZXJ2aWNlCisgICAgZmkKK30KKworTUlQU19JTlNUUlVDVElPTl9TRVQgPSAibWlwcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hleGVkaXQvaGV4ZWRpdC8wMDAxLWRvbi10LXN0cmlwLXdoZW4taW5zdGFsbGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hleGVkaXQvaGV4ZWRpdC8wMDAxLWRvbi10LXN0cmlwLXdoZW4taW5zdGFsbGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM4NGIwNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oZXhlZGl0L2hleGVkaXQvMDAwMS1kb24tdC1zdHJpcC13aGVuLWluc3RhbGxpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIGNjNjcyNDZjYTY4MzllNWIzZjZhMjg2ZjEwZWQyNGMyMjViNzdhNWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/RXJpYz0yMEI9QzM9QTluYXJkPz0gPGVyaWNAZXVrcmVhLmNvbT4KLURhdGU6IFRodSwgNCBKdWwgMjAxMyAxMjozNDozMiArMDIwMAotU3ViamVjdDogW1BBVENIXSBkb24ndCBzdHJpcCB3aGVuIGluc3RhbGxpbmcKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotU2lnbmVkLW9mZi1ieTogRXJpYyBCw6luYXJkIDxlcmljQGV1a3JlYS5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLS0tLQotIE1ha2VmaWxlLmluIHwgICAgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggMTU5NDYzZS4uNzM1Y2M3MiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTQyLDYgKzQyLDYgQEAgZGlzdGNsZWFuOiBjbGVhbgotIAotIGluc3RhbGw6ICQoUFJPRFVDVCkKLSAJJChJTlNUQUxMKSAtZCAtbSA3NTUgJChERVNURElSKSQoYmluZGlyKQotLQkkKElOU1RBTEwpIC1zIC1tIDc1NSAkKFBST0RVQ1QpICQoREVTVERJUikkKGJpbmRpcikKLSsJJChJTlNUQUxMKSAtbSA3NTUgJChQUk9EVUNUKSAkKERFU1RESVIpJChiaW5kaXIpCi0gCSQoSU5TVEFMTCkgLWQgLW0gNzU1ICQoREVTVERJUikkKG1hbmRpcikvbWFuMQotIAkkKElOU1RBTEwpIC1tIDY0NCAkKFBST0RVQ1QpLjEgJChERVNURElSKSQobWFuZGlyKS9tYW4xCi0tLSAKLTEuNy4xMC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hleGVkaXQvaGV4ZWRpdF8xLjIuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oZXhlZGl0L2hleGVkaXRfMS4yLjEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWRmNWIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hleGVkaXQvaGV4ZWRpdF8xLjIuMTMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gInZpZXcgYW5kIGVkaXQgZmlsZXMgaW4gaGV4YWRlY2ltYWwgb3IgaW4gQVNDSUkiCi1IT01FUEFHRSA9ICJodHRwOi8vcmlnYXV4Lm9yZy9oZXhlZGl0Lmh0bWwiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLURFUEVORFMgPSAibmN1cnNlcyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3JpZ2F1eC5vcmcvJHtCUH0uc3JjLnRneiBcCi0gICAgZmlsZTovLzAwMDEtZG9uLXQtc3RyaXAtd2hlbi1pbnN0YWxsaW5nLnBhdGNoICIKLQotU1JDX1VSSVttZDVzdW1dID0gImE1YWYxMzc4ZDAyODUxMmE5Y2FkMjdhNWJhM2UxNWY5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZhMTI2ZGEzMGE3N2Y1YzBiMDgwMzhhYTdhODgxZDkxMGUzYjY1ZDEzNzY3ZmI1NGM1OGM5ODM5NjNiODhkZDciCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaGV4ZWRpdC9oZXhlZGl0XzEuNC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaGV4ZWRpdC9oZXhlZGl0XzEuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MGI3ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oZXhlZGl0L2hleGVkaXRfMS40LjIuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJ2aWV3IGFuZCBlZGl0IGZpbGVzIGluIGhleGFkZWNpbWFsIG9yIGluIEFTQ0lJIgorSE9NRVBBR0UgPSAiaHR0cDovL3JpZ2F1eC5vcmcvaGV4ZWRpdC5odG1sIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MisiCitERVBFTkRTID0gIm5jdXJzZXMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcGl4ZWwvaGV4ZWRpdC5naXQgXAorICAgICIKKworU1JDUkVWID0gIjgwMGU0YjJlNjI4MDUzMWE4NGZkMjNlZTBiNDhlMTZiYWViOTA4NzgiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQva29ua3JldGNtcGkva29ua3JldGNtcGlfMC45LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9rb25rcmV0Y21waS9rb25rcmV0Y21waV8wLjkuMi5iYgppbmRleCBjYmYwNDczLi4wZjc5OGQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9rb25rcmV0Y21waS9rb25rcmV0Y21waV8wLjkuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9rb25rcmV0Y21waS9rb25rcmV0Y21waV8wLjkuMi5iYgpAQCAtMjAsOCArMjAsOCBAQAogaW5oZXJpdCBjbWFrZQogCiBFWFRSQV9PRUNNQUtFID0gIi1EV0lUSF9QWVRIT049T04gXAotICAgICAgICAgICAgICAgICAke0BiYXNlX2NvbmRpdGlvbmFsKCJsaWJkaXIiLCAiL3Vzci9saWI2NCIsICItRExJQl9TVUZGSVg9NjQiLCAiIiwgZCl9IFwKLSAgICAgICAgICAgICAgICAgJHtAYmFzZV9jb25kaXRpb25hbCgibGliZGlyIiwgIi91c3IvbGliMzIiLCAiLURMSUJfU1VGRklYPTMyIiwgIiIsIGQpfSBcCisgICAgICAgICAgICAgICAgICR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCJsaWJkaXIiLCAiL3Vzci9saWI2NCIsICItRExJQl9TVUZGSVg9NjQiLCAiIiwgZCl9IFwKKyAgICAgICAgICAgICAgICAgJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoImxpYmRpciIsICIvdXNyL2xpYjMyIiwgIi1ETElCX1NVRkZJWD0zMiIsICIiLCBkKX0gXAogICAgICAgICAgICAgICAgICIKIAogTERGTEFHU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgJyAtZnVzZS1sZD1iZmQgJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDEtZml4LWNvbmZpZ3VyZS1hbmQtY29tcGlsZS1mYWlsdXJlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDEtZml4LWNvbmZpZ3VyZS1hbmQtY29tcGlsZS1mYWlsdXJlcy5wYXRjaAppbmRleCA5MTRlZTk5Li43NDU4ODNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9maWxlcy8wMDAxLWZpeC1jb25maWd1cmUtYW5kLWNvbXBpbGUtZmFpbHVyZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwMS1maXgtY29uZmlndXJlLWFuZC1jb21waWxlLWZhaWx1cmVzLnBhdGNoCkBAIC0zMyw3ICszMyw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMDI3MGM5OS4uYjdjNzM2OCAxMDA2NDQKK2luZGV4IGQ0MWEzMDcuLmIwMzZlMDQgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwogQEAgLTksNiArOSw4IEBAIEFDX0RJU0FCTEVfU1RBVElDCkBAIC00NSw3ICs0NSw3IEBACiAgQU1fUEFUSF9QWVRIT04KICAKICBBTV9QUk9HX0FSCi1AQCAtMTI5LDcgKzEzMSw2IEBAIExJQkJMT0NLREVWX1BLR19DSEVDS19NT0RVTEVTKFtVREVWXSwgW2xpYnVkZXYgPj0gMjE2XSkKK0BAIC0xNTQsNyArMTU2LDYgQEAgTElCQkxPQ0tERVZfUEtHX0NIRUNLX01PRFVMRVMoW0tNT0RdLCBbbGlia21vZCA+PSAxOV0pCiAgQVNfSUYoW3Rlc3QgIngkd2l0aF9jcnlwdG8iICE9ICJ4bm8iXSwKICAgICAgICBbTElCQkxPQ0tERVZfUEtHX0NIRUNLX01PRFVMRVMoW0NSWVBUU0VUVVBdLCBbbGliY3J5cHRzZXR1cCA+PSAxLjYuN10pCiAgICAgICAgIExJQkJMT0NLREVWX1BLR19DSEVDS19NT0RVTEVTKFtOU1NdLCBbbnNzID49IDMuMTguMF0pCkBAIC01Myw3ICs1Myw3IEBACiAgICAgICAgXSwKICAgICAgICBbXSkKICAKLUBAIC0xMzcsMTAgKzEzOCw2IEBAIEFTX0lGKFt0ZXN0ICJ4JHdpdGhfZG0iICE9ICJ4bm8iIC1vICJ4JHdpdGhfbHZtIiAhPSAieG5vIiAtbyAieCR3aXRoX2x2bV9kYnVzIiAhCitAQCAtMTYyLDEwICsxNjMsNiBAQCBBU19JRihbdGVzdCAieCR3aXRoX2RtIiAhPSAieG5vIiAtbyAieCR3aXRoX2x2bSIgIT0gInhubyIgLW8gIngkd2l0aF9sdm1fZGJ1cyIgIQogICAgICAgIFtMSUJCTE9DS0RFVl9QS0dfQ0hFQ0tfTU9EVUxFUyhbREVWTUFQUEVSXSwgW2Rldm1hcHBlciA+PSAxLjAyLjkzXSldLAogICAgICAgIFtdKQogIApAQCAtNjEsMTAgKzYxLDEwIEBACiAtICAgICAgW0xJQkJMT0NLREVWX0NIRUNLX0hFQURFUihbZG1yYWlkL2RtcmFpZC5oXSwgW10sIFtkbXJhaWQuaCBub3QgYXZhaWxhYmxlXSldLAogLSAgICAgIFtdKQogLQotIEFTX0lGKFt0ZXN0ICJ4JHdpdGhfa2JkIiAhPSAieG5vIl0sCi0gICAgICAgW0xJQkJMT0NLREVWX1BLR19DSEVDS19NT0RVTEVTKFtLTU9EXSwgW2xpYmttb2QgPj0gMTldKV0sCisgQVNfSUYoW3Rlc3QgIngkd2l0aF9wYXJ0IiAhPSAieG5vIiAtbyAieCR3aXRoX2ZzIiAhPSAieG5vIl0sCisgICAgICAgW0xJQkJMT0NLREVWX1BLR19DSEVDS19NT0RVTEVTKFtQQVJURURdLCBbbGlicGFydGVkID49IDMuMV0pXQogICAgICAgIFtdKQotQEAgLTE1NCw3ICsxNTEsOCBAQCBBU19JRihbdGVzdCAieCR3aXRoX2ZzIiAhPSAieG5vIl0sCitAQCAtMTc0LDcgKzE3MSw4IEBAIEFTX0lGKFt0ZXN0ICJ4JHdpdGhfZnMiICE9ICJ4bm8iXSwKICAgICAgICBbTElCQkxPQ0tERVZfUEtHX0NIRUNLX01PRFVMRVMoW01PVU5UXSwgW21vdW50ID49IDIuMjMuMF0pCiAgICAgICAgICMgbmV3IHZlcnNpb25zIG9mIGxpYm1vdW50IGhhcyBzb21lIG5ldyBmdW5jdGlvbnMgd2UgY2FuIHVzZQogICAgICAgICBBU19JRihbJFBLR19DT05GSUcgLS1hdGxlYXN0LXZlcnNpb249Mi4zMC4wIG1vdW50XSwKQEAgLTc1LDUgKzc1LDUgQEAKICAgICAgICAgTElCQkxPQ0tERVZfUEtHX0NIRUNLX01PRFVMRVMoW0JMS0lEXSwgW2Jsa2lkID49IDIuMjMuMF0pCiAgICAgICAgICMgb2xkZXIgdmVyc2lvbnMgb2YgbGliYmxraWQgZG9uJ3Qgc3VwcG9ydCBCTEtJRF9TVUJMS1NfQkFEQ1NVTSBzbyBsZXQncyBqdXN0CiAtLSAKLTEuOC4zLjEKKzIuMTQuMwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9maWxlcy8wMDAzLXJlbW92ZS1kbXJhaWQtd2hpbGUtY29tcGlsaW5nLXdpdGgtd2l0aC1kbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDMtcmVtb3ZlLWRtcmFpZC13aGlsZS1jb21waWxpbmctd2l0aC13aXRoLWRtLnBhdGNoCmluZGV4IDNkOWNiNmQuLmFjNWI1ZTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDMtcmVtb3ZlLWRtcmFpZC13aGlsZS1jb21waWxpbmctd2l0aC13aXRoLWRtLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDMtcmVtb3ZlLWRtcmFpZC13aGlsZS1jb21waWxpbmctd2l0aC13aXRoLWRtLnBhdGNoCkBAIC0yMiwyMSArMjIsMjIgQEAKIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogLS0tCi0gc3JjL2xpYi9wbHVnaW5fYXBpcy9kbS5hcGkgICAgICAgICAgfCAgNDEgLS0tLS0KKyBzcmMvbGliL3BsdWdpbl9hcGlzL2RtLmFwaSAgICAgICAgICB8ICA1MCAtLS0tLS0KICBzcmMvcGx1Z2lucy9NYWtlZmlsZS5hbSAgICAgICAgICAgICB8ICAgMiArLQotIHNyYy9wbHVnaW5zL2RtLmMgICAgICAgICAgICAgICAgICAgIHwgMzE4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9wbHVnaW5zL2RtLmMgICAgICAgICAgICAgICAgICAgIHwgMzMwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIHNyYy9wbHVnaW5zL2RtLmggICAgICAgICAgICAgICAgICAgIHwgICA1IC0KICBzcmMvcHl0aG9uL2dpL292ZXJyaWRlcy9CbG9ja0Rldi5weSB8ICAgNiAtCi0gNSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMzcxIGRlbGV0aW9ucygtKQorIDUgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDM5MiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9saWIvcGx1Z2luX2FwaXMvZG0uYXBpIGIvc3JjL2xpYi9wbHVnaW5fYXBpcy9kbS5hcGkKLWluZGV4IGE4ODViYmEuLmVjODZiODAgMTAwNjQ0CitpbmRleCAwNGZkOGQ4Li41ZDMwYjZhIDEwMDY0NAogLS0tIGEvc3JjL2xpYi9wbHVnaW5fYXBpcy9kbS5hcGkKICsrKyBiL3NyYy9saWIvcGx1Z2luX2FwaXMvZG0uYXBpCi1AQCAtNjgsNDQgKzY4LDMgQEAgZ2NoYXIqIGJkX2RtX25vZGVfZnJvbV9uYW1lIChjb25zdCBnY2hhciAqbWFwX25hbWUsIEdFcnJvciAqKmVycm9yKTsKK0BAIC0xMTEsNTMgKzExMSwzIEBAIGdjaGFyKiBiZF9kbV9nZXRfc3Vic3lzdGVtX2Zyb21fbmFtZSAoY29uc3QgZ2NoYXIgKmRldmljZV9uYW1lLCBHRXJyb3IgKiplcnJvcik7CisgICogVGVjaCBjYXRlZ29yeTogJUJEX0RNX1RFQ0hfTUFQLSVCRF9ETV9URUNIX01PREVfUVVFUlkKICAgKi8KICBnYm9vbGVhbiBiZF9kbV9tYXBfZXhpc3RzIChjb25zdCBnY2hhciAqbWFwX25hbWUsIGdib29sZWFuIGxpdmVfb25seSwgZ2Jvb2xlYW4gYWN0aXZlX29ubHksIEdFcnJvciAqKmVycm9yKTsKLSAKKy0KIC0vKioKIC0gKiBiZF9kbV9nZXRfbWVtYmVyX3JhaWRfc2V0czoKIC0gKiBAbmFtZTogKGFsbG93LW5vbmUpOiBuYW1lIG9mIHRoZSBtZW1iZXIKQEAgLTQ5LDYgKzUwLDggQEAKIC0gKiB0aGUgbWVtYmVyIG9yICVOVUxMIGluIGNhc2Ugb2YgZXJyb3IKIC0gKgogLSAqIE9uZSBvZiBAbmFtZSwgQHV1aWQgb3IgQG1ham9yOkBtaW5vciBoYXMgdG8gYmUgZ2l2ZW4uCistICoKKy0gKiBUZWNoIGNhdGVnb3J5OiAlQkRfRE1fVEVDSF9SQUlELSVCRF9ETV9URUNIX01PREVfUVVFUlkKIC0gKi8KIC1nY2hhcioqIGJkX2RtX2dldF9tZW1iZXJfcmFpZF9zZXRzIChjb25zdCBnY2hhciAqbmFtZSwgY29uc3QgZ2NoYXIgKnV1aWQsIGdpbnQgbWFqb3IsIGdpbnQgbWlub3IsIEdFcnJvciAqKmVycm9yKTsKIC0KQEAgLTU4LDYgKzYxLDggQEAKIC0gKiBAZXJyb3I6IChvdXQpOiB2YXJpYWJsZSB0byBzdG9yZSBlcnJvciAoaWYgYW55KQogLSAqCiAtICogUmV0dXJuczogd2hldGhlciB0aGUgUkFJRCBzZXQgQG5hbWUgd2FzIHN1Y2Nlc3NmdWxseSBhY3RpdmF0ZSBvciBub3QKKy0gKgorLSAqIFRlY2ggY2F0ZWdvcnk6ICVCRF9ETV9URUNIX1JBSUQtJUJEX0RNX1RFQ0hfQ1JFQVRFX0FDVElWQVRFCiAtICovCiAtZ2Jvb2xlYW4gYmRfZG1fYWN0aXZhdGVfcmFpZF9zZXQgKGNvbnN0IGdjaGFyICpuYW1lLCBHRXJyb3IgKiplcnJvcik7CiAtCkBAIC02Nyw2ICs3Miw4IEBACiAtICogQGVycm9yOiAob3V0KTogdmFyaWFibGUgdG8gc3RvcmUgZXJyb3IgKGlmIGFueSkKIC0gKgogLSAqIFJldHVybnM6IHdoZXRoZXIgdGhlIFJBSUQgc2V0IEBuYW1lIHdhcyBzdWNjZXNzZnVsbHkgZGVhY3RpdmF0ZSBvciBub3QKKy0gKgorLSAqIFRlY2ggY2F0ZWdvcnk6ICVCRF9ETV9URUNIX1JBSUQtJUJEX0RNX1RFQ0hfUkVNT1ZFX0RFQUNUSVZBVEUKIC0gKi8KIC1nYm9vbGVhbiBiZF9kbV9kZWFjdGl2YXRlX3JhaWRfc2V0IChjb25zdCBnY2hhciAqbmFtZSwgR0Vycm9yICoqZXJyb3IpOwogLQpAQCAtNzYsMTMgKzgzLDE1IEBACiAtICogQGVycm9yOiAob3V0KTogdmFyaWFibGUgdG8gc3RvcmUgZXJyb3IgKGlmIGFueSkKIC0gKgogLSAqIFJldHVybnM6IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgQG5hbWUgUkFJRCBzZXQncyB0eXBlCistICoKKy0gKiBUZWNoIGNhdGVnb3J5OiAlQkRfRE1fVEVDSF9SQUlELSVCRF9ETV9URUNIX1FVRVJZCiAtICovCiAtZ2NoYXIqIGJkX2RtX2dldF9yYWlkX3NldF90eXBlIChjb25zdCBnY2hhciAqbmFtZSwgR0Vycm9yICoqZXJyb3IpOwogZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL01ha2VmaWxlLmFtIGIvc3JjL3BsdWdpbnMvTWFrZWZpbGUuYW0KLWluZGV4IDZjNDAzOGYuLjU5ZGM1ZTMgMTAwNjQ0CitpbmRleCBiNjljOGY3Li43NTc1ZjRhIDEwMDY0NAogLS0tIGEvc3JjL3BsdWdpbnMvTWFrZWZpbGUuYW0KICsrKyBiL3NyYy9wbHVnaW5zL01ha2VmaWxlLmFtCi1AQCAtNzYsNyArNzYsNyBAQCBlbmRpZgorQEAgLTc1LDcgKzc1LDcgQEAgZW5kaWYKICAKICBpZiBXSVRIX0RNCiAgbGliYmRfZG1fbGFfQ0ZMQUdTID0gJChHTElCX0NGTEFHUykgJChERVZNQVBQRVJfQ0ZMQUdTKSAkKFVERVZfQ0ZMQUdTKSAtV2FsbCAtV2V4dHJhIC1XZXJyb3IKQEAgLTkyLDEwICsxMDEsMTAgQEAKICAjIERlYXIgYXV0aG9yIG9mIGxpYmRtZHJhaWQsIFZFUlNJT04gcmVhbGx5IGlzIG5vdCBhIGdvb2QgbmFtZSBmb3IgYW4gZW51bSBtZW1iZXIhCiAgbGliYmRfZG1fbGFfQ1BQRkxBR1MgPSAtSSR7YnVpbGRkaXJ9Ly4uLy4uL2luY2x1ZGUvIC1VVkVSU0lPTgogZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2RtLmMgYi9zcmMvcGx1Z2lucy9kbS5jCi1pbmRleCA5Y2VlNzQyLi5mZDdjN2JhIDEwMDY0NAoraW5kZXggMGU1NDY2Yy4uMzFlYmU5NiAxMDA2NDQKIC0tLSBhL3NyYy9wbHVnaW5zL2RtLmMKICsrKyBiL3NyYy9wbHVnaW5zL2RtLmMKLUBAIC0yMSwxNiArMjEsMTAgQEAKK0BAIC0yMSwxNyArMjEsMTEgQEAKICAjaW5jbHVkZSA8dW5pc3RkLmg+CiAgI2luY2x1ZGUgPGJsb2NrZGV2L3V0aWxzLmg+CiAgI2luY2x1ZGUgPGxpYmRldm1hcHBlci5oPgpAQCAtMTAzLDYgKzExMiw3IEBACiAgI2luY2x1ZGUgPGxpYnVkZXYuaD4KICAKICAjaW5jbHVkZSAiZG0uaCIKKyAjaW5jbHVkZSAiY2hlY2tfZGVwcy5oIgogIAogLS8qIG1hY3JvcyB0YWtlbiBmcm9tIHRoZSBweWJsb2NrL2RtcmFpZC5oIGZpbGUgcGx1cyBvbmUgbW9yZSovCiAtI2RlZmluZSBmb3JfZWFjaF9yYWlkc2V0KF9jLCBfbikgbGlzdF9mb3JfZWFjaF9lbnRyeShfbiwgTENfUlMoX2MpLCBsaXN0KQpAQCAtMTEyLDEwICsxMjIsMTEgQEAKICAvKioKICAgKiBTRUNUSU9OOiBkbQogICAqIEBzaG9ydF9kZXNjcmlwdGlvbjogcGx1Z2luIGZvciBiYXNpYyBvcGVyYXRpb25zIHdpdGggZGV2aWNlIG1hcHBlcgotQEAgLTI4NiwzMTUgKzI4MCwzIEBAIGdib29sZWFuIGJkX2RtX21hcF9leGlzdHMgKGNvbnN0IGdjaGFyICptYXBfbmFtZSwgZ2Jvb2xlYW4gbGl2ZV9vbmx5LCBnYm9vbGVhbiBhCitAQCAtMzgwLDMyNyArMzc0LDMgQEAgZ2Jvb2xlYW4gYmRfZG1fbWFwX2V4aXN0cyAoY29uc3QgZ2NoYXIgKm1hcF9uYW1lLCBnYm9vbGVhbiBsaXZlX29ubHksIGdib29sZWFuIGEKKyAKICAgICAgcmV0dXJuIHJldDsKICB9Ci0gCistCiAtLyoqCiAtICogaW5pdF9kbXJhaWRfc3RhY2s6IChza2lwKQogLSAqCkBAIC0xOTEsNiArMjAyLDkgQEAKIC0gICAgLyogaWYgd2UgZG9uJ3QgaGF2ZSB0aGUgbmFtZSwgd2UgY2Fubm90IGNoZWNrIGFueSBtYXRjaCAqLwogLSAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoZGV2X25hbWUsIEZBTFNFKTsKIC0KKy0gICAgLyogZ19yZXR1cm5fdmFsX2lmX2ZhaWwgYWJvdmUgY2hlY2tzIHZhbHVlIG9mIGRldl9uYW1lIGFuZCByZXR1cm5zIEZBTFNFIGlmCistICAgICAqIGl0IGlzIE5VTEwgc28gd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBpdCBoZXJlICovCistICAgIC8qIGNvdmVyaXR5W3Zhcl9kZXJlZl9tb2RlbF0gKi8KIC0gICAgaWYgKG5hbWUgJiYgc3RyY21wIChkZXZfbmFtZSwgbmFtZSkgIT0gMCkgewogLSAgICAgICAgcmV0dXJuIEZBTFNFOwogLSAgICB9CkBAIC0yMjAsOCArMjM0LDggQEAKIC0gKiBmaW5kX3JhaWRfc2V0c19mb3JfZGV2OiAoc2tpcCkKIC0gKi8KIC1zdGF0aWMgdm9pZCBmaW5kX3JhaWRfc2V0c19mb3JfZGV2IChjb25zdCBnY2hhciAqbmFtZSwgY29uc3QgZ2NoYXIgKnV1aWQsIGdpbnQgbWFqb3IsIGdpbnQgbWlub3IsIHN0cnVjdCBsaWJfY29udGV4dCAqbGMsIHN0cnVjdCByYWlkX3NldCAqcnMsIEdQdHJBcnJheSAqcmV0X3NldHMpIHsKLS0gICAgc3RydWN0IHJhaWRfc2V0ICpzdWJzZXQ7Ci0tICAgIHN0cnVjdCByYWlkX2RldiAqZGV2OworLSAgICBzdHJ1Y3QgcmFpZF9zZXQgKnN1YnNldCA9IE5VTEw7CistICAgIHN0cnVjdCByYWlkX2RldiAqZGV2ID0gTlVMTDsKIC0KIC0gICAgaWYgKFRfR1JPVVAocnMpIHx8ICFsaXN0X2VtcHR5KCYocnMtPnNldHMpKSkgewogLSAgICAgICAgZm9yX2VhY2hfc3Vic2V0IChycywgc3Vic2V0KQpAQCAtMjQ2LDYgKzI2MCw4IEBACiAtICogdGhlIG1lbWJlciBvciAlTlVMTCBpbiBjYXNlIG9mIGVycm9yCiAtICoKIC0gKiBPbmUgb2YgQG5hbWUsIEB1dWlkIG9yIEBtYWpvcjpAbWlub3IgaGFzIHRvIGJlIGdpdmVuLgorLSAqCistICogVGVjaCBjYXRlZ29yeTogJUJEX0RNX1RFQ0hfUkFJRC0lQkRfRE1fVEVDSF9NT0RFX1FVRVJZCiAtICovCiAtZ2NoYXIqKiBiZF9kbV9nZXRfbWVtYmVyX3JhaWRfc2V0cyAoY29uc3QgZ2NoYXIgKm5hbWUsIGNvbnN0IGdjaGFyICp1dWlkLCBnaW50IG1ham9yLCBnaW50IG1pbm9yLCBHRXJyb3IgKiplcnJvcikgewogLSAgICBndWludDY0IGkgPSAwOwpAQCAtMzEyLDggKzMyOCw4IEBACiAtCiAtc3RhdGljIGdib29sZWFuIGNoYW5nZV9zZXRfYnlfbmFtZSAoY29uc3QgZ2NoYXIgKm5hbWUsIGVudW0gYWN0aXZhdGVfdHlwZSBhY3Rpb24sIEdFcnJvciAqKmVycm9yKSB7CiAtICAgIGdpbnQgcmMgPSAwOwotLSAgICBzdHJ1Y3QgbGliX2NvbnRleHQgKmxjOwotLSAgICBzdHJ1Y3QgcmFpZF9zZXQgKml0ZXJfcnM7CistICAgIHN0cnVjdCBsaWJfY29udGV4dCAqbGMgPSBOVUxMOworLSAgICBzdHJ1Y3QgcmFpZF9zZXQgKml0ZXJfcnMgPSBOVUxMOwogLSAgICBzdHJ1Y3QgcmFpZF9zZXQgKm1hdGNoX3JzID0gTlVMTDsKIC0KIC0gICAgbGMgPSBpbml0X2RtcmFpZF9zdGFjayAoZXJyb3IpOwpAQCAtMzUyLDYgKzM2OCw4IEBACiAtICogQGVycm9yOiAob3V0KTogdmFyaWFibGUgdG8gc3RvcmUgZXJyb3IgKGlmIGFueSkKIC0gKgogLSAqIFJldHVybnM6IHdoZXRoZXIgdGhlIFJBSUQgc2V0IEBuYW1lIHdhcyBzdWNjZXNzZnVsbHkgYWN0aXZhdGUgb3Igbm90CistICoKKy0gKiBUZWNoIGNhdGVnb3J5OiAlQkRfRE1fVEVDSF9SQUlELSVCRF9ETV9URUNIX0NSRUFURV9BQ1RJVkFURQogLSAqLwogLWdib29sZWFuIGJkX2RtX2FjdGl2YXRlX3JhaWRfc2V0IChjb25zdCBnY2hhciAqbmFtZSwgR0Vycm9yICoqZXJyb3IpIHsKIC0gICAgZ3VpbnQ2NCBwcm9ncmVzc19pZCA9IDA7CkBAIC0zNzIsNiArMzkwLDggQEAKIC0gKiBAZXJyb3I6IChvdXQpOiB2YXJpYWJsZSB0byBzdG9yZSBlcnJvciAoaWYgYW55KQogLSAqCiAtICogUmV0dXJuczogd2hldGhlciB0aGUgUkFJRCBzZXQgQG5hbWUgd2FzIHN1Y2Nlc3NmdWxseSBkZWFjdGl2YXRlIG9yIG5vdAorLSAqCistICogVGVjaCBjYXRlZ29yeTogJUJEX0RNX1RFQ0hfUkFJRC0lQkRfRE1fVEVDSF9SRU1PVkVfREVBQ1RJVkFURQogLSAqLwogLWdib29sZWFuIGJkX2RtX2RlYWN0aXZhdGVfcmFpZF9zZXQgKGNvbnN0IGdjaGFyICpuYW1lLCBHRXJyb3IgKiplcnJvcikgewogLSAgICBndWludDY0IHByb2dyZXNzX2lkID0gMDsKQEAgLTM5MiwxMCArNDEyLDEyIEBACiAtICogQGVycm9yOiAob3V0KTogdmFyaWFibGUgdG8gc3RvcmUgZXJyb3IgKGlmIGFueSkKIC0gKgogLSAqIFJldHVybnM6IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgQG5hbWUgUkFJRCBzZXQncyB0eXBlCistICoKKy0gKiBUZWNoIGNhdGVnb3J5OiAlQkRfRE1fVEVDSF9SQUlELSVCRF9ETV9URUNIX1FVRVJZCiAtICovCiAtZ2NoYXIqIGJkX2RtX2dldF9yYWlkX3NldF90eXBlIChjb25zdCBnY2hhciAqbmFtZSwgR0Vycm9yICoqZXJyb3IpIHsKLS0gICAgc3RydWN0IGxpYl9jb250ZXh0ICpsYzsKLS0gICAgc3RydWN0IHJhaWRfc2V0ICppdGVyX3JzOworLSAgICBzdHJ1Y3QgbGliX2NvbnRleHQgKmxjID0gTlVMTDsKKy0gICAgc3RydWN0IHJhaWRfc2V0ICppdGVyX3JzID0gTlVMTDsKIC0gICAgc3RydWN0IHJhaWRfc2V0ICptYXRjaF9ycyA9IE5VTEw7CiAtICAgIGNvbnN0IGdjaGFyICp0eXBlID0gTlVMTDsKIC0KQEAgLTQyOSw3ICs0NTEsNyBAQAogLSAgICByZXR1cm4gZ19zdHJkdXAgKHR5cGUpOwogLX0KIGRpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9kbS5oIGIvc3JjL3BsdWdpbnMvZG0uaAotaW5kZXggODU5ZmI4MC4uODBhY2Q0OSAxMDA2NDQKK2luZGV4IDBkY2U2YWMuLjFlZTM3ODggMTAwNjQ0CiAtLS0gYS9zcmMvcGx1Z2lucy9kbS5oCiArKysgYi9zcmMvcGx1Z2lucy9kbS5oCiBAQCAtMSw1ICsxLDQgQEAKQEAgLTQzOCwxMCArNDYwLDEwIEBACiAgCiAgI2lmbmRlZiBCRF9ETQogICNkZWZpbmUgQkRfRE0KLUBAIC0zNSw5ICszNCw1IEBAIGdib29sZWFuIGJkX2RtX3JlbW92ZSAoY29uc3QgZ2NoYXIgKm1hcF9uYW1lLCBHRXJyb3IgKiplcnJvcik7CitAQCAtNDgsOSArNDcsNSBAQCBnYm9vbGVhbiBiZF9kbV9tYXBfZXhpc3RzIChjb25zdCBnY2hhciAqbWFwX25hbWUsIGdib29sZWFuIGxpdmVfb25seSwgZ2Jvb2xlYW4gYQogIGdjaGFyKiBiZF9kbV9uYW1lX2Zyb21fbm9kZSAoY29uc3QgZ2NoYXIgKmRtX25vZGUsIEdFcnJvciAqKmVycm9yKTsKICBnY2hhciogYmRfZG1fbm9kZV9mcm9tX25hbWUgKGNvbnN0IGdjaGFyICptYXBfbmFtZSwgR0Vycm9yICoqZXJyb3IpOwotIGdib29sZWFuIGJkX2RtX21hcF9leGlzdHMgKGNvbnN0IGdjaGFyICptYXBfbmFtZSwgZ2Jvb2xlYW4gbGl2ZV9vbmx5LCBnYm9vbGVhbiBhY3RpdmVfb25seSwgR0Vycm9yICoqZXJyb3IpOworIGdjaGFyKiBiZF9kbV9nZXRfc3Vic3lzdGVtX2Zyb21fbmFtZSAoY29uc3QgZ2NoYXIgKmRldmljZV9uYW1lLCBHRXJyb3IgKiplcnJvcik7CiAtZ2NoYXIqKiBiZF9kbV9nZXRfbWVtYmVyX3JhaWRfc2V0cyAoY29uc3QgZ2NoYXIgKm5hbWUsIGNvbnN0IGdjaGFyICp1dWlkLCBnaW50IG1ham9yLCBnaW50IG1pbm9yLCBHRXJyb3IgKiplcnJvcik7CiAtZ2Jvb2xlYW4gYmRfZG1fYWN0aXZhdGVfcmFpZF9zZXQgKGNvbnN0IGdjaGFyICpuYW1lLCBHRXJyb3IgKiplcnJvcik7CiAtZ2Jvb2xlYW4gYmRfZG1fZGVhY3RpdmF0ZV9yYWlkX3NldCAoY29uc3QgZ2NoYXIgKm5hbWUsIEdFcnJvciAqKmVycm9yKTsKQEAgLTQ2Niw1ICs0ODgsNSBAQAogIF9sb29wX3NldHVwID0gQmxvY2tEZXYubG9vcF9zZXR1cAogIEBvdmVycmlkZShCbG9ja0Rldi5sb29wX3NldHVwKQogLS0gCi0xLjguMy4xCisyLjE0LjMKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwNC1maXgtY29tcGlsZS1mYWlsdXJlLWFnYWluc3QtbXVzbC1DLWxpYnJhcnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9maWxlcy8wMDA0LWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaAppbmRleCBmMThiNTY5Li4wYjViODA5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9maWxlcy8wMDA0LWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9maWxlcy8wMDA0LWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaApAQCAtMTIsNyArMTIsNyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvY3J5cHRvLmMgYi9zcmMvcGx1Z2lucy9jcnlwdG8uYwotaW5kZXggOGZiY2U0Zi4uNjZlMTFlNSAxMDA2NDQKK2luZGV4IGI5NjE0NzEuLjJkM2QyNTEgMTAwNjQ0CiAtLS0gYS9zcmMvcGx1Z2lucy9jcnlwdG8uYwogKysrIGIvc3JjL3BsdWdpbnMvY3J5cHRvLmMKIEBAIC0yMiw3ICsyMiw3IEBACkBAIC0yNSw3ICsyNSw3IEBACiAgI2luY2x1ZGUgPGxpbnV4L3JhbmRvbS5oPgogICNpbmNsdWRlIDxsb2NhbGUuaD4KIGRpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9wYXJ0LmMgYi9zcmMvcGx1Z2lucy9wYXJ0LmMKLWluZGV4IDEyZDJlZjcuLjNhZmUyOTcgMTAwNjQ0CitpbmRleCA2YjJhNjkwLi5hYjQ5MGQ5IDEwMDY0NAogLS0tIGEvc3JjL3BsdWdpbnMvcGFydC5jCiArKysgYi9zcmMvcGx1Z2lucy9wYXJ0LmMKIEBAIC0yNSw2ICsyNSw3IEBACkBAIC0zMywxMCArMzMsMTAgQEAKICAjaW5jbHVkZSA8dW5pc3RkLmg+CiAgI2luY2x1ZGUgPHN5cy9maWxlLmg+CiArI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorICNpbmNsdWRlIDxsaW51eC9mcy5oPgogICNpbmNsdWRlIDxibG9ja2Rldi91dGlscy5oPgotICNpbmNsdWRlIDxwYXJ0X2Vyci5oPgotIAotQEAgLTEyMjQsNyArMTIyNSw3IEBAIHN0YXRpYyBnYm9vbGVhbiBzZXRfZ3B0X2ZsYWdzIChjb25zdCBnY2hhciAqZGV2aWNlLCBpbnQgcGFydF9udW0sIGd1aW50NjQgZmxhZ3MsCitAQCAtMTM1NCw3ICsxMzU1LDcgQEAgc3RhdGljIGdib29sZWFuIHNldF9ncHRfZmxhZ3MgKGNvbnN0IGdjaGFyICpkZXZpY2UsIGludCBwYXJ0X251bSwgZ3VpbnQ2NCBmbGFncywKICAgICAgICAgIHJlYWxfZmxhZ3MgfD0gMHg0MDAwMDAwMDAwMDAwMDAwOyAvKiAxIDw8IDYyICovCiAgICAgIGlmIChmbGFncyAmIEJEX1BBUlRfRkxBR19HUFRfTk9fQVVUT01PVU5UKQogICAgICAgICAgcmVhbF9mbGFncyB8PSAweDgwMDAwMDAwMDAwMDAwMDA7IC8qIDEgPDwgNjMgKi8KQEAgLTQ2LDUgKzQ2LDUgQEAKICAgICAgYXJnc1syXSA9IGdfc3RyZHVwX3ByaW50ZiAoIiVkOj06JXMiLCBwYXJ0X251bSwgbWFza19zdHIpOwogICAgICBnX2ZyZWUgKG1hc2tfc3RyKTsKIC0tIAotMS44LjMuMQorMi4xNC4zCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDUtZml4LWEtY2xhbmctY29tcGlsaW5nLWlzc3VlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwNS1maXgtYS1jbGFuZy1jb21waWxpbmctaXNzdWUucGF0Y2gKaW5kZXggMzgxODkzNi4uYjIxNGYwYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwNS1maXgtYS1jbGFuZy1jb21waWxpbmctaXNzdWUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwNS1maXgtYS1jbGFuZy1jb21waWxpbmctaXNzdWUucGF0Y2gKQEAgLTE5LDE3ICsxOSwxNyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAtLS0KLSBzcmMvcGx1Z2lucy9jcnlwdG8uYyB8IDYgKysrLS0tCi0gc3JjL3BsdWdpbnMvZnMuYyAgICAgfCA0ICsrLS0KLSBzcmMvcGx1Z2lucy9wYXJ0LmMgICB8IDQgKystLQotIHNyYy91dGlscy9leGVjLmMgICAgIHwgMiArLQorIHNyYy9wbHVnaW5zL2NyeXB0by5jICB8IDYgKysrLS0tCisgc3JjL3BsdWdpbnMvZnMvdmZhdC5jIHwgNCArKy0tCisgc3JjL3BsdWdpbnMvcGFydC5jICAgIHwgNCArKy0tCisgc3JjL3V0aWxzL2V4ZWMuYyAgICAgIHwgMiArLQogIDQgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvY3J5cHRvLmMgYi9zcmMvcGx1Z2lucy9jcnlwdG8uYwotaW5kZXggOGZiY2U0Zi4uN2VlN2NkYyAxMDA2NDQKK2luZGV4IDU2MzA5M2UuLmI5NjE0NzEgMTAwNjQ0CiAtLS0gYS9zcmMvcGx1Z2lucy9jcnlwdG8uYwogKysrIGIvc3JjL3BsdWdpbnMvY3J5cHRvLmMKLUBAIC04ODEsNyArODgxLDcgQEAgZ2Jvb2xlYW4gYmRfY3J5cHRvX3RjX29wZW4gKGNvbnN0IGdjaGFyICpkZXZpY2UsIGNvbnN0IGdjaGFyICpuYW1lLCBjb25zdCBndWludDgKK0BAIC05NzAsNyArOTcwLDcgQEAgZ2Jvb2xlYW4gYmRfY3J5cHRvX3RjX29wZW4gKGNvbnN0IGdjaGFyICpkZXZpY2UsIGNvbnN0IGdjaGFyICpuYW1lLCBjb25zdCBndWludDgKICAgICAgZ2ludCByZXQgPSAwOwogICAgICBndWludDY0IHByb2dyZXNzX2lkID0gMDsKICAgICAgZ2NoYXIgKm1zZyA9IE5VTEw7CkBAIC0zOCw3ICszOCw3IEBACiAgCiAgICAgIG1zZyA9IGdfc3RyZHVwX3ByaW50ZiAoIlN0YXJ0ZWQgb3BlbmluZyAnJXMnIFRydWVDcnlwdC9WZXJhQ3J5cHQgZGV2aWNlIiwgZGV2aWNlKTsKICAgICAgcHJvZ3Jlc3NfaWQgPSBiZF91dGlsc19yZXBvcnRfc3RhcnRlZCAobXNnKTsKLUBAIC05OTksNyArOTk5LDcgQEAgc3RhdGljIGdjaGFyICpyZXBsYWNlX2NoYXIgKGdjaGFyICpzdHIsIGdjaGFyIG9yaWcsIGdjaGFyIG5ldykgeworQEAgLTEwOTAsNyArMTA5MCw3IEBAIHN0YXRpYyBnY2hhciAqcmVwbGFjZV9jaGFyIChnY2hhciAqc3RyLCBnY2hhciBvcmlnLCBnY2hhciBuZXcpIHsKICAgICAgcmV0dXJuIHN0cjsKICB9CiAgCkBAIC00Nyw3ICs0Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFUlRDZXJ0aWZpY2F0ZSAqY2VydCwgR0Vycm9yICoqZXJyb3IpIHsKICAgICAgZ3BvaW50ZXIgcGFja2V0X2RhdGEgPSBOVUxMOwogICAgICBnc2l6ZSBwYWNrZXRfZGF0YV9zaXplID0gMDsKLUBAIC0xMDA4LDcgKzEwMDgsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd3JpdGVfZXNjcm93X2RhdGFfZmlsZSAoc3RydWN0IGxpYnZrX3ZvbHVtZSAqdm9sdW1lLCBzdHJ1Y3QgbGlidgorQEAgLTEwOTksNyArMTA5OSw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3cml0ZV9lc2Nyb3dfZGF0YV9maWxlIChzdHJ1Y3QgbGlidmtfdm9sdW1lICp2b2x1bWUsIHN0cnVjdCBsaWJ2CiAgICAgIGdzaXplIGJ5dGVzX3dyaXR0ZW4gPSAwOwogICAgICBHRXJyb3IgKnRtcF9lcnJvciA9IE5VTEw7CiAgCkBAIC01NiwxMSArNTYsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aSwgTElCVktfUEFDS0VUX0ZPUk1BVF9BU1lNTUVUUklDX1dSQVBfU0VDUkVUX09OTFksIGVycm9yKTsKICAKICAgICAgaWYgKCFwYWNrZXRfZGF0YSkgewotZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2ZzLmMgYi9zcmMvcGx1Z2lucy9mcy5jCi1pbmRleCBjNGI2YWM4Li42NDcwOTZkIDEwMDY0NAotLS0tIGEvc3JjL3BsdWdpbnMvZnMuYwotKysrIGIvc3JjL3BsdWdpbnMvZnMuYwotQEAgLTI2MTQsOCArMjYxNCw4IEBAIEJERlNWZmF0SW5mbyogYmRfZnNfdmZhdF9nZXRfaW5mbyAoY29uc3QgZ2NoYXIgKmRldmljZSwgR0Vycm9yICoqZXJyb3IpIHsKK2RpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9mcy92ZmF0LmMgYi9zcmMvcGx1Z2lucy9mcy92ZmF0LmMKK2luZGV4IDNlZDdkNGEuLjVmZjc3OTUgMTAwNjQ0CistLS0gYS9zcmMvcGx1Z2lucy9mcy92ZmF0LmMKKysrKyBiL3NyYy9wbHVnaW5zL2ZzL3ZmYXQuYworQEAgLTM3Niw4ICszNzYsOCBAQCBCREZTVmZhdEluZm8qIGJkX2ZzX3ZmYXRfZ2V0X2luZm8gKGNvbnN0IGdjaGFyICpkZXZpY2UsIEdFcnJvciAqKmVycm9yKSB7CiAgICovCiAgZ2Jvb2xlYW4gYmRfZnNfdmZhdF9yZXNpemUgKGNvbnN0IGdjaGFyICpkZXZpY2UsIGd1aW50NjQgbmV3X3NpemUsIEdFcnJvciAqKmVycm9yKSB7CiAgICAgIFBlZERldmljZSAqcGVkX2RldiA9IE5VTEw7CkBAIC03MiwxMCArNzIsMTAgQEAKICAgICAgUGVkU2VjdG9yIHN0YXJ0ID0gMDsKICAgICAgUGVkU2VjdG9yIGxlbmd0aCA9IDA7CiBkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvcGFydC5jIGIvc3JjL3BsdWdpbnMvcGFydC5jCi1pbmRleCAxMmQyZWY3Li5kMjc3Njg4IDEwMDY0NAoraW5kZXggZmVkODMwMC4uNmIyYTY5MCAxMDA2NDQKIC0tLSBhL3NyYy9wbHVnaW5zL3BhcnQuYwogKysrIGIvc3JjL3BsdWdpbnMvcGFydC5jCi1AQCAtODQ5LDcgKzg0OSw3IEBAIHN0YXRpYyBQZWRQYXJ0aXRpb24qIGFkZF9wYXJ0X3RvX2Rpc2sgKFBlZERldmljZSAqZGV2LCBQZWREaXNrICpkaXNrLCBCRFBhcnRUeXBlCitAQCAtOTI2LDcgKzkyNiw3IEBAIHN0YXRpYyBQZWRQYXJ0aXRpb24qIGFkZF9wYXJ0X3RvX2Rpc2sgKFBlZERldmljZSAqZGV2LCBQZWREaXNrICpkaXNrLCBCRFBhcnRUeXBlCiAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgfQogIApAQCAtODQsNyArODQsNyBAQAogICAgICBpZiAoIXBhcnQpIHsKICAgICAgICAgIHNldF9wYXJ0ZWRfZXJyb3IgKGVycm9yLCBCRF9QQVJUX0VSUk9SX0ZBSUwpOwogICAgICAgICAgZ19wcmVmaXhfZXJyb3IgKGVycm9yLCAiRmFpbGVkIHRvIGNyZWF0ZSBuZXcgcGFydGl0aW9uIG9uIGRldmljZSAnJXMnIiwgZGV2LT5wYXRoKTsKLUBAIC0xNDI3LDcgKzE0MjcsNyBAQCBnYm9vbGVhbiBiZF9wYXJ0X3NldF9wYXJ0X2ZsYWdzIChjb25zdCBnY2hhciAqZGlzaywgY29uc3QgZ2NoYXIgKnBhcnQsIGd1aW50NjQgZgorQEAgLTE1NjQsNyArMTU2NCw3IEBAIGdib29sZWFuIGJkX3BhcnRfc2V0X3BhcnRfZmxhZ3MgKGNvbnN0IGdjaGFyICpkaXNrLCBjb25zdCBnY2hhciAqcGFydCwgZ3VpbnQ2NCBmCiAgICAgIFBlZFBhcnRpdGlvbiAqcGVkX3BhcnQgPSBOVUxMOwogICAgICBjb25zdCBnY2hhciAqcGFydF9udW1fc3RyID0gTlVMTDsKICAgICAgZ2ludCBwYXJ0X251bSA9IDA7CkBAIC05NCw3ICs5NCw3IEBACiAgICAgIGdib29sZWFuIHJldCA9IEZBTFNFOwogICAgICBndWludDY0IHByb2dyZXNzX2lkID0gMDsKIGRpZmYgLS1naXQgYS9zcmMvdXRpbHMvZXhlYy5jIGIvc3JjL3V0aWxzL2V4ZWMuYwotaW5kZXggN2FjNDRmZC4uMGEzMDk0YyAxMDA2NDQKK2luZGV4IDExYzE0ODkuLmRjZjg3ZTUgMTAwNjQ0CiAtLS0gYS9zcmMvdXRpbHMvZXhlYy5jCiArKysgYi9zcmMvdXRpbHMvZXhlYy5jCiBAQCAtMzU0LDcgKzM1NCw3IEBAIGdib29sZWFuIGJkX3V0aWxzX2V4ZWNfYW5kX3JlcG9ydF9wcm9ncmVzcyAoY29uc3QgZ2NoYXIgKiphcmd2LCBjb25zdCBCREV4dHJhQXJnCkBAIC0xMDcsNSArMTA3LDUgQEAKICAgICAgZ2Jvb2xlYW4gZXJyX2RvbmUgPSBGQUxTRTsKICAgICAgR1N0cmluZyAqc3Rkb3V0X2RhdGEgPSBnX3N0cmluZ19uZXcgKE5VTEwpOwogLS0gCi0xLjguMy4xCisyLjE0LjMKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvbGliYmxvY2tkZXZfMi4xMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2xpYmJsb2NrZGV2XzIuMTYuYmIKc2ltaWxhcml0eSBpbmRleCA3MyUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvbGliYmxvY2tkZXZfMi4xMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvbGliYmxvY2tkZXZfMi4xNi5iYgppbmRleCAyYTkyMzU0Li4wYzk1NGFhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9saWJibG9ja2Rldl8yLjEwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2xpYmJsb2NrZGV2XzIuMTYuYmIKQEAgLTgsMjAgKzgsNiBAQAogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jMDdjYjQ5OWQyNTk0NTJmMzI0YmI5MGMzMDY3ZDg1YyIKIAotUyA9ICIke1dPUktESVJ9L2dpdCIKLUIgPSAiJHtTfSIKLQotU1JDUkVWID0gImMxZGRhNDUwMDE1NDJlZGQ3ZDdmMWZmYzY0NTFjNWE3NDYyM2Y4MDUiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvbGliYmxvY2tkZXY7YnJhbmNoPW1hc3RlciBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1jb25maWd1cmUtYW5kLWNvbXBpbGUtZmFpbHVyZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1yZW1vdmUtcHl0aG9uMi1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtcmVtb3ZlLWRtcmFpZC13aGlsZS1jb21waWxpbmctd2l0aC13aXRoLWRtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtZml4LWEtY2xhbmctY29tcGlsaW5nLWlzc3VlLnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1maXgtY29tcGlsZS1mYWlsdXJlLWFnYWluc3QtbXVzbC1DLWxpYnJhcnkucGF0Y2ggXAotIgotCiBpbmhlcml0IGF1dG90b29scyBweXRob24zbmF0aXZlIGdvYmplY3QtaW50cm9zcGVjdGlvbgogCiBERVBFTkRTICs9ICIgXApAQCAtMzEsNiArMTcsMjEgQEAKICAgICBsaWJieXRlc2l6ZSBcCiAgICAgYnRyZnMtdG9vbHMgXAogIgorCitTUkNSRVYgPSAiZTJlMDg5OWVmZThkZDNmMTExZmY5NTVmYjZjMWRjMTBiMGJkMjA3NSIKK1NSQ19VUkkgPSAiIFwKKyAgICBnaXQ6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL2xpYmJsb2NrZGV2O2JyYW5jaD1tYXN0ZXIgXAorICAgIGZpbGU6Ly8wMDAxLWZpeC1jb25maWd1cmUtYW5kLWNvbXBpbGUtZmFpbHVyZXMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLXJlbW92ZS1weXRob24yLXN1cHBvcnQucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLXJlbW92ZS1kbXJhaWQtd2hpbGUtY29tcGlsaW5nLXdpdGgtd2l0aC1kbS5wYXRjaCBcCisgICAgZmlsZTovLzAwMDUtZml4LWEtY2xhbmctY29tcGlsaW5nLWlzc3VlLnBhdGNoIFwKKyIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAorICAgIGZpbGU6Ly8wMDA0LWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaCBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKIFJERVBFTkRTXyR7UE59ICs9ICIgXAogICAgIGx2bTIgXAogIgpAQCAtNDYsNiArNDcsNSBAQAogUEFDS0FHRUNPTkZJR1tmc10gPSAiLS13aXRoLWZzLCAtLXdpdGhvdXQtZnMsIHV0aWwtbGludXgiCiBQQUNLQUdFQ09ORklHW2RvY10gPSAiLS13aXRoLWd0ay1kb2MsIC0td2l0aG91dC1ndGstZG9jLCBndGstZG9jLW5hdGl2ZSIKIAotZXhwb3J0IFNUQUdJTkdfSU5DRElSCiBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9zcmMvdXRpbHMvLmxpYnMiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmRpdmVjb21wdXRlci9maWxlcy9maXgtYXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJkaXZlY29tcHV0ZXIvZmlsZXMvZml4LWFyLnBhdGNoCmluZGV4IGNjM2Y1ZDQuLmY2NWQyNmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmRpdmVjb21wdXRlci9maWxlcy9maXgtYXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliZGl2ZWNvbXB1dGVyL2ZpbGVzL2ZpeC1hci5wYXRjaApAQCAtMiwxMSArMiwxMSBAQAogIGNvbmZpZ3VyZS5hYyB8ICAgIDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCitJbmRleDogZ2l0L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGdpdC5vcmlnL2NvbmZpZ3VyZS5hYwogKysrIGdpdC9jb25maWd1cmUuYWMKLUBAIC0yNCwxMCArMjQsMTEgQEAgTFRfSU5JVChbd2luMzItZGxsXSkKLSBMVF9QUk9HX1JDCi0gCitAQCAtNTYsNiArNTYsNyBAQCBBTV9DT05ESVRJT05BTChbRU5BQkxFX0VYQU1QTEVTXSwgW3Rlc3QKICAjIENoZWNrcyBmb3IgcHJvZ3JhbXMuCiAgQUNfUFJPR19DQwogIEFDX1BST0dfQ0NfQzk5CkBAIC0xNCw1ICsxNCwzIEBACiAgCiAgIyBFbmFibGUgYXV0b21ha2Ugc2lsZW50IGJ1aWxkIHJ1bGVzLgogIG00X2lmZGVmKFtBTV9TSUxFTlRfUlVMRVNdLFtBTV9TSUxFTlRfUlVMRVMoW3llc10pXSkKLSAKLSAjIENoZWNrcyBmb3IgbmF0aXZlIFdpbmRvd3MuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJneGltL2xpYmd4aW1fMC41LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJneGltL2xpYmd4aW1fMC41LjAuYmIKaW5kZXggNWJmN2M2ZS4uN2U0YzMzMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliZ3hpbS9saWJneGltXzAuNS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmd4aW0vbGliZ3hpbV8wLjUuMC5iYgpAQCAtMjYsNCArMjYsNiBAQAogRVhUUkFfT0VDT05GID0gIiAtLWRpc2FibGUtc3RhdGljIC0tZGlzYWJsZS1yZWJ1aWxkcyAtLWVuYWJsZS1jb21waWxlLXdhcm5pbmdzPW1pbmltdW0iCiBERVBFTkRTICs9ICJndGsrIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBydWJ5LW5hdGl2ZSBpbnRsdG9vbC1uYXRpdmUgZ25vbWUtY29tbW9uLW5hdGl2ZSIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicWIvbGlicWIvMDAwMS1SZW1vdmUtcnVudGltZS1jaGVjay1mb3ItQ0xPQ0tfTU9OT1RPTklDLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicWIvbGlicWIvMDAwMS1SZW1vdmUtcnVudGltZS1jaGVjay1mb3ItQ0xPQ0tfTU9OT1RPTklDLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGJjNWMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnFiL2xpYnFiLzAwMDEtUmVtb3ZlLXJ1bnRpbWUtY2hlY2stZm9yLUNMT0NLX01PTk9UT05JQy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb20gZTZmYmFkMGMxMjJiYThlODdiNjdhOWUyNDQ3NTA1YWRjYWFmZTIwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDI5IE1hciAyMDE3IDE2OjMxOjM4IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBydW50aW1lIGNoZWNrIGZvciBDTE9DS19NT05PVE9OSUMKLQotRG9lcyBub3Qgd29yayBkdXJpbmcgY3Jvc3MgY29tcGlsZQotCi11c2UgYSBjb21waWxlLXRpbWUgY2hlY2sgdG8gZGV0ZWN0IHdoZXRoZXIgdGhlCi1tb25vdG9uaWMgY2xvY2sgaXMgYXZhaWxhYmxlLiBUaGlzIGNoZWNrIGNhbiBydW4ganVzdCBmaW5lIHdoZW4gd2UgYXJlCi1jcm9zcy1jb21waWxpbmcuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAxMiArKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZmExM2FlNi4uZjRmMGY0NiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTc1LDkgKzE3NSwxNyBAQCBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKAotICAgICAgICAgICAgICAgICAgKQotIAotIEFDX01TR19DSEVDS0lORyhmb3IgYSB3b3JraW5nIGNsb2NrX2dldHJlcyhDTE9DS19NT05PVE9OSUMsICZ0cykpCi0tQUNfUlVOX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKAotK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oCi0gW1sjaW5jbHVkZSA8dGltZS5oPl1dLAotLVtbc3RydWN0IHRpbWVzcGVjIHRzOyBpZihjbG9ja19nZXRyZXMoQ0xPQ0tfTU9OT1RPTklDLCAmdHMpKSByZXR1cm4gLTE7XV0pXSwKLStbWwotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLStpbnQgbWFpbigpIHsKLSsjaWYgIShkZWZpbmVkKF9QT1NJWF9NT05PVE9OSUNfQ0xPQ0spICYmIF9QT1NJWF9NT05PVE9OSUNfQ0xPQ0sgPj0gMCAmJiBkZWZpbmVkKENMT0NLX01PTk9UT05JQykpCi0rICAgICAgICAjZXJyb3IgTm8gbW9ub3RvbmljIGNsb2NrCi0rI2VuZGlmCi0rICAgIHJldHVybiAwOwotKwotK11dKV0sCi0gICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCi0gICAgICAgICAgICAgICAgICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChbSEFWRV9DTE9DS19HRVRSRVNfTU9OT1RPTklDXSwgMSwgW0RlZmluZSB0byAxIGlmIGNsb2NrX2dldHJlcyhDTE9DS19NT05PVE9OSUMsICZ0cykgd29ya3NdKQotLS0gCi0yLjEyLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicWIvbGlicWIvMDAwMS1idWlsZC1maXgtY29uZmlndXJlLXNjcmlwdC1uZWdsZWN0aW5nLXJlLWVuYWJsZS1vdXQtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicWIvbGlicWIvMDAwMS1idWlsZC1maXgtY29uZmlndXJlLXNjcmlwdC1uZWdsZWN0aW5nLXJlLWVuYWJsZS1vdXQtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MmYzYmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJxYi9saWJxYi8wMDAxLWJ1aWxkLWZpeC1jb25maWd1cmUtc2NyaXB0LW5lZ2xlY3RpbmctcmUtZW5hYmxlLW91dC0ucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorRnJvbSA3M2QyYWVhMzNlMzIyNzJiYWM2OTM1NTBlOGEzYjBlM2FkODk3MDdmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0phbj0yMFBva29ybj1DMz1CRD89IDxqcG9rb3JueUByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAyNiBEZWMgMjAxNyAwMDowMjoyNiArMDEwMAorU3ViamVjdDogW1BBVENIXSBidWlsZDogZml4IGNvbmZpZ3VyZSBzY3JpcHQgbmVnbGVjdGluZywgcmUtZW5hYmxlIG91dC1vZi10cmVlCisgYnVpbGRzCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK0ZvciB0aGUgZm9ybWVyLCBhIHByb3RvdHlwZSBhbmQgdGhlIGZpbmFsIGNvZGUgZ290IChobSwgbXlzdGVyaW91c2x5KQoraW50ZXJ0d2lzdGVkLiAgRm9yIHRoZSBsYXR0ZXIsIEkgYW0gY2xlYXJseSBndWlsdHkgb2YgKHJhcmUsIGFueXdheSkKK3Rlc3Rpbmcgb2YgdGhlIG91dC1vZi10cmVlIGJ1aWxkcyBvbmx5IHdpdGggbGlicWItYWxyZWFkeS1zeXN0ZW0td2lkZQorc2NlbmFyaW8sIHdoaWNoIGlzIHJhdGhlciBzaG9ydHNpZ2h0ZWQuCisKK1RoYW5rcyBGYWJpbyBhbmQgaGlzIGNpLmtyb25vc25ldC5vcmcgcHJvamVjdCBmb3Igc3BvdHRpbmcgdGhhdC4KKworWC1tYXMtcHJlc2VudC1mb3I6IEZhYmlvIE0uIERpIE5pdHRvIDxmZGluaXR0b0ByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogSmFuIFBva29ybsO9IDxqcG9rb3JueUByZWRoYXQuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKKyBjb25maWd1cmUuYWMgICAgfCAyICstCisgbGliL01ha2VmaWxlLmFtIHwgNCArKystCisgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDk5MDAzMTAuLmY5NzYxY2MgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTcxMCw3ICs3MTAsNyBAQCBpZiB0ZXN0ICJ4JHtHQ0N9IiA9IHh5ZXM7IHRoZW4KKyAJCQkgICAgICAgICAgICAgICAgICAgICAgfCBncmVwIF9fc3RvcF9fX3ZlcmJvc2UgfCBjdXQgLWQiICIgLWYgMykKKyAJCQkgdGVzdCAiJHt2ZXJib3NlX3N0YXJ0X2FkZHJ9IiA9ICIke3ZlcmJvc2Vfc3RvcF9hZGRyfSIgXAorIAkJCSAgICYmIGdjY19oYXNfYXR0cmlidXRlX3NlY3Rpb25fdmlzaWJsZT1ubyBcCistCQkJICAgfHwgeyB2ZXJib3NlX3N0YXJ0X3R5cGU9JCgke1JFQURFTEZ9IC1zIGJhY2t1cCBcCisrCQkJICAgfHwgeyB2ZXJib3NlX3N0YXJ0X3R5cGU9JCgke1JFQURFTEZ9IC1zICJjb25mdGVzdCR7c2hyZXh0X2NtZHN9IiBcCisgCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAtbiAnL19fc3RhcnRfX192ZXJib3NlL3tzL15ccyovL3A7cX0nIFwKKyAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHIgLXMgJyAnIFwKKyAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY3V0IC1kIiAiIC1mNikKK2RpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUuYW0gYi9saWIvTWFrZWZpbGUuYW0KK2luZGV4IDZjYTZiMTUuLmIwMzVmMGIgMTAwNjQ0CistLS0gYS9saWIvTWFrZWZpbGUuYW0KKysrKyBiL2xpYi9NYWtlZmlsZS5hbQorQEAgLTEwMSw3ICsxMDEsOSBAQCBlbmRpZgorIGVuZGlmCisgCisgcWJsb2dfc2NyaXB0LmxkOiAlLmxkOiAlLmxkLmluCistCSQoQU1fVl9HRU4pJChDUFApIC14YyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZSAtRF9HTlVfU09VUkNFIC1DIC1QICQ8IFwKKysJJChBTV9WX0dFTikkKENQUCkgLUMgLURfR05VX1NPVVJDRSAtUCBcCisrCSAgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUgLUkkKHRvcF9idWlsZGRpcikvaW5jbHVkZSBcCisrCSAgLXhjICQ8IFwKKyAJICB8IHNlZCAtbiAiLyQkKHNlZCAtbiAnL15bXiNdL3tzL1sqXC9dL1xcJi9nO3A7cTt9JyAkPCkvLCQkIHAiIFwKKyAJICA+ICRACisgCistLSAKKzIuMTYuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJxYi9saWJxYl8xLjAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnFiL2xpYnFiXzEuMC4zLmJiCnNpbWlsYXJpdHkgaW5kZXggNzclCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnFiL2xpYnFiXzEuMC4yLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJxYi9saWJxYl8xLjAuMy5iYgppbmRleCA1NzRmNjYwLi43M2NlYTVlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJxYi9saWJxYl8xLjAuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJxYi9saWJxYl8xLjAuMy5iYgpAQCAtMTEsMTIgKzExLDE0IEBACiAKIFBWIC49ICIrZ2l0JHtTUkNQVn0iCiAKLVNSQ1JFViA9ICI2MDhkZTZkNTlhM2RlMGVlZjBmYmNiZDhmMjg0YWNiYzAxOGRhYTlhIgorIyB2MS4wLjMKK1NSQ1JFViA9ICIyOGRmZjA5MGM3NGI2YmE4NjA5YzQ3OTcyOTRhNWFmZTNmZTczOTg3IgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0NsdXN0ZXJMYWJzLyR7QlBOfS5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtcnVudGltZS1jaGVjay1mb3ItQ0xPQ0tfTU9OT1RPTklDLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtZml4LWNvbmZpZ3VyZS1zY3JpcHQtbmVnbGVjdGluZy1yZS1lbmFibGUtb3V0LS5wYXRjaCBcCiAgICAgICAgICAgIgogUyA9ICIke1dPUktESVJ9L2dpdCIKIAorQ0ZMQUdTICs9ICItcHRocmVhZCAtRF9SRUVOVFJBTlQiCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKICAgICAoIGNkICR7U30KICAgICAke1N9L2F1dG9nZW4uc2ggKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2xpYnJlcG9ydF8yLjkuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9saWJyZXBvcnRfMi45LjIuYmIKaW5kZXggNTI1NDM3Yi4uZjJjNjYxYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2xpYnJlcG9ydF8yLjkuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvbGlicmVwb3J0XzIuOS4yLmJiCkBAIC01LDcgKzUsNyBAQAogTElDRU5TRSA9ICJHUEx2MisiCiBERVBFTkRTID0gInhtbHJwYy1jIHhtbHJwYy1jLW5hdGl2ZSBpbnRsdG9vbC1uYXRpdmUgXAogICAgICAgICBqc29uLWMgbGlidGFyIGxpYm5ld3QgbGlicHJveHkgcnBtIFwKLSAgICAgICAgYXVnZWFzIHNhdHlyIHN5c3RlbWQgZ3RrKzMgXAorICAgICAgICBhdWdlYXMgc2F0eXIgc3lzdGVtZCBcCiAiCiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgpAQCAtMjYsNiArMjYsOSBAQAogCiBpbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUgcGtnY29uZmlnCiAKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywneDExJywnZ3RrJywnJyxkKX0iCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLS13aXRoLWd0aywgLS13aXRob3V0LWd0aywgZ3RrKzMsIgorCiBSREVQRU5EU19weXRob24zLWxpYnJlcG9ydCArPSAiJHtQTn0iCiAKIGRvX3BhdGNoW3ByZWZ1bmNzXSArPSAiZG9fZ2VuX3ZlcnNpb24iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJ3bWYvbGlid21mXzAuMi44LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJ3bWYvbGlid21mXzAuMi44LjQuYmIKaW5kZXggOGFkNTQ1Ny4uMmMzMWEyMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlid21mL2xpYndtZl8wLjIuOC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYndtZi9saWJ3bWZfMC4yLjguNC5iYgpAQCAtMTIsNyArMTIsOSBAQAogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3d2d2FyZS8ke0JQTn0vJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5nejtuYW1lPXRhcmJhbGwgXAogICAgICAgICAgICBmaWxlOi8vbGlid21mLTAuMi44LjQtaW50b3ZlcmZsb3cucGF0Y2ggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW1sLXdpZGdldC9ndGttYXRodmlld18wLjguMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21tbC13aWRnZXQvZ3RrbWF0aHZpZXdfMC44LjAuYmIKaW5kZXggMTU5MzVjOC4uZGY4MmJlZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW1sLXdpZGdldC9ndGttYXRodmlld18wLjguMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tbWwtd2lkZ2V0L2d0a21hdGh2aWV3XzAuOC4wLmJiCkBAIC0xNyw3ICsxNyw5IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBkb19jb25maWd1cmVfYXBwZW5kKCkgewogICAgICMgYXZvaWQgaG9zdCBwb2x1dGlvbiBpbmYgcGtnLWNvbmZpZyBmaWxlcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvTWFudWFsbHlfbW1hcF9oZWFwX21lbW9yeV9lc3IxNy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzL01hbnVhbGx5X21tYXBfaGVhcF9tZW1vcnlfZXNyMTcucGF0Y2gKaW5kZXggMTVhZDAzZi4uODNmNDU0MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvTWFudWFsbHlfbW1hcF9oZWFwX21lbW9yeV9lc3IxNy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9NYW51YWxseV9tbWFwX2hlYXBfbWVtb3J5X2VzcjE3LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBhMGMwZjMyMjk5NDE5MzU5YjQ0YWMwZjg4MGMxZWE5MDczYWU1MWUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxZDFmYTk1YzhmZjc2OTdlNDYzNDMzODVhNzlhOGY3ZTVjNTE0YTg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogWmhlbmcgWHUgPHpoZW5nLnh1QGxpbmFyby5vcmc+CiBEYXRlOiBGcmksIDIgU2VwIDIwMTYgMTc6NDA6MDUgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gQnVnIDExNDMwMjIgLSBNYW51YWxseSBtbWFwIG9uIGFybTY0IHRvIGVuc3VyZSBoaWdoIDE3IGJpdHMKQEAgLTE2LDExICsxNiwxMSBAQAogIDEgZmlsZSBjaGFuZ2VkLCA3MSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvanMvc3JjL2djL01lbW9yeS5jcHAgYi9qcy9zcmMvZ2MvTWVtb3J5LmNwcAotaW5kZXggNWIzODZhMi4uMzgxMDFjZiAxMDA2NDQKK2luZGV4IGU1YWQwMTguLjQxNDlhZGYgMTAwNjQ0CiAtLS0gYS9qcy9zcmMvZ2MvTWVtb3J5LmNwcAogKysrIGIvanMvc3JjL2djL01lbW9yeS5jcHAKLUBAIC0zMDYsNiArMzA2LDc1IEBAIEluaXRNZW1vcnlTdWJzeXN0ZW0oKQotICAgICAgICAgTU9aX0NSQVNIKCk7CitAQCAtMzA5LDYgKzMwOSw3NSBAQCBJbml0TWVtb3J5U3Vic3lzdGVtKCkKKyAjZW5kaWYKICB9CiAgCiArc3RhdGljIGlubGluZSB2b2lkICoKQEAgLTk1LDcgKzk1LDcgQEAKICB2b2lkICoKICBNYXBBbGlnbmVkUGFnZXMoc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQpCiAgewotQEAgLTMxOSwxMiArMzg4LDEyIEBAIE1hcEFsaWduZWRQYWdlcyhzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWdubWVudCkKK0BAIC0zMjIsMTIgKzM5MSwxMiBAQCBNYXBBbGlnbmVkUGFnZXMoc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQpCiAgCiAgICAgIC8qIFNwZWNpYWwgY2FzZTogSWYgd2Ugd2FudCBwYWdlIGFsaWdubWVudCwgbm8gZnVydGhlciB3b3JrIGlzIG5lZWRlZC4gKi8KICAgICAgaWYgKGFsaWdubWVudCA9PSBQYWdlU2l6ZSkgewpAQCAtMTEwLDYgKzExMCwzIEBACiAgICAgIGlmIChyZWdpb24gPT0gTUFQX0ZBSUxFRCkKICAgICAgICAgIHJldHVybiBOVUxMOwogIAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tcmFhL21yYWFfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbXJhYS9tcmFhX2dpdC5iYgppbmRleCA2MTYwNDhmLi45MzBjMDQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tcmFhL21yYWFfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21yYWEvbXJhYV9naXQuYmIKQEAgLTMsMTIgKzMsMTMgQEAKIFNFQ1RJT04gPSAibGlicyIKIAogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NjQ5M2Q1NGU2NWJmYzEyYzc5ODNmZjJlODg0ZjM3ZiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRiOTJhM2I0OTdkNzk0MzA0MmE2ZGI0MGMwODhjM2YyIgogCi1TUkNSRVYgPSAiOGRkYmNkZTg0ZTJkMTQ2YmMwZjllMzg1MDRkNmM4OWMxNDI5MTQ4MCIKLVBWID0gIjEuNy4wLWdpdCR7U1JDUFZ9IgorU1JDUkVWID0gImZiYjdkOTIzMjA2N2VhYzNmNDUwOGEzN2E4ZjdlYTBjNGZjZWJhY2IiCitQViA9ICIxLjkuMC1naXQke1NSQ1BWfSIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ludGVsLWlvdC1kZXZraXQvJHtCUE59LmdpdDtwcm90b2NvbD1odHRwIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ludGVsLWlvdC1kZXZraXQvJHtCUE59LmdpdDtwcm90b2NvbD1odHRwIFwKKyAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCkBAIC0zMSw3ICszMiwxMyBAQAogIyBvdmVycmlkZSB0aGlzIGluIGxvY2FsLmNvbmYgdG8gZ2V0IG5lZWRlZCBiaW5kaW5ncy4KICMgQklORElOR1NfcG4tbXJhYT0icHl0aG9uIgogIyB3aWxsIHJlc3VsdCBpbiBvbmx5IHRoZSBweXRob24gYmluZGluZ3MgYmVpbmcgYnVpbHQvcGFja2FnZWQuCi1CSU5ESU5HUyA/Pz0gInB5dGhvbiAke0AgJ25vZGVqcycgaWYgb2UudHlwZXMuYm9vbGVhbihkLmdldFZhcignSEFWRV9OT0RFSlMnKSBvciAnMCcpIGVsc2UgJycgfSIKKyMgTm90ZTogJ25vZGVqcycgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCBiZWNhdXNlIHRoZSBiaW5kaW5ncworIyBnZW5lcmF0aW9uIGN1cnJlbnRseSBmYWlscyB3aXRoIG5vZGVqcyAoPnY3LngpLgorQklORElOR1MgPz89ICJweXRob24iCisKKyMgbm9kZWpzIGlzbid0IGF2YWlsYWJsZSBmb3IgYXJtdjQvYXJtdjUgYXJjaGl0ZWN0dXJlcworQklORElOR1NfYXJtdjQgPz89ICJweXRob24iCitCSU5ESU5HU19hcm12NSA/Pz0gInB5dGhvbiIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFUycsICdub2RlLSR7UE59JywgJ25vZGVqcycsICcnLCBkKX0gXAogICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFUycsICcke1BZVEhPTl9QTn0tJHtQTn0nLCAncHl0aG9uJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW53c21hbi9vcGVud3NtYW5fMi42LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVud3NtYW4vb3BlbndzbWFuXzIuNi4zLmJiCmluZGV4IGM0Nzc4Y2EuLmY2MThmMDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW53c21hbi9vcGVud3NtYW5fMi42LjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbndzbWFuL29wZW53c21hbl8yLjYuMy5iYgpAQCAtMTIsNiArMTIsOSBAQAogCiBERVBFTkRTID0gImN1cmwgbGlieG1sMiBvcGVuc3NsIGxpYnBhbSIKIAoraW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwYW0iCisKIFNSQ1JFViA9ICJmZWI3ZWM5YjAwNGZjYWVhMGRiZTY1Y2U4YTFhNzljYzI5ZGQ5OTRjIgogUFYgPSAiMi42LjMiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3A3emlwL2ZpbGVzLzAwMDEtRml4LW5hcnJvd2luZy1lcnJvcnMtV2MtMTEtbmFycm93aW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcDd6aXAvZmlsZXMvMDAwMS1GaXgtbmFycm93aW5nLWVycm9ycy1XYy0xMS1uYXJyb3dpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWUyNzUxNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3A3emlwL2ZpbGVzLzAwMDEtRml4LW5hcnJvd2luZy1lcnJvcnMtV2MtMTEtbmFycm93aW5nLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gYjZiMTc4MmFmNGFhN2Y5MDg0ZDMyZTQxNDQ3MzhkYzI1MzVjOGQ2ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIzIEFwciAyMDE4IDIzOjA3OjIxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBuYXJyb3dpbmcgZXJyb3JzIC1XYysrMTEtbmFycm93aW5nCisKK0NsYW5nIDYueCBmaW5kcyB0aGVzZSBlcnJvcnMKKworICAgIC4uLy4uLy4uLy4uL0NQUC9XaW5kb3dzL0Vycm9yTXNnLmNwcDoyNDoxMDogZXJyb3I6IGNhc2UgdmFsdWUgZXZhbHVhdGVzIHRvIC0yMTQ3MDI0ODA5LCB3aGljaCBjYW5ub3QgYmUgbmFycm93ZWQgdG8gdHlwZSAnRFdPUkQnIChha2EgJ3Vuc2lnbmVkIGludCcpIFstV2MrKzExLW5hcnJvd2luZ10KKyAgICAgICAgY2FzZSBFX0lOVkFMSURBUkcgICAgICAgICAgOiB0eHQgPSAiRV9JTlZBTElEQVJHIjsgYnJlYWsgOworICAgICAgICAgICAgIF4KKworSFJFU1VMVCBjYXVzZXMgdGhlIG1hY3JvIHRvIGJlIHBhcnNlZCBhcyBhIHNpZ25lZCBsb25nLCBzbyB3ZSBuZWVkIHRvIGZvcmNlIGl0Cit0byBiZSBjaGVja2VkIGFzIGFuIHVuc2lnbmVkIGxvbmcgaW5zdGVhZC4KKworYWxzbyByZXBvcnRlZCBoZXJlIGh0dHBzOi8vYnVncy5mcmVlYnNkLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjI0OTMwCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgQ1BQL1dpbmRvd3MvRXJyb3JNc2cuY3BwIHwgMTQgKysrKysrKy0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ1BQL1dpbmRvd3MvRXJyb3JNc2cuY3BwIGIvQ1BQL1dpbmRvd3MvRXJyb3JNc2cuY3BwCitpbmRleCA5OTY4NGFlLi43OGE2NGJhIDEwMDY0NAorLS0tIGEvQ1BQL1dpbmRvd3MvRXJyb3JNc2cuY3BwCisrKysgYi9DUFAvV2luZG93cy9FcnJvck1zZy5jcHAKK0BAIC0xNSwxMyArMTUsMTMgQEAgVVN0cmluZyBNeUZvcm1hdE1lc3NhZ2UoRFdPUkQgZXJyb3JDb2RlKQorIAorICAgc3dpdGNoKGVycm9yQ29kZSkgeworICAgICBjYXNlIEVSUk9SX05PX01PUkVfRklMRVMgICA6IHR4dCA9ICJObyBtb3JlIGZpbGVzIjsgYnJlYWsgOworLSAgICBjYXNlIEVfTk9USU1QTCAgICAgICAgICAgICA6IHR4dCA9ICJFX05PVElNUEwiOyBicmVhayA7CistICAgIGNhc2UgRV9OT0lOVEVSRkFDRSAgICAgICAgIDogdHh0ID0gIkVfTk9JTlRFUkZBQ0UiOyBicmVhayA7CistICAgIGNhc2UgRV9BQk9SVCAgICAgICAgICAgICAgIDogdHh0ID0gIkVfQUJPUlQiOyBicmVhayA7CistICAgIGNhc2UgRV9GQUlMICAgICAgICAgICAgICAgIDogdHh0ID0gIkVfRkFJTCI7IGJyZWFrIDsKKy0gICAgY2FzZSBTVEdfRV9JTlZBTElERlVOQ1RJT04gOiB0eHQgPSAiU1RHX0VfSU5WQUxJREZVTkNUSU9OIjsgYnJlYWsgOworLSAgICBjYXNlIEVfT1VUT0ZNRU1PUlkgICAgICAgICA6IHR4dCA9ICJFX09VVE9GTUVNT1JZIjsgYnJlYWsgOworLSAgICBjYXNlIEVfSU5WQUxJREFSRyAgICAgICAgICA6IHR4dCA9ICJFX0lOVkFMSURBUkciOyBicmVhayA7CisrICAgIGNhc2UgKERXT1JEKSBFX05PVElNUEwgICAgICAgICAgICAgOiB0eHQgPSAiRV9OT1RJTVBMIjsgYnJlYWsgOworKyAgICBjYXNlIChEV09SRCkgRV9OT0lOVEVSRkFDRSAgICAgICAgIDogdHh0ID0gIkVfTk9JTlRFUkZBQ0UiOyBicmVhayA7CisrICAgIGNhc2UgKERXT1JEKSBFX0FCT1JUICAgICAgICAgICAgICAgOiB0eHQgPSAiRV9BQk9SVCI7IGJyZWFrIDsKKysgICAgY2FzZSAoRFdPUkQpIEVfRkFJTCAgICAgICAgICAgICAgICA6IHR4dCA9ICJFX0ZBSUwiOyBicmVhayA7CisrICAgIGNhc2UgKERXT1JEKSBTVEdfRV9JTlZBTElERlVOQ1RJT04gOiB0eHQgPSAiU1RHX0VfSU5WQUxJREZVTkNUSU9OIjsgYnJlYWsgOworKyAgICBjYXNlIChEV09SRCkgRV9PVVRPRk1FTU9SWSAgICAgICAgIDogdHh0ID0gIkVfT1VUT0ZNRU1PUlkiOyBicmVhayA7CisrICAgIGNhc2UgKERXT1JEKSBFX0lOVkFMSURBUkcgICAgICAgICAgOiB0eHQgPSAiRV9JTlZBTElEQVJHIjsgYnJlYWsgOworICAgICBjYXNlIEVSUk9SX0RJUkVDVE9SWSAgICAgICAgICA6IHR4dCA9ICJFcnJvciBEaXJlY3RvcnkiOyBicmVhayA7CisgICAgIGRlZmF1bHQ6CisgICAgICAgdHh0ID0gc3RyZXJyb3IoZXJyb3JDb2RlKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3A3emlwL2ZpbGVzL0NWRS0yMDE3LTE3OTY5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcDd6aXAvZmlsZXMvQ1ZFLTIwMTctMTc5NjkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc3ZDE0NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3A3emlwL2ZpbGVzL0NWRS0yMDE3LTE3OTY5LnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK3A3emlwOiBGaXggQ1ZFLTIwMTctMTc5NjkKKworW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTg4ODI5NworCitIZWFwLWJhc2VkIGJ1ZmZlciBvdmVyZmxvdyBpbiA3emlwCisKK0NvbXByZXNzL1Nocmlua0RlY29kZXIuY3BwOiBIZWFwLWJhc2VkIGJ1ZmZlciBvdmVyZmxvdworaW4gdGhlIE5Db21wcmVzczo6TlNocmluazo6Q0RlY29kZXI6OkNvZGVSZWFsIG1ldGhvZAoraW4gNy1aaXAgYmVmb3JlIDE4LjAwIGFuZCBwN3ppcCBhbGxvd3MgcmVtb3RlIGF0dGFja2VycwordG8gY2F1c2UgYSBkZW5pYWwgb2Ygc2VydmljZSAob3V0LW9mLWJvdW5kcyB3cml0ZSkKK29yIHBvdGVudGlhbGx5IGV4ZWN1dGUgYXJiaXRyYXJ5IGNvZGUgdmlhIGEgY3JhZnRlZCBaSVAgYXJjaGl2ZS4gCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc291cmNlZm9yZ2UubmV0L3AvcDd6aXAvYnVncy9fZGlzY3Vzcy90aHJlYWQvMDkyMGYzNjkvODMxNi9hdHRhY2htZW50L0NWRS0yMDE3LTE3OTY5LnBhdGNoXQorQ1ZFOiBDVkUtMjAxNy0xNzk2OQorU2lnbmVkLW9mZi1ieTogUmFkb3ZhbiBTY2FzbnkgPHJhZG92YW4uc2Nhc255QHNpZW1lbnMuY29tPgorCistLS0gYS9DUFAvN3ppcC9Db21wcmVzcy9TaHJpbmtEZWNvZGVyLmNwcAorKysrIGIvQ1BQLzd6aXAvQ29tcHJlc3MvU2hyaW5rRGVjb2Rlci5jcHAKK0BAIC0xMjEsNyArMTIxLDEyIEBAIEhSRVNVTFQgQ0RlY29kZXI6OkNvZGVSZWFsKElTZXF1ZW50aWFsSW5TdHJlYW0gKmluU3RyZWFtLCBJU2VxdWVudGlhbE91dFN0cmVhbSAqCisgICAgIHsKKyAgICAgICBfc3RhY2tbaSsrXSA9IF9zdWZmaXhlc1tjdXJdOworICAgICAgIGN1ciA9IF9wYXJlbnRzW2N1cl07CisrCSAgaWYgKGN1ciA+PSBrTnVtSXRlbXMgfHwgaSA+PSBrTnVtSXRlbXMpCisrCSAgCWJyZWFrOworICAgICB9CisrCQorKwlpZiAoY3VyID49IGtOdW1JdGVtcyB8fCBpID49IGtOdW1JdGVtcykKKysJCWJyZWFrOworICAgICAKKyAgICAgX3N0YWNrW2krK10gPSAoQnl0ZSljdXI7CisgICAgIGxhc3RDaGFyMiA9IChCeXRlKWN1cjsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3A3emlwL3A3emlwXzE2LjAyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcDd6aXAvcDd6aXBfMTYuMDIuYmIKaW5kZXggNjdmZmJjNi4uZDk4NmRhOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcDd6aXAvcDd6aXBfMTYuMDIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcDd6aXAvcDd6aXBfMTYuMDIuYmIKQEAgLTYsNyArNiwxMCBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vRE9DL0xpY2Vuc2UudHh0O21kNT04Nzk1OThlZGYxZjU0ZGRkYjY5MzBkNzU4MTM1N2Y4YiIKIAogU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9wN3ppcC9wN3ppcC8ke1BWfS9wN3ppcF8ke1BWfV9zcmNfYWxsLnRhci5iejIgXAotICAgICAgICAgIGZpbGU6Ly9kb19ub3Rfb3ZlcnJpZGVfY29tcGlsZXJfYW5kX2RvX25vdF9zdHJpcC5wYXRjaCIKKyAgICAgICAgICAgZmlsZTovL2RvX25vdF9vdmVycmlkZV9jb21waWxlcl9hbmRfZG9fbm90X3N0cmlwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE3OTY5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LW5hcnJvd2luZy1lcnJvcnMtV2MtMTEtbmFycm93aW5nLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiYTAxMjhkNjYxY2ZlN2NjOGMxMjFlNzM1MTljNTRmYmYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWViMjBhYzBlMjk0NGY2Y2I5YzJkNTFkZDZjNDUxODk0MWMxODUzNDdkNDA4OWVhODkwODdmZmRkNmUyMzQxZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9wYW0tc3NoLWFnZW50LWF1dGhfMC4xMC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL3BhbS1zc2gtYWdlbnQtYXV0aF8wLjEwLjMuYmIKaW5kZXggZmY4ODUzMy4uMTYzOGM0MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL3BhbS1zc2gtYWdlbnQtYXV0aF8wLjEwLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL3BhbS1zc2gtYWdlbnQtYXV0aF8wLjEwLjMuYmIKQEAgLTEzLDYgKzEzLDkgQEAKIAogREVQRU5EUyArPSAibGlicGFtIG9wZW5zc2wiCiAKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAicGFtIgorCiAjIFRoaXMgZ2V0cyB1cyBzc2gtYWdlbnQsIHdoaWNoIHdlIGFyZSBhbG1vc3QgY2VydGFpbiB0byB3YW50LgogIwogUkRFUEVORFNfJHtQTn0gKz0gIm9wZW5zc2gtbWlzYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BvbGtpdC9maWxlcy9ndGstZG9jLWNoZWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L2ZpbGVzL2d0ay1kb2MtY2hlY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiNmFkNzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L2ZpbGVzL2d0ay1kb2MtY2hlY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0tLS0gcG9sa2l0LWdub21lLTAuMTA1L2NvbmZpZ3VyZS5hYy5vcmcJMjAxNS0wNS0wNCAyMjozMzowMy45MjU5Nzc5NTMgLTA3MDAKLSsrKyBwb2xraXQtZ25vbWUtMC4xMDUvY29uZmlndXJlLmFjCTIwMTUtMDUtMDQgMjI6MzM6MTYuODYyMjg4MDMwIC0wNzAwCi1AQCAtMTIwLDYgKzEyMCw5IEBACi0gIyBDaGVjayBmb3IgcmVxdWlyZWQgcGFja2FnZXMKLSAjICoqKioqKioqKioqKioqKioqKioqKioqKioqKgotIAotKyMgY2hlY2sgZm9yIGd0ay1kb2MKLStHVEtfRE9DX0NIRUNLKFsxLjE0XSxbLS1mbGF2b3VyIG5vLXRtcGxdKQotKwotIFBPTEtJVF9BR0VOVF9SRVFVSVJFRD0wLjk3Ci0gUE9MS0lUX0dPQkpFQ1RfUkVRVUlSRUQ9MC45NwotIEdUS19SRVFVSVJFRD0zLjAuMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L3BvbGtpdC1nbm9tZV8wLjEwNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BvbGtpdC9wb2xraXQtZ25vbWVfMC4xMDUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlOTk3MzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L3BvbGtpdC1nbm9tZV8wLjEwNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiR05PTUUgQXV0aGVudGljYXRpb24gQWdlbnQgZm9yIFBvbGljeUtpdCIKLURFU0NSSVBUSU9OID0gIlBvbGljeUtpdC1nbm9tZSBwcm92aWRlcyBhbiBBdXRoZW50aWNhdGlvbiBBZ2VudCBmb3IgUG9saWN5S2l0IHRoYXQgaW50ZWdyYXRlcyB3ZWxsIHdpdGggdGhlIEdOT01FIGRlc2t0b3AgZW52aXJvbm1lbnQiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnBhY2thZ2VraXQub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi1ERVBFTkRTID0gInBvbGtpdCBkYnVzLWdsaWIgZ2NvbmYgZ3RrKyBpbnRsdG9vbC1uYXRpdmUgZ25vbWUtY29tbW9uIgotTElDRU5TRSA9ICJMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzQ1NzlmYWIxNzNlNGM1ZTEyYWFjMGNkODNlZTk4ZWMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL21haW4uYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1hYmExNDVkMTgwMmYyMzI5YmE1NjFlM2U0OGVjYjc5NSIKLQotU1JDX1VSSSA9ICJodHRwczovL2Rvd25sb2FkLmdub21lLm9yZy9zb3VyY2VzL3BvbGtpdC1nbm9tZS8ke1BWfS9wb2xraXQtZ25vbWUtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2d0ay1kb2MtY2hlY2sucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjUwZWNhZDM3YzgzNDJmYjRhNTJmNTkwZGI3NTMwNjIxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE3ODQ0OTQ5NjNiOGJmOWEwMGVlZGM2Y2QzYTI4NjhmYjEyM2I4YTVlNTE2ZTY2YzVlZGE0OGRmMTdhYjkzNjkiCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS1kaXNhYmxlLXN0YXRpYyBcCi0iCi0KLURFUEVORFMgKz0gImd0ayszIgotCi1pbmhlcml0IGF1dG90b29scyBndGstZG9jIHBrZ2NvbmZpZwotCi1GSUxFU18ke1BOfSArPSAiICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9Qb2xpY3lLaXQgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmFycGQvcmFycGRfc3M5ODExMDcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yYXJwZC9yYXJwZF9zczk4MTEwNy5iYgppbmRleCA0MDI1YjgwLi43YzlmMmRmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yYXJwZC9yYXJwZF9zczk4MTEwNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yYXJwZC9yYXJwZF9zczk4MTEwNy5iYgpAQCAtMzgsMTMgKzM4LDExIEBACiAgICAgaW5zdGFsbCAtbSA2NDQgcmFycGQuOCAke0R9JHttYW5kaXJ9L21hbjgvcmFycGQuOAogICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vZXRoZXJzLnNhbXBsZSAke0R9JHtzeXNjb25mZGlyfS9ldGhlcnMKIAotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9yYXJwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgIGZpCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3JhcnBkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCiB9CiAKLWluaGVyaXQgJHtAYmIudXRpbHMuZmlsdGVyKCdWSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyJywgJ3N5c3RlbWQnLCBkKX0KK2luaGVyaXQgc3lzdGVtZAogCiBTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgogU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJhcnBkLnNlcnZpY2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvMDAwMS1JbmNsdWRlLXN5cy10aW1lLWgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvMDAwMS1JbmNsdWRlLXN5cy10aW1lLWgucGF0Y2gKaW5kZXggMjNjMGYyNS4uY2E4OGRkMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nLzAwMDEtSW5jbHVkZS1zeXMtdGltZS1oLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZy8wMDAxLUluY2x1ZGUtc3lzLXRpbWUtaC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gM2MzYzIxZjQ3MzVlYjIxNTIwNjI3M2JjNzE0YzU3Yzk2OTkyNmQzZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOTczOTA5NWRlNmFlNWY4NDQzNTQ3NTZhZTk2OGY1Zjg4NjRlYjNlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE1pbmcgTGl1IDxwZXRlci54LmxpdUBleHRlcm5hbC5hdGxhc2NvcGNvLmNvbT4KIERhdGU6IFN1biwgMjYgRmViIDIwMTcgMTQ6MTA6MjEgKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gSW5jbHVkZSBzeXMvdGltZS5oCkBAIC04LDYgKzgsNyBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIGxpYmMgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxwZXRlci54LmxpdUBleHRlcm5hbC5hdGxhc2NvcGNvLmNvbT4KKwogLS0tCiAgdGVzdHMvbXNsZWVwLmMgfCA0IC0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNCBkZWxldGlvbnMoLSkKQEAgLTI4LDYgKzI5LDMgQEAKICAKICBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogIHsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nLzAwMDEtVW5kZWZpbmUtR0xPQl9CUkFDRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZy8wMDAxLVVuZGVmaW5lLUdMT0JfQlJBQ0UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5MDNiYjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nLzAwMDEtVW5kZWZpbmUtR0xPQl9CUkFDRS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gNjc0NmUzYTk2MTVkMTU2NmJmMjI4ZTkwMTJkMDg0MWIxNTE3ODgxMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pbmcgTGl1IDxsaXUubWluZzUwQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMjYgRmViIDIwMTcgMTM6NTA6MzMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gVW5kZWZpbmUgR0xPQl9CUkFDRQotCi1HTE9CX0JSQUNFIGlzIG5vdCBkZWZpbmVkIGluIHBvc2l4IGFuZCB0aHVzIG5vdCBpbXBsZW1lbnRlZCBpbiBtdXNsIGxpYmMuCi0KLUZpeGVkIGJ5IGRlZmluaW5nIGl0IHRvIDAgaWYgaXQgaXMgdW5kZWZpbmVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgbGliYyBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWluZyBMaXUgPHBldGVyLngubGl1QGV4dGVybmFsLmF0bGFzY29wY28uY29tPgotLS0tCi0gcGx1Z2lucy9pbWZpbGUvaW1maWxlLmMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvcGx1Z2lucy9pbWZpbGUvaW1maWxlLmMgYi9wbHVnaW5zL2ltZmlsZS9pbWZpbGUuYwotaW5kZXggZDIwNDcxZi4uZjlhZmY4MSAxMDA2NDQKLS0tLSBhL3BsdWdpbnMvaW1maWxlL2ltZmlsZS5jCi0rKysgYi9wbHVnaW5zL2ltZmlsZS9pbWZpbGUuYwotQEAgLTg1LDYgKzg1LDExIEBAIHN0YXRpYyBpbnQgYkxlZ2FjeUNuZk1vZEdsb2JhbHNQZXJtaXR0ZWQ7LyogYXJlIGxlZ2FjeSBtb2R1bGUtZ2xvYmFsIGNvbmZpZyBwYXJhCi0gCi0gI2RlZmluZSBBRERfTUVUQURBVEFfVU5TUEVDSUZJRUQgLTEKLSAKLSsvKiBmaXhlcyBidWlsZCB3aXRoIG11c2wgbGliYyAqLwotKyNpZm5kZWYgR0xPQl9CUkFDRQotKyNkZWZpbmUgR0xPQl9CUkFDRSAwCi0rI2VuZGlmCi0rCi0gLyogdGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCBpbiBwdXJlIHBvbGxpbmcgbW9kZSBhcyB3ZWxsIG9uZSBvZiB0aGUgc3VwcG9ydAotICAqIHN0cnVjdHVyZXMgZm9yIGlub3RpZnkuCi0gICovCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZy9yc3lzbG9nLWZpeC1wdGVzdC1ub3QtZmluaXNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nL3JzeXNsb2ctZml4LXB0ZXN0LW5vdC1maW5pc2gucGF0Y2gKaW5kZXggYmRjYjZlMi4uYTI0OGY3NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nL3JzeXNsb2ctZml4LXB0ZXN0LW5vdC1maW5pc2gucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nL3JzeXNsb2ctZml4LXB0ZXN0LW5vdC1maW5pc2gucGF0Y2gKQEAgLTEsMyArMSw4IEBACitGcm9tIDA3YWQyYTE5MDUwODliOTEyNDYyMzMyNGE5OTY5ZTQ1MjIzMTcxMTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAxMiBTZXAgMjAxNCAwMzo0MToxMSAtMDQwMAorU3ViamVjdDogW1BBVENIXSByc3lzbG9nOiB1cGRhdGUgY29uZmlndXJlIHRvIGZpeCBwdGVzdAorCiAkTWF4TWVzc2FnZVNpemUgZG9lc24ndCB3b3JrIGlmIGJlZm9yZSAkSW5jbHVkZUNvbmZpZyBkaWFnLWNvbW1vbi5jb25mLCB0aGVuCiB0ZXN0IGNhc2VzIGZhbGwgaW50byBpbmZpbml0ZSBsb29wIHdpdGggZXJyb3IgbWVzc2FnZToKIApAQCAtNiwxMyArMTEsMjQgQEAKIAogVXBkYXRlIGNvbmZpZ3VyZSB0byBmaXggaXQuCiAKLVVwc3RyZWFtLVN0YXR1czogcGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLUthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKIC0tLQotZGlmZiAtTnJ1IHJzeXNsb2ctNy40LjQvdGVzdHMvdGVzdHN1aXRlcy9jb21wbGV4MS5jb25mIHJzeXNsb2ctNy40LjQubmV3L3Rlc3RzL3Rlc3RzdWl0ZXMvY29tcGxleDEuY29uZgotLS0tIHJzeXNsb2ctNy40LjQvdGVzdHMvdGVzdHN1aXRlcy9jb21wbGV4MS5jb25mCTIwMTMtMDgtMzEgMDA6MzA6NDEuMDAwMDAwMDAwICswODAwCi0rKysgcnN5c2xvZy03LjQuNC5uZXcvdGVzdHMvdGVzdHN1aXRlcy9jb21wbGV4MS5jb25mCTIwMTMtMTItMTggMTQ6Mjg6MTAuNjQ0MDA0MTg0ICswODAwCisgdGVzdHMvdGVzdHN1aXRlcy9jb21wbGV4MS5jb25mICAgICAgICAgICAgIHwgMiArLQorIHRlc3RzL3Rlc3RzdWl0ZXMvZ3ppcHdyX2xhcmdlLmNvbmYgICAgICAgICB8IDIgKy0KKyB0ZXN0cy90ZXN0c3VpdGVzL2d6aXB3cl9sYXJnZV9keW5maWxlLmNvbmYgfCAyICstCisgdGVzdHMvdGVzdHN1aXRlcy9pbXB0Y3BfY29ubmRyb3AuY29uZiAgICAgIHwgMiArLQorIHRlc3RzL3Rlc3RzdWl0ZXMvaW1wdGNwX2xhcmdlLmNvbmYgICAgICAgICB8IDIgKy0KKyB0ZXN0cy90ZXN0c3VpdGVzL2ltdGNwX2Nvbm5kcm9wLmNvbmYgICAgICAgfCAyICstCisgdGVzdHMvdGVzdHN1aXRlcy93cl9sYXJnZS5jb25mICAgICAgICAgICAgIHwgMiArLQorIDcgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdHN1aXRlcy9jb21wbGV4MS5jb25mIGIvdGVzdHMvdGVzdHN1aXRlcy9jb21wbGV4MS5jb25mCitpbmRleCA5YjZhOWYzLi5lMDBjYWE0IDEwMDY0NAorLS0tIGEvdGVzdHMvdGVzdHN1aXRlcy9jb21wbGV4MS5jb25mCisrKysgYi90ZXN0cy90ZXN0c3VpdGVzL2NvbXBsZXgxLmNvbmYKIEBAIC0xLDcgKzEsNyBAQAogICMgY29tcGxleCB0ZXN0IGNhc2Ugd2l0aCBtdWx0aXBsZSBhY3Rpb25zIGluIGd6aXAgbW9kZQogICMgcmdlcmhhcmRzLCAyMDA5LTA1LTIyCkBAIC0yMiw5ICszOCwxMCBAQAogIAogICRNYWluTXNnUXVldWVUaW1lb3V0RW5xdWV1ZSA1MDAwCiAgCi1kaWZmIC1OcnUgcnN5c2xvZy03LjQuNC90ZXN0cy90ZXN0c3VpdGVzL2d6aXB3cl9sYXJnZS5jb25mIHJzeXNsb2ctNy40LjQubmV3L3Rlc3RzL3Rlc3RzdWl0ZXMvZ3ppcHdyX2xhcmdlLmNvbmYKLS0tLSByc3lzbG9nLTcuNC40L3Rlc3RzL3Rlc3RzdWl0ZXMvZ3ppcHdyX2xhcmdlLmNvbmYJMjAxMi0wNC0wNCAxNDoyOTo1NS4wMDAwMDAwMDAgKzA4MDAKLSsrKyByc3lzbG9nLTcuNC40Lm5ldy90ZXN0cy90ZXN0c3VpdGVzL2d6aXB3cl9sYXJnZS5jb25mCTIwMTMtMTItMTggMTQ6Mjg6MTAuNjQ1MDA0MTg2ICswODAwCitkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdHN1aXRlcy9nemlwd3JfbGFyZ2UuY29uZiBiL3Rlc3RzL3Rlc3RzdWl0ZXMvZ3ppcHdyX2xhcmdlLmNvbmYKK2luZGV4IDU0YWQzYmIuLmU4MjQ3YTkgMTAwNjQ0CistLS0gYS90ZXN0cy90ZXN0c3VpdGVzL2d6aXB3cl9sYXJnZS5jb25mCisrKysgYi90ZXN0cy90ZXN0c3VpdGVzL2d6aXB3cl9sYXJnZS5jb25mCiBAQCAtMSw3ICsxLDcgQEAKICAjIHNpbXBsZSBhc3luYyB3cml0aW5nIHRlc3QKICAjIHJnZXJoYXJkcywgMjAxMC0wMy0wOQpAQCAtMzQsOSArNTEsMTAgQEAKICAKICAkTW9kTG9hZCAuLi9wbHVnaW5zL2ltdGNwLy5saWJzL2ltdGNwCiAgJE1haW5Nc2dRdWV1ZVRpbWVvdXRTaHV0ZG93biAxMDAwMAotZGlmZiAtTnJ1IHJzeXNsb2ctNy40LjQvdGVzdHMvdGVzdHN1aXRlcy9nemlwd3JfbGFyZ2VfZHluZmlsZS5jb25mIHJzeXNsb2ctNy40LjQubmV3L3Rlc3RzL3Rlc3RzdWl0ZXMvZ3ppcHdyX2xhcmdlX2R5bmZpbGUuY29uZgotLS0tIHJzeXNsb2ctNy40LjQvdGVzdHMvdGVzdHN1aXRlcy9nemlwd3JfbGFyZ2VfZHluZmlsZS5jb25mCTIwMTItMDQtMDQgMTQ6Mjk6NTUuMDAwMDAwMDAwICswODAwCi0rKysgcnN5c2xvZy03LjQuNC5uZXcvdGVzdHMvdGVzdHN1aXRlcy9nemlwd3JfbGFyZ2VfZHluZmlsZS5jb25mCTIwMTMtMTItMTggMTQ6Mjg6MTAuNjQ1MDA0MTg2ICswODAwCitkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdHN1aXRlcy9nemlwd3JfbGFyZ2VfZHluZmlsZS5jb25mIGIvdGVzdHMvdGVzdHN1aXRlcy9nemlwd3JfbGFyZ2VfZHluZmlsZS5jb25mCitpbmRleCAzYTFiMjU1Li4yOTdjYjcwIDEwMDY0NAorLS0tIGEvdGVzdHMvdGVzdHN1aXRlcy9nemlwd3JfbGFyZ2VfZHluZmlsZS5jb25mCisrKysgYi90ZXN0cy90ZXN0c3VpdGVzL2d6aXB3cl9sYXJnZV9keW5maWxlLmNvbmYKIEBAIC0xLDcgKzEsNyBAQAogICMgc2ltcGxlIGFzeW5jIHdyaXRpbmcgdGVzdAogICMgcmdlcmhhcmRzLCAyMDEwLTAzLTA5CkBAIC00Niw5ICs2NCwxMCBAQAogIAogICRNb2RMb2FkIC4uL3BsdWdpbnMvaW10Y3AvLmxpYnMvaW10Y3AKICAkTWFpbk1zZ1F1ZXVlVGltZW91dFNodXRkb3duIDEwMDAwCi1kaWZmIC1OcnUgcnN5c2xvZy03LjQuNC90ZXN0cy90ZXN0c3VpdGVzL2ltcHRjcF9jb25uZHJvcC5jb25mIHJzeXNsb2ctNy40LjQubmV3L3Rlc3RzL3Rlc3RzdWl0ZXMvaW1wdGNwX2Nvbm5kcm9wLmNvbmYKLS0tLSByc3lzbG9nLTcuNC40L3Rlc3RzL3Rlc3RzdWl0ZXMvaW1wdGNwX2Nvbm5kcm9wLmNvbmYJMjAxMy0wOC0zMSAwMDozMDo0MS4wMDAwMDAwMDAgKzA4MDAKLSsrKyByc3lzbG9nLTcuNC40Lm5ldy90ZXN0cy90ZXN0c3VpdGVzL2ltcHRjcF9jb25uZHJvcC5jb25mCTIwMTMtMTItMTggMTQ6Mjg6MTAuNjQ2MDA0MTg5ICswODAwCitkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdHN1aXRlcy9pbXB0Y3BfY29ubmRyb3AuY29uZiBiL3Rlc3RzL3Rlc3RzdWl0ZXMvaW1wdGNwX2Nvbm5kcm9wLmNvbmYKK2luZGV4IDc3YTVkNzkuLmQ5YTE0YTggMTAwNjQ0CistLS0gYS90ZXN0cy90ZXN0c3VpdGVzL2ltcHRjcF9jb25uZHJvcC5jb25mCisrKysgYi90ZXN0cy90ZXN0c3VpdGVzL2ltcHRjcF9jb25uZHJvcC5jb25mCiBAQCAtMSw3ICsxLDcgQEAKICAjIHNpbXBsZSBhc3luYyB3cml0aW5nIHRlc3QKICAjIHJnZXJoYXJkcywgMjAxMC0wMy0wOQpAQCAtNTgsOSArNzcsMTAgQEAKICAKICAkTW9kTG9hZCAuLi9wbHVnaW5zL2ltcHRjcC8ubGlicy9pbXB0Y3AKICAkTWFpbk1zZ1F1ZXVlVGltZW91dFNodXRkb3duIDEwMDAwCi1kaWZmIC1OcnUgcnN5c2xvZy03LjQuNC90ZXN0cy90ZXN0c3VpdGVzL2ltcHRjcF9sYXJnZS5jb25mIHJzeXNsb2ctNy40LjQubmV3L3Rlc3RzL3Rlc3RzdWl0ZXMvaW1wdGNwX2xhcmdlLmNvbmYKLS0tLSByc3lzbG9nLTcuNC40L3Rlc3RzL3Rlc3RzdWl0ZXMvaW1wdGNwX2xhcmdlLmNvbmYJMjAxMy0wOC0zMSAwMDozMDo0MS4wMDAwMDAwMDAgKzA4MDAKLSsrKyByc3lzbG9nLTcuNC40Lm5ldy90ZXN0cy90ZXN0c3VpdGVzL2ltcHRjcF9sYXJnZS5jb25mCTIwMTMtMTItMTggMTQ6Mjg6MTAuNjQ2MDA0MTg5ICswODAwCitkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdHN1aXRlcy9pbXB0Y3BfbGFyZ2UuY29uZiBiL3Rlc3RzL3Rlc3RzdWl0ZXMvaW1wdGNwX2xhcmdlLmNvbmYKK2luZGV4IDc3YTVkNzkuLmQ5YTE0YTggMTAwNjQ0CistLS0gYS90ZXN0cy90ZXN0c3VpdGVzL2ltcHRjcF9sYXJnZS5jb25mCisrKysgYi90ZXN0cy90ZXN0c3VpdGVzL2ltcHRjcF9sYXJnZS5jb25mCiBAQCAtMSw3ICsxLDcgQEAKICAjIHNpbXBsZSBhc3luYyB3cml0aW5nIHRlc3QKICAjIHJnZXJoYXJkcywgMjAxMC0wMy0wOQpAQCAtNzAsOSArOTAsMTAgQEAKICAKICAkTW9kTG9hZCAuLi9wbHVnaW5zL2ltcHRjcC8ubGlicy9pbXB0Y3AKICAkTWFpbk1zZ1F1ZXVlVGltZW91dFNodXRkb3duIDEwMDAwCi1kaWZmIC1OcnUgcnN5c2xvZy03LjQuNC90ZXN0cy90ZXN0c3VpdGVzL2ltdGNwX2Nvbm5kcm9wLmNvbmYgcnN5c2xvZy03LjQuNC5uZXcvdGVzdHMvdGVzdHN1aXRlcy9pbXRjcF9jb25uZHJvcC5jb25mCi0tLS0gcnN5c2xvZy03LjQuNC90ZXN0cy90ZXN0c3VpdGVzL2ltdGNwX2Nvbm5kcm9wLmNvbmYJMjAxMy0wNy0xOSAyMDo1OTowMy4wMDAwMDAwMDAgKzA4MDAKLSsrKyByc3lzbG9nLTcuNC40Lm5ldy90ZXN0cy90ZXN0c3VpdGVzL2ltdGNwX2Nvbm5kcm9wLmNvbmYJMjAxMy0xMi0xOCAxNDoyODoxMC42NDYwMDQxODkgKzA4MDAKK2RpZmYgLS1naXQgYS90ZXN0cy90ZXN0c3VpdGVzL2ltdGNwX2Nvbm5kcm9wLmNvbmYgYi90ZXN0cy90ZXN0c3VpdGVzL2ltdGNwX2Nvbm5kcm9wLmNvbmYKK2luZGV4IGRlNDFiYzQuLjc4NDRkYzcgMTAwNjQ0CistLS0gYS90ZXN0cy90ZXN0c3VpdGVzL2ltdGNwX2Nvbm5kcm9wLmNvbmYKKysrKyBiL3Rlc3RzL3Rlc3RzdWl0ZXMvaW10Y3BfY29ubmRyb3AuY29uZgogQEAgLTEsNyArMSw3IEBACiAgIyBzaW1wbGUgYXN5bmMgd3JpdGluZyB0ZXN0CiAgIyByZ2VyaGFyZHMsIDIwMTAtMDMtMDkKQEAgLTgyLDkgKzEwMywxMCBAQAogIAogICRNb2RMb2FkIC4uL3BsdWdpbnMvaW10Y3AvLmxpYnMvaW10Y3AKICAkTWFpbk1zZ1F1ZXVlVGltZW91dFNodXRkb3duIDEwMDAwCi1kaWZmIC1OcnUgcnN5c2xvZy03LjQuNC90ZXN0cy90ZXN0c3VpdGVzL3dyX2xhcmdlLmNvbmYgcnN5c2xvZy03LjQuNC5uZXcvdGVzdHMvdGVzdHN1aXRlcy93cl9sYXJnZS5jb25mCi0tLS0gcnN5c2xvZy03LjQuNC90ZXN0cy90ZXN0c3VpdGVzL3dyX2xhcmdlLmNvbmYJMjAxMi0wNC0wNCAxNDoyOTo1NS4wMDAwMDAwMDAgKzA4MDAKLSsrKyByc3lzbG9nLTcuNC40Lm5ldy90ZXN0cy90ZXN0c3VpdGVzL3dyX2xhcmdlLmNvbmYJMjAxMy0xMi0xOCAxNDoyODoxMC42NDcwMDQxOTAgKzA4MDAKK2RpZmYgLS1naXQgYS90ZXN0cy90ZXN0c3VpdGVzL3dyX2xhcmdlLmNvbmYgYi90ZXN0cy90ZXN0c3VpdGVzL3dyX2xhcmdlLmNvbmYKK2luZGV4IGI2NGYxMzIuLmIwYWUyNjQgMTAwNjQ0CistLS0gYS90ZXN0cy90ZXN0c3VpdGVzL3dyX2xhcmdlLmNvbmYKKysrKyBiL3Rlc3RzL3Rlc3RzdWl0ZXMvd3JfbGFyZ2UuY29uZgogQEAgLTEsNyArMSw3IEBACiAgIyBzaW1wbGUgYXN5bmMgd3JpdGluZyB0ZXN0CiAgIyByZ2VyaGFyZHMsIDIwMTAtMDMtMDkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZy91c2UtcGtnY29uZmlnLXRvLWNoZWNrLWxpYmdjcnlwdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZy91c2UtcGtnY29uZmlnLXRvLWNoZWNrLWxpYmdjcnlwdC5wYXRjaAppbmRleCA0NmVkZGQ2Li4xNjJkMjM5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvdXNlLXBrZ2NvbmZpZy10by1jaGVjay1saWJnY3J5cHQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nL3VzZS1wa2djb25maWctdG8tY2hlY2stbGliZ2NyeXB0LnBhdGNoCkBAIC0xLDUgKzEsNSBAQAotRnJvbSA1YzNiYTc5MTc3ZjdkMTc2M2RiMzNjNDM1OGFmMmFmNjBmZjIxNGI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPiAKK0Zyb20gZDA4NTIwMDZiZjNkMzA1ZTg5ODRiODViNDE5OTdkNDNkNDQ3NjkzNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KIERhdGU6IFdlZCwgMTggSnVuIDIwMTQgMTM6NDY6NTIgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gdXNlIHBrZ2NvbmZpZyB0byBjaGVjayBsaWJnY3J5cHQKIApAQCAtMTAsMTUgKzEwLDE2IEBACiAKIFNpZ25lZC1vZmYtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KIFNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBjb25maWd1cmUuYWMgfCAxNSArLS0tLS0tLS0tLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDE0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAwZjMxODY5Li5kMzVkYjQyIDEwMDY0NAoraW5kZXggNjIxNzhjMy4uYjU2YzljNyAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNzc3LDIwICs3NzcsNyBAQCBBQ19BUkdfRU5BQkxFKGxpYmdjcnlwdCwKK0BAIC04ODksMjAgKzg4OSw3IEBAIEFDX0FSR19FTkFCTEUobGliZ2NyeXB0LAogICAgICAgICAgW2VuYWJsZV9saWJnY3J5cHQ9eWVzXQogICkKICBpZiB0ZXN0ICJ4JGVuYWJsZV9saWJnY3J5cHQiID0gInh5ZXMiOyB0aGVuCkBAIC00MCw2ICs0MSwzIEBACiAgZmkKICBBTV9DT05ESVRJT05BTChFTkFCTEVfTElCR0NSWVBULCB0ZXN0IHgkZW5hYmxlX2xpYmdjcnlwdCA9IHh5ZXMpCiAgQUNfU1VCU1QoTElCR0NSWVBUX0NGTEFHUykKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nXzguMjkuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZ184LjI5LjAuYmIKaW5kZXggNzA1NmUxYy4uNDc2NTQwZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nXzguMjkuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2dfOC4yOS4wLmJiCkBAIC0yNyw3ICsyNyw2IEBACiAiCiAKIFNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAotICAgIGZpbGU6Ly8wMDAxLVVuZGVmaW5lLUdMT0JfQlJBQ0UucGF0Y2ggXAogICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtc3lzLXRpbWUtaC5wYXRjaCBcCiAiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NibGltLXNmY2Ivc2JsaW0tc2ZjYl8xLjQuOS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NibGltLXNmY2Ivc2JsaW0tc2ZjYl8xLjQuOS5iYgppbmRleCBjNmI5ZjEwLi4xMGZmYWFhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zYmxpbS1zZmNiL3NibGltLXNmY2JfMS40LjkuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2JsaW0tc2ZjYi9zYmxpbS1zZmNiXzEuNC45LmJiCkBAIC0xMSw2ICsxMSw5IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMzAwYWZkNTk4NTQ2YWRkMDM0MzY0Y2QwYTUzMzI2MSIKIERFUEVORFMgPSAiY3VybCBsaWJwYW0gb3BlbnNzbCBzYmxpbS1zZmMtY29tbW9uIHVuemlwLW5hdGl2ZSIKIAoraW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwYW0iCisKIFNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvc2JsaW0vJHtCUH0udGFyLmJ6MiBcCiAgICAgICAgICAgIGZpbGU6Ly9zZmNiLnNlcnZpY2UgXAogICAgICAgICAgICBmaWxlOi8vc2JsaW0tc2ZjYi0xLjMuOS1zZmNicmVwb3Mtc2NoZW1hLWxvY2F0aW9uLnBhdGNoIFwKQEAgLTI4LDcgKzMxLDcgQEAKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MzRhNjdiMmY3YWMzYjM4NmE3OTE2MGViNDQ0MTNkNjE4ZTMzZTRlN2ZjNzRhZTY4YjAyNDA0ODRhZjE0OWRkIgogCiBpbmhlcml0IGF1dG90b29scwotaW5oZXJpdCAke0BiYi51dGlscy5maWx0ZXIoJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXInLCAnc3lzdGVtZCcsIGQpfQoraW5oZXJpdCBzeXN0ZW1kCiAKIFNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0iCiBTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAic2JsaW0tc2ZjYi5zZXJ2aWNlIgpAQCAtNTMsMTAgKzU2LDggQEAKIAogICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwKIAotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zZmNiLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2JsaW0tc2ZjYi5zZXJ2aWNlCi0gICAgZmkKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2ZjYi5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NibGltLXNmY2Iuc2VydmljZQogCiAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKICAgICBtdiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc2ZjYiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc2JsaW0tc2ZjYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc21hcnRtb250b29scy9zbWFydG1vbnRvb2xzXzYuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NtYXJ0bW9udG9vbHMvc21hcnRtb250b29sc182LjYuYmIKc2ltaWxhcml0eSBpbmRleCA5MiUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc21hcnRtb250b29scy9zbWFydG1vbnRvb2xzXzYuNS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc21hcnRtb250b29scy9zbWFydG1vbnRvb2xzXzYuNi5iYgppbmRleCAwOTcwZDJhLi4xYTE3NjdlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zbWFydG1vbnRvb2xzL3NtYXJ0bW9udG9vbHNfNi41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NtYXJ0bW9udG9vbHMvc21hcnRtb250b29sc182LjYuYmIKQEAgLTIyLDggKzIyLDggQEAKIFBBQ0tBR0VDT05GSUdbbGliY2FwLW5nXSA9ICItLXdpdGgtbGliY2FwLW5nPXllcywtLXdpdGgtbGliY2FwLW5nPW5vLGxpYmNhcC1uZyIKIFBBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLS13aXRoLXNlbGludXg9eWVzLC0td2l0aC1zZWxpbnV4PW5vLGxpYnNlbGludXgiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIwOTNhZWVjM2Y4ZjM5ZmE5YTM3NTkzYzQwMTJkMzE1NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4OWU4YmIwODAxMzBiYzZjZTE0ODU3M2JhNWJiOTFiZmUzMDIzNmI2NGIxYjViYmNhMjY1MTVkNGI1Yzk0NWJjIgorU1JDX1VSSVttZDVzdW1dID0gIjlhZTJjNmU3MTMxY2QyODEzZWRjYzY1Y2JlNWYyMjNmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUxZjQzZDBmYjA2NGZjY2FmODIzYmJlNjhjZjBkMzE3ZDA4OTVmZjg5NWFhMzUzYjMzMzlhM2IzMTZhNTMwNTQiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc29ja2V0Y2FuL2Nhbi1pc290cF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zb2NrZXRjYW4vY2FuLWlzb3RwX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzAxOWViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc29ja2V0Y2FuL2Nhbi1pc290cF9naXQuYmIKQEAgLTAsMCArMSwxMiBAQAorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTcyZDk3N2Q2OTdjM2MwNTgzMGZkZmYwMGE3NDQ4OTMxIgorU1JDUkVWID0gImQxMjQ4YjBmMjJlYThkYzNiOWQ4NGE2MWJkMzVhODMzMDliZGI0YjQiCitQViA9ICIxLjArZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9oYXJ0a29wcC9jYW4taXNvdHAuZ2l0O3Byb3RvY29sPWh0dHBzIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IG1vZHVsZQorCitFWFRSQV9PRU1BS0UgKz0gIktFUk5FTERJUj0ke1NUQUdJTkdfS0VSTkVMX0RJUn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zeXNkaWcvc3lzZGlnX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3N5c2RpZy9zeXNkaWdfZ2l0LmJiCmluZGV4IGJjNmZlYzAuLjRmNTgyODEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3N5c2RpZy9zeXNkaWdfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3N5c2RpZy9zeXNkaWdfZ2l0LmJiCkBAIC04LDYgKzgsOCBAQAogCiBpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwogCitPRUNNQUtFX0dFTkVSQVRPUiA9ICJVbml4IE1ha2VmaWxlcyIKKwogREVQRU5EUyA9ICJsdWFqaXQgemxpYiBuY3Vyc2VzIgogUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKIApAQCAtMzMsMyArMzUsNyBAQAogICAgICR7ZGF0YWRpcn0venNoLyogXAogICAgICR7cHJlZml4fS9zcmMvKiAgXAogIgorCisjIGx1YWppdCBub3Qgc3VwcG9ydGVkIG9uIEFhcmNoNjQKK0NPTVBBVElCTEVfSE9TVCA9ICJeKD8hYWFyY2g2NCkuKiIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdDFsaWIvdDFsaWItNS4xLjIvY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdDFsaWIvdDFsaWItNS4xLjIvY29uZmlndXJlLnBhdGNoCmluZGV4IDhiOTg3MDcuLjk3NmUwMzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3QxbGliL3QxbGliLTUuMS4yL2NvbmZpZ3VyZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90MWxpYi90MWxpYi01LjEuMi9jb25maWd1cmUucGF0Y2gKQEAgLTEsMTEgKzEsMjEgQEAKK0Zyb20gODFjMWJhOTQwNDE1NTk1NTg0YTgzN2FiMTA3OGM2NDg1NTA3MmYwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+CitEYXRlOiBNb24sIDIxIE5vdiAyMDExIDEyOjAwOjU0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHQxbGliOiBhZGQgNS4xLjIKIAogIwogIyBQYXRjaCBtYW5hZ2VkIGJ5IGh0dHA6Ly93d3cuaG9sZ2Vyc2NodXJpZy5kZS9wYXRjaGVyLmh0bWwKICMKIAotLS0tIHQxbGliLTUuMC4yL2NvbmZpZ3VyZS5pbn5jb25maWd1cmUucGF0Y2gKLSsrKyB0MWxpYi01LjAuMi9jb25maWd1cmUuaW4KLUBAIC03NSw5ICs3NSw5IEBACistLS0KKyBjb25maWd1cmUuaW4gfCA5NSArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgNTcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KK2luZGV4IGVhZGU0YzAuLmU2NDllYTkgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgorQEAgLTc0LDkgKzc0LDkgQEAgVDFMSUJfUEFUQ0hMRVZFTD1idWlsdGluKGV2YWwsIE1BQ1JPX1QxTElCX0xUX1JFVklTSU9OKQogIFQxTElCX1ZFUlNJT05TVFJJTkc9XCJNQUNST19UMUxJQl9JREVOVElGSUVSXCIKICAKICAKQEAgLTE4LDcgKzI4LDcgQEAKICAKICBkbmwgV2Ugd2FudCB0aGVzZSBiZWZvcmUgdGhlIGNoZWNrcywgc28gdGhlIGNoZWNrcyBjYW4gbW9kaWZ5IHRoZWlyIHZhbHVlcy4KICB0ZXN0IC16ICIkTERMSUJTIiAmJiBMRExJQlM9LWxtICAgQUNfU1VCU1QoTERMSUJTKQotQEAgLTE2MSw2ICsxNjEsNyBAQAorQEAgLTE2Miw2ICsxNjIsNyBAQCBmaQogIAogIGRubCAqKioqIENoZWNrIGZvciB1bmRlcnNjb3JlIG9uIGV4dGVybmFsIHN5bWJvbHMgKioqKgogIApAQCAtMjYsMjEgKzM2LDEyIEBACiAgQUNfQ0FDSEVfQ0hFQ0soIndoZXRoZXIgZXh0ZXJuYWwgc3ltYm9scyBuZWVkIGFuIHVuZGVyc2NvcmUgcHJlZml4IiwKICAgICAgICAgICAgICAgICBhY19jdl9jX2V4dGVybl9wcmVmaXgsCiAgW3NhdmVkX2xpYnM9JExJQlMKLUBAIC0xNzgsNjggKzE3OSw0OCBAQAorQEAgLTE3OSw2OCArMTgwLDQ4IEBAIHRoZW4KICAgIEFDX0RFRklORShORUVEX1VOREVSU0NPUkVfUFJFRklYKQogIGZpCiAgCiAtZG5sICoqKiogQ2hlY2sgd2hpY2ggQU5TSSBpbnRlZ2VyIHR5cGUgaXMgMTYgYml0IAotK2RubCAqKioqIENoZWNrIHdoaWNoIEFOU0kgaW50ZWdlciB0eXBlIGlzIDE2IGJpdAotK1QxX0FBX1RZUEUxNj0iIgotK2ZvciB0eXBlIGluIHNob3J0IGludDsgZG8KLSsJaWYgdGVzdCB4ImBldmFsIGVjaG8gXFwkYWNfY3Zfc2l6ZW9mXyR0eXBlYCIgPSAieDIiOyB0aGVuCi0rCQlUMV9BQV9UWVBFMTY9Ii1EVDFfQUFfVFlQRTE2PSR0eXBlIgotKwkJVDFfSU5UMTY9IiR0eXBlIgotKwkJYnJlYWsKLSsJZmkKLStkb25lCi0gCistCiAtQUNfQ0FDSEVfQ0hFQ0soICJ3aGljaCBBTlNJIGludGVnZXIgdHlwZSBpcyAxNiBiaXQiLCBhY18xNmJpdF90eXBlLAogLQkJQUNfVFJZX1JVTihbCiAtaW50IG1haW4odm9pZCkgewpAQCAtNTgsMjEgKzU5LDIzIEBACiAtZWxzZQogLSAgVDFfQUFfVFlQRTE2PSItRFQxX0FBX1RZUEUxNj1pbnQiCiAtICBUMV9JTlQxNj0iaW50IgorK2RubCAqKioqIENoZWNrIHdoaWNoIEFOU0kgaW50ZWdlciB0eXBlIGlzIDE2IGJpdAorK1QxX0FBX1RZUEUxNj0iIgorK2ZvciB0eXBlIGluIHNob3J0IGludDsgZG8KKysJaWYgdGVzdCB4ImBldmFsIGVjaG8gXFwkYWNfY3Zfc2l6ZW9mXyR0eXBlYCIgPSAieDIiOyB0aGVuCisrCQlUMV9BQV9UWVBFMTY9Ii1EVDFfQUFfVFlQRTE2PSR0eXBlIgorKwkJVDFfSU5UMTY9IiR0eXBlIgorKwkJYnJlYWsKKysJZmkKKytkb25lCisrCiAraWYgdGVzdCB4IiRUMV9BQV9UWVBFMTYiID0gIngiOyB0aGVuCiArCUFDX01TR19FUlJPUigiVW5hYmxlIHRvIGRldGVybWluZSB3aGljaCBpbnRlZ2VyIHR5cGUgaXMgMTYgYml0LiIpCiAgZmkKICAKIC0KICBkbmwgKioqKiBDaGVjayB3aGljaCBBTlNJIGludGVnZXIgdHlwZSBpcyAzMiBiaXQgCi0rVDFfQUFfVFlQRTMyPSIiCi0rZm9yIHR5cGUgaW4gaW50IGxvbmc7IGRvCi0rCWlmIHRlc3QgeCJgZXZhbCBlY2hvIFxcJGFjX2N2X3NpemVvZl8kdHlwZWAiID0gIng0IjsgdGhlbgotKwkJVDFfQUFfVFlQRTMyPSItRFQxX0FBX1RZUEUzMj0kdHlwZSIKLSsJCVQxX0lOVDMyPSIkdHlwZSIKLSsJCWJyZWFrCi0rCWZpCi0rZG9uZQotIAorLQogLUFDX0NBQ0hFX0NIRUNLKCAid2hpY2ggQU5TSSBpbnRlZ2VyIHR5cGUgaXMgMzIgYml0IiwgYWNfMzJiaXRfdHlwZSwKIC0JCUFDX1RSWV9SVU4oWwogLWludCBtYWluKHZvaWQpIHsKQEAgLTkwLDIxICs5MywyMiBAQAogLWVsc2UKIC0gIFQxX0FBX1RZUEUzMj0iLURUMV9BQV9UWVBFMzI9bG9uZyIKIC0gIFQxX0lOVDMyPSJsb25nIgorK1QxX0FBX1RZUEUzMj0iIgorK2ZvciB0eXBlIGluIGludCBsb25nOyBkbworKwlpZiB0ZXN0IHgiYGV2YWwgZWNobyBcXCRhY19jdl9zaXplb2ZfJHR5cGVgIiA9ICJ4NCI7IHRoZW4KKysJCVQxX0FBX1RZUEUzMj0iLURUMV9BQV9UWVBFMzI9JHR5cGUiCisrCQlUMV9JTlQzMj0iJHR5cGUiCisrCQlicmVhaworKwlmaQorK2RvbmUKKysKICtpZiB0ZXN0IHgiJFQxX0FBX1RZUEUzMiIgPSAieCI7IHRoZW4KICsJQUNfTVNHX0VSUk9SKCJVbmFibGUgdG8gZGV0ZXJtaW5lIHdoaWNoIGludGVnZXIgdHlwZSBpcyAzMiBiaXQuIikKICBmaQogIAogLQogIGRubCAqKioqIENoZWNrIHdoaWNoIEFOU0kgaW50ZWdlciB0eXBlIGlzIDY0IGJpdCAKLStUMV9BQV9UWVBFNjQ9IiIKLStmb3IgdHlwZSBpbiBsb25nIGxvbmdfbG9uZzsgZG8KLSsJaWYgdGVzdCB4ImBldmFsIGVjaG8gXFwkYWNfY3Zfc2l6ZW9mXyR0eXBlYCIgPSAieDgiOyB0aGVuCi0rCQlBQ19NU0dfV0FSTigiJHR5cGUgaXMgNjQgYml0IikKLSsJCVQxX0FBX1RZUEU2ND0iLURUMV9BQV9UWVBFNjQ9XCJgZWNobyAkdHlwZXx0ciAnXycgJyAnYFwiIgotKwkJYnJlYWsKLSsJZmkKLStkb25lCi0gCistCiAtQUNfQ0FDSEVfQ0hFQ0soICJ3aGljaCBBTlNJIGludGVnZXIgdHlwZSBpcyA2NCBiaXQiLCBhY182NGJpdF90eXBlLAogLQkJQUNfVFJZX1JVTihbCiAtaW50IG1haW4odm9pZCkgewpAQCAtMTE4LDYgKzEyMiwxNSBAQAogLSAgVDFfQUFfVFlQRTY0PSItRFQxX0FBX1RZUEU2ND1sb25nIgogLWVsc2UKIC0gIFQxX0FBX1RZUEU2ND0KKytUMV9BQV9UWVBFNjQ9IiIKKytmb3IgdHlwZSBpbiBsb25nIGxvbmdfbG9uZzsgZG8KKysJaWYgdGVzdCB4ImBldmFsIGVjaG8gXFwkYWNfY3Zfc2l6ZW9mXyR0eXBlYCIgPSAieDgiOyB0aGVuCisrCQlBQ19NU0dfV0FSTigiJHR5cGUgaXMgNjQgYml0IikKKysJCVQxX0FBX1RZUEU2ND0iLURUMV9BQV9UWVBFNjQ9XCJgZWNobyAkdHlwZXx0ciAnXycgJyAnYFwiIgorKwkJYnJlYWsKKysJZmkKKytkb25lCisrCiAraWYgdGVzdCB4IiRUMV9BQV9UWVBFNjQiID0gIngiOyB0aGVuCiArCUFDX01TR19FUlJPUigiVW5hYmxlIHRvIGRldGVybWluZSB3aGljaCBpbnRlZ2VyIHR5cGUgaXMgNjQgYml0LiIpCiAgZmkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3QxbGliL3QxbGliLTUuMS4yL2Zvcm1hdF9zZWN1cml0eS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3QxbGliL3QxbGliLTUuMS4yL2Zvcm1hdF9zZWN1cml0eS5wYXRjaAppbmRleCA4YjRjZTQwLi5iYzI0NzZiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90MWxpYi90MWxpYi01LjEuMi9mb3JtYXRfc2VjdXJpdHkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdDFsaWIvdDFsaWItNS4xLjIvZm9ybWF0X3NlY3VyaXR5LnBhdGNoCkBAIC0xLDMgKzEsOCBAQAorRnJvbSBjZWE4MzAwM2RlM2ZmZWJkZTkyYmVjZDFlNTk5ZmUzYjI4ZjBhN2M0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNiBNYXIgMjAxNyAyMzoxMzozNiAtMDgwMAorU3ViamVjdDogW1BBVENIXSB0MWxpYjogRml4IHByaW50ZiBmb3JtYXQgc3RyaW5nIGVycm9ycworCiBGaXggcHJpbnRmIGZvcm1hdHMgdG8gdXNlIGZvcm1hdCBxdWFsaWZpZXJzCiBmaXhlcwogCkBAIC02LDIwICsxMSwxNyBAQAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi0tLS0gYS9saWIvdHlwZTEvb2JqZWN0cy5jCi0rKysgYi9saWIvdHlwZTEvb2JqZWN0cy5jCi1AQCAtOTU3LDcgKzk1Nyw3IEBACi0gIAotICAgICAgICBzcHJpbnRmKHR5cGVtc2csICJXcm9uZyBvYmplY3QgdHlwZSBpbiAlczsgZXhwZWN0ZWQgJXMsIGZvdW5kICVzLlxuIiwKLSAgICAgICAgICAgICAgICAgICBuYW1lLCBUeXBlRm10KGV4cGVjdCksIFR5cGVGbXQob2JqLT50eXBlKSk7Ci0tICAgICAgIElmVHJhY2UwKFRSVUUsdHlwZW1zZyk7Ci0rICAgICAgIElmVHJhY2UxKFRSVUUsICIlcyIsIHR5cGVtc2cpOwotICAKLSAgICAgICAgT2JqZWN0UG9zdE1vcnRlbShvYmopOwotICAKKy0tLQorIGxpYi90MWxpYi90MXN1YnNldC5jIHwgMiArLQorIGxpYi90eXBlMS9vYmplY3RzLmMgIHwgMiArLQorIGxpYi90eXBlMS9vYmplY3RzLmggIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL3QxbGliL3Qxc3Vic2V0LmMgYi9saWIvdDFsaWIvdDFzdWJzZXQuYworaW5kZXggZGE0MjdiMi4uZTc2OTc0ZiAxMDA2NDQKIC0tLSBhL2xpYi90MWxpYi90MXN1YnNldC5jCiArKysgYi9saWIvdDFsaWIvdDFzdWJzZXQuYwotQEAgLTc1OSw3ICs3NTksNyBAQAorQEAgLTc1OSw3ICs3NTksNyBAQCBjaGFyICpUMV9TdWJzZXRGb250KCBpbnQgRm9udElELAogIAkgICAgIHRyX2xlbik7CiAgICAgIFQxX1ByaW50TG9nKCAiVDFfU3Vic2V0Rm9udCgpIiwgZXJyX3dhcm5fbXNnX2J1ZiwKICAJCSBUMUxPR19ERUJVRyk7CkBAIC0yOCw5ICszMCwyNCBAQAogICAgfQogICAgCiAgICAvKiBjb21wdXRlIHNpemUgb2Ygb3V0cHV0IGZpbGUgKi8KK2RpZmYgLS1naXQgYS9saWIvdHlwZTEvb2JqZWN0cy5jIGIvbGliL3R5cGUxL29iamVjdHMuYworaW5kZXggYzQxM2EwZi4uZjgyOGU2YSAxMDA2NDQKKy0tLSBhL2xpYi90eXBlMS9vYmplY3RzLmMKKysrKyBiL2xpYi90eXBlMS9vYmplY3RzLmMKK0BAIC05NTcsNyArOTU3LDcgQEAgc3RydWN0IHhvYmplY3QgKlR5cGVFcnIobmFtZSwgb2JqLCBleHBlY3QsIHJldCkgLyogbm9uLUFOU0kgYXZvaWRzIG92ZXJseSBzdHJpY3QKKyAgCisgICAgICAgIHNwcmludGYodHlwZW1zZywgIldyb25nIG9iamVjdCB0eXBlIGluICVzOyBleHBlY3RlZCAlcywgZm91bmQgJXMuXG4iLAorICAgICAgICAgICAgICAgICAgIG5hbWUsIFR5cGVGbXQoZXhwZWN0KSwgVHlwZUZtdChvYmotPnR5cGUpKTsKKy0gICAgICAgSWZUcmFjZTAoVFJVRSx0eXBlbXNnKTsKKysgICAgICAgSWZUcmFjZTEoVFJVRSwgIiVzIiwgdHlwZW1zZyk7CisgIAorICAgICAgICBPYmplY3RQb3N0TW9ydGVtKG9iaik7CisgIAorZGlmZiAtLWdpdCBhL2xpYi90eXBlMS9vYmplY3RzLmggYi9saWIvdHlwZTEvb2JqZWN0cy5oCitpbmRleCAxM2NiYWU3Li4zYTFkMzM3IDEwMDY0NAogLS0tIGEvbGliL3R5cGUxL29iamVjdHMuaAogKysrIGIvbGliL3R5cGUxL29iamVjdHMuaAotQEAgLTIxNCw3ICsyMTQsNyBAQAorQEAgLTIxNCw3ICsyMTQsNyBAQCBzdHJ1Y3QgeG9iamVjdCB7CiAgLypTSEFSRUQqLwogIC8qIE5EVzogcGVyc29uYWxseSwgSSB3YW50IHRvIHNlZSBzdGF0dXMgYW5kIGVycm9yIG1lc3NhZ2VzISAqLwogICNkZWZpbmUgSWZUcmFjZTAoY29uZGl0aW9uLG1vZGVsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3QxbGliL3QxbGliLTUuMS4yL2xpYnRvb2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90MWxpYi90MWxpYi01LjEuMi9saWJ0b29sLnBhdGNoCmluZGV4IGUwNTAwMjUuLmRhNTRmODcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3QxbGliL3QxbGliLTUuMS4yL2xpYnRvb2wucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdDFsaWIvdDFsaWItNS4xLjIvbGlidG9vbC5wYXRjaApAQCAtMSwxMiArMSwyOCBAQAorRnJvbSBiYWI0MWY1ZTFmYzFmYzgwOWRhMTM3MWU2YTAyMjJlMGViMjFlNWYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KK0RhdGU6IE1vbiwgMjEgTm92IDIwMTEgMTI6MDA6NTQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gdDFsaWI6IGFkZCA1LjEuMgogCiAjCiAjIFBhdGNoIG1hbmFnZWQgYnkgaHR0cDovL3d3dy5ob2xnZXJzY2h1cmlnLmRlL3BhdGNoZXIuaHRtbAogIwogCi0tLS0gdDFsaWItNS4wLjIvTWFrZWZpbGUuaW5+bGlidG9vbAotKysrIHQxbGliLTUuMC4yL01ha2VmaWxlLmluCistLS0KKyBNYWtlZmlsZS5pbiAgICAgICAgICAgfCA1ICsrKy0tCisgZXhhbXBsZXMvTWFrZWZpbGUuaW4gIHwgNSArKystLQorIGxpYi9NYWtlZmlsZS5pbiAgICAgICB8IDYgKysrKy0tCisgbGliL3QxbGliL01ha2VmaWxlLmluIHwgNiArKysrLS0KKyBsaWIvdHlwZTEvTWFrZWZpbGUuaW4gfCA2ICsrKystLQorIHR5cGUxYWZtL01ha2VmaWxlLmluICB8IDYgKysrKy0tCisgeGdseXBoL01ha2VmaWxlLmluICAgIHwgNiArKysrLS0KKyA3IGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggMjljMzQ2OC4uMzk2YzAyMCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgogQEAgLTE4LDcgKzE4LDggQEAKLSAjIExhc3QgbW9kaWZpZWQ6ICAgICAgIDIwMDEtMDQtMDEKKyAjIExhc3QgbW9kaWZpZWQ6ICAgICAgIDIwMDUtMDUtMDEKICAjCiAgCiAtU0hFTEwgICAgID0gL2Jpbi9zaApAQCAtMTUsNyArMzEsNyBAQAogIENDICAgICAgICA9IEBDQ0AKICBDUFAgICAgICAgPSBAQ1BQQAogIENGTEFHUyAgICA9IEBDRkxBR1NACi1AQCAtMTUwLDcgKzE1MSw3IEBACitAQCAtMTQ5LDcgKzE1MCw3IEBAIGRpc3RjbGVhbjogY2xlYW4KICAJJChSTSkgZXhhbXBsZXMvTWFrZWZpbGUKICAJJChSTSkgeGdseXBoL01ha2VmaWxlCiAgCSQoUk0pIGRvYy9NYWtlZmlsZQpAQCAtMjQsOCArNDAsMTAgQEAKICAKICAKICAjIFRoZSBmb2xsb3dpbmcgdHdvIHRhcmdldHMgYXJlIGZvciBidWlsZGluZyBhbmQgY2xlYW5pbmcgdGhlIHB5dGhvbi0KLS0tLSB0MWxpYi01LjAuMi9leGFtcGxlcy9NYWtlZmlsZS5pbn5saWJ0b29sCi0rKysgdDFsaWItNS4wLjIvZXhhbXBsZXMvTWFrZWZpbGUuaW4KK2RpZmYgLS1naXQgYS9leGFtcGxlcy9NYWtlZmlsZS5pbiBiL2V4YW1wbGVzL01ha2VmaWxlLmluCitpbmRleCBiMzAxZGI1Li43YTZhNTE0IDEwMDY0NAorLS0tIGEvZXhhbXBsZXMvTWFrZWZpbGUuaW4KKysrKyBiL2V4YW1wbGVzL01ha2VmaWxlLmluCiBAQCAtMTQsOSArMTQsMTAgQEAKICAjIExhc3QgbW9kaWZpZWQ6ICAgICAgIDIwMDEtMDQtMDEKICAjCkBAIC0zOSw4ICs1NywxMCBAQAogIENDICAgICAgICA9IEBDQ0AKICBDUFAgICAgICAgPSBAQ1BQQAogIENGTEFHUyAgICA9IEBDRkxBR1NACi0tLS0gdDFsaWItNS4wLjIvbGliL01ha2VmaWxlLmlufmxpYnRvb2wKLSsrKyB0MWxpYi01LjAuMi9saWIvTWFrZWZpbGUuaW4KK2RpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUuaW4gYi9saWIvTWFrZWZpbGUuaW4KK2luZGV4IDg5ZTVlODYuLjZlMGY5NjAgMTAwNjQ0CistLS0gYS9saWIvTWFrZWZpbGUuaW4KKysrKyBiL2xpYi9NYWtlZmlsZS5pbgogQEAgLTE1LDggKzE1LDEwIEBACiAgIwogICMgQ29udHJpYnV0aW9ucyBieSBILktha3VnYXdhIHRvIHVzZSBsaWJ0b29sIQpAQCAtNTQsOCArNzQsMTAgQEAKICBDQyAgICAgICAgPSBAQ0NACiAgQ1BQICAgICAgID0gQENQUEAKICBDRkxBR1MgICAgPSBAQ0ZMQUdTQAotLS0tIHQxbGliLTUuMC4yL2xpYi90MWxpYi9NYWtlZmlsZS5pbn5saWJ0b29sCi0rKysgdDFsaWItNS4wLjIvbGliL3QxbGliL01ha2VmaWxlLmluCitkaWZmIC0tZ2l0IGEvbGliL3QxbGliL01ha2VmaWxlLmluIGIvbGliL3QxbGliL01ha2VmaWxlLmluCitpbmRleCBhNmMyNDc4Li4zMjQzNGIzIDEwMDY0NAorLS0tIGEvbGliL3QxbGliL01ha2VmaWxlLmluCisrKysgYi9saWIvdDFsaWIvTWFrZWZpbGUuaW4KIEBAIC0xNCw4ICsxNCwxMCBAQAogICMKICAjIE1vZGlmaWVkIGJ5IEguS2FrdWdhd2EgdG8gdXNlIGxpYnRvb2wKQEAgLTY5LDggKzkxLDEwIEBACiAgQ0MgICAgICAgID0gQENDQAogIENQUCAgICAgICA9IEBDUFBACiAgQ0ZMQUdTICAgID0gQENGTEFHU0AKLS0tLSB0MWxpYi01LjAuMi9saWIvdHlwZTEvTWFrZWZpbGUuaW5+bGlidG9vbAotKysrIHQxbGliLTUuMC4yL2xpYi90eXBlMS9NYWtlZmlsZS5pbgorZGlmZiAtLWdpdCBhL2xpYi90eXBlMS9NYWtlZmlsZS5pbiBiL2xpYi90eXBlMS9NYWtlZmlsZS5pbgoraW5kZXggMjQxZjEyNC4uNDJlZmE5NCAxMDA2NDQKKy0tLSBhL2xpYi90eXBlMS9NYWtlZmlsZS5pbgorKysrIGIvbGliL3R5cGUxL01ha2VmaWxlLmluCiBAQCAtMTQsOCArMTQsMTAgQEAKICAjCiAgIyBNb2RpZmllZCBieSBILktha3VnYXdhIHRvIHVzZSBsaWJ0b29sCkBAIC04NCw4ICsxMDgsMTAgQEAKICBDQyAgICAgICAgPSBAQ0NACiAgQ1BQICAgICAgID0gQENQUEAKICBDRkxBR1MgICAgPSBAQ0ZMQUdTQAotLS0tIHQxbGliLTUuMC4yL3R5cGUxYWZtL01ha2VmaWxlLmlufmxpYnRvb2wKLSsrKyB0MWxpYi01LjAuMi90eXBlMWFmbS9NYWtlZmlsZS5pbgorZGlmZiAtLWdpdCBhL3R5cGUxYWZtL01ha2VmaWxlLmluIGIvdHlwZTFhZm0vTWFrZWZpbGUuaW4KK2luZGV4IDYxNjExZTEuLjliNTE0MDYgMTAwNjQ0CistLS0gYS90eXBlMWFmbS9NYWtlZmlsZS5pbgorKysrIGIvdHlwZTFhZm0vTWFrZWZpbGUuaW4KIEBAIC0xNSw4ICsxNSwxMCBAQAogICMKICAjIE1vZGlmaWVkIGJ5IEguS2FrdWdhd2EgdG8gdXNlIGxpYnRvb2wKQEAgLTk5LDggKzEyNSwxMCBAQAogIENDICAgICAgICA9IEBDQ0AKICBDUFAgICAgICAgPSBAQ1BQQAogIENGTEFHUyAgICA9IEBDRkxBR1NACi0tLS0gdDFsaWItNS4wLjIveGdseXBoL01ha2VmaWxlLmlufmxpYnRvb2wKLSsrKyB0MWxpYi01LjAuMi94Z2x5cGgvTWFrZWZpbGUuaW4KK2RpZmYgLS1naXQgYS94Z2x5cGgvTWFrZWZpbGUuaW4gYi94Z2x5cGgvTWFrZWZpbGUuaW4KK2luZGV4IDhkYTliNjMuLjc0MTMzNGMgMTAwNjQ0CistLS0gYS94Z2x5cGgvTWFrZWZpbGUuaW4KKysrKyBiL3hnbHlwaC9NYWtlZmlsZS5pbgogQEAgLTE1LDggKzE1LDEwIEBACiAgIwogICMgTW9kaWZpZWQgYnkgSC5LYWt1Z2F3YSB0byB1c2UgbGlidG9vbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwY3V0aWxzL3RpcGN1dGlscy8wMDAxLW11bHRpY2FzdF9ibGFzdC10aXBjYy1GaXgtc3RydWN0LXR5cGUtZm9yLVRJUENfR1JPVVAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90aXBjdXRpbHMvdGlwY3V0aWxzLzAwMDEtbXVsdGljYXN0X2JsYXN0LXRpcGNjLUZpeC1zdHJ1Y3QtdHlwZS1mb3ItVElQQ19HUk9VUC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDk1Mjg1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwY3V0aWxzL3RpcGN1dGlscy8wMDAxLW11bHRpY2FzdF9ibGFzdC10aXBjYy1GaXgtc3RydWN0LXR5cGUtZm9yLVRJUENfR1JPVVAucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSAxY2U4OTI3NDllNGY1M2JkMGFlYWE0YzNjZTQ1ZjgwMTc4Nzk5NDExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMyBNYXIgMjAxOCAxNzo1Mjo1MSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBtdWx0aWNhc3RfYmxhc3QvdGlwY2M6IEZpeCBzdHJ1Y3QgdHlwZSBmb3IgVElQQ19HUk9VUF9KT0lOCisKK0tlcm5lbCBkZWZpbmVzIGl0IGFzIHRpcGNfZ3JvdXBfcmVxIGFuZCBub3QgdGlwY19tcmVxCit0aGlzIGNvZGUgd2FzIG5vdCBleGNlcmNpc2VkIHdpdGggb2xkZXIga2VybmVscyBzbyB3ZQorbmV2ZXIgcmFuIGludG8gdGhlIGNvbXBpbGVyIGZhaWx1cmVzIHNpbmNlIFRJUENfR1JPVVBfSk9JTgoraXMgb25seSBkZWZpbmVkIGluIGtlcm5lbCBzdGFydGluZyA0LjE1CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgbXVsdGljYXN0X2JsYXN0L3RpcGNjLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tdWx0aWNhc3RfYmxhc3QvdGlwY2MuYyBiL211bHRpY2FzdF9ibGFzdC90aXBjYy5jCitpbmRleCA5MDY0NGQzLi45MTFjNzU5IDEwMDc1NQorLS0tIGEvbXVsdGljYXN0X2JsYXN0L3RpcGNjLmMKKysrKyBiL211bHRpY2FzdF9ibGFzdC90aXBjYy5jCitAQCAtMjEzLDcgKzIxMyw3IEBAIGludCB0aXBjX2FjY2VwdChpbnQgc2QsIHN0cnVjdCB0aXBjX2FkZHIgKnNyYykKKyBpbnQgdGlwY19qb2luKGludCBzZCwgc3RydWN0IHRpcGNfYWRkciAqbWVtYmVyKQorIHsKKyAjaWZkZWYgVElQQ19HUk9VUF9KT0lOCistCXN0cnVjdCB0aXBjX21yZXEgbXJlcSA9IHsKKysJc3RydWN0IHRpcGNfZ3JvdXBfcmVxIG1yZXEgPSB7CisgCQkudHlwZSA9IG1lbWJlci0+dHlwZSwKKyAJCS5pbnN0YW5jZSA9IG1lbWJlci0+aW5zdGFuY2UsCisgCQkuc2NvcGUgPSBkb21haW4yc2NvcGUobWVtYmVyLT5kb21haW4pCistLSAKKzIuMTYuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90aXBjdXRpbHMvdGlwY3V0aWxzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RpcGN1dGlscy90aXBjdXRpbHNfZ2l0LmJiCmluZGV4IDcyMGFhM2MuLjU0ZWQwNDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RpcGN1dGlscy90aXBjdXRpbHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RpcGN1dGlscy90aXBjdXRpbHNfZ2l0LmJiCkBAIC01LDYgKzUsNyBAQAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQuY29kZS5zZi5uZXQvcC90aXBjL3RpcGN1dGlscyBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXNlbGVjdC5oLWZvci1GRF8tZGVmaW5pdGlvbnMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1yZXBsYWNlLW5vbi1zdGFuZGFyZC11aW50LXdpdGgtdW5zaWduZWQtaW50LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbXVsdGljYXN0X2JsYXN0LXRpcGNjLUZpeC1zdHJ1Y3QtdHlwZS1mb3ItVElQQ19HUk9VUC5wYXRjaCBcCiAgICAgICAgICAgICIKIFNSQ1JFViA9ICI3YWIyMjExYjg3NDE0YmEyNDBiMGIyZTRhZjIxOWMxMDU3YzljZjlhIgogUFYgPSAiMi4yLjArZ2l0JHtTUkNQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90aXB0b3AvdGlwdG9wXzIuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RpcHRvcC90aXB0b3BfMi4zLjEuYmIKc2ltaWxhcml0eSBpbmRleCA4NiUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwdG9wL3RpcHRvcF8yLjMuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RpcHRvcC90aXB0b3BfMi4zLjEuYmIKaW5kZXggZDcyOWRlOS4uMGEwMGEzNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwdG9wL3RpcHRvcF8yLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwdG9wL3RpcHRvcF8yLjMuMS5iYgpAQCAtNSw4ICs1LDggQEAKIERFUEVORFMgPSAibmN1cnNlcyBsaWJ4bWwyIgogCiBTUkNfVVJJID0gImh0dHA6Ly90aXB0b3AuZ2ZvcmdlLmlucmlhLmZyL3JlbGVhc2VzLyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmMWZiYTFlOTA0NjViMGU1YTM4NjViMTkxMzNmYTE5ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzZjA3ZTk1OGI0MGFjYWVhYjk4ZTllYjEzMjZjOWY5MWIwYmUwYTc4MmMxY2MyYmQ3YTllMThkMzFmYWIxOGNhIgorU1JDX1VSSVttZDVzdW1dID0gIjQ2Y2EwZmRmMDIzNmYwMmRkMmI5NmQzNDc2MjZkMmEyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUxYzQ0NDljOTViYmEzNGYxNmI0Mjk3MjljMmY1ODQzMTQ5MDY2NWQ4MDkzZWZhYTg2NDNiMmUxZDEwODQxODIiCiAKIGluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAogRVhUUkFfT0VDT05GID0gIkNGTEFHUz0iJENGTEFHUyAtSSR7U1RBR0lOR19JTkNESVJ9L2xpYnhtbDIiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdG11eC90bXV4XzIuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RtdXgvdG11eF8yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmMjFkZTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdG11eC90bXV4XzIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiVGVybWluYWwgbXVsdGlwbGV4ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vdG11eC5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLUxJQ0VOU0UgPSAiSVNDIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vdG11eC5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MTc7bWQ1PTg2ODViNDQ1NTMzMGE5NDBmYWIxZmY0NTFhYTk0MWEwIgotCi1ERVBFTkRTID0gIm5jdXJzZXMgbGliZXZlbnQiCi0KLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3RtdXgvdG11eC5naXQ7YnJhbmNoPW1hc3RlciIKLVNSQ1JFViA/PSAiMzEwZjBhOTYwY2E2NGZhMzgwOTU0NWJhZGM2MjljMGMxNjZjNmNkMiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLUIgPSAiJHtXT1JLRElSfS9idWlsZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3V0ZW1wdGVyXSA9ICJhY19jdl9oZWFkZXJfdXRlbXB0ZXJfaD15ZXMsYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9bm8sbGlidXRlbXB0ZXIsIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90bXV4L3RtdXhfMi42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdG11eC90bXV4XzIuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmE1MTU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdG11eC90bXV4XzIuNi5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIlRlcm1pbmFsIG11bHRpcGxleGVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3RtdXguc291cmNlZm9yZ2UubmV0IgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitMSUNFTlNFID0gIklTQyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3RtdXguYztiZWdpbmxpbmU9MztlbmRsaW5lPTE3O21kNT1mMjU2Yjc2ZDUyZTdiNGQwMmJmMTkxNDRiZGFjYTEwNyIKKworREVQRU5EUyA9ICJuY3Vyc2VzIGxpYmV2ZW50IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS90bXV4L3RtdXgvcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vdG11eC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiZDU0MWZmMzkyMjQ5Zjk0YzRmMzYzNTc5MzU1NmY4MjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjE3Y2QxNzBhOTRkN2I1OGMwNjk4NzUyZTFmNGYyNjNhYjZkYzQ3NDI1MjMwZGY3ZTUzYTY0MzVjYzdjZDdlOCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW3V0ZW1wdGVyXSA9ICJhY19jdl9oZWFkZXJfdXRlbXB0ZXJfaD15ZXMsYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9bm8sbGlidXRlbXB0ZXIsIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAjIFRoZSAnY29tcGF0JyBkaXJlY3RvcnkgaXMgbmVlZGVkIGZvciBvdXRwdXQgZHVyaW5nIHRoZSBidWlsZCBidXQgaXQncworICAgICMgbm90IGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB3aGVuIGJ1aWxkaW5nIG91dHNpZGUgdGhlIHNvdXJjZSBkaXJlY3RvcnkuCisgICAgbWtkaXIgJHtCfS9jb21wYXQKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3VwbS9maWxlcy9hZHMxeDE1LWZpeGVkLWNhc2UtbG9naWMtaW4tZ2V0VGhyZXNoLWZ1bmN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL2ZpbGVzL2FkczF4MTUtZml4ZWQtY2FzZS1sb2dpYy1pbi1nZXRUaHJlc2gtZnVuY3Rpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2MTdkMTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL2ZpbGVzL2FkczF4MTUtZml4ZWQtY2FzZS1sb2dpYy1pbi1nZXRUaHJlc2gtZnVuY3Rpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIGM2NGQwNGQwODRmNDdiNGNiM2UxY2RlZTZlOTYzNDhmY2M2YTc1NmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWhhaSBUdWRvciBQYW51IDxtaWhhaS50dWRvci5wYW51QGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMzAgTWF5IDIwMTcgMTU6MTQ6MDkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzFdIGFkczF4MTU6IGZpeGVkIGNhc2UgbG9naWMgaW4gZ2V0VGhyZXNoKCkgZnVuY3Rpb24KLQotU2lnbmVkLW9mZi1ieTogTWloYWkgVHVkb3IgUGFudSA8bWloYWkudHVkb3IucGFudUBpbnRlbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnRlZCBbYzY0ZDA0ZDA4NGY0N2I0Y2IzZTFjZGVlNmU5NjM0OGZjYzZhNzU2ZV0KLQotU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotCi0tLS0KLSBzcmMvYWRzMXgxNS9hZHMxeDE1LmN4eCB8IDQgKystLQotIHNyYy9hZHMxeDE1L2FkczF4MTUuaHBwIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2FkczF4MTUvYWRzMXgxNS5jeHggYi9zcmMvYWRzMXgxNS9hZHMxeDE1LmN4eAotaW5kZXggMzU3ODI3MDkuLjQ3NzAxYjJhIDEwMDY0NAotLS0tIGEvc3JjL2FkczF4MTUvYWRzMXgxNS5jeHgKLSsrKyBiL3NyYy9hZHMxeDE1L2FkczF4MTUuY3h4Ci1AQCAtMTE2LDcgKzExNiw3IEBAIEFEUzFYMTU6OnNldENvbnRpbnVvdXMoYm9vbCBtb2RlKXsKLSAKLSBmbG9hdAotIEFEUzFYMTU6OmdldFRocmVzaChBRFNUSFJFU0ggcmVnKXsKLS0gICAgIGlmKCBUSFJFU0hfSElHSCAmJiBUSFJFU0hfTE9XKSByZXR1cm4gZ2V0TGFzdFNhbXBsZShyZWcpOwotKyAgICAgaWYocmVnID09IFRIUkVTSF9ISUdIIHx8IHJlZyA9PSBUSFJFU0hfTE9XKSByZXR1cm4gZ2V0TGFzdFNhbXBsZShyZWcpOwotICAgICAgZWxzZSByZXR1cm4gMC4wOwotIH0KLSAKLUBAIC0xMzcsNyArMTM3LDcgQEAgQURTMVgxNTo6c2V0VGhyZXNoKEFEU1RIUkVTSCByZWcsIGZsb2F0IHZhbHVlKXsKLSAgICAgIGNhc2UgMjoKLSAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgc2V0X3ZhbHVlID0gdmFsdWUgLyBnZXRNdWx0aXBsaWVyKCk7Ci0tICAgICAgICAgc2V0X3ZhbHVlID0gc2V0X3ZhbHVlIDw8IG1fYml0U2hpZnQ7Ci0rICAgICAgICAgIHNldF92YWx1ZSA9IHNldF92YWx1ZSA8PCBtX2JpdFNoaWZ0OwotICAgICAgICAgICBpZihpMmMtPndyaXRlV29yZFJlZyhyZWcsIHN3YXBXb3JkKHNldF92YWx1ZSkpICE9IG1yYWE6OlNVQ0NFU1MpewotICAgICAgICAgICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcihzdGQ6OnN0cmluZyhfX0ZVTkNUSU9OX18pICsgIjogSTJjLndyaXRlKCkgZmFpbGVkIik7Ci0gICAgICAgICAgICAgcmV0dXJuOwotZGlmZiAtLWdpdCBhL3NyYy9hZHMxeDE1L2FkczF4MTUuaHBwIGIvc3JjL2FkczF4MTUvYWRzMXgxNS5ocHAKLWluZGV4IDc1MjQ1NzJkLi5lZmQ4YzhlYyAxMDA2NDQKLS0tLSBhL3NyYy9hZHMxeDE1L2FkczF4MTUuaHBwCi0rKysgYi9zcmMvYWRzMXgxNS9hZHMxeDE1LmhwcAotQEAgLTM5MCw3ICszOTAsNyBAQCBuYW1lc3BhY2UgdXBtIHsKLSAgICAgICAgICAgICAgKiBAcGFyYW0gcmVnIEFEU1RIUkVTIGVudW0gdmFsdWUuCi0gICAgICAgICAgICAgICogUmV0dXJucyAwLjAgdW5sZXNzIFRIUkVTSF9ISUdIIG9yIFRIUkVTSF9MT1cgcmVxdWVzdGVkLgotICAgICAgICAgICAgICAqLwotLSAgICAgICAgICAgIGZsb2F0IGdldFRocmVzaChBRFNUSFJFU0ggcmVnID0gVEhSRVNIX0xPVyk7Ci0rICAgICAgICAgICAgZmxvYXQgZ2V0VGhyZXNoKEFEU1RIUkVTSCByZWcgPSBUSFJFU0hfREVGQVVMVCk7Ci0gCi0gICAgICAgICAgICAgLyoqCi0gICAgICAgICAgICAgICogU2V0cyB0aHJlc2hvbGQgbGV2ZWxzIG9yIGNvbmZpZ3VyZXMgZm9yIGNvbnZlcnNpb24gcmVhZHkKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3VwbS91cG1fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL3VwbV9naXQuYmIKaW5kZXggMzgwNjVjZS4uZDc0MmE1ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL3VwbV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL3VwbV9naXQuYmIKQEAgLTcsMTIgKzcsMTEgQEAKIAogREVQRU5EUyA9ICJsaWJqcGVnLXR1cmJvIG1yYWEiCiAKLVNSQ1JFViA9ICIxMDZiNmM3MDYyNjg1MjJhYjAxNjhhNGRkYjE5ZTg5Y2U4MzJlMDg0IgotUFYgPSAiMS4zLjAtZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiY2M3ZmVjOWFlMDIyOGFkZDkwMTFiZjFjMmNkNWUwY2EyYmEwZDRmMCIKK1BWID0gIjEuNi4wLWdpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gIiBcCiAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9pbnRlbC1pb3QtZGV2a2l0LyR7QlBOfS5naXQ7cHJvdG9jb2w9aHR0cCBcCi0gICAgZmlsZTovL2FkczF4MTUtZml4ZWQtY2FzZS1sb2dpYy1pbi1nZXRUaHJlc2gtZnVuY3Rpb24ucGF0Y2ggXAogIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpAQCAtMjYsNyArMjUsMTMgQEAKICMgb3ZlcnJpZGUgdGhpcyBpbiBsb2NhbC5jb25mIHRvIGdldCBuZWVkZWQgYmluZGluZ3MuCiAjIEJJTkRJTkdTX3BuLXVwbT0icHl0aG9uIgogIyB3aWxsIHJlc3VsdCBpbiBvbmx5IHRoZSBweXRob24gYmluZGluZ3MgYmVpbmcgYnVpbHQvcGFja2FnZWQuCi1CSU5ESU5HUyA/Pz0gInB5dGhvbiAke0AgJ25vZGVqcycgaWYgb2UudHlwZXMuYm9vbGVhbihkLmdldFZhcignSEFWRV9OT0RFSlMnKSBvciAnMCcpIGVsc2UgJycgfSIKKyMgTm90ZTogJ25vZGVqcycgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCBiZWNhdXNlIHRoZSBiaW5kaW5ncworIyBnZW5lcmF0aW9uIGN1cnJlbnRseSBmYWlscyB3aXRoIG5vZGVqcyAoPnY3LngpLgorQklORElOR1MgPz89ICJweXRob24iCisKKyMgbm9kZWpzIGlzbid0IGF2YWlsYWJsZSBmb3IgYXJtdjQvYXJtdjUgYXJjaGl0ZWN0dXJlcworQklORElOR1NfYXJtdjQgPz89ICJweXRob24iCitCSU5ESU5HU19hcm12NSA/Pz0gInB5dGhvbiIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFUycsICdub2RlLSR7UE59JywgJ25vZGVqcycsICcnLCBkKX0gXAogICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFUycsICcke1BZVEhPTl9QTn0tJHtQTn0nLCAncHl0aG9uJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Zsb2NrL3Zsb2NrLTIuMi4zL2Rpc2FibGVfdmxvY2tyYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Zsb2NrL3Zsb2NrLTIuMi4zL2Rpc2FibGVfdmxvY2tyYy5wYXRjaAppbmRleCBlZTBkMDc0Li4yNDEyYmI4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92bG9jay92bG9jay0yLjIuMy9kaXNhYmxlX3Zsb2NrcmMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdmxvY2svdmxvY2stMi4yLjMvZGlzYWJsZV92bG9ja3JjLnBhdGNoCkBAIC0xLDEzICsxLDIzIEBACitGcm9tIGY3MWNjOTIwNTI4YzM0OTZiMDExODk2NGViYmNmNTQ0MGNkYTRlZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxMzozNzo0MCArMDgwMAorU3ViamVjdDogW1BBVENIXSB2bG9jazogYWRkIG5ldyByZWNpcGUKKwogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogCiB3cml0dGVuIGJ5OiBKZWZmIFBvbGsgPGplZmYucG9sa0B3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KIAotSW5kZXg6IHZsb2NrLTIuMi4yL21hbi92bG9jay4xCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdmxvY2stMi4yLjIub3JpZy9tYW4vdmxvY2suMQkyMDEwLTA3LTI2IDE0OjEyOjQyLjAwMDAwMDAwMCAtMDQwMAotKysrIHZsb2NrLTIuMi4yL21hbi92bG9jay4xCTIwMTAtMDctMjYgMTQ6MTM6MDYuMDAwMDAwMDAwIC0wNDAwCi1AQCAtMTExLDExICsxMTEsNiBAQAorLS0tCisgbWFuL3Zsb2NrLjEgIHwgNSAtLS0tLQorIHNyYy92bG9jay5zaCB8IDUgLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWFuL3Zsb2NrLjEgYi9tYW4vdmxvY2suMQoraW5kZXggMGQyOWI0OS4uMDFjYjk0NCAxMDA2NDQKKy0tLSBhL21hbi92bG9jay4xCisrKysgYi9tYW4vdmxvY2suMQorQEAgLTExMSwxMSArMTExLDYgQEAgZW50ZXIgeW91ciBwYXNzd29yZCBhdCB0aGUgcGFzc3dvcmQgcHJvbXB0LiAgSWYgdGhpcyB2YXJpYWJsZSBpcyB1bnNldCBvciBzZXQKICB0byBhbiBpbnZhbGlkIHZhbHVlIG9yIDAgbm8gdGltZW91dCBpcyB1c2VkLiAgXGZCV2FybmluZ1xmUjogSWYgdGhpcyB2YWx1ZSBpcwogIHRvbyBsb3csIHlvdSBtYXkgbm90IGJlIGFibGUgdG8gdW5sb2NrIHlvdXIgc2Vzc2lvbi4KICAuUFAKQEAgLTE5LDExICsyOSwxMSBAQAogIC5TSCBTRUNVUklUWQogIFNlZSB0aGUgU0VDVVJJVFkgZmlsZSBpbiB0aGUgXGZCdmxvY2tcZlIgZGlzdHJpYnV0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogIC5QUAotSW5kZXg6IHZsb2NrLTIuMi4yL3NyYy92bG9jay5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHZsb2NrLTIuMi4yLm9yaWcvc3JjL3Zsb2NrLnNoCTIwMTAtMDctMjYgMTQ6MTI6MzIuMDAwMDAwMDAwIC0wNDAwCi0rKysgdmxvY2stMi4yLjIvc3JjL3Zsb2NrLnNoCTIwMTAtMDctMjYgMTQ6MTM6MzMuMDAwMDAwMDAwIC0wNDAwCi1AQCAtMzUsMTEgKzM1LDYgQEAKK2RpZmYgLS1naXQgYS9zcmMvdmxvY2suc2ggYi9zcmMvdmxvY2suc2gKK2luZGV4IDc1ZjEzNjkuLmY1NzI3NzYgMTAwNjQ0CistLS0gYS9zcmMvdmxvY2suc2gKKysrKyBiL3NyYy92bG9jay5zaAorQEAgLTM1LDExICszNSw2IEBAIFRoaXMgVFRZIGlzIG5vdyBsb2NrZWQuCiAgCiAgJHtWTE9DS19FTlRFUl9QUk9NUFR9IgogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdmxvY2svdmxvY2stMi4yLjMvdmxvY2stbm9fdGFsbHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92bG9jay92bG9jay0yLjIuMy92bG9jay1ub190YWxseS5wYXRjaAppbmRleCA2ZThhNmE5Li4zYTM0NGIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92bG9jay92bG9jay0yLjIuMy92bG9jay1ub190YWxseS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92bG9jay92bG9jay0yLjIuMy92bG9jay1ub190YWxseS5wYXRjaApAQCAtMSw4ICsxLDIxIEBACitGcm9tIDE3ZTVjOGQzMmFiYzIxNGFlYTQwOGYwODM3YmU0MWU4OGJjZTdlYjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxMzozNzo0MCArMDgwMAorU3ViamVjdDogW1BBVENIXSB2bG9jazogYWRkIG5ldyByZWNpcGUKKwogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIHdyaXR0ZW4gYnk6IEplZmYgUG9sayA8amVmZi5wb2xrQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgogCistLS0KKyBNYWtlZmlsZSAgICAgICAgIHwgNCArKysrCisgY29uZmlndXJlICAgICAgICB8IDkgKysrKysrKysrCisgc3JjL3Zsb2NrLW1haW4uYyB8IDggKysrKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDRlZWI0MmEuLjgzNGNkMmMgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZQogKysrIGIvTWFrZWZpbGUKIEBAIC0xMjYsNiArMTI2LDEwIEBAIGlmZXEgKCQoQVVUSF9NRVRIT0QpLHNoYWRvdykKQEAgLTE2LDYgKzI5LDggQEAKICBpZmVxICgkKEVOQUJMRV9QTFVHSU5TKSx5ZXMpCiAgdmxvY2stbWFpbjogcGx1Z2lucy5vIHBsdWdpbi5vIG1vZHVsZS5vIHByb2Nlc3MubyBzY3JpcHQubyB0c29ydC5vIGxpc3QubwogICMgLXJkeW5hbWljIGlzIG5lZWRlZCBzbyB0aGF0IHRoZSBhbGwgcGx1Z2luIGNhbiBhY2Nlc3MgdGhlIHN5bWJvbHMgZnJvbSBjb25zb2xlX3N3aXRjaC5vCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCBkNWQ4NGQ2Li4xMzAzNTk4IDEwMDc1NQogLS0tIGEvY29uZmlndXJlCiArKysgYi9jb25maWd1cmUKIEBAIC00NCw2ICs0NCw3IEBAIE9wdGlvbmFsIEZlYXR1cmVzOgpAQCAtMzYsNyArNTEsNyBAQAogICAgICBwYW18c2hhZG93KQogICAgICAgIGlmIFsgIiQyIiA9ICJ5ZXMiIF0gOyB0aGVuCiAgICAgICAgICBpZiBbIC1uICIkYXV0aF9tZXRob2QiIF0gJiYgWyAiJGF1dGhfbWV0aG9kIiAhPSAiJDEiIF0gOyB0aGVuCi1AQCAtMjMyLDYgKzIzMiw3IEBAIHNldF9kZWZhdWx0cygpIHsKK0BAIC0yMjgsNiArMjMyLDcgQEAgc2V0X2RlZmF1bHRzKCkgewogICAgQVVUSF9NRVRIT0Q9InBhbSIKICAgIEVOQUJMRV9ST09UX1BBU1NXT1JEPSJ5ZXMiCiAgICBFTkFCTEVfUExVR0lOUz0ieWVzIgpAQCAtNDQsOSArNTksNyBAQAogICAgU0NSSVBUUz0iIgogIAogICAgVkxPQ0tfR1JPVVA9InZsb2NrIgotQEAgLTM1NiwxMCArMzU2LDE0IEBAIEVOQUJMRV9QTFVHSU5TID0gJHtFTkFCTEVfUExVR0lOU30KLSAjIHdoaWNoIHBsdWdpbnMgc2hvdWxkIGJlIGJ1aWxkCi0gTU9EVUxFUyA9ICR7TU9EVUxFU30KK0BAIC0zNTMsNiArMzU4LDEwIEBAIE1PRFVMRVMgPSAke01PRFVMRVN9CiAgIyB3aGljaCBzY3JpcHRzIHNob3VsZCBiZSBpbnN0YWxsZWQKICBTQ1JJUFRTID0gJHtTQ1JJUFRTfQogIApAQCAtNTcsMTIgKzcwLDEyIEBACiAgIyByb290J3MgZ3JvdXAKICBST09UX0dST1VQID0gJHtST09UX0dST1VQfQogIAotICMgZ3JvdXAgZm9yIHByaXZpbGVnZWQgcGx1Z2lucwotIFZMT0NLX0dST1VQID0gJHtWTE9DS19HUk9VUH0KK2RpZmYgLS1naXQgYS9zcmMvdmxvY2stbWFpbi5jIGIvc3JjL3Zsb2NrLW1haW4uYworaW5kZXggMDA4ZjZmMC4uMTA4Y2U4YiAxMDA2NDQKIC0tLSBhL3NyYy92bG9jay1tYWluLmMKICsrKyBiL3NyYy92bG9jay1tYWluLmMKLUBAIC0xMTEsNyArMTExLDkgQEAgc3RhdGljIHZvaWQgcmVzdG9yZV90ZXJtaW5hbCh2b2lkKQotICAgKHZvaWQpIHRjc2V0YXR0cihTVERJTl9GSUxFTk8sIFRDU0FOT1csICZ0ZXJtKTsKK0BAIC0xMTIsNyArMTEyLDkgQEAgc3RhdGljIHZvaWQgcmVzdG9yZV90ZXJtaW5hbCh2b2lkKQorICAgKHZvaWQpIHRjc2V0YXR0cihTVERJTl9GSUxFTk8sIFRDU0FOT1csICZvbGRfdGVybSk7CiAgfQogIAogKyNpZmRlZiBFTkFCTEVfRkFJTF9DT1VOVApAQCAtNzEsNyArODQsNyBAQAogIAogIHN0YXRpYyB2b2lkIGF1dGhfbG9vcChjb25zdCBjaGFyICp1c2VybmFtZSkKICB7Ci1AQCAtMTgxLDcgKzE4Myw5IEBAIHN0YXRpYyB2b2lkIGF1dGhfbG9vcChjb25zdCBjaGFyICp1c2VybmEKK0BAIC0xODIsNyArMTg0LDkgQEAgc3RhdGljIHZvaWQgYXV0aF9sb29wKGNvbnN0IGNoYXIgKnVzZXJuYW1lKQogICAgICB9CiAgI2VuZGlmCiAgCkBAIC04MSw3ICs5NCw3IEBACiAgICB9CiAgCiAgICAvKiBGcmVlIHRpbWVvdXRzIG1lbW9yeS4gKi8KLUBAIC0xODksMTEgKzE5MywxMyBAQCBzdGF0aWMgdm9pZCBhdXRoX2xvb3AoY29uc3QgY2hhciAqdXNlcm5hCitAQCAtMTkwLDExICsxOTQsMTMgQEAgc3RhdGljIHZvaWQgYXV0aF9sb29wKGNvbnN0IGNoYXIgKnVzZXJuYW1lKQogICAgZnJlZShwcm9tcHRfdGltZW91dCk7CiAgfQogIApAQCAtOTUsNyArMTA4LDcgQEAKICAKICAjaWZkZWYgVVNFX1BMVUdJTlMKICBzdGF0aWMgdm9pZCBjYWxsX2VuZF9ob29rKHZvaWQpCi1AQCAtMjE2LDcgKzIyMiw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICpjb25zdCBhcmd2W10pCitAQCAtMjE3LDcgKzIyMyw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICpjb25zdCBhcmd2W10pCiAgICBpZiAodXNlcm5hbWUgPT0gTlVMTCkKICAgICAgZmF0YWxfcGVycm9yKCJ2bG9jazogY291bGQgbm90IGdldCB1c2VybmFtZSIpOwogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdmxvY2svdmxvY2stMi4yLjMvdmxvY2tfcGFtX3RhbGx5Ml9yZXNldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Zsb2NrL3Zsb2NrLTIuMi4zL3Zsb2NrX3BhbV90YWxseTJfcmVzZXQucGF0Y2gKaW5kZXggNGNlMGFiYy4uNDYwYjI5MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdmxvY2svdmxvY2stMi4yLjMvdmxvY2tfcGFtX3RhbGx5Ml9yZXNldC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92bG9jay92bG9jay0yLjIuMy92bG9ja19wYW1fdGFsbHkyX3Jlc2V0LnBhdGNoCkBAIC0xLDEzICsxLDIyIEBACitGcm9tIGZjZWM0ZTdmZTg5OWY4YzAwNzdiMzAwNGVlY2NiNzI5MmE5NDVhNjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxMzozNzo0MCArMDgwMAorU3ViamVjdDogW1BBVENIXSB2bG9jazogYWRkIG5ldyByZWNpcGUKKwogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIHdyaXR0ZW4gYnk6IEplZmYgUG9sayA8amVmZi5wb2xrQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgogCi1JbmRleDogdmxvY2stMi4yLjIvc3JjL2F1dGgtcGFtLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB2bG9jay0yLjIuMi5vcmlnL3NyYy9hdXRoLXBhbS5jCTIwMTAtMDYtMTQgMTQ6Mzg6NTEuMDAwMDAwMDAwIC0wNDAwCi0rKysgdmxvY2stMi4yLjIvc3JjL2F1dGgtcGFtLmMJMjAxMC0wNi0xNCAxNDozOToxMi4wMDAwMDAwMDAgLTA0MDAKLUBAIC0xNDgsNiArMTQ4LDkgQEAKKy0tLQorIHNyYy9hdXRoLXBhbS5jIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvYXV0aC1wYW0uYyBiL3NyYy9hdXRoLXBhbS5jCitpbmRleCA1Y2Y5M2Y2Li5jNWNjNjdhIDEwMDY0NAorLS0tIGEvc3JjL2F1dGgtcGFtLmMKKysrKyBiL3NyYy9hdXRoLXBhbS5jCitAQCAtMTQ4LDYgKzE0OCw5IEBAIGJvb2wgYXV0aChjb25zdCBjaGFyICp1c2VyLCBzdHJ1Y3QgdGltZXNwZWMgKnRpbWVvdXQpCiAgCiAgICBpZiAocGFtX3N0YXR1cyAhPSBQQU1fU1VDQ0VTUykgewogICAgICBmcHJpbnRmKHN0ZGVyciwgInZsb2NrOiAlc1xuIiwgcGFtX3N0cmVycm9yKHBhbWgsIHBhbV9zdGF0dXMpKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3pyYW0venJhbS9pbml0IGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvenJhbS96cmFtL2luaXQKaW5kZXggN2I2Y2JmNC4uYTJjOWMyMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvenJhbS96cmFtL2luaXQKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvenJhbS96cmFtL2luaXQKQEAgLTM0LDcgKzM0LDcgQEAKICAgICBtZW1fYnlfY3B1PSQoKCRtZW10b3RhbC8kbnVtX2NwdXMqJGZhY3Rvci8xMDAqMTAyNCkpCiAKICAgICAjIGxvYWQgZGVwZW5kZW5jeSBtb2R1bGVzCi0gICAgbW9kcHJvYmUgenJhbSB6cmFtX251bV9kZXZpY2VzPSRudW1fY3B1cworICAgIG1vZHByb2JlIHpyYW0gbnVtX2RldmljZXM9JG51bV9jcHVzCiAgICAgZWNobyAienJhbSBkZXZpY2VzIHByb2JlZCBzdWNjZXNzZnVsbHkiCiAKICAgICAjIGluaXRpYWxpemUgdGhlIGRldmljZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2F0ay9hdGttbV8yLjI0LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9hdGsvYXRrbW1fMi4yNC4yLmJiCmluZGV4IDMwYWM5MGEuLjMwNzc3NGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2F0ay9hdGttbV8yLjI0LjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvYXRrL2F0a21tXzIuMjQuMi5iYgpAQCAtNyw3ICs3LDkgQEAKIAogREVQRU5EUyA9ICJhdGsgZ2xpYm1tIgogCi1pbmhlcml0IGdub21lIGF1dG90b29scyBwa2djb25maWcKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGdub21lIGF1dG90b29scyBwa2djb25maWcKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAogU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZDUzYjYwYjBmMWJlNTk3ZTg2MDcwOTU0YTQ5Y2YwYzMiCiBTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJmZjk1Mzg1NzU5ZTJhZjIzODI4ZDQwNTYzNTZmMjUzNzZjZmFiYzQxZTY5MGFjMWRmMDU1MzcxNTM3ZTQ1OGJkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvZ25vbWUtY29tbW9uL2dub21lLWNvbW1vbl8zLjE4LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9nbm9tZS1jb21tb24vZ25vbWUtY29tbW9uXzMuMTguMC5iYgppbmRleCAwNmYzYmIzLi5kODc0MTY0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9nbm9tZS1jb21tb24vZ25vbWUtY29tbW9uXzMuMTguMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9nbm9tZS1jb21tb24vZ25vbWUtY29tbW9uXzMuMTguMC5iYgpAQCAtMTQsNiArMTQsMTAgQEAKIEVYVFJBX0FVVE9SRUNPTkYgPSAiIgogREVQRU5EUyA9ICIiCiAKKyMgRGVmYXVsdCB0byBlbmFibGUgYXV0b2NvbmYtYXJjaGl2ZSB0byBhdm9pZCBjb25mbGljdHMKK1BBQ0tBR0VDT05GSUcgPz89ICJhdXRvY29uZi1hcmNoaXZlIgorUEFDS0FHRUNPTkZJR1thdXRvY29uZi1hcmNoaXZlXSA9ICItLXdpdGgtYXV0b2NvbmYtYXJjaGl2ZSwgLS13aXRob3V0LWF1dG9jb25mLWFyY2hpdmUsIGF1dG9jb25mLWFyY2hpdmUiCisKIEZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2FjbG9jYWwiCiBGSUxFU18ke1BOfS1kZXYgPSAiIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGsrL2ZpbGVzLzAwMDEtZG8tbm90LWJ1aWxkLWRlbW9zLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvZ3RrKy9maWxlcy8wMDAxLWRvLW5vdC1idWlsZC1kZW1vcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzZlOTc5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvZ3RrKy9maWxlcy8wMDAxLWRvLW5vdC1idWlsZC1kZW1vcy5wYXRjaApAQCAtMCwwICsxLDUxIEBACitGcm9tIDY5MTRlY2NlZTM0Mzc2ZjkwNjdiMGVlOWYxNzAzOWZlMTgyMTI1ZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorRGF0ZTogU2F0LCAzMSBNYXIgMjAxOCAyMjoyOToxNiArMDIwMAorU3ViamVjdDogW1BBVENIXSBkbyBub3QgYnVpbGQgZGVtb3MKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVGhleSBhcmUgbm90IGluc3RhbGxlZCBhbnl3YXkgYW5kIGFkZCBsaWJlcG94eSBkZXBlbmRlbmN5CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gIHwgMyArKy0KKyBjb25maWd1cmUuYWMgfCAzIC0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggOTg0YjZhNy4uNmM3NTRhNiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTI4LDcgKzI4LDggQEAgZG9jX3N1YmRpcnMgPSBkb2NzCisgZWxzZQorIGRvY19zdWJkaXJzID0KKyBlbmRpZgorLVNVQkRJUlMgPSB0b29scyAkKHNyY19zdWJkaXJzKSBnZGsvZ2RrbW0gZ3RrL2d0a21tIHRlc3RzIGRlbW9zICQoZG9jX3N1YmRpcnMpCisrCisrU1VCRElSUyA9IHRvb2xzICQoc3JjX3N1YmRpcnMpIGdkay9nZGttbSBndGsvZ3RrbW0gdGVzdHMgJChkb2Nfc3ViZGlycykKKyAKKyBnZGttbV9pbmNsdWRlZGlyID0gJChpbmNsdWRlZGlyKS8kKEdES01NX01PRFVMRV9OQU1FKQorIGdka21tX2luY2x1ZGVfSEVBREVSUyA9IGdkay9nZGttbS5oCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBlNWU4MmRjLi5jMWM3NjU4IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMDksMTEgKzEwOSw4IEBAIEFTX0lGKFt0ZXN0ICJ4JGd0a21tX2VuYWJsZV9hcGlfYXRrbW0iICE9IHhub10sCisgICAgICAgW0dUS01NX01PRFVMRVM9ImF0a21tLTEuNiA+PSAyLjI0LjIgJEdUS01NX01PRFVMRVMiXSkKKyBBQ19TVUJTVChbR1RLTU1fTU9EVUxFU10pCisgCistQUNfU1VCU1QoW0dUS01NX0RFTU9TX0VYVFJBX01PRFVMRVNdLCBbJ2Vwb3h5ID49IDEuMiddKQorLQorIFBLR19DSEVDS19NT0RVTEVTKFtHREtNTV0sIFskR0RLTU1fTU9EVUxFU10pCisgUEtHX0NIRUNLX01PRFVMRVMoW0dUS01NXSwgWyRHVEtNTV9NT0RVTEVTXSkKKy1QS0dfQ0hFQ0tfTU9EVUxFUyhbR1RLTU1fREVNT1NfRVhUUkFdLCBbJEdUS01NX0RFTU9TX0VYVFJBX01PRFVMRVNdKQorIAorIE1NX1BLR19DT05GSUdfU1VCU1QoW0dUSFJFQURfQ0ZMQUdTXSwgWy0tY2ZsYWdzLW9ubHktb3RoZXIgZ3RocmVhZC0yLjBdKQorIE1NX1BLR19DT05GSUdfU1VCU1QoW0dUSFJFQURfTElCU10sIFstLWxpYnMgZ3RocmVhZC0yLjBdKQorLS0gCisyLjE0LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGttbTNfMy4yMi4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGttbTNfMy4yMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2YjU0ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGsrL2d0a21tM18zLjIyLjIuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJDKysgYmluZGluZ3MgZm9yIHRoZSBHVEsrIHRvb2xraXQgVjMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmd0a21tLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcudG9vbHM7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitERVBFTkRTID0gImF0a21tIHBhbmdvbW0gZ2xpYm1tIGd0ayszIGNhaXJvbW0iCisKK0JQTiA9ICJndGttbSIKKworaW5oZXJpdCBnbm9tZWJhc2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjg4M2U5MDQ2NzY4YjNhNWFmYzhlMzY1OTg4ODIzZTc3IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiOTFhZmQ5OGEzMTUxOTUzNmY1ZjM5N2MyZDc5Njk2ZTNkNTMxNDNiODBiNzU3Nzg1MjFjYTdiNDhjYjI4MDA5MCIKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWRvLW5vdC1idWlsZC1kZW1vcy5wYXRjaCIKKworRVhUUkFfT0VDT05GID0gIiAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyovaW5jbHVkZSAke2xpYmRpcn0vKi9wcm9jL200IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGttbV8yLjI0LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGsrL2d0a21tXzIuMjQuNS5iYgppbmRleCAxOTViYjIxLi5iNzgwZDA5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGsrL2d0a21tXzIuMjQuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9ndGsrL2d0a21tXzIuMjQuNS5iYgpAQCAtOCwxMiArOCwxMCBAQAogCiBERVBFTkRTID0gImF0a21tIHBhbmdvbW0gZ2xpYm1tIGd0aysgY2Fpcm9tbSIKIAotaW5oZXJpdCBnbm9tZSBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjaworaW5oZXJpdCBnbm9tZWJhc2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCiAKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKLUdOT01FX0NPTVBSRVNTX1RZUEUgPSAieHoiCi0KIFNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjZjNTlhZThiYmZmNDhmYWQ5MTMyZjIzYWYzNDdhY2YxIgogU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMDY4MGE1M2I3YmY5MGI0ZTRiZjQ0NGQxZDg5ZTZkZjQxYzc3N2UwYmFjYzk2ZTljMDlmYzRkZDJmNWZlNmI3MiIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGliZ2xhZGUvbGliZ2xhZGUtMi42LjQvMDAwMS1jb25maWd1cmUuaW4tcmVtb3ZlLWRlcHJlY2F0ZWQtR05PTUVfQ09NTU9OX0lOSVQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJnbGFkZS9saWJnbGFkZS0yLjYuNC8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtZGVwcmVjYXRlZC1HTk9NRV9DT01NT05fSU5JVC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDczODI3NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJnbGFkZS9saWJnbGFkZS0yLjYuNC8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtZGVwcmVjYXRlZC1HTk9NRV9DT01NT05fSU5JVC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gY2VlZmNiMTljZWJmOGJjM2Q0NWVlNTAyZjhlYWJkM2JjNWJkMGFhYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLURhdGU6IFNhdCwgMTEgRmViIDIwMTcgMTY6NDI6MTIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmluOiByZW1vdmUgZGVwcmVjYXRlZCBHTk9NRV9DT01NT05fSU5JVAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmluIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggODkwNWYxYy4uMzkwMTM5OCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMTUsNyArMTUsNiBAQCBBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmhdKQotIAotIEFNX0lOSVRfQVVUT01BS0UoWzEuOSBuby1kaXN0LWd6aXAgZGlzdC1iemlwMl0pCi0gCi0tR05PTUVfQ09NTU9OX0lOSVQKLSAKLSBpZiB0ZXN0ICIkZW5hYmxlX2RlYnVnIiAhPSAibm8iOyB0aGVuCi0gICBBQ19ERUZJTkUoW0RFQlVHXSxbMV0sW2VuYWJsZSB1c2Ugb2YgTElCR0xBREVfREVCVUcgZW52aXJvbm1lbnQgdmFyaWFibGVdKQotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJnbGFkZS9saWJnbGFkZS0yLjYuNC9nbGFkZS1jcnVmdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYmdsYWRlL2xpYmdsYWRlLTIuNi40L2dsYWRlLWNydWZ0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWQ1ODY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYmdsYWRlL2xpYmdsYWRlLTIuNi40L2dsYWRlLWNydWZ0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1kaWZmIC11ciBsaWJnbGFkZS0yLjQuMH4vY29uZmlndXJlLmluIGxpYmdsYWRlLTIuNC4wL2NvbmZpZ3VyZS5pbgotLS0tIGxpYmdsYWRlLTIuNC4wfi9jb25maWd1cmUuaW4JMjAwNC0wNS0xNyAxMjozODozMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBsaWJnbGFkZS0yLjQuMC9jb25maWd1cmUuaW4JMjAwNC0wNy0yOCAxNjo1MzowOS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xNDcsNiArMTQ3LDE4IEBACi0gQU1fQ09ORElUSU9OQUwoSEFWRV9QWVRIT04sICRoYXZlX3B5dGhvbikKLSBBQ19TVUJTVChQWVRIT04pCi0gCi0rQUNfTVNHX0NIRUNLSU5HKFtmb3IgY3J1ZnQgaW4gbGliZ3RrXSkKLStBQ19UUllfTElOSyhbCi0rI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLStdLCAgICAgIFsgZ3RrX3RyZWVfZ2V0X3R5cGUgKCk7IHJldHVybiAwOyBdLAotKyAgICAgICAgWyBBQ19NU0dfUkVTVUxUKHllcykKLSsgICAgICAgICAgaGF2ZV9jcnVmdD15ZXMgXSwKLSsgICAgICAgIFsgQUNfTVNHX1JFU1VMVChubykKLSsJICBBQ19ERUZJTkUoRElTQUJMRV9DUlVGVCwsW2xlYXZlIG91dCBzdXBwb3J0IGZvciBvbGQsIGJyb2tlbiB3aWRnZXRzXSkKLSsgICAgICAgICAgaGF2ZV9jcnVmdD1ubyBdKQotK0FDX1NVQlNUKERJU0FCTEVfQ1JVRlQpCi0rCi0gZG5sIGFkZCBkZWJ1Z2dpbmcgb3B0aW9ucyAuLi4KLSBjaGFuZ2VxdW90ZSgsKWRubAotIGlmIHRlc3QgIngkR0NDIiA9IHh5ZXM7IHRoZW4KLU9ubHkgaW4gbGliZ2xhZGUtMi40LjA6IGNvbmZpZ3VyZS5pbi5vcmlnCi1kaWZmIC11ciBsaWJnbGFkZS0yLjQuMH4vZ2xhZGUvZ2xhZGUtZ3RrLmMgbGliZ2xhZGUtMi40LjAvZ2xhZGUvZ2xhZGUtZ3RrLmMKLS0tLSBsaWJnbGFkZS0yLjQuMH4vZ2xhZGUvZ2xhZGUtZ3RrLmMJMjAwNC0wMy0xMyAxMzo0NzozNS4wMDAwMDAwMDAgKzAwMDAKLSsrKyBsaWJnbGFkZS0yLjQuMC9nbGFkZS9nbGFkZS1ndGsuYwkyMDA0LTA3LTI4IDE2OjUzOjUyLjAwMDAwMDAwMCArMDEwMAotQEAgLTIxMyw2ICsyMTMsOCBAQAotIAlndGtfY2xpc3RfY29sdW1uX3RpdGxlc19oaWRlIChHVEtfQ0xJU1QgKHcpKTsKLSB9Ci0gCi0rI2lmbmRlZiBESVNBQkxFX0NSVUZUCi0rCi0gc3RhdGljIHZvaWQKLSB0cmVlX3NldF9zZWxlY3Rpb25fbW9kZSAoR2xhZGVYTUwgKnhtbCwgR3RrV2lkZ2V0ICp3LAotIAkJCSBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKLUBAIC0yMzgsNiArMjQwLDggQEAKLSAgICAgZ3RrX3RyZWVfc2V0X3ZpZXdfbGluZXMgKEdUS19UUkVFICh3KSwgQk9PTCAodmFsdWUpKTsKLSB9Ci0gCi0rI2VuZGlmCi0rCi0gc3RhdGljIHZvaWQKLSBsaXN0X3NldF9zZWxlY3Rpb25fbW9kZSAoR2xhZGVYTUwgKnhtbCwgR3RrV2lkZ2V0ICp3LAotIAkJCSBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKLUBAIC0yNTQsNiArMjU4LDcgQEAKLSAgICAgZ3RrX2NoZWNrX21lbnVfaXRlbV9zZXRfc2hvd190b2dnbGUgKEdUS19DSEVDS19NRU5VX0lURU0gKHcpLCBCT09MICh2YWx1ZSkpOwotIH0KLSAKLSsjaWZuZGVmIERJU0FCTEVfQ1JVRlQKLSBzdGF0aWMgdm9pZAotIHRleHRfc2V0X3RleHQgKEdsYWRlWE1MICp4bWwsIEd0a1dpZGdldCAqdywKLSAJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQotQEAgLTI2Miw2ICsyNjcsNyBAQAotIAotICAgICBndGtfZWRpdGFibGVfaW5zZXJ0X3RleHQgKEdUS19FRElUQUJMRSAodyksIHZhbHVlLCAtMSwgJnBvcyk7Ci0gfQotKyNlbmRpZgotIAotIHN0YXRpYyB2b2lkCi0gcmFkaW9fbWVudV9pdGVtX3NldF9ncm91cCAoR2xhZGVYTUwgKnhtbCwgR3RrV2lkZ2V0ICp3LAotQEAgLTExMjUsMTMgKzExMzEsMTcgQEAKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfY3VzdG9tX3Byb3AgKEdUS19UWVBFX0NMSVNULCAic2VsZWN0aW9uX21vZGUiLCBjbGlzdF9zZXRfc2VsZWN0aW9uX21vZGUpOwotICAgICBnbGFkZV9yZWdpc3Rlcl9jdXN0b21fcHJvcCAoR1RLX1RZUEVfQ0xJU1QsICJzaGFkb3dfdHlwZSIsIGNsaXN0X3NldF9zaGFkb3dfdHlwZSk7Ci0gICAgIGdsYWRlX3JlZ2lzdGVyX2N1c3RvbV9wcm9wIChHVEtfVFlQRV9DTElTVCwgInNob3dfdGl0bGVzIiwgY2xpc3Rfc2V0X3Nob3dfdGl0bGVzKTsKLSsjaWZuZGVmIERJU0FCTEVfQ1JVRlQKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfY3VzdG9tX3Byb3AgKEdUS19UWVBFX1RSRUUsICJzZWxlY3Rpb25fbW9kZSIsIHRyZWVfc2V0X3NlbGVjdGlvbl9tb2RlKTsKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfY3VzdG9tX3Byb3AgKEdUS19UWVBFX1RSRUUsICJ2aWV3X21vZGUiLCB0cmVlX3NldF92aWV3X21vZGUpOwotICAgICBnbGFkZV9yZWdpc3Rlcl9jdXN0b21fcHJvcCAoR1RLX1RZUEVfVFJFRSwgInZpZXdfbGluZSIsIHRyZWVfc2V0X3ZpZXdfbGluZSk7Ci0rI2VuZGlmCi0gICAgIGdsYWRlX3JlZ2lzdGVyX2N1c3RvbV9wcm9wIChHVEtfVFlQRV9MSVNULCAic2VsZWN0aW9uX21vZGUiLCBsaXN0X3NldF9zZWxlY3Rpb25fbW9kZSk7Ci0gICAgIGdsYWRlX3JlZ2lzdGVyX2N1c3RvbV9wcm9wIChHVEtfVFlQRV9DSEVDS19NRU5VX0lURU0sICJhbHdheXNfc2hvd190b2dnbGUiLAotIAkJCQljaGVja19tZW51X2l0ZW1fc2V0X2Fsd2F5c19zaG93X3RvZ2dsZSk7Ci0rI2lmbmRlZiBESVNBQkxFX0NSVUZUCi0gICAgIGdsYWRlX3JlZ2lzdGVyX2N1c3RvbV9wcm9wIChHVEtfVFlQRV9URVhULCAidGV4dCIsIHRleHRfc2V0X3RleHQpOwotKyNlbmRpZgotICAgICBnbGFkZV9yZWdpc3Rlcl9jdXN0b21fcHJvcCAoR1RLX1RZUEVfUkFESU9fTUVOVV9JVEVNLCAiZ3JvdXAiLAotIAkJCQlyYWRpb19tZW51X2l0ZW1fc2V0X2dyb3VwKTsKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfY3VzdG9tX3Byb3AgKEdUS19UWVBFX1RPT0xCQVIsICJ0b29sdGlwcyIsIHRvb2xiYXJfc2V0X3Rvb2x0aXBzKTsKLUBAIC0xMjg4LDggKzEyOTgsMTAgQEAKLSAJCQkgICBnbGFkZV9zdGFuZGFyZF9idWlsZF9jaGlsZHJlbiwgTlVMTCk7Ci0gICAgIGdsYWRlX3JlZ2lzdGVyX3dpZGdldCAoR1RLX1RZUEVfVEVBUk9GRl9NRU5VX0lURU0sIGdsYWRlX3N0YW5kYXJkX2J1aWxkX3dpZGdldCwKLSAJCQkgICBOVUxMLCBOVUxMKTsKLSsjaWZuZGVmIERJU0FCTEVfQ1JVRlQKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfd2lkZ2V0IChHVEtfVFlQRV9URVhULCBnbGFkZV9zdGFuZGFyZF9idWlsZF93aWRnZXQsCi0gCQkJICAgTlVMTCwgTlVMTCk7Ci0rI2VuZGlmCi0gICAgIGdsYWRlX3JlZ2lzdGVyX3dpZGdldCAoR1RLX1RZUEVfVEVYVF9WSUVXLCBnbGFkZV9zdGFuZGFyZF9idWlsZF93aWRnZXQsCi0gCQkJICAgTlVMTCwgTlVMTCk7Ci0gICAgIGdsYWRlX3JlZ2lzdGVyX3dpZGdldCAoR1RLX1RZUEVfVElQU19RVUVSWSwgZ2xhZGVfc3RhbmRhcmRfYnVpbGRfd2lkZ2V0LAotQEAgLTEzMDQsOCArMTMxNiwxMCBAQAotIAkJCSAgIGdsYWRlX3N0YW5kYXJkX2J1aWxkX2NoaWxkcmVuLCBOVUxMKTsKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfd2lkZ2V0IChHVEtfVFlQRV9UT09MX0JVVFRPTiwgZ2xhZGVfc3RhbmRhcmRfYnVpbGRfd2lkZ2V0LAotIAkJCSAgIE5VTEwsIE5VTEwpOwotKyNpZm5kZWYgRElTQUJMRV9DUlVGVAotICAgICBnbGFkZV9yZWdpc3Rlcl93aWRnZXQgKEdUS19UWVBFX1RSRUUsIGdsYWRlX3N0YW5kYXJkX2J1aWxkX3dpZGdldCwKLSAJCQkgICBOVUxMLCBOVUxMKTsKLSsjZW5kaWYKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfd2lkZ2V0IChHVEtfVFlQRV9UUkVFX1ZJRVcsIGdsYWRlX3N0YW5kYXJkX2J1aWxkX3dpZGdldCwKLSAJCQkgICBOVUxMLCBOVUxMKTsKLSAgICAgZ2xhZGVfcmVnaXN0ZXJfd2lkZ2V0IChHVEtfVFlQRV9WQlVUVE9OX0JPWCwgZ2xhZGVfc3RhbmRhcmRfYnVpbGRfd2lkZ2V0LApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGliZ2xhZGUvbGliZ2xhZGUtMi42LjQvbm8teG1sMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYmdsYWRlL2xpYmdsYWRlLTIuNi40L25vLXhtbDIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjNGMwOTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGliZ2xhZGUvbGliZ2xhZGUtMi42LjQvbm8teG1sMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwMSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLWRpZmYgLXVyTiBsaWJnbGFkZS0yLjQuMi5vcmlnL2NvbmZpZ3VyZS5pbiBsaWJnbGFkZS0yLjQuMi9jb25maWd1cmUuaW4KLS0tLSBsaWJnbGFkZS0yLjQuMi5vcmlnL2NvbmZpZ3VyZS5pbgkyMDA1LTAyLTExIDEyOjQyOjU4LjAwMDAwMDAwMCArMDEwMAotKysrIGxpYmdsYWRlLTIuNC4yL2NvbmZpZ3VyZS5pbgkyMDA1LTAzLTIyIDAxOjIyOjAwLjAwMDAwMDAwMCArMDEwMAotQEAgLTUyLDExICs1MiwzMyBAQAotIEFDX1BBVEhfUFJPRyhQS0dfQ09ORklHLCBwa2ctY29uZmlnLCBubykKLSAKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJHTEFERSwgW2RubAotLSAgbGlieG1sLTIuMCA+PSByZXF1aXJlZF9saWJ4bWxfdmVyc2lvbiBkbmwKLSAgIGF0ayA+PSByZXF1aXJlZF9hdGtfdmVyc2lvbiBkbmwKLSAgIGd0aystMi4wID49IHJlcXVpcmVkX2d0a192ZXJzaW9uIGRubAotICAgZ2xpYi0yLjAgPj0gcmVxdWlyZWRfZ2xpYl92ZXJzaW9uXSkKLSAKLStkaXNhYmxlX3htbDI9bm8KLStBQ19BUkdfV0lUSChbbGlieG1sMl0sCi0rICBBQ19IRUxQX1NUUklORyhbLS13aXRob3V0LWxpYnhtbDJdLCBbRG9uJ3QgdXNlIGxpYnhtbDIsIHVzZSBHbGliJ3MgR01hcmt1cFBhcnNlciBpbnN0ZWFkXSksCi0rICBbZGlzYWJsZV94bWwyPXllc10sCi0rICBbZGlzYWJsZV94bWwyPW5vXSkKLSsKLStBQ19NU0dfQ0hFQ0tJTkcoW2lmIHdlIGFyZSB1c2luZyBsaWJ4bWwyXSkKLStpZiB0ZXN0ICJ4JGRpc2FibGVfeG1sMiIgPT0gInhubyI7IHRoZW4KLSsgIEFDX01TR19SRVNVTFQoeWVzKQotKyAgUEtHX0NIRUNLX01PRFVMRVMoWE1MMiwgbGlieG1sLTIuMCA+PSAyLjQuMTApCi0rICBQS0dDRkdfUkVRVUlSRV9MSUJYTUwyPSJsaWJ4bWwtMi4wIgotKyAgTElCR0xBREVfQ0ZMQUdTPSIkTElCR0xBREVfQ0ZMQUdTICRYTUwyX0NGTEFHUyIKLSsgIExJQkdMQURFX0xJQlM9IiRMSUJHTEFERV9MSUJTICRYTUwyX0xJQlMiCi0rZWxzZQotKyAgTElCR0xBREVfQ0ZMQUdTPSIkTElCR0xBREVfQ0ZMQUdTIC1EVVNFX0dNQVJLVVBfUEFSU0VSIgotKyAgUEtHQ0ZHX1JFUVVJUkVfTElCWE1MMj0iIgotKyAgQUNfTVNHX1JFU1VMVChubykKLStmaQotKwotK0FDX1NVQlNUKFhNTDJfTElCUykKLStBQ19TVUJTVChYTUwyX0NGTEFHUykKLStBQ19TVUJTVChQS0dDRkdfUkVRVUlSRV9MSUJYTUwyKQotKwotIEFDX01TR19DSEVDS0lORyhbZm9yIG5hdGl2ZSBXaW4zMl0pCi0gY2FzZSAiJGhvc3QiIGluCi0gICAqLSotbWluZ3cqKQotQEAgLTExNiw2ICsxMzgsMjEgQEAKLSAgIGZpCi0gZmkKLSAKLStpZiB0ZXN0ICJ4JGRpc2FibGVfeG1sMiIgPT0gInh5ZXMiOyB0aGVuCi0rICBlY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKLSsgIGVjaG8gIiAgWW91IGNob3NlIHRvIGRpc2FibGUgbGlieG1sMiBhbmQgdXNlIEdsaWIncyIKLSsgIGVjaG8gIiAgR01hcmt1cFBhcnNlciBpbnN0ZWFkLiIgCi0rICBlY2hvICAKLSsgIGVjaG8gIiAgUGxlYXNlIGJlYXIgaW4gbWluZCB0aGF0IHVzaW5nIGxpYmdsYWRlIHdpdGgiCi0rICBlY2hvICIgIEdNYXJrdXBQYXJzZXIgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgb25seS4iCi0rICBlY2hvCi0rICBlY2hvICIgIFBsZWFzZSBwb3N0IHByb2JsZW1zIG9yIHN1Y2Nlc3Mgc3RvcmllcyB0byIKLSsgIGVjaG8gIiAgdGhlIGdsYWRlLWRldmVsIG1haWxpbmcgbGlzdC4gVGhhbmsgeW91LiIKLSsgIGVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgotK2ZpCi0rCi0rCi0rCi0gR1RLX0RPQ19DSEVDSygxLjApCi0gCi0gZG5sIGdldHRleHQgc3R1ZmYgLi4uIHRoZXJlIGlzIG5vIG1lc3NhZ2UgY2F0YWxvZyBmb3IgbGliZ2xhZGUgLS0gbGliZ2xhZGUKLWRpZmYgLXVyTiBsaWJnbGFkZS0yLjQuMi5vcmlnL2dsYWRlL2dsYWRlLXBhcnNlci5jIGxpYmdsYWRlLTIuNC4yL2dsYWRlL2dsYWRlLXBhcnNlci5jCi0tLS0gbGliZ2xhZGUtMi40LjIub3JpZy9nbGFkZS9nbGFkZS1wYXJzZXIuYwkyMDA0LTExLTExIDExOjU2OjEzLjAwMDAwMDAwMCArMDEwMAotKysrIGxpYmdsYWRlLTIuNC4yL2dsYWRlL2dsYWRlLXBhcnNlci5jCTIwMDUtMDMtMjIgMDE6MjA6MDAuMDAwMDAwMDAwICswMTAwCi1AQCAtMzQsNyArMzQsMTUgQEAKLSAjICBkZWZpbmUgZGdldHRleHQoRG9tYWluLCBTdHJpbmcpIChTdHJpbmcpCi0gI2VuZGlmCi0gCi0tI2luY2x1ZGUgPGxpYnhtbC9wYXJzZXIuaD4KLSsjaWZkZWYgVVNFX0dNQVJLVVBfUEFSU0VSCi0rIyAgaW5jbHVkZSA8emxpYi5oPgotKyNlbHNlCi0rIyAgaW5jbHVkZSA8bGlieG1sL3BhcnNlci5oPgotKyNlbmRpZgotKwotKyNpZmRlZiBVU0VfR01BUktVUF9QQVJTRVIKLSsjICBkZWZpbmUgeG1sQ2hhciBnY2hhcgotKyNlbmRpZgotIAotICNpbmNsdWRlICJnbGFkZS1wYXJzZXIuaCIKLSAjaW5jbHVkZSAiZ2xhZGUtcHJpdmF0ZS5oIgotQEAgLTUwOCw3ICs1MTYsOSBAQAotICAgICBjYXNlIFBBUlNFUl9TVEFSVDoKLSAJaWYgKCFzdHJjbXAobmFtZSwgImdsYWRlLWludGVyZmFjZSIpKSB7Ci0gCSAgICBzdGF0ZS0+c3RhdGUgPSBQQVJTRVJfR0xBREVfSU5URVJGQUNFOwotLSNpZiAwCi0rCi0rI2lmbmRlZiBVU0VfR01BUktVUF9QQVJTRVIKLSsgI2lmIDAKLSAJICAgIC8qIGNoZWNrIGZvciBjb3JyZWN0IFhNTCBuYW1lc3BhY2UgKi8KLSAJICAgIGZvciAoaSA9IDA7IGF0dHJzICYmIGF0dHJzW2ldICE9IE5VTEw7IGkgKz0gMikgewotIAkJaWYgKCFzdHJjbXAoYXR0cnNbaV0sICJ4bWxucyIpICYmCi1AQCAtNTE4LDcgKzUyOCw5IEBACi0gCQkgICAgZ193YXJuaW5nKCJ1bmtub3duIGF0dHJpYnV0ZSBgJXMnIGZvciA8Z2xhZGUtaW50ZXJmYWNlPiIsCi0gCQkJICAgICAgYXR0cnNbaV0pOwotIAkgICAgfQotKyAjZW5kaWYKLSAjZW5kaWYKLSsKLSAJfSBlbHNlIHsKLSAJICAgIGdfd2FybmluZygiRXhwZWN0ZWQgPGdsYWRlLWludGVyZmFjZT4uICBHb3QgPCVzPi4iLCBuYW1lKTsKLSAJICAgIHN0YXRlLT5wcmV2X3N0YXRlID0gc3RhdGUtPnN0YXRlOwotQEAgLTEwNjMsMTIgKzEwNzUsMTggQEAKLSAgICAgfQotIH0KLSAKLSsjaWZuZGVmIFVTRV9HTUFSS1VQX1BBUlNFUgotKwotIHN0YXRpYyB4bWxFbnRpdHlQdHIKLSBnbGFkZV9wYXJzZXJfZ2V0X2VudGl0eShHbGFkZVBhcnNlU3RhdGUgKnN0YXRlLCBjb25zdCB4bWxDaGFyICpuYW1lKQotIHsKLSAgICAgcmV0dXJuIHhtbEdldFByZWRlZmluZWRFbnRpdHkobmFtZSk7Ci0gfQotIAotKyNlbmRpZiAvKiAhZGVmaW5lZChVU0VfR01BUktVUF9QQVJTRVIpICovCi0rCi0rI2lmbmRlZiBVU0VfR01BUktVUF9QQVJTRVIKLSsKLSBzdGF0aWMgdm9pZAotIGdsYWRlX3BhcnNlcl93YXJuaW5nKEdsYWRlUGFyc2VTdGF0ZSAqc3RhdGUsIGNvbnN0IGNoYXIgKm1zZywgLi4uKQotIHsKLUBAIC0xMDc5LDYgKzEwOTcsMTAgQEAKLSAgICAgdmFfZW5kKGFyZ3MpOwotIH0KLSAKLSsjZW5kaWYgLyogIWRlZmluZWQoVVNFX0dNQVJLVVBfUEFSU0VSKSAqLwotKwotKyNpZm5kZWYgVVNFX0dNQVJLVVBfUEFSU0VSCi0rCi0gc3RhdGljIHZvaWQKLSBnbGFkZV9wYXJzZXJfZXJyb3IoR2xhZGVQYXJzZVN0YXRlICpzdGF0ZSwgY29uc3QgY2hhciAqbXNnLCAuLi4pCi0gewotQEAgLTEwODksNiArMTExMSwxMCBAQAotICAgICB2YV9lbmQoYXJncyk7Ci0gfQotIAotKyNlbmRpZiAvKiAhZGVmaW5lZChVU0VfR01BUktVUF9QQVJTRVIpICovCi0rCi0rI2lmbmRlZiBVU0VfR01BUktVUF9QQVJTRVIKLSsKLSBzdGF0aWMgdm9pZAotIGdsYWRlX3BhcnNlcl9mYXRhbF9lcnJvcihHbGFkZVBhcnNlU3RhdGUgKnN0YXRlLCBjb25zdCBjaGFyICptc2csIC4uLikKLSB7Ci1AQCAtMTA5OSw2ICsxMTI1LDEwIEBACi0gICAgIHZhX2VuZChhcmdzKTsKLSB9Ci0gCi0rI2VuZGlmIC8qICFkZWZpbmVkKFVTRV9HTUFSS1VQX1BBUlNFUikgKi8KLSsKLSsjaWZuZGVmIFVTRV9HTUFSS1VQX1BBUlNFUgotKwotIHN0YXRpYyB4bWxTQVhIYW5kbGVyIGdsYWRlX3BhcnNlciA9IHsKLSAgICAgKGludGVybmFsU3Vic2V0U0FYRnVuYylOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogaW50ZXJuYWxTdWJzZXQgKi8KLSAgICAgKGlzU3RhbmRhbG9uZVNBWEZ1bmMpTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXNTdGFuZGFsb25lICovCi1AQCAtMTEyNiw2ICsxMTU2LDgyIEBACi0gICAgIChmYXRhbEVycm9yU0FYRnVuYylnbGFkZV9wYXJzZXJfZmF0YWxfZXJyb3IsICAgICAgIC8qIGZhdGFsRXJyb3IgKi8KLSB9OwotIAotKyNlbHNlIC8qIFVTRV9HTUFSS1VQX1BBUlNFUiAqLwotKwotK3N0YXRpYyB2b2lkCi0rZ2xhZGVfcGFyc2VyX3N0YXJ0X2VsZW1lbnRfd3JhcHBlcihHTWFya3VwUGFyc2VDb250ZXh0ICpjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAqbmFtZSwgCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgKiphdHRyX25hbWVzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICoqYXR0cl92YWx1ZXMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgICBzdGF0ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAqKmVycm9yKQotK3sKLSsgICAgZ3VpbnQgaSA9IDA7Ci0rCi0rICAgIC8qIFBhY2sgYXR0cmlidXRlIG5hbWVzL3ZhbHVlcyBmcm9tIHR3byBzZXBhcmF0ZQotKyAgICAgKiAgYXJyYXlzIChHTWFya3VwUGFyc2VyIHN0eWxlKSBpbnRvIG9uZSBzaW5nbGUKLSsgICAgICogIGFycmF5IChsaWJ4bWwgU0FYUGFyc2VyIHN0eWxlKS4gVGhpcyBpcyBub3QKLSsgICAgICogIHZlcnkgZWZmaWNpZW50LCBidXQgd2UgZG8gaXQgdG8gbWFrZSB0aGUKLSsgICAgICogIEdNYXJrdXBQYXJzZXIgY29kZSBhcyBsaXR0bGUgaW52YXNpdmUgYXMKLSsgICAgICogIHBvc3NpYmxlLiAqLwotKwotKyAgICB3aGlsZSAoYXR0cl9uYW1lc1tpXSAhPSBOVUxMKSB7Ci0rICAgICAgKytpOwotKyAgICB9Ci0rCi0rICAgIGlmICgxKQotKyAgICB7Ci0rICAgICAgICBjb25zdCBnY2hhciAqYXR0clsoaSoyKSsxXTsKLSsgICAgICAgIGd1aW50IGosIGs7Ci0rICAgICAgIAotKyAgICAgICAgZm9yIChqPTAsIGs9MDsgIGsgPCBpOyAgaiArPSAyKQotKyAgICAgICAgewotKyAgICAgICAgICAgIGF0dHJbal0gPSBhdHRyX25hbWVzW2tdOwotKyAgICAgICAgICAgIGF0dHJbaisxXSA9IGF0dHJfdmFsdWVzW2tdOwotKyAgICAgICAgICAgICsrazsKLSsgICAgICAgIH0KLSsgICAgICAgIGF0dHJbaSoyXSA9IE5VTEw7Ci0rCi0rICAgICAgICBnbGFkZV9wYXJzZXJfc3RhcnRfZWxlbWVudCgoR2xhZGVQYXJzZVN0YXRlKilzdGF0ZSwgbmFtZSwgYXR0cik7Ci0rICAgIH0KLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnbGFkZV9wYXJzZXJfZW5kX2VsZW1lbnRfd3JhcHBlcihHTWFya3VwUGFyc2VDb250ZXh0ICpjb250ZXh0LCAKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICpuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgIHN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAqKmVycikKLSt7Ci0rICAgIGdsYWRlX3BhcnNlcl9lbmRfZWxlbWVudCgoR2xhZGVQYXJzZVN0YXRlKilzdGF0ZSwgbmFtZSk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ2xhZGVfcGFyc2VyX2NoYXJhY3RlcnNfd3JhcHBlcihHTWFya3VwUGFyc2VDb250ZXh0ICpjb250ZXh0LCAKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgKmNoYXJzLCAKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzaXplICAgICAgICAgICAgICAgIGxlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgIHN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICoqZXJyKQotK3sKLSsgICAgZ2xhZGVfcGFyc2VyX2NoYXJhY3RlcnMoKEdsYWRlUGFyc2VTdGF0ZSopc3RhdGUsIGNoYXJzLCAoaW50KSBsZW4pOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2dsYWRlX3BhcnNlcl9lcnJvcihHTWFya3VwUGFyc2VDb250ZXh0ICpjb250ZXh0LCBHRXJyb3IgKmVyciwgZ3BvaW50ZXIgZGF0YSkKLSt7Ci0rICAgIGdfbG9nKCJHbGFkZS1QYXJzZXIiLCBHX0xPR19MRVZFTF9DUklUSUNBTCwgIiVzIiwgZXJyLT5tZXNzYWdlKTsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IEdNYXJrdXBQYXJzZXIgICBnbGFkZV9wYXJzZXIgPSB7Ci0rICAgIGdsYWRlX3BhcnNlcl9zdGFydF9lbGVtZW50X3dyYXBwZXIsICAvKiBlbGVtZW50IG9wZW4gICAqLwotKyAgICBnbGFkZV9wYXJzZXJfZW5kX2VsZW1lbnRfd3JhcHBlciwgICAgLyogZWxlbWVudCBjbG9zZSAgKi8KLSsgICAgZ2xhZGVfcGFyc2VyX2NoYXJhY3RlcnNfd3JhcHBlciwgICAgIC8qIHRleHQgY29udGVudCAgICovCi0rICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwYXNzdGhyb3VnaCAgICAqLwotKyAgICBnbGFkZV9wYXJzZXJfZXJyb3IsICAgICAgICAgICAgICAgICAgLyogcGFyc2UgZXJyb3IgICAgKi8KLSt9OwotKwotKyNlbmRpZiAvKiBVU0VfR01BUktVUF9QQVJTRVIgKi8KLSsKLSsKLSBzdGF0aWMgdm9pZAotIHdpZGdldF9pbmZvX2ZyZWUoR2xhZGVXaWRnZXRJbmZvICppbmZvKQotIHsKLUBAIC0xMTkxLDYgKzEyOTcsOSBAQAotICAqCi0gICogUmV0dXJuczogdGhlIEdsYWRlSW50ZXJmYWNlIHN0cnVjdHVyZSBmb3IgdGhlIFhNTCBmaWxlLgotICAqLwotKwotKyNpZm5kZWYgVVNFX0dNQVJLVVBfUEFSU0VSCi0rCi0gR2xhZGVJbnRlcmZhY2UgKgotIGdsYWRlX3BhcnNlcl9wYXJzZV9maWxlKGNvbnN0IGdjaGFyICpmaWxlLCBjb25zdCBnY2hhciAqZG9tYWluKQotIHsKLUBAIC0xMjIyLDYgKzEzMzEsMzEgQEAKLSAgICAgcmV0dXJuIHN0YXRlLmludGVyZmFjZTsKLSB9Ci0gCi0rI2Vsc2UgLyogZGVmaW5lZChVU0VfR01BUktVUF9QQVJTRVIpICovCi0rCi0rR2xhZGVJbnRlcmZhY2UgKgotK2dsYWRlX3BhcnNlcl9wYXJzZV9maWxlKGNvbnN0IGdjaGFyICpmaWxlLCBjb25zdCBnY2hhciAqZG9tYWluKQotK3sKLSsgICAgR2xhZGVJbnRlcmZhY2UgICppbnRlcmZhY2U7Ci0rICAgIEdFcnJvciAgICAgICAgICAqZXJyICAgICA9IE5VTEw7Ci0rICAgIGdjaGFyICAgICAgICAgICAqY29udGVudCA9IE5VTEw7Ci0rICAgIGdzaXplICAgICAgICAgICAgY2xlbjsKLSsKLSsgICAgaWYgKCFnX2ZpbGVfZ2V0X2NvbnRlbnRzKGZpbGUsICZjb250ZW50LCAmY2xlbiwgJmVycikpIHsKLSsgICAgICAgIGdfd2FybmluZygiY291bGQgbm90IGxvYWQgZ2xhZGUgZmlsZTogJXMiLCBlcnItPm1lc3NhZ2UpOwotKyAgICAgICAgZ19lcnJvcl9mcmVlKGVycik7Ci0rICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotKyAgICBpbnRlcmZhY2UgPSBnbGFkZV9wYXJzZXJfcGFyc2VfYnVmZmVyKGNvbnRlbnQsIChnaW50KSBjbGVuLCBkb21haW4pOwotKwotKyAgICBnX2ZyZWUoY29udGVudCk7Ci0rCi0rICAgIHJldHVybiBpbnRlcmZhY2U7Ci0rfQotKwotKyNlbmRpZiAvKiBVU0VfR01BUktVUF9QQVJTRVIgKi8KLSsKLSAvKioKLSAgKiBnbGFkZV9wYXJzZXJfcGFyc2VfYnVmZmVyCi0gICogQGJ1ZmZlcjogYSBidWZmZXIgaW4gbWVtb3J5IGNvbnRhaW5pbmcgWE1MIGRhdGEuCi1AQCAtMTIzNyw2ICsxMzcxLDkgQEAKLSAgKgotICAqIFJldHVybnM6IHRoZSBHbGFkZUludGVyZmFjZSBzdHJ1Y3R1cmUgZm9yIHRoZSBYTUwgYnVmZmVyLgotICAqLwotKwotKyNpZm5kZWYgVVNFX0dNQVJLVVBfUEFSU0VSCi0rCi0gR2xhZGVJbnRlcmZhY2UgKgotIGdsYWRlX3BhcnNlcl9wYXJzZV9idWZmZXIoY29uc3QgZ2NoYXIgKmJ1ZmZlciwgZ2ludCBsZW4sIGNvbnN0IGdjaGFyICpkb21haW4pCi0gewotQEAgLTEyNjMsNiArMTQwMCwxNjEgQEAKLSAgICAgcmV0dXJuIHN0YXRlLmludGVyZmFjZTsKLSB9Ci0gCi0rI2Vsc2UgLyogZGVmaW5lZChVU0VfR01BUktVUF9QQVJTRVIpICovCi0rCi0rCi0rc3RhdGljIEdsYWRlSW50ZXJmYWNlICoKLStnbGFkZV9wYXJzZXJfcGFyc2VfYnVmZmVyX2ludGVybmFsKGNvbnN0IGdjaGFyICpidWZmZXIsIGdpbnQgbGVuLCBjb25zdCBnY2hhciAqZG9tYWluKQotK3sKLSsJR01hcmt1cFBhcnNlQ29udGV4dCAgKmNvbnRleHQ7Ci0rCUdsYWRlUGFyc2VTdGF0ZSAgICAgICBzdGF0ZSA9IHsgMCB9OwotKwlHRXJyb3IgICAgICAgICAgICAgICAqZXJyICAgPSBOVUxMOwotKwotKwlzdGF0ZS5pbnRlcmZhY2UgPSBOVUxMOwotKwlpZiAoZG9tYWluKQotKwkJc3RhdGUuZG9tYWluID0gZG9tYWluOwotKwllbHNlCi0rCQlzdGF0ZS5kb21haW4gPSB0ZXh0ZG9tYWluKE5VTEwpOwotKwotKwkvKiBGSVhNRTogVGhpcyBzdHJzdHIoKSBpcyBub3Qgc2FmZSwgYXMgaXQgaWdub3JlcyB0aGUgbGVuCi0rCSAqICAgICAgICBhcmd1bWVudCBhbmQgYXNzdW1lcyB0aGUgYnVmZmVyIGlzIE5VTC10ZXJtaW5hdGVkICovCi0rCWlmIChzdHJzdHIoYnVmZmVyLCAiPD94bWwiKSA9PSBOVUxMKSB7Ci0rCQlnX3dhcm5pbmcoIk5vIFhNTCBoZWFkZXIgZm91bmQgaW4gZG9jdW1lbnQhIik7Ci0rCQlyZXR1cm4gTlVMTDsKLSsJfQotKwotKwljb250ZXh0ID0gZ19tYXJrdXBfcGFyc2VfY29udGV4dF9uZXcoJmdsYWRlX3BhcnNlciwgKEdNYXJrdXBQYXJzZUZsYWdzKSAwLCAmc3RhdGUsIE5VTEwpOwotKwotKwlnbGFkZV9wYXJzZXJfc3RhcnRfZG9jdW1lbnQoJnN0YXRlKTsKLSsKLSsJaWYgKCFnX21hcmt1cF9wYXJzZV9jb250ZXh0X3BhcnNlKGNvbnRleHQsIGJ1ZmZlciwgKGdzc2l6ZSkgbGVuLCAmZXJyKSkgewotKwkJZ193YXJuaW5nKCJkb2N1bWVudCBub3Qgd2VsbCBmb3JtZWQ6ICVzIiwgZXJyLT5tZXNzYWdlKTsKLSsJCWdfZXJyb3JfZnJlZShlcnIpOwotKwkJaWYgKHN0YXRlLmludGVyZmFjZSkKLSsJCQlnbGFkZV9pbnRlcmZhY2VfZGVzdHJveSAoc3RhdGUuaW50ZXJmYWNlKTsKLSsJCXJldHVybiBOVUxMOwotKwl9Ci0rCi0rCWdsYWRlX3BhcnNlcl9lbmRfZG9jdW1lbnQoJnN0YXRlKTsKLSsKLSsJaWYgKHN0YXRlLnN0YXRlICE9IFBBUlNFUl9GSU5JU0gpIHsKLSsJCWdfd2FybmluZygiZGlkIG5vdCBmaW5pc2ggaW4gUEFSU0VSX0ZJTklTSCBzdGF0ZSEiKTsKLSsKLSsJCWlmIChzdGF0ZS5pbnRlcmZhY2UpCi0rCQkJZ2xhZGVfaW50ZXJmYWNlX2Rlc3Ryb3koc3RhdGUuaW50ZXJmYWNlKTsKLSsKLSsJCXJldHVybiBOVUxMOwotKwl9Ci0rCi0rCXJldHVybiBzdGF0ZS5pbnRlcmZhY2U7Ci0rfQotKwotK3N0cnVjdCBfZ3ppcF9yZmMxOTUyX2hkcgotK3sKLSsJZ3VpbnQ4CWlkMSwgaWQyLCBjbSwgZmxhZ3M7Ci0rCWd1aW50MzIgbXRpbWU7Ci0rCWd1aW50OCAgeGZsYWdzOwotKwlndWludDggIG9zOwotK307Ci0rCi0rc3RhdGljIEdsYWRlSW50ZXJmYWNlICoKLStnbGFkZV9wYXJzZXJfcGFyc2VfZ3ppcHBlZF9idWZmZXIoY29uc3QgZ2NoYXIgKmJ1ZmZlciwgZ2ludCBsZW4sIGNvbnN0IGdjaGFyICpkb21haW4pCi0rewotKwlzdHJ1Y3QgX2d6aXBfcmZjMTk1Ml9oZHIgKmhkciA9IChzdHJ1Y3QgX2d6aXBfcmZjMTk1Ml9oZHIqKWJ1ZmZlcjsKLSsJc3RydWN0IHpfc3RyZWFtX3MgICAgICAgICB6c3RyZWFtOwotKwlHbGFkZUludGVyZmFjZSAgICAgICAgICAgKmludGVyZmFjZTsKLSsJY29uc3QgZ3VpbnQ4ICAgICAgICAgICAgICpjYnVmOyAgICAgICAgICAgICAgLyogc3RhcnQgb2YgY29tcHJlc3NlZCBkYXRhICovCi0rCWd1aW50OCAgICAgICAgICAgICAgICAgICAqZGVjb21wcmVzc19idWY7Ci0rCWd1bG9uZyAgICAgICAgICAgICAgICAgICAgZGVjb21wcmVzc19sZW4gPSAwOwotKwlnaW50ICAgICAgICAgICAgICAgICAgICAgIHJldDsKLSsKLSsJZ19hc3NlcnQoaGRyICE9IE5VTEwgJiYgaGRyLT5pZDEgPT0gMHgxZiAmJiBoZHItPmlkMiA9PSAweDhiKTsKLSsKLSsJaWYgKGhkci0+Y20gIT0gWl9ERUZMQVRFRCkgewotKwkJZ193YXJuaW5nKCJVbmtub3duIGRlY29tcHJlc3Npb24gbWV0aG9kICV1IiwgKGd1aW50KSBoZHItPmNtKTsKLSsJCXJldHVybiBOVUxMOwotKwl9Ci0rCi0rCS8qIFVuY29tcHJlc3NlZCBzaXplIChtb2R1bG8gMl4zMikgaXMgbGFzdAotKwkgKiAgNCBieXRlcyBvZiBnemlwcGVkIGZpbGUsIGFuZCBsaXR0bGUgZW5kaWFuLgotKwkgKiAgU2VlIFJGQyAxOTUyICovCi0rCWRlY29tcHJlc3NfbGVuID0gR1VJTlQzMl9GUk9NX0xFKCooKGd1aW50MzIqKSgoKGd1aW50OCopYnVmZmVyKSArIGxlbiAtIDQpKSk7Ci0rCi0rCS8qIHBhcmFub2lkIG1vZGU6IGdsYWRlIGZpbGVzID4gNU1CIGFyZSB1bmxpa2VseSAqLwotKwlnX3JldHVybl92YWxfaWZfZmFpbChkZWNvbXByZXNzX2xlbiA8IDUqMTAyNCoxMDI0LCBOVUxMKTsKLSsKLSsJZGVjb21wcmVzc19idWYgPSBnX21hbGxvYzAoZGVjb21wcmVzc19sZW4gKyAxKTsgLyogKzEgZm9yIE5VTC10ZXJtaW5hdG9yICovCi0rCi0rCS8qIGZpbmQgc3RhcnQgb2YgY29tcHJlc3NlZCBkYXRhLCBza2lwcGluZyBoZWFkZXIgc3R1ZmYgKi8KLSsJY2J1ZiA9IChndWludDgqKWJ1ZmZlciArIDEwOwotKwlpZiAoaGRyLT5mbGFncyAmIDB4MDQpIHsKLSsJCWd1aW50MTYgeGxlbiA9IEdVSU5UMTZfRlJPTV9MRSgqKChndWludDE2KiljYnVmKSk7Ci0rCQljYnVmICs9IHhsZW4gKyAyOwotKwl9Ci0rCWlmIChoZHItPmZsYWdzICYgMHgwOCkgewotKwkJZ3VpbnQxNiBvbmFtZWxlbiA9IHN0cmxlbihjYnVmKTsKLSsJCWNidWYgKz0gb25hbWVsZW4gKyAxOwotKwl9Ci0rCWlmIChoZHItPmZsYWdzICYgMHgxMCkgewotKwkJZ3VpbnQxNiBjb21tZW50bGVuID0gc3RybGVuKGNidWYpOwotKwkJY2J1ZiArPSBjb21tZW50bGVuICsgMTsKLSsJfQotKwlpZiAoaGRyLT5mbGFncyAmIDB4MDIpCi0rCXsKLSsJCWNidWYgKz0gMjsgLyogc2tpcCBoZWFkZXIgQ1JDMTYgKi8KLSsJfQotKwotKwl6c3RyZWFtLm5leHRfaW4gID0gKHZvaWQqKWNidWY7Ci0rCXpzdHJlYW0uYXZhaWxfaW4gPSAodUxvbmdmKSBsZW4gLSAoKHZvaWQqKWNidWYtKHZvaWQqKWJ1ZmZlcikgLSA0IC0gNCArMTsgCi0rCXpzdHJlYW0ubmV4dF9vdXQgPSBkZWNvbXByZXNzX2J1ZjsKLSsJenN0cmVhbS5hdmFpbF9vdXQ9IGRlY29tcHJlc3NfbGVuOwotKwl6c3RyZWFtLnphbGxvYyAgID0gWl9OVUxMOwotKwl6c3RyZWFtLnpmcmVlICAgID0gWl9OVUxMOwotKwl6c3RyZWFtLm9wYXF1ZSAgID0gWl9OVUxMOwotKwotKwlyZXQgPSBpbmZsYXRlSW5pdDIoJnpzdHJlYW0sIC1NQVhfV0JJVFMpOwotKwotKwlpZiAocmV0ICE9IFpfT0spIHsKLSsJCWdfd2FybmluZygiaW5mbGF0ZUluaXQyKCkgZmFpbGVkLiB6bGliIGVycm9yIGNvZGU6ICVkIiwgcmV0KTsKLSsJCWdfZnJlZShkZWNvbXByZXNzX2J1Zik7Ci0rCQlyZXR1cm4gTlVMTDsKLSsJfQotKwotKwlyZXQgPSBpbmZsYXRlKCZ6c3RyZWFtLCBaX0ZJTklTSCk7Ci0rCi0rCWlmIChyZXQgIT0gWl9TVFJFQU1fRU5EKSB7Ci0rCQlnX3dhcm5pbmcoInpsaWIgZGVjb21wcmVzc2lvbiBmYWlsZWQuIHpsaWIgZXJyb3IgY29kZTogJWQiLCByZXQpOwotKwkJZ19mcmVlKGRlY29tcHJlc3NfYnVmKTsKLSsJCXJldHVybiBOVUxMOwotKwl9Ci0rCi0rCWludGVyZmFjZSA9IGdsYWRlX3BhcnNlcl9wYXJzZV9idWZmZXJfaW50ZXJuYWwoZGVjb21wcmVzc19idWYsIGRlY29tcHJlc3NfbGVuLCBkb21haW4pOwotKwotKwlnX2ZyZWUoZGVjb21wcmVzc19idWYpOwotKwotKwlyZXR1cm4gaW50ZXJmYWNlOwotK30KLSsKLStHbGFkZUludGVyZmFjZSAqCi0rZ2xhZGVfcGFyc2VyX3BhcnNlX2J1ZmZlcihjb25zdCBnY2hhciAqYnVmZmVyLCBnaW50IGxlbiwgY29uc3QgZ2NoYXIgKmRvbWFpbikKLSt7Ci0rCWdfcmV0dXJuX3ZhbF9pZl9mYWlsKGJ1ZmZlciAhPSBOVUxMLCBOVUxMKTsKLSsJZ19yZXR1cm5fdmFsX2lmX2ZhaWwobGVuID4gMCwgTlVMTCk7Ci0rCi0rCS8qIENoZWNrIGlmIGJ1ZmZlciBpcyBnemlwcGVkICovCi0rCWlmIChidWZmZXJbMF0gPT0gMHgxZiAmJiBidWZmZXJbMV0gPT0gKGdjaGFyKTB4OGIpIHsKLSsJCXJldHVybiBnbGFkZV9wYXJzZXJfcGFyc2VfZ3ppcHBlZF9idWZmZXIoYnVmZmVyLCBsZW4sIGRvbWFpbik7Ci0rCX0KLSsKLSsJLyogQnVmZmVyIGlzIGNsZWFydGV4dC4gKi8KLSsJcmV0dXJuIGdsYWRlX3BhcnNlcl9wYXJzZV9idWZmZXJfaW50ZXJuYWwoYnVmZmVyLCBsZW4sIGRvbWFpbik7Ci0rfQotKwotKyNlbmRpZiAvKiBVU0VfR01BUktVUF9QQVJTRVIgKi8KLSsKLSsKLSsjaWZuZGVmIFVTRV9HTUFSS1VQX1BBUlNFUgotKwotIHN0YXRpYyB2b2lkCi0gZHVtcF93aWRnZXQoeG1sTm9kZSAqcGFyZW50LCBHbGFkZVdpZGdldEluZm8gKmluZm8sIGdpbnQgaW5kZW50KQotIHsKLUBAIC0xMzgyLDYgKzE2NzQsOCBAQAotIAl4bWxOb2RlQWRkQ29udGVudCh3aWRnZXQsICIgICIpOwotIH0KLSAKLSsjZW5kaWYgLyogIWRlZmluZWQoVVNFX0dNQVJLVVBfUEFSU0VSKSAqLwotKwotIC8qKgotICAqIGdsYWRlX2ludGVyZmFjZV9kdW1wCi0gICogQGludGVyZmFjZTogdGhlIEdsYWRlSW50ZXJmYWNlCi1AQCAtMTM5MCw2ICsxNjg0LDkgQEAKLSAgKiBUaGlzIGZ1bmN0aW9uIGR1bXBzIHRoZSBjb250ZW50cyBvZiBhIEdsYWRlSW50ZXJmYWNlIGludG8gYSBmaWxlIGFzCi0gICogWE1MLiAgSXQgaXMgaW50ZW5kZWQgbWFpbmx5IGFzIGEgZGVidWdnaW5nIHRvb2wuCi0gICovCi0rCi0rI2lmbmRlZiBVU0VfR01BUktVUF9QQVJTRVIKLSsKLSB2b2lkCi0gZ2xhZGVfaW50ZXJmYWNlX2R1bXAoR2xhZGVJbnRlcmZhY2UgKmludGVyZmFjZSwgY29uc3QgZ2NoYXIgKmZpbGVuYW1lKQotIHsKLUBAIC0xNDI4LDYgKzE3MjUsMTcgQEAKLSAgICAgeG1sRnJlZURvYyhkb2MpOwotIH0KLSAKLSsjZWxzZSAvKiBkZWZpbmVkKFVTRV9HTUFSS1VQX1BBUlNFUikgKi8KLSsKLSt2b2lkCi0rZ2xhZGVfaW50ZXJmYWNlX2R1bXAoR2xhZGVJbnRlcmZhY2UgKmludGVyZmFjZSwgY29uc3QgZ2NoYXIgKmZpbGVuYW1lKQotK3sKLSsgICAgZ193YXJuaW5nKCJnbGFkZV9pbnRlcmZhY2VfZHVtcCgpIGlzIG9ubHkgYXZhaWxhYmxlIHdpdGggbGlieG1sMi4iKTsKLSt9Ci0rCi0rI2VuZGlmIC8qIFVTRV9HTUFSS1VQX1BBUlNFUiAqLwotKwotKwotICNpZiAwCi0gaW50Ci0gbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLWRpZmYgLXVyTiBsaWJnbGFkZS0yLjQuMi5vcmlnL2xpYmdsYWRlLTIuMC5wYy5pbiBsaWJnbGFkZS0yLjQuMi9saWJnbGFkZS0yLjAucGMuaW4KLS0tLSBsaWJnbGFkZS0yLjQuMi5vcmlnL2xpYmdsYWRlLTIuMC5wYy5pbgkyMDAxLTEyLTEyIDE1OjI4OjIzLjAwMDAwMDAwMCArMDEwMAotKysrIGxpYmdsYWRlLTIuNC4yL2xpYmdsYWRlLTIuMC5wYy5pbgkyMDA1LTAzLTIyIDAxOjIwOjAwLjAwMDAwMDAwMCArMDEwMAotQEAgLTExLDcgKzExLDcgQEAKLSBOYW1lOiBMaWJnbGFkZQotIERlc2NyaXB0aW9uOiBhIGxpYnJhcnkgZm9yIGR5bmFtaWNhbGx5IGxvYWRpbmcgR0xBREUgaW50ZXJmYWNlIGZpbGVzCi0gVmVyc2lvbjogQFZFUlNJT05ACi0tUmVxdWlyZXM6IGd0aystMi4wIGxpYnhtbC0yLjAKLStSZXF1aXJlczogZ3RrKy0yLjAgQFBLR0NGR19SRVFVSVJFX0xJQlhNTDJACi0gTGliczogLUwke2xpYmRpcn0gLWxnbGFkZS0yLjAKLSBDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9saWJnbGFkZS0yLjAKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYmdsYWRlL2xpYmdsYWRlLTIuNi40L3B5dGhvbl9lbnZpcm9ubWVudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYmdsYWRlL2xpYmdsYWRlLTIuNi40L3B5dGhvbl9lbnZpcm9ubWVudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjViMmVjNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJnbGFkZS9saWJnbGFkZS0yLjYuNC9weXRob25fZW52aXJvbm1lbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1Vc2luZyBAUFlUSE9OQCBmb3IgdGhpcyBwYXRoIHdvdWxkIHJlc3VsdCBpbiB0aGUgYnVpbGQgc3lzdGVtIHB5dGhvbiBiZWluZyAKLXJlZmVycmVkIHRvLiBJbnN0ZWFkIHdlIHdhbnQgdG8gbG9jYXRlIHB5dGhvbiBmcm9tIHRoZSBlbnZpcm9ubWVudC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1kaWZmIC1ydU4gbGliZ2xhZGUtMi42LjQtb3JpZy8vbGliZ2xhZGUtY29udmVydC5pbiBsaWJnbGFkZS0yLjYuNC9saWJnbGFkZS1jb252ZXJ0LmluCi0tLS0gbGliZ2xhZGUtMi42LjQtb3JpZy8vbGliZ2xhZGUtY29udmVydC5pbgkyMDExLTA5LTIyIDEwOjE4OjI4Ljk5MTE2NDAwMyArMDgwMAotKysrIGxpYmdsYWRlLTIuNi40L2xpYmdsYWRlLWNvbnZlcnQuaW4JMjAxMS0wOS0yMiAxMDoxODo1NS40MzExNjQwMDMgKzA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMhQFBZVEhPTkAKLSsjIS91c3IvYmluL2VudiBweXRob24KLSAjIC0qLSBtb2RlOiBweXRob24gLSotCi0gCi0gIyB5ZXMsIHRoaXMgcmVxdWlyZXMgcHl0aG9uIDIueCBhbmQgYW4gWE1MIHBhcnNlciBtb2R1bGUgKGVnLiBQeUV4cGF0KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGliZ2xhZGUvbGliZ2xhZGVfMi42LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJnbGFkZS9saWJnbGFkZV8yLjYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRiOWY4YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJnbGFkZS9saWJnbGFkZV8yLjYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiUnVudGltZSBzdXBwb3J0IGZvciB0aGUgR1RLKyBpbnRlcmZhY2UgYnVpbGRlciIKLUhPTUVQQUdFID0gImh0dHA6Ly9saWJyYXJ5Lmdub21lLm9yZy9kZXZlbC9saWJnbGFkZS8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJMR1BMdjIgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTVjYTgxN2NjYjdkNWI1YjY2MzU1NjkwZTlhYmM2MDUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2xhZGUvZ2xhZGUuaDtlbmRsaW5lPTIyO21kNT1hMDRmNDYxYzk2NGJhNGI1N2ExNzJkMWZiY2Q4ZjhmYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nbGFkZS9nbGFkZS1ndGsuYztlbmRsaW5lPTIyO21kNT03NjZmOTkzNDMzZTI2NDJmZWM4NzkzNmQzMTk5OTBmZiIKLQotU0VDVElPTiA9ICJsaWJzIgotUFIgPSAicjUiCi1ERVBFTkRTID0gInpsaWIgZ2RrLXBpeGJ1ZiBndGsrIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ25vbWViYXNlIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLMkRJU1RST0ZFQVRVUkVTfSIKLUdOT01FX0NPTVBSRVNTX1RZUEU9ImJ6MiIKLQotU1JDX1VSSSArPSAiIFwKLSAgICBmaWxlOi8vZ2xhZGUtY3J1ZnQucGF0Y2ggXAotICAgIGZpbGU6Ly9uby14bWwyLnBhdGNoIFwKLSAgICBmaWxlOi8vcHl0aG9uX2Vudmlyb25tZW50LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuaW4tcmVtb3ZlLWRlcHJlY2F0ZWQtR05PTUVfQ09NTU9OX0lOSVQucGF0Y2ggXAotIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJkMTc3NmI0MGY0ZTE2NmI1ZTljMTA3ZjFjOGZlNDEzOSIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjY0MzYxZTc2NDc4MzlkMzZlZDgzMzZkOTkyZmQyMTBkM2U4MTM5ODgyMjY5YmVkNDdkYzQ2NzQ5ODAxNjVkZWMiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWxpYnhtbDIgLS1kaXNhYmxlLWd0ay1kb2MiCi0KLUNGTEFHUyArPSAiLWx6IC1sZ21vZHVsZS0yLjAiCi0KLVBBQ0tBR0VTICs9ICIgJHtQTn0tZGF0YSIKLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWIqLnNvLioiCi1GSUxFU18ke1BOfS1kYXRhID0gIiR7ZGF0YWRpcn0veG1sL2xpYmdsYWRlL2dsYWRlLTIuMC5kdGQiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9saWJnbGFkZS1jb252ZXJ0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGlidW5pcXVlL2xpYnVuaXF1ZS8wMDAxLU1ha2VmaWxlLmFtLXVzZS1MSUJUT09MLWluc3RlYWQtb2YtaGFyZGNvZGVkLWxpYnRvb2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJ1bmlxdWUvbGlidW5pcXVlLzAwMDEtTWFrZWZpbGUuYW0tdXNlLUxJQlRPT0wtaW5zdGVhZC1vZi1oYXJkY29kZWQtbGlidG9vbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI1ZWRhMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJ1bmlxdWUvbGlidW5pcXVlLzAwMDEtTWFrZWZpbGUuYW0tdXNlLUxJQlRPT0wtaW5zdGVhZC1vZi1oYXJkY29kZWQtbGlidG9vbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUZyb20gZjM5YmNkNWFmNzlhYTNlZmUyY2VjYjIyMTI3OTNjNWI1OTY4OTBhOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVGh1LCAxOCBGZWIgMjAxNiAxNzo0MDo0NSArMDIwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZS5hbTogdXNlICQoTElCVE9PTCkgaW5zdGVhZCBvZiBoYXJkY29kZWQgbGlidG9vbCBuYW1lCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSB1bmlxdWUvTWFrZWZpbGUuYW0gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS91bmlxdWUvTWFrZWZpbGUuYW0gYi91bmlxdWUvTWFrZWZpbGUuYW0KLWluZGV4IDY0NzVhODcuLjczNGY0MzEgMTAwNjQ0Ci0tLS0gYS91bmlxdWUvTWFrZWZpbGUuYW0KLSsrKyBiL3VuaXF1ZS9NYWtlZmlsZS5hbQotQEAgLTExNCw3ICsxMTQsNyBAQCBVbmlxdWUtMS4wLmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYnVuaXF1ZS0xLjAubGEKLSAJCS0taW5jbHVkZT1HT2JqZWN0LTIuMCBcCi0gCQktLWluY2x1ZGU9R3RrLTIuMCBcCi0gCQktLWxpYnJhcnk9bGlidW5pcXVlLTEuMC5sYSBcCi0tCQktLWxpYnRvb2w9IiQodG9wX2J1aWxkZGlyKS9saWJ0b29sIiBcCi0rCQktLWxpYnRvb2w9IiQoTElCVE9PTCkiIFwKLSAJCS0tcGtnIGdvYmplY3QtMi4wIFwKLSAJCS0tcGtnIGd0aystMi4wIFwKLSAJCS0tb3V0cHV0ICRAIFwKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGlidW5pcXVlL2xpYnVuaXF1ZS8wMDAxLXRlc3QtdW5pcXVlLUFkZC1mb3JtYXQtcXVhbGlmaWVyLXMtZm9yLXN0cmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYnVuaXF1ZS9saWJ1bmlxdWUvMDAwMS10ZXN0LXVuaXF1ZS1BZGQtZm9ybWF0LXF1YWxpZmllci1zLWZvci1zdHJpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmOWZkZjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGlidW5pcXVlL2xpYnVuaXF1ZS8wMDAxLXRlc3QtdW5pcXVlLUFkZC1mb3JtYXQtcXVhbGlmaWVyLXMtZm9yLXN0cmluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gMzc2MzJhY2EwMGQ0OGM1M2U5MWYwOGJjNzQzNWM3MjFiYTgxYjJjZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDMwIE1hciAyMDE3IDE0OjMyOjU1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRlc3QtdW5pcXVlOiBBZGQgZm9ybWF0IHF1YWxpZmllciAlcyBmb3Igc3RyaW5nCi0KLUZpeGVzIHBvdGVudGlhbCBzZWN1cml0eSBpc3N1ZXMgdGhhdCBjb21waWxlciBmbGFncwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gdGVzdHMvdGVzdC11bmlxdWUuYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0cy90ZXN0LXVuaXF1ZS5jIGIvdGVzdHMvdGVzdC11bmlxdWUuYwotaW5kZXggYjdjZGU0NS4uODJlZTgxYiAxMDA2NDQKLS0tLSBhL3Rlc3RzL3Rlc3QtdW5pcXVlLmMKLSsrKyBiL3Rlc3RzL3Rlc3QtdW5pcXVlLmMKLUBAIC04MiwxMCArODIsMTAgQEAgYXBwX21lc3NhZ2VfY2IgKFVuaXF1ZUFwcCAgICAgICAgICphcHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfRElBTE9HX0RFU1RST1lfV0lUSF9QQVJFTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfTUVTU0FHRV9JTkZPLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX0JVVFRPTlNfQ0xPU0UsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLHRpdGxlKTsKLSAgIGlmIChtZXNzYWdlKQotICAgICBndGtfbWVzc2FnZV9kaWFsb2dfZm9ybWF0X3NlY29uZGFyeV90ZXh0IChHVEtfTUVTU0FHRV9ESUFMT0cgKGRpYWxvZyksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLG1lc3NhZ2UpOwotIAotICAgZ3RrX3dpbmRvd19zZXRfdXJnZW5jeV9oaW50IChHVEtfV0lORE9XIChkaWFsb2cpLCBUUlVFKTsKLSAKLS0tIAotMi4xMi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYnVuaXF1ZS9saWJ1bmlxdWUvYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJ1bmlxdWUvbGlidW5pcXVlL2J1aWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmE1YzYyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYnVuaXF1ZS9saWJ1bmlxdWUvYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MjEgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cDovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL3VuaXF1ZS9jb21taXQvP2g9dW5pcXVlLTEuMSZpZD1mNzVjYTJkN2FhZDdkMjc2ODZhY2NhNjA5MGMxYzU2OWE3OWQ3ZTYzXQotU2lnbmVkLW9mZi1CeTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSBmNzVjYTJkN2FhZDdkMjc2ODZhY2NhNjA5MGMxYzU2OWE3OWQ3ZTYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRW1tYW51ZWxlIEJhc3NpIDxlYmFzc2lAZ25vbWUub3JnPgotRGF0ZTogU2F0LCAwOCBNYXkgMjAxMCAxMToxNzoyMSArMDAwMAotU3ViamVjdDogYnVpbGQ6IFVwZGF0ZSB0aGUgYnVpbGQgZW52aXJvbm1lbnQKLQotUmVxdWlyZSBhdXRvY29uZiAyLjYzLCBhdXRvbWFrZSAxLjExIGFuZCBsaWJ0b29sIDIuMi42IHRvIHJlbW92ZSBTaGF2ZS4KLQotQWxzbyBidW1wIHVwIHRoZSByZXF1aXJlbWVudCBmb3IgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHRvIDAuNi43LgotLS0tCi1kaWZmIC0tZ2l0IGEvYnVpbGQvYXV0b3Rvb2xzL01ha2VmaWxlLmFtIGIvYnVpbGQvYXV0b3Rvb2xzL01ha2VmaWxlLmFtCi1pbmRleCA1ZjM1Yjg1Li5iNzg0MjhmIDEwMDY0NAotLS0tIGEvYnVpbGQvYXV0b3Rvb2xzL01ha2VmaWxlLmFtCi0rKysgYi9idWlsZC9hdXRvdG9vbHMvTWFrZWZpbGUuYW0KLUBAIC0xLDcgKzEsNCBAQAotIEVYVFJBX0RJU1QgPSBcCi0tCXNoYXZlLWxpYnRvb2wuaW4gCVwKLS0Jc2hhdmUuaW4gCQlcCi0tCXNoYXZlLm00IAkJXAotIAlhcy1jb21waWxlci1mbGFnLm00CVwKLSAJaW50cm9zcGVjdGlvbi5tNAlcCi0gCU1ha2VmaWxlLmFtLmVudW1zCVwKLWRpZmYgLS1naXQgYS9idWlsZC9hdXRvdG9vbHMvTWFrZWZpbGUuYW0uc2lsZW50IGIvYnVpbGQvYXV0b3Rvb2xzL01ha2VmaWxlLmFtLnNpbGVudAotaW5kZXggMjQ5ZjZhZi4uODU3Njg0NiAxMDA2NDQKLS0tLSBhL2J1aWxkL2F1dG90b29scy9NYWtlZmlsZS5hbS5zaWxlbnQKLSsrKyBiL2J1aWxkL2F1dG90b29scy9NYWtlZmlsZS5hbS5zaWxlbnQKLUBAIC0xLDEwICsxLDUgQEAKLSAjIGN1c3RvbSBydWxlcyBmb3IgcXVpZXQgYnVpbGRzCi0gCi0taWYgVVNFX1NIQVZFCi0tUVVJRVRfR0VOID0gJChROkA9QGVjaG8gJyAgR0VOICAgJyRAOykKLS1RVUlFVF9MTiAgPSAkKFE6QD1AZWNobyAnICBMTiAgICAnJEA7KQotLVFVSUVUX1JNICA9ICQoUTpAPUBlY2hvICcgIFJNICAgICckQDspCi0tZWxzZQotIFFVSUVUX0dFTiA9ICQoQU1fVl9HRU4pCi0gCi0gUVVJRVRfTE4gICA9ICQoUVVJRVRfTE5fJChWKSkKLUBAIC0xNCw0ICs5LDMgQEAgUVVJRVRfTE5fMCA9IEBlY2hvICcgIExOICAgICAnJEA7Ci0gUVVJRVRfUk0gICA9ICQoUVVJRVRfUk1fJChWKSkKLSBRVUlFVF9STV8gID0gJChRVUlFVF9STV8kKEFNX0RFRkFVTFRfVkVSQk9TSVRZKSkKLSBRVUlFVF9STV8wID0gQGVjaG8gJyAgUk0gICAgICckQDsKLS1lbmRpZiAjIFVTRV9TSEFWRQotZGlmZiAtLWdpdCBhL2J1aWxkL2F1dG90b29scy9pbnRyb3NwZWN0aW9uLm00IGIvYnVpbGQvYXV0b3Rvb2xzL2ludHJvc3BlY3Rpb24ubTQKLWluZGV4IGY5Y2U0OWMuLjU4OTcyMWMgMTAwNjQ0Ci0tLS0gYS9idWlsZC9hdXRvdG9vbHMvaW50cm9zcGVjdGlvbi5tNAotKysrIGIvYnVpbGQvYXV0b3Rvb2xzL2ludHJvc3BlY3Rpb24ubTQKLUBAIC01OSwxMiArNTksMTggQEAgbTRfZGVmaW5lKFtfR09CSkVDVF9JTlRST1NQRUNUSU9OX0NIRUNLX0lOVEVSTkFMXSwKLSAgICAgICAgSU5UUk9TUEVDVElPTl9HRU5FUkFURT1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2dlbmVyYXRlIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0gICAgICAgIElOVFJPU1BFQ1RJT05fR0lSRElSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdpcmRpciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotICAgICAgICBJTlRST1NQRUNUSU9OX1RZUEVMSUJESVI9IiQoJFBLR19DT05GSUcgLS12YXJpYWJsZT10eXBlbGliZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjApIgotKyAgICAgICBJTlRST1NQRUNUSU9OX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSsgICAgICAgSU5UUk9TUEVDVElPTl9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSsgICAgICAgSU5UUk9TUEVDVElPTl9NQUtFRklMRT1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1kYXRhZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbgotICAgICBmaQotICAgICBBQ19TVUJTVChJTlRST1NQRUNUSU9OX1NDQU5ORVIpCi0gICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpCi0gICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fR0VORVJBVEUpCi0gICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fR0lSRElSKQotICAgICBBQ19TVUJTVChJTlRST1NQRUNUSU9OX1RZUEVMSUJESVIpCi0rICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fQ0ZMQUdTKQotKyAgICBBQ19TVUJTVChJTlRST1NQRUNUSU9OX0xJQlMpCi0rICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fTUFLRUZJTEUpCi0gCi0gICAgIEFNX0NPTkRJVElPTkFMKEhBVkVfSU5UUk9TUEVDVElPTiwgdGVzdCAieCRmb3VuZF9pbnRyb3NwZWN0aW9uIiA9ICJ4eWVzIikKLSBdKQotZGlmZiAtLWdpdCBhL2J1aWxkL2F1dG90b29scy9zaGF2ZS1saWJ0b29sLmluIGIvYnVpbGQvYXV0b3Rvb2xzL3NoYXZlLWxpYnRvb2wuaW4KLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMWYzYTcyMC4uMDAwMDAwMAotLS0tIGEvYnVpbGQvYXV0b3Rvb2xzL3NoYXZlLWxpYnRvb2wuaW4KLSsrKyBiL2Rldi9udWxsCi1AQCAtMSw2OSArMCwwIEBACi0tIyEvYmluL3NoCi0tCi0tIyB3ZSBuZWVkIHNlZAotLVNFRD1AU0VEQAotLWlmIHRlc3QgLXogIiRTRUQiIDsgdGhlbgotLVNFRD1zZWQKLS1maQotLQotLWx0X3VubWFuZ2xlICgpCi0tewotLSAgIGxhc3RfcmVzdWx0PWBlY2hvICQxIHwgJFNFRCAtZSAncyMubGlicy8jIycgLWUgJ3MjWzAtOWEtekEtWl9cLVwuXSpfbGEtIyMnYAotLX0KLS0KLS0jIHRoZSByZWFsIGxpYnRvb2wgdG8gdXNlCi0tTElCVE9PTD0iJDEiCi0tc2hpZnQKLS0KLS0jIGlmIDEsIGRvbid0IHByaW50IGFueXRoaW5nLCB0aGUgdW5kZXJsYXlpbmcgd3JhcHBlciB3aWxsIGRvIGl0Ci0tcGFzc190aG91Z2g9MAotLQotLSMgc2NhbiB0aGUgYXJndW1lbnRzLCBrZWVwIHRoZSByaWdodCBvbmVzIGZvciBsaWJ0b29sLCBhbmQgZGlzY292ZXIgdGhlIG1vZGUKLS1wcmVzZXJ2ZWRfYXJncz0KLS13aGlsZSB0ZXN0ICIkIyIgLWd0IDA7IGRvCi0tICAgIG9wdD0iJDEiCi0tICAgIHNoaWZ0Ci0tCi0tICAgIGNhc2UgJG9wdCBpbgotLSAgICAtLW1vZGU9KikKLS0gICAgICAgIG1vZGU9YGVjaG8gJG9wdCB8ICRTRUQgLWUgJ3MvWy1fYS16QS1aMC05XSo9Ly8nYAotLSAgICAgICAgcHJlc2VydmVkX2FyZ3M9IiRwcmVzZXJ2ZWRfYXJncyAkb3B0IgotLSAgICAgICAgOzsKLS0gICAgLW8pCi0tICAgICAgICBsdF9vdXRwdXQ9IiQxIgotLSAgICAgICAgcHJlc2VydmVkX2FyZ3M9IiRwcmVzZXJ2ZWRfYXJncyAkb3B0IgotLQk7OwotLSAgICAqKQotLSAgICAgICAgcHJlc2VydmVkX2FyZ3M9IiRwcmVzZXJ2ZWRfYXJncyAkb3B0IgotLSAgICAgICAgOzsKLS0gICAgICBlc2FjCi0tZG9uZQotLQotLWNhc2UgIiRtb2RlIiBpbgotLWNvbXBpbGUpCi0tICAgICMgc2hhdmUgd2lsbCBiZSBjYWxsZWQgYW5kIHByaW50IHRoZSBhY3R1YWwgQ0MvQ1hYL0xJTksgbGluZQotLSAgICBwcmVzZXJ2ZWRfYXJncz0iJHByZXNlcnZlZF9hcmdzIC0tc2hhdmUtbW9kZT0kbW9kZSIKLS0gICAgcGFzc190aG91Z2g9MQotLSAgICA7OwotLWxpbmspCi0tICAgIHByZXNlcnZlZF9hcmdzPSIkcHJlc2VydmVkX2FyZ3MgLS1zaGF2ZS1tb2RlPSRtb2RlIgotLSAgICBRPSIgIExJTksgICIKLS0gICAgOzsKLS0qKQotLSAgICAjIGxldCdzIHUKLS0gICAgIyBlY2hvICIqKiogbGlidG9vbDogVW5pbXBsZW1lbnRlZCBtb2RlOiAkbW9kZSwgZmlsbCBhIGJ1ZyByZXBvcnQiCi0tICAgIDs7Ci0tZXNhYwotLQotLWx0X3VubWFuZ2xlICIkbHRfb3V0cHV0IgotLW91dHB1dD0kbGFzdF9yZXN1bHQKLS0KLS1pZiB0ZXN0IC16ICRWOyB0aGVuCi0tICAgIGlmIHRlc3QgJHBhc3NfdGhvdWdoIC1lcSAwOyB0aGVuCi0tICAgICAgICBlY2hvICIkUSRvdXRwdXQiCi0tICAgIGZpCi0tICAgICRMSUJUT09MIC0tc2lsZW50ICRwcmVzZXJ2ZWRfYXJncwotLWVsc2UKLS0gICAgZWNobyAkTElCVE9PTCAkcHJlc2VydmVkX2FyZ3MKLS0gICAgJExJQlRPT0wgJHByZXNlcnZlZF9hcmdzCi0tZmkKLWRpZmYgLS1naXQgYS9idWlsZC9hdXRvdG9vbHMvc2hhdmUuaW4gYi9idWlsZC9hdXRvdG9vbHMvc2hhdmUuaW4KLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggNWMxNmYyNy4uMDAwMDAwMAotLS0tIGEvYnVpbGQvYXV0b3Rvb2xzL3NoYXZlLmluCi0rKysgYi9kZXYvbnVsbAotQEAgLTEsNzkgKzAsMCBAQAotLSMhL2Jpbi9zaAotLQotLSMgd2UgbmVlZCBzZWQKLS1TRUQ9QFNFREAKLS1pZiB0ZXN0IC16ICIkU0VEIiA7IHRoZW4KLS1TRUQ9c2VkCi0tZmkKLS0KLS1sdF91bm1hbmdsZSAoKQotLXsKLS0gICBsYXN0X3Jlc3VsdD1gZWNobyAkMSB8ICRTRUQgLWUgJ3MjLmxpYnMvIyMnIC1lICdzI1swLTlhLXpBLVpfXC1cLl0qX2xhLSMjJ2AKLS19Ci0tCi0tIyB0aGUgdG9vbCB0byB3cmFwIChjYywgY3h4LCBhciwgcmFubGliLCAuLikKLS10b29sPSIkMSIKLS1zaGlmdAotLQotLSMgdGhlIHJlZWwgdG9vbCAodG8gY2FsbCkKLS1SRUVMX1RPT0w9IiQxIgotLXNoaWZ0Ci0tCi0tcGFzc190aHJvdWdoPTAKLS1wcmVzZXJ2ZWRfYXJncz0KLS13aGlsZSB0ZXN0ICIkIyIgLWd0IDA7IGRvCi0tICAgIG9wdD0iJDEiCi0tICAgIHNoaWZ0Ci0tCi0tICAgIGNhc2UgJG9wdCBpbgotLSAgICAtLXNoYXZlLW1vZGU9KikKLS0gICAgICAgIG1vZGU9YGVjaG8gJG9wdCB8ICRTRUQgLWUgJ3MvWy1fYS16QS1aMC05XSo9Ly8nYAotLQk7OwotLSAgICAtbykKLS0gICAgICAgIGx0X291dHB1dD0iJDEiCi0tICAgICAgICBwcmVzZXJ2ZWRfYXJncz0iJHByZXNlcnZlZF9hcmdzICRvcHQiCi0tCTs7Ci0tICAgICopCi0tICAgICAgICBwcmVzZXJ2ZWRfYXJncz0iJHByZXNlcnZlZF9hcmdzICRvcHQiCi0tICAgICAgICA7OwotLSAgICAgIGVzYWMKLS1kb25lCi0tCi0tIyBtb2RlPWxpbmsgaXMgaGFuZGxlZCBpbiB0aGUgbGlidG9vbCB3cmFwcGVyCi0tY2FzZSAiJG1vZGUsJHRvb2wiIGluCi0tbGluaywqKQotLSAgICBwYXNzX3Rocm91Z2g9MQotLSAgICA7OwotLSosY3h4KQotLSAgICBRPSIgIENYWCAgICIKLS0gICAgOzsKLS0qLGNjKQotLSAgICBRPSIgIENDICAgICIKLS0gICAgOzsKLS0qLGZjKQotLSAgICBRPSIgIEZDICAgICIKLS0gICAgOzsKLS0qLGY3NykKLS0gICAgUT0iICBGNzcgICAiCi0tICAgIDs7Ci0tKixvYmpjKQotLSAgICBRPSIgIE9CSkMgICAiCi0tICAgIDs7Ci0tKiwqKQotLSAgICAjIHNob3VsZCBub3QgaGFwcGVuCi0tICAgIFE9IiAgQ0MgICAgIgotLSAgICA7OwotLWVzYWMKLS0KLS1sdF91bm1hbmdsZSAiJGx0X291dHB1dCIKLS1vdXRwdXQ9JGxhc3RfcmVzdWx0Ci0tCi0taWYgdGVzdCAteiAkVjsgdGhlbgotLSAgICBpZiB0ZXN0ICRwYXNzX3Rocm91Z2ggLWVxIDA7IHRoZW4KLS0gICAgICAgIGVjaG8gIiRRJG91dHB1dCIKLS0gICAgZmkKLS0gICAgJFJFRUxfVE9PTCAkcHJlc2VydmVkX2FyZ3MKLS1lbHNlCi0tICAgIGVjaG8gJFJFRUxfVE9PTCAkcHJlc2VydmVkX2FyZ3MKLS0gICAgJFJFRUxfVE9PTCAkcHJlc2VydmVkX2FyZ3MKLS1maQotZGlmZiAtLWdpdCBhL2J1aWxkL2F1dG90b29scy9zaGF2ZS5tNCBiL2J1aWxkL2F1dG90b29scy9zaGF2ZS5tNAotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwYTM1MDllLi4wMDAwMDAwCi0tLS0gYS9idWlsZC9hdXRvdG9vbHMvc2hhdmUubTQKLSsrKyBiL2Rldi9udWxsCi1AQCAtMSw3NyArMCwwIEBACi0tZG5sIE1ha2UgYXV0b21ha2UvbGlidG9vbCBvdXRwdXQgbW9yZSBmcmllbmRseSB0byBodW1hbnMKLS1kbmwgIERhbWllbiBMZXNwaWF1IDxkYW1pZW4ubGVzcGlhdUBnbWFpbC5jb20+Ci0tZG5sCi0tZG5sIFNIQVZFX0lOSVQoW3NoYXZlZGlyXSxbZGVmYXVsdF9tb2RlXSkKLS1kbmwKLS1kbmwgc2hhdmVkaXI6IHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHNoYXZlIHNjcmlwdHMgYXJlLCBpdCBkZWZhdWx0cyB0bwotLWRubCAgICAgICAgICAgJCh0b3BfYnVpbGRkaXIpCi0tZG5sIGRlZmF1bHRfbW9kZTogKGVuYWJsZXxkaXNhYmxlKSBkZWZhdWx0IHNoYXZlIG1vZGUuICBUaGlzIHBhcmFtZXRlcgotLWRubCAgICAgICAgICAgICAgIGNvbnRyb2xzIHNoYXZlJ3MgYmVoYXZpb3VyIHdoZW4gbm8gb3B0aW9uIGhhcyBiZWVuCi0tZG5sICAgICAgICAgICAgICAgZ2l2ZW4gdG8gY29uZmlndXJlLiAgSXQgZGVmYXVsdHMgdG8gZGlzYWJsZS4KLS1kbmwKLS1kbmwgKiBTSEFWRV9JTklUIHNob3VsZCBiZSBjYWxsZWQgbGF0ZSBpbiB5b3VyIGNvbmZpZ3VyZS4oYWN8aW4pIGZpbGUgKGp1c3QKLS1kbmwgICBiZWZvcmUgQUNfQ09ORklHX0ZJTEUvQUNfT1VUUFVUIGlzIHBlcmZlY3QuICBUaGlzIG1hY3JvIHJld3JpdGVzIENDIGFuZAotLWRubCAgIExJQlRPT0wsIHlvdSBkb24ndCB3YW50IHRoZSBjb25maWd1cmUgdGVzdHMgdG8gaGF2ZSB0aGVzZSB2YXJpYWJsZXMKLS1kbmwgICByZS1kZWZpbmVkLgotLWRubCAqIFRoaXMgbWFjcm8gcmVxdWlyZXMgR05VIG1ha2UncyAtcyBvcHRpb24uCi0tCi0tQUNfREVGVU4oW19TSEFWRV9BUkdfRU5BQkxFXSwKLS1bCi0tICBBQ19BUkdfRU5BQkxFKFtzaGF2ZV0sCi0tICAgIEFTX0hFTFBfU1RSSU5HKAotLSAgICAgIFstLWVuYWJsZS1zaGF2ZV0sCi0tICAgICAgW3VzZSBzaGF2ZSB0byBtYWtlIHRoZSBidWlsZCBwcmV0dHkgW1tkZWZhdWx0PSQxXV1dKSwsCi0tICAgICAgW2VuYWJsZV9zaGF2ZT0kMV0KLS0gICAgKQotLV0pCi0tCi0tQUNfREVGVU4oW1NIQVZFX0lOSVRdLAotLVsKLS0gIGRubCB5b3UgY2FuIHR3ZWFrIHRoZSBkZWZhdWx0IHZhbHVlIG9mIGVuYWJsZV9zaGF2ZQotLSAgbTRfaWYoWyQyXSwgW2VuYWJsZV0sIFtfU0hBVkVfQVJHX0VOQUJMRSh5ZXMpXSwgW19TSEFWRV9BUkdfRU5BQkxFKG5vKV0pCi0tCi0tICBpZiB0ZXN0IHgiJGVuYWJsZV9zaGF2ZSIgPSB4eWVzOyB0aGVuCi0tICAgIGRubCB3aGVyZSBjYW4gd2UgZmluZCB0aGUgc2hhdmUgc2NyaXB0cz8KLS0gICAgbTRfaWYoWyQxXSwsCi0tICAgICAgW3NoYXZlZGlyPSIkYWNfcHdkIl0sCi0tICAgICAgW3NoYXZlZGlyPSIkYWNfcHdkLyQxIl0pCi0tICAgIEFDX1NVQlNUKHNoYXZlZGlyKQotLQotLSAgICBkbmwgbWFrZSBpcyBub3cgcXVpZXQKLS0gICAgQUNfU1VCU1QoW01BS0VGTEFHU10sIFstc10pCi0tICAgIEFDX1NVQlNUKFtBTV9NQUtFRkxBR1NdLCBbJ2B0ZXN0IC16ICRWICYmIGVjaG8gLXNgJ10pCi0tCi0tICAgIGRubCB3ZSBuZWVkIHNlZAotLSAgICBBQ19DSEVDS19QUk9HKFNFRCxzZWQsc2VkLGZhbHNlKQotLQotLSAgICBkbmwgc3Vic3RpdHV0ZSBsaWJ0b29sCi0tICAgIFNIQVZFX1NBVkVEX0xJQlRPT0w9JExJQlRPT0wKLS0gICAgTElCVE9PTD0iJHtTSEVMTH0gJHtzaGF2ZWRpcn0vc2hhdmUtbGlidG9vbCAnJHtTSEFWRV9TQVZFRF9MSUJUT09MfSciCi0tICAgIEFDX1NVQlNUKExJQlRPT0wpCi0tCi0tICAgIGRubCBzdWJzdGl0dXRlIGNjL2N4eAotLSAgICBTSEFWRV9TQVZFRF9DQz0kQ0MKLS0gICAgU0hBVkVfU0FWRURfQ1hYPSRDWFgKLS0gICAgU0hBVkVfU0FWRURfRkM9JEZDCi0tICAgIFNIQVZFX1NBVkVEX0Y3Nz0kRjc3Ci0tICAgIFNIQVZFX1NBVkVEX09CSkM9JE9CSkMKLS0gICAgQ0M9IiR7U0hFTEx9ICR7c2hhdmVkaXJ9L3NoYXZlIGNjICR7U0hBVkVfU0FWRURfQ0N9IgotLSAgICBDWFg9IiR7U0hFTEx9ICR7c2hhdmVkaXJ9L3NoYXZlIGN4eCAke1NIQVZFX1NBVkVEX0NYWH0iCi0tICAgIEZDPSIke1NIRUxMfSAke3NoYXZlZGlyfS9zaGF2ZSBmYyAke1NIQVZFX1NBVkVEX0ZDfSIKLS0gICAgRjc3PSIke1NIRUxMfSAke3NoYXZlZGlyfS9zaGF2ZSBmNzcgJHtTSEFWRV9TQVZFRF9GNzd9IgotLSAgICBPQkpDPSIke1NIRUxMfSAke3NoYXZlZGlyfS9zaGF2ZSBvYmpjICR7U0hBVkVfU0FWRURfT0JKQ30iCi0tICAgIEFDX1NVQlNUKENDKQotLSAgICBBQ19TVUJTVChDWFgpCi0tICAgIEFDX1NVQlNUKEZDKQotLSAgICBBQ19TVUJTVChGNzcpCi0tICAgIEFDX1NVQlNUKE9CSkMpCi0tCi0tICAgIFY9QAotLSAgZWxzZQotLSAgICBWPTEKLS0gIGZpCi0tICBRPSckKFY6MT0pJwotLSAgQUNfU1VCU1QoVikKLS0gIEFDX1NVQlNUKFEpCi0tXSkKLS0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGEzZWQzZWUuLmJjMzE2M2EgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE0LDcgKzE0LDcgQEAgbTRfZGVmaW5lKFt1bmlxdWVfYXBpX3ZlcnNpb25dLCBbMS4wXSkKLSAjIFRoaXMgaXMgdGhlIFguWSB1c2VkIGluIHRoZSBwcm90b2NvbCBuZWdvdGlhdGlvbgotIG00X2RlZmluZShbdW5pcXVlX3Byb3RvY29sX3ZlcnNpb25dLCBbMS4wXSkKLSAKLS1BQ19QUkVSRVEoWzIuNTldKQotK0FDX1BSRVJFUShbMi42M10pCi0gCi0gQUNfSU5JVChbdW5pcXVlXSwgW3VuaXF1ZV92ZXJzaW9uXSwKLSAgICAgICAgIFtodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1saWJ1bmlxdWVdLAotQEAgLTIzLDkgKzIzLDIxIEBAIEFDX0lOSVQoW3VuaXF1ZV0sIFt1bmlxdWVfdmVyc2lvbl0sCi0gQUNfQ09ORklHX1NSQ0RJUihbdW5pcXVlL3VuaXF1ZS5oXSkKLSBBQ19DT05GSUdfTUFDUk9fRElSKFtidWlsZC9hdXRvdG9vbHNdKQotIAotLUFNX0lOSVRfQVVUT01BS0UoWzEuMTBdKQotK0FNX0lOSVRfQVVUT01BS0UoWzEuMTEgbm8tZGVmaW5lIC1Xbm8tcG9ydGFiaWxpdHkgZGlzdC1iemlwMl0pCi0gQU1fQ09ORklHX0hFQURFUihbY29uZmlnLmhdKQotIAotK0FNX1NJTEVOVF9SVUxFUyhbeWVzXSkKLSsKLStBQ19QUk9HX0NDX0NfTwotKwotK0FNX1BBVEhfR0xJQl8yXzAKLSsKLStMVF9QUkVSRVEoWzIuMi42XSkKLStMVF9JTklUKFtkaXNhYmxlLXN0YXRpY10pCi0rCi0rIyBIb25vciBhY2xvY2FsIGZsYWdzCi0rQUNMT0NBTD0iJEFDTE9DQUwgJEFDTE9DQUxfRkxBR1MiCi0rCi0gIyB2ZXJzaW9uIHN5bWJvbHMKLSBVTklRVUVfTUFKT1JfVkVSU0lPTj11bmlxdWVfbWFqb3JfdmVyc2lvbgotIFVOSVFVRV9NSU5PUl9WRVJTSU9OPXVuaXF1ZV9taW5vcl92ZXJzaW9uCi1AQCAtNDksMjEgKzYxLDYgQEAgVU5JUVVFX0xUX0NVUlJFTlRfTUlOVVNfQUdFPW00X2V2YWwobHRfY3VycmVudCAtIGx0X2FnZSkKLSBBQ19TVUJTVChVTklRVUVfTFRfVkVSU0lPTl9JTkZPKQotIEFDX1NVQlNUKFVOSVFVRV9MVF9DVVJSRU5UX01JTlVTX0FHRSkKLSAKLS1BQ19JU0NfUE9TSVgKLS1BQ19QUk9HX0NDCi0tQUNfUFJPR19JTlNUQUxMCi0tQUNfUFJPR19NQUtFX1NFVAotLUFDX0NfQ09OU1QKLS1BQ19QUk9HX0xJQlRPT0wKLS1BQ19QQVRIX1BST0coR0xJQl9NS0VOVU1TLCBbZ2xpYi1ta2VudW1zXSkKLS1BQ19QQVRIX1BST0coR0xJQl9HRU5NQVJTSEFMLCBbZ2xpYi1nZW5tYXJzaGFsXSkKLS0KLS1BTV9TQU5JVFlfQ0hFQ0sKLS1BTV9QUk9HX0NDX1NUREMKLS0KLS0jIEhvbm9yIGFjbG9jYWwgZmxhZ3MKLS1BQ0xPQ0FMPSIkQUNMT0NBTCAkQUNMT0NBTF9GTEFHUyIKLS0KLSBtNF9kZWZpbmUoW2dsaWJfcmVxdWlyZWRdLCBbMi4xMi4wXSkKLSBtNF9kZWZpbmUoW2d0a19yZXF1aXJlZF0sICBbMi4xMS4wXSkKLSBtNF9kZWZpbmUoW2RidXNfcmVxdWlyZWRdLCBbMC43MF0pCi1AQCAtMTIyLDcgKzExOSw2IEBAIEFNX0NPTkRJVElPTkFMKFtIQVZFX0RCVVNdLCBbdGVzdCAieCRoYXZlX2RidXMiID0gInh5ZXMiXSkKLSBkbmwgQmFjb24gYmFja2VuZAotIGRubCBUaGlzIGlzIHRoZSBmYWxsYmFjayBiYWNrZW5kLCBzbyB3ZSAqbmVlZCogdGhlc2UgaGVhZGVycyBhbmQgZnVuY3Rpb25zCi0gZG5sIGV2ZW4gaWYgd2UgZW5kIHVwIHVzaW5nIEQtQnVzCi0tZG5sIEQtQnVzIGJhY2tlbmQgZGVwZW5kZW5jaWVzCi0gbTRfZGVmaW5lKFtoYXZlX2JhY29uX2RlZmF1bHRdLCBbeWVzXSkKLSBBQ19BUkdfRU5BQkxFKFtiYWNvbl0sCi0gICAgICAgICAgICAgICBbQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWJhY29uPUA8OkB5ZXMvbm9AOj5AXSwKLUBAIC0xNzgsOSArMTc0LDkgQEAgQUNfQVJHX0VOQUJMRShbbWFpbnRhaW5lci1mbGFnc10sCi0gQVNfSUYoW3Rlc3QgIngkZW5hYmxlX21haW50YWluZXJfZmxhZ3MiID0gInh5ZXMiICYmICB0ZXN0ICJ4JEdDQyIgPSAieHllcyJdLAotICAgICAgIFsKLSAgICAgICAgIEFTX0NPTVBJTEVSX0ZMQUdTKFtNQUlOVEFJTkVSX0NGTEFHU10sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBbIi1XZXJyb3IgLVdhbGwgLVdzaGFkb3cgLVdjYXN0LWFsaWduCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1Xbm8tdW5pbml0aWFsaXplZCAtV2VtcHR5LWJvZHkgLVdmb3JtYXQtc2VjdXJpdHkKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLVdpbml0LXNlbGYiXSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIFsiLVdhbGwgLVdzaGFkb3cgLVdjYXN0LWFsaWduCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1Xbm8tdW5pbml0aWFsaXplZCAtV2VtcHR5LWJvZHkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLVdmb3JtYXQtc2VjdXJpdHkgLVdpbml0LXNlbGYiXSkKLSAgICAgICBdCi0gKQotIAotQEAgLTIzMCwyNyArMjI2LDEwIEBAIEFDX0RFRklORV9VTlFVT1RFRChbR0VUVEVYVF9QQUNLQUdFXSwKLSBBTV9HTElCX0RFRklORV9MT0NBTEVESVIoVU5JUVVFX0xPQ0FMRURJUikKLSAKLSAjIGludHJvc3BlY3Rpb24KLS1HT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0soWzAuNi4zXSkKLStHT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0soWzAuNi43XSkKLSAKLSAjIGd0ay1kb2MKLS1HVEtfRE9DX0NIRUNLKFsxLjExXSkKLS0KLS0jIG5pY2UgYnVpbGRzCi0tbTRfaWZkZWYoW0FNX1NJTEVOVF9SVUxFU10sCi0tICAgICAgICAgWwotLSAgICAgICAgICAgQU1fU0lMRU5UX1JVTEVTKFt5ZXNdKQotLSAgICAgICAgICAgdXNlX3NoYXZlPW5vCi0tICAgICAgICAgXSwKLS0gICAgICAgICBbCi0tICAgICAgICAgICBTSEFWRV9JTklUKFtidWlsZC9hdXRvdG9vbHNdLCBbZW5hYmxlXSkKLS0gICAgICAgICAgIEFDX0NPTkZJR19GSUxFUyhbCi0tICAgICAgICAgICAgICAgIGJ1aWxkL2F1dG90b29scy9zaGF2ZS1saWJ0b29sCi0tICAgICAgICAgICAgICAgIGJ1aWxkL2F1dG90b29scy9zaGF2ZQotLSAgICAgICAgICAgXSkKLS0gICAgICAgICAgIHVzZV9zaGF2ZT15ZXMKLS0gICAgICAgICBdKQotLQotLUFNX0NPTkRJVElPTkFMKFtVU0VfU0hBVkVdLCBbdGVzdCAieCR1c2Vfc2hhdmUiID0gInh5ZXMiXSkKLStHVEtfRE9DX0NIRUNLKFsxLjEzXSkKLSAKLSBBQ19DT05GSUdfRklMRVMoWwotICAgICAgICAgTWFrZWZpbGUKLS0tCi1jZ2l0IHYwLjkuMC4yCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJ1bmlxdWUvbGlidW5pcXVlL2ZpeF9mb3JfY29tcGlsZV93aXRoX2djYy00LjYuMC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYnVuaXF1ZS9saWJ1bmlxdWUvZml4X2Zvcl9jb21waWxlX3dpdGhfZ2NjLTQuNi4wLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzVkZTkzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYnVuaXF1ZS9saWJ1bmlxdWUvZml4X2Zvcl9jb21waWxlX3dpdGhfZ2NjLTQuNi4wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUZpeCBGb2xsb3dpbmcgY29tcGlsYXRpb24gZXJyb3JzIHdpdGggZ2NjIDQuNi4wCi0KLU5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+IDIwMTEvMDUvMTAKLQotfCB1bmlxdWViYWNrZW5kLWRidXMuYzogSW4gZnVuY3Rpb24gJ3VuaXF1ZV9iYWNrZW5kX2RidXNfcmVxdWVzdF9uYW1lJzoKLXwgdW5pcXVlYmFja2VuZC1kYnVzLmM6ODc6MjI6IGVycm9yOiB2YXJpYWJsZSAnYmFja2VuZF9kYnVzJyBzZXQgYnV0IG5vdCB1c2VkIFstV2Vycm9yPXVudXNlZC1idXQtc2V0LXZhcmlhYmxlXQotfCB1bmlxdWViYWNrZW5kLWRidXMuYzogSW4gZnVuY3Rpb24gJ3VuaXF1ZV9iYWNrZW5kX2RidXNfc2VuZF9tZXNzYWdlJzoKLXwgdW5pcXVlYmFja2VuZC1kYnVzLmM6MTg5OjEyOiBlcnJvcjogdmFyaWFibGUgJ3Jlcycgc2V0IGJ1dCBub3QgdXNlZCBbLVdlcnJvcj11bnVzZWQtYnV0LXNldC12YXJpYWJsZV0KLXwgY2MxOiBhbGwgd2FybmluZ3MgYmVpbmcgdHJlYXRlZCBhcyBlcnJvcnMKLXwgCi18IG1ha2VbNV06ICoqKiBbbGlidW5pcXVlX2RidXNfbGEtdW5pcXVlYmFja2VuZC1kYnVzLmxvXSBFcnJvciAxCi0KLUluZGV4OiBsaWJ1bmlxdWUtMS4xLjYvdW5pcXVlL2RidXMvdW5pcXVlYmFja2VuZC1kYnVzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ1bmlxdWUtMS4xLjYub3JpZy91bmlxdWUvZGJ1cy91bmlxdWViYWNrZW5kLWRidXMuYwotKysrIGxpYnVuaXF1ZS0xLjEuNi91bmlxdWUvZGJ1cy91bmlxdWViYWNrZW5kLWRidXMuYwotQEAgLTg0LDcgKzg0LDcgQEAgdW5pcXVlX2JhY2tlbmRfZGJ1c19yZWdpc3Rlcl9wcm94eSAoVW5pcQotIHN0YXRpYyBnYm9vbGVhbgotIHVuaXF1ZV9iYWNrZW5kX2RidXNfcmVxdWVzdF9uYW1lIChVbmlxdWVCYWNrZW5kICpiYWNrZW5kKQotIHsKLS0gIFVuaXF1ZUJhY2tlbmREQnVzICpiYWNrZW5kX2RidXM7Ci0rICBVbmlxdWVCYWNrZW5kREJ1cyBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgKmJhY2tlbmRfZGJ1czsKLSAgIGNvbnN0IGdjaGFyICpuYW1lOwotICAgREJ1c0dDb25uZWN0aW9uICpjb25uZWN0aW9uOwotICAgREJ1c0dQcm94eSAqcHJveHk7Ci1AQCAtMTg2LDcgKzE4Niw3IEBAIHVuaXF1ZV9iYWNrZW5kX2RidXNfc2VuZF9tZXNzYWdlIChVbmlxdWUKLSAgIEdWYWx1ZUFycmF5ICpkYXRhOwotICAgZ2NoYXIgKmNtZDsKLSAgIGdjaGFyICpyZXNwOwotLSAgZ2Jvb2xlYW4gcmVzOwotKyAgZ2Jvb2xlYW4gX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIHJlczsKLSAgIEdFcnJvciAqZXJyb3I7Ci0gICBVbmlxdWVSZXNwb25zZSByZXNwb25zZTsKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYnVuaXF1ZS9saWJ1bmlxdWUvbm9jb25zdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYnVuaXF1ZS9saWJ1bmlxdWUvbm9jb25zdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmNjMDM0Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJ1bmlxdWUvbGlidW5pcXVlL25vY29uc3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotR19DT05TVF9SRVRVUk4gaXMgZGVwcmVjYXRlZCBpbiBnbGliIDIuMzAgc28gcmVtb3ZlIHRvIHRvIGF2b2lkCi1idWlsZCBmYWlsdXJlcy4KLQotUlAgMjAxMS8xMC8xMgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IGxpYnVuaXF1ZS0xLjEuNi91bmlxdWUvdW5pcXVlYXBwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ1bmlxdWUtMS4xLjYub3JpZy91bmlxdWUvdW5pcXVlYXBwLmMJMjAxMS0xMC0xMiAwMToyMToyNS44NDIwNDY0ODggKzAxMDAKLSsrKyBsaWJ1bmlxdWUtMS4xLjYvdW5pcXVlL3VuaXF1ZWFwcC5jCTIwMTEtMTAtMTIgMDE6MjE6NTUuMDYyMDQ2Nzk2ICswMTAwCi1AQCAtNzgxLDcgKzc4MSw3IEBACi0gfQotIAotIAotLUdfQ09OU1RfUkVUVVJOIGdjaGFyICoKLStjb25zdCBnY2hhciAqCi0gdW5pcXVlX2NvbW1hbmRfdG9fc3RyaW5nIChVbmlxdWVBcHAgKmFwcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgY29tbWFuZCkKLSB7Ci1AQCAtODYzLDcgKzg2Myw3IEBACi0gICByZXR1cm4gcmV0dmFsOwotIH0KLSAKLS1HX0NPTlNUX1JFVFVSTiBnY2hhciAqCi0rY29uc3QgZ2NoYXIgKgotIHVuaXF1ZV9yZXNwb25zZV90b19zdHJpbmcgKFVuaXF1ZVJlc3BvbnNlIHJlc3BvbnNlKQotIHsKLSAgIEdFbnVtQ2xhc3MgKmVudW1fY2xhc3M7Ci1JbmRleDogbGlidW5pcXVlLTEuMS42L3VuaXF1ZS91bmlxdWViYWNrZW5kLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ1bmlxdWUtMS4xLjYub3JpZy91bmlxdWUvdW5pcXVlYmFja2VuZC5jCTIwMTEtMTAtMTIgMDE6MjE6MjUuNzQyMDQ2MzIzICswMTAwCi0rKysgbGlidW5pcXVlLTEuMS42L3VuaXF1ZS91bmlxdWViYWNrZW5kLmMJMjAxMS0xMC0xMiAwMToyMTo1NS4wNjIwNDY3OTYgKzAxMDAKLUBAIC0xMTEsNyArMTExLDcgQEAKLSAgKgotICAqIFJldHVybiB2YWx1ZTogRklYTUUKLSAgKi8KLS1HX0NPTlNUX1JFVFVSTiBnY2hhciAqCi0rY29uc3QgZ2NoYXIgKgotIHVuaXF1ZV9iYWNrZW5kX2dldF9uYW1lIChVbmlxdWVCYWNrZW5kICpiYWNrZW5kKQotIHsKLSAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChVTklRVUVfSVNfQkFDS0VORCAoYmFja2VuZCksIE5VTEwpOwotQEAgLTE1NCw3ICsxNTQsNyBAQAotICAqCi0gICogUmV0dXJuIHZhbHVlOiBGSVhNRQotICAqLwotLUdfQ09OU1RfUkVUVVJOIGdjaGFyICoKLStjb25zdCBnY2hhciAqCi0gdW5pcXVlX2JhY2tlbmRfZ2V0X3N0YXJ0dXBfaWQgKFVuaXF1ZUJhY2tlbmQgKmJhY2tlbmQpCi0gewotICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKFVOSVFVRV9JU19CQUNLRU5EIChiYWNrZW5kKSwgTlVMTCk7Ci1JbmRleDogbGlidW5pcXVlLTEuMS42L3VuaXF1ZS91bmlxdWViYWNrZW5kLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ1bmlxdWUtMS4xLjYub3JpZy91bmlxdWUvdW5pcXVlYmFja2VuZC5oCTIwMTEtMTAtMTIgMDE6MjE6MjUuOTkyMDQ2NTIxICswMTAwCi0rKysgbGlidW5pcXVlLTEuMS42L3VuaXF1ZS91bmlxdWViYWNrZW5kLmgJMjAxMS0xMC0xMiAwMToyMTo1Ni41MTIwNDc4NzUgKzAxMDAKLUBAIC05NCwxMCArOTQsMTAgQEAKLSAKLSBVbmlxdWVCYWNrZW5kICogICAgICAgdW5pcXVlX2JhY2tlbmRfY3JlYXRlICAgICAgICAgKHZvaWQpOwotIAotLUdfQ09OU1RfUkVUVVJOIGdjaGFyICp1bmlxdWVfYmFja2VuZF9nZXRfbmFtZSAgICAgICAoVW5pcXVlQmFja2VuZCAgICAgKmJhY2tlbmQpOwotK2NvbnN0IGdjaGFyICp1bmlxdWVfYmFja2VuZF9nZXRfbmFtZSAgICAgICAoVW5pcXVlQmFja2VuZCAgICAgKmJhY2tlbmQpOwotIHZvaWQgICAgICAgICAgICAgICAgICB1bmlxdWVfYmFja2VuZF9zZXRfbmFtZSAgICAgICAoVW5pcXVlQmFja2VuZCAgICAgKmJhY2tlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAqbmFtZSk7Ci0tR19DT05TVF9SRVRVUk4gZ2NoYXIgKnVuaXF1ZV9iYWNrZW5kX2dldF9zdGFydHVwX2lkIChVbmlxdWVCYWNrZW5kICAgICAqYmFja2VuZCk7Ci0rY29uc3QgZ2NoYXIgKnVuaXF1ZV9iYWNrZW5kX2dldF9zdGFydHVwX2lkIChVbmlxdWVCYWNrZW5kICAgICAqYmFja2VuZCk7Ci0gdm9pZCAgICAgICAgICAgICAgICAgIHVuaXF1ZV9iYWNrZW5kX3NldF9zdGFydHVwX2lkIChVbmlxdWVCYWNrZW5kICAgICAqYmFja2VuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICpzdGFydHVwX2lkKTsKLSBHZGtTY3JlZW4gKiAgICAgICAgICAgdW5pcXVlX2JhY2tlbmRfZ2V0X3NjcmVlbiAgICAgKFVuaXF1ZUJhY2tlbmQgICAgICpiYWNrZW5kKTsKLUluZGV4OiBsaWJ1bmlxdWUtMS4xLjYvdW5pcXVlL3VuaXF1ZWludGVybmFscy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlidW5pcXVlLTEuMS42Lm9yaWcvdW5pcXVlL3VuaXF1ZWludGVybmFscy5oCTIwMTEtMTAtMTIgMDE6MjE6MjUuODkyMDQ2NTMyICswMTAwCi0rKysgbGlidW5pcXVlLTEuMS42L3VuaXF1ZS91bmlxdWVpbnRlcm5hbHMuaAkyMDExLTEwLTEyIDAxOjIxOjU2LjUxMjA0Nzg3NSArMDEwMAotQEAgLTQ0LDExICs0NCwxMSBAQAotICAqIGFuZCB0aGVuIGJhY2sgaW50byBhbiBpZAotICAqLwotIFVuaXF1ZVJlc3BvbnNlICAgICAgICB1bmlxdWVfcmVzcG9uc2VfZnJvbV9zdHJpbmcgIChjb25zdCBnY2hhciAgICAqcmVzcG9uc2UpOwotLUdfQ09OU1RfUkVUVVJOIGdjaGFyICp1bmlxdWVfcmVzcG9uc2VfdG9fc3RyaW5nICAgIChVbmlxdWVSZXNwb25zZSAgcmVzcG9uc2UpOwotK2NvbnN0IGdjaGFyICp1bmlxdWVfcmVzcG9uc2VfdG9fc3RyaW5nICAgIChVbmlxdWVSZXNwb25zZSAgcmVzcG9uc2UpOwotIAotIGdpbnQgICAgICAgICAgICAgICAgICB1bmlxdWVfY29tbWFuZF9mcm9tX3N0cmluZyAgIChVbmlxdWVBcHAgICAgICAqYXBwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAqY29tbWFuZCk7Ci0tR19DT05TVF9SRVRVUk4gZ2NoYXIgKnVuaXF1ZV9jb21tYW5kX3RvX3N0cmluZyAgICAgKFVuaXF1ZUFwcCAgICAgICphcHAsCi0rY29uc3QgZ2NoYXIgKnVuaXF1ZV9jb21tYW5kX3RvX3N0cmluZyAgICAgKFVuaXF1ZUFwcCAgICAgICphcHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAgICBjb21tYW5kKTsKLSAKLSBHX0VORF9ERUNMUwotSW5kZXg6IGxpYnVuaXF1ZS0xLjEuNi91bmlxdWUvdW5pcXVlbWVzc2FnZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlidW5pcXVlLTEuMS42Lm9yaWcvdW5pcXVlL3VuaXF1ZW1lc3NhZ2UuYwkyMDExLTEwLTEyIDAxOjIxOjI1Ljk0MjA0NjUyNCArMDEwMAotKysrIGxpYnVuaXF1ZS0xLjEuNi91bmlxdWUvdW5pcXVlbWVzc2FnZS5jCTIwMTEtMTAtMTIgMDE6MjE6NTUuMDcyMDQ2NTk1ICswMTAwCi1AQCAtMTg1LDcgKzE4NSw3IEBACi0gICoKLSAgKiBTaW5jZTogMS4wLjIKLSAgKi8KLS1HX0NPTlNUX1JFVFVSTiBndWNoYXIgKgotK2NvbnN0IGd1Y2hhciAqCi0gdW5pcXVlX21lc3NhZ2VfZGF0YV9nZXQgKFVuaXF1ZU1lc3NhZ2VEYXRhICptZXNzYWdlX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGdzaXplICAgICAgICAgICAgICpsZW5ndGgpCi0gewotQEAgLTUyNSw3ICs1MjUsNyBAQAotICAqICAgb3duZWQgYnkgdGhlICNVbmlxdWVNZXNzYWdlRGF0YSBzdHJ1Y3R1cmUgYW5kIHNob3VsZCBub3QgYmUKLSAgKiAgIG1vZGlmaWVkIG9yIGZyZWVkCi0gICovCi0tR19DT05TVF9SRVRVUk4gZ2NoYXIgKgotK2NvbnN0IGdjaGFyICoKLSB1bmlxdWVfbWVzc2FnZV9kYXRhX2dldF9zdGFydHVwX2lkIChVbmlxdWVNZXNzYWdlRGF0YSAqbWVzc2FnZV9kYXRhKQotIHsKLSAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChtZXNzYWdlX2RhdGEgIT0gTlVMTCwgTlVMTCk7Ci1JbmRleDogbGlidW5pcXVlLTEuMS42L3VuaXF1ZS91bmlxdWVtZXNzYWdlLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ1bmlxdWUtMS4xLjYub3JpZy91bmlxdWUvdW5pcXVlbWVzc2FnZS5oCTIwMTEtMTAtMTIgMDE6MjE6MjUuNzkyMDQ2NTk2ICswMTAwCi0rKysgbGlidW5pcXVlLTEuMS42L3VuaXF1ZS91bmlxdWVtZXNzYWdlLmgJMjAxMS0xMC0xMiAwMToyMTo1Ni41MTIwNDc4NzUgKzAxMDAKLUBAIC00OCw3ICs0OCw3IEBACi0gdm9pZCAgICAgICAgICAgICAgICAgICB1bmlxdWVfbWVzc2FnZV9kYXRhX3NldCAgICAgICAgICAgIChVbmlxdWVNZXNzYWdlRGF0YSAqbWVzc2FnZV9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3VjaGFyICAgICAgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc2l6ZSAgICAgICAgICAgICAgbGVuZ3RoKTsKLS1HX0NPTlNUX1JFVFVSTiBndWNoYXIgKnVuaXF1ZV9tZXNzYWdlX2RhdGFfZ2V0ICAgICAgICAgICAgKFVuaXF1ZU1lc3NhZ2VEYXRhICptZXNzYWdlX2RhdGEsCi0rY29uc3QgZ3VjaGFyICp1bmlxdWVfbWVzc2FnZV9kYXRhX2dldCAgICAgICAgICAgIChVbmlxdWVNZXNzYWdlRGF0YSAqbWVzc2FnZV9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NpemUgICAgICAgICAgICAgKmxlbmd0aCk7Ci0gCi0gZ2Jvb2xlYW4gICAgICAgICAgICAgICB1bmlxdWVfbWVzc2FnZV9kYXRhX3NldF90ZXh0ICAgICAgIChVbmlxdWVNZXNzYWdlRGF0YSAqbWVzc2FnZV9kYXRhLAotQEAgLTYzLDcgKzYzLDcgQEAKLSBnY2hhciAqICAgICAgICAgICAgICAgIHVuaXF1ZV9tZXNzYWdlX2RhdGFfZ2V0X2ZpbGVuYW1lICAgKFVuaXF1ZU1lc3NhZ2VEYXRhICptZXNzYWdlX2RhdGEpOwotIAotIEdka1NjcmVlbiAqICAgICAgICAgICAgdW5pcXVlX21lc3NhZ2VfZGF0YV9nZXRfc2NyZWVuICAgICAoVW5pcXVlTWVzc2FnZURhdGEgKm1lc3NhZ2VfZGF0YSk7Ci0tR19DT05TVF9SRVRVUk4gZ2NoYXIgKiB1bmlxdWVfbWVzc2FnZV9kYXRhX2dldF9zdGFydHVwX2lkIChVbmlxdWVNZXNzYWdlRGF0YSAqbWVzc2FnZV9kYXRhKTsKLStjb25zdCBnY2hhciAqIHVuaXF1ZV9tZXNzYWdlX2RhdGFfZ2V0X3N0YXJ0dXBfaWQgKFVuaXF1ZU1lc3NhZ2VEYXRhICptZXNzYWdlX2RhdGEpOwotIGd1aW50ICAgICAgICAgICAgICAgICAgdW5pcXVlX21lc3NhZ2VfZGF0YV9nZXRfd29ya3NwYWNlICAoVW5pcXVlTWVzc2FnZURhdGEgKm1lc3NhZ2VfZGF0YSk7Ci0gCi0gR19FTkRfREVDTFMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYnVuaXF1ZS9saWJ1bmlxdWVfMS4xLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9saWJ1bmlxdWUvbGlidW5pcXVlXzEuMS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTMzY2NjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYnVuaXF1ZS9saWJ1bmlxdWVfMS4xLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIHN1cHBvcnRpbmcgc2luZ2xlIGluc3RhbmNlIEdUSysgYXBwbGljYXRpb25zIgotREVTQ1JJUFRJT04gPSAiVW5pcXVlIGlzIGEgbGlicmFyeSBmb3Igd3JpdGluZyBzaW5nbGUgaW5zdGFuY2UgR1RLKyBhcHBsaWNhdGlvbnMuIElmIHlvdSBsYXVuY2ggYSBzaW5nbGUgaW5zdGFuY2UgYXBwbGljYXRpb24gdHdpY2UsIHRoZSBzZWNvbmQgaW5zdGFuY2Ugd2lsbCBlaXRoZXIganVzdCBxdWl0IG9yIHdpbGwgc2VuZCBhIG1lc3NhZ2UgdG8gdGhlIHJ1bm5pbmcgaW5zdGFuY2UuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9BdHRpYy9MaWJVbmlxdWUiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1saWJ1bmlxdWUiCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L2xpYnVuaXF1ZS8xLjEvbGlidW5pcXVlLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vZml4X2Zvcl9jb21waWxlX3dpdGhfZ2NjLTQuNi4wLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25vY29uc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS5hbS11c2UtTElCVE9PTC1pbnN0ZWFkLW9mLWhhcmRjb2RlZC1saWJ0b29sLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdC11bmlxdWUtQWRkLWZvcm1hdC1xdWFsaWZpZXItcy1mb3Itc3RyaW5nLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzk1NTc2OWVmMzFmMWJjNGY4MzQ0NmRiYjM2MjVlNmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTVjODA0MWNlZjhlMzNjNTU3MzJmMDZhMjkyMzgxY2IzNDVkYjk0NmNmNzkyYTRhZTE4YWE1YzY2Y2RkNGZiYiIKLQotUFIgPSAicjciCi0KLURFUEVORFMgPSAiZGJ1cy1nbGliLW5hdGl2ZSBnbGliLTIuMCBndGsrIgotCi1QQUNLQUdFQ09ORklHID8/PSAiZGJ1cyIKLVBBQ0tBR0VDT05GSUdbZGJ1c10gPSAiLS1lbmFibGUtZGJ1cywtLWRpc2FibGUtZGJ1cyxkYnVzIGRidXMtZ2xpYiIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgotCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kaXJlY3RmYi9kaXJlY3RmYi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kaXJlY3RmYi9kaXJlY3RmYi5pbmMKaW5kZXggYmZiZDljMi4uYmQ2NmEyOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZGlyZWN0ZmIvZGlyZWN0ZmIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RpcmVjdGZiL2RpcmVjdGZiLmluYwpAQCAtNDEsMTYgKzQxLDE2IEBACiBQQUNLQUdFQ09ORklHW3RzbGliXSA9ICItLXdpdGgtaW5wdXRkcml2ZXJzPXRzbGliLCx0c2xpYiIKIFBBQ0tBR0VDT05GSUdbbGludXhpbnB1dF0gPSAiLS13aXRoLWlucHV0ZHJpdmVycz1saW51eGlucHV0LCwiCiBQQUNLQUdFQ09ORklHW25vaW5wdXRdID0gIi0td2l0aC1pbnB1dGRyaXZlcnM9bm9uZSwsIgorUEFDS0FHRUNPTkZJR1ttZXNhXSA9ICItLWVuYWJsZS1tZXNhLC0tZGlzYWJsZS1tZXNhLHZpcnR1YWwvbWVzYSwiCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEseHNlcnZlci14b3JnLCIKIAogRVhUUkFfT0VDT05GID0gIlwKICAgLS13aXRoLWdmeGRyaXZlcnM9bm9uZSBcCiAgIC0tZW5hYmxlLWZyZWV0eXBlPXllcyBcCiAgIC0tZW5hYmxlLXpsaWIgXAogICAtLWRpc2FibGUtaW1saWIyIFwKLSAgLS1kaXNhYmxlLW1lc2EgXAogICAtLWRpc2FibGUtc2RsIFwKICAgLS1kaXNhYmxlLXZuYyBcCi0gIC0tZGlzYWJsZS14MTEgXAogICAtLWRpc2FibGUteDExdmRwYXUgXAogICAtLWRpc2FibGUteGluZS12ZHBhdSBcCiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmEvMDAwMS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZDRkYmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmEvMDAwMS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDgwMTc5YzI5N2FiYjlkZTI4MjliZDAyMzU2MjU3MjQxZGQ0MTRkNzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMZWkgTWFvaHVpIDxsZWltYW9odWlAY24uZnVqaXRzdS5jb20+CitEYXRlOiBNb24sIDE4IERlYyAyMDE3IDE2OjI1OjU0ICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBzZXQgUFlUSE9OX0lOU1RBTExfRElSIGJ5IHJ1bm5pbmcgcHl0aG9uLgorCitTaWduZWQtb2ZmLWJ5OiBMZWkgTWFvaHVpIDxsZWltYW9odWlAY24uZnVqaXRzdS5jb20+CistLS0KKyBDTWFrZUxpc3RzLnR4dCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IDdjNjZiMzkuLjE0ODllZjYgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0xOSw3ICsxOSw3IEBAIGVsc2UoTk9UIFNQSElOWF9FWEVDVVRBQkxFLU5PVEZPVU5EKQorIAltZXNzYWdlKFNUQVRVUyAiQ291bGQgTk9UIGZpbmQgc3BoaW54LWJ1aWxkLiIpCisgZW5kaWYoTk9UIFNQSElOWF9FWEVDVVRBQkxFLU5PVEZPVU5EKQorIAorLWV4ZWN1dGVfcHJvY2VzcyhDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9IC1jICJmcm9tIGRpc3R1dGlscy5zeXNjb25maWcgaW1wb3J0IGdldF9weXRob25fbGliOyBwcmludChnZXRfcHl0aG9uX2xpYigpLCBlbmQ9JycpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQorKyNleGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAtYyAiZnJvbSBkaXN0dXRpbHMuc3lzY29uZmlnIGltcG9ydCBnZXRfcHl0aG9uX2xpYjsgcHJpbnQoZ2V0X3B5dGhvbl9saWIoKSwgZW5kPScnKSIgT1VUUFVUX1ZBUklBQkxFIFBZVEhPTl9JTlNUQUxMX0RJUikKKyBzdHJpbmcoUkVHRVggUkVQTEFDRSAiXG4kIiAiIiAke1BZVEhPTl9JTlNUQUxMX0RJUn0gIiR7UFlUSE9OX0lOU1RBTExfRElSfSIpCisgZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImltcG9ydCBzeXM7IHN5cy5zdGRvdXQud3JpdGUoJyVzLiVzJyAlIChzeXMudmVyc2lvbl9pbmZvLm1ham9yLCBzeXMudmVyc2lvbl9pbmZvLm1pbm9yKSkiIE9VVFBVVF9WQVJJQUJMRSBQWVRIT05fTUFKT1JfRE9UX01JTk9SX1ZFUlNJT04pCisgbWVzc2FnZShTVEFUVVMgIlB5dGhvbiBpbnN0YWxsIGRpciBpcyAke1BZVEhPTl9JTlNUQUxMX0RJUn0iKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmEvMDAwMS1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhLzAwMDEtUnVuLXB5dGhvbi1zY3JpcHRzLXVzaW5nLWVudi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWI2YjhmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhLzAwMDEtUnVuLXB5dGhvbi1zY3JpcHRzLXVzaW5nLWVudi5wYXRjaApAQCAtMCwwICsxLDI1IEBACitGcm9tIDE1ZDBhZmNmYTQ4NjhiN2IwNzJiMzQzNGJhYzAwNjQ2MTdkNjFmOTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMZWkgTWFvaHVpIDxsZWltYW9odWlAY24uZnVqaXRzdS5jb20+CitEYXRlOiBUdWUsIDE5IERlYyAyMDE3IDE0OjUzOjE0ICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdIFJ1biBweXRob24gc2NyaXB0cyB1c2luZyBlbnYKKworT3RoZXJ3aXNlIHRoZSBidWlsZCB0b29scyBoYXJkY29kZSB0aGUgcHl0aG9uIHBhdGggaW50byB0aGVtLgorCitTaWduZWQtb2ZmLWJ5OiBMZWkgTWFvaHVpIDxsZWltYW9odWlAY24uZnVqaXRzdS5jb20+CistLS0KKyBiaW4vZG5mZHJhZ29yYSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2Jpbi9kbmZkcmFnb3JhIGIvYmluL2RuZmRyYWdvcmEKK2luZGV4IGI4ZTA1NTAuLmNkODBmN2YgMTAwNzU1CistLS0gYS9iaW4vZG5mZHJhZ29yYQorKysrIGIvYmluL2RuZmRyYWdvcmEKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vcHl0aG9uMworKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIHZpbTogc2V0IGV0IHRzPTQgc3c9NDoKKyAjICAgIENvcHlyaWdodCAyMDE2LTIwMTcgQW5nZWxvIE5hc2VsbGkgPGFuYXNlbGxpQGxpbnV4Lml0PgorICMKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhLzAwMDEtVG8tZml4LWVycm9yLXdoZW4tZG9fcGFja2FnZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLVRvLWZpeC1lcnJvci13aGVuLWRvX3BhY2thZ2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBjZTFkMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLVRvLWZpeC1lcnJvci13aGVuLWRvX3BhY2thZ2UucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA1NmQ5YjgzOGIzNDc1NzI5ZDdlZDljNmMxNTZkNzJjMjg5NDNjMmI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgorRGF0ZTogVHVlLCAxOSBEZWMgMjAxNyAxMToxNToyOSArMDkwMAorU3ViamVjdDogW1BBVENIXSBUbyBmaXggZXJyb3Igd2hlbiBkb19wYWNrYWdlCisKK1FBIElzc3VlOiBuYXRpdmVzZGstZG5mZHJhZ29yYTogRmlsZXMvZGlyZWN0b3JpZXMgd2VyZSBpbnN0YWxsZWQgYnV0IG5vdCBzaGlwcGVkIGluIGFueSBwYWNrYWdlOgorICAvZXRjCisgIC9ldGMvZG5mZHJhZ29yYQorICAvZXRjL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS55YW1sCisKK1NpZ25lZC1vZmYtYnk6IExlaSBNYW9odWkgPGxlaW1hb2h1aUBjbi5mdWppdHN1LmNvbT4KKy0tLQorIENNYWtlTGlzdHMudHh0IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggN2M2NmIzOS4uYTU2NTlmNyAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTUyLDcgKzUyLDcgQEAgZW5kaWYoRU5BQkxFX0NPTVBTKQorIHNldChDTUFLRV9JTlNUQUxMX0JJTkRJUiAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vYmluIikKKyBzZXQoQ01BS0VfSU5TVEFMTF9EQVRBUk9PVERJUiAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vc2hhcmUiKQorIHNldChDTUFLRV9JTlNUQUxMX0xPQ0FMRURJUiAiJHtDTUFLRV9JTlNUQUxMX0RBVEFST09URElSfS9sb2NhbGUiKQorLXNldChDTUFLRV9JTlNUQUxMX0ZVTExfU1lTQ09ORkRJUiAiL2V0YyIpCisrc2V0KENNQUtFX0lOU1RBTExfRlVMTF9TWVNDT05GRElSICIke0NNQUtFX0lOU1RBTExfUFJFRklYfS8uLi9ldGMiKQorIAorICMgQ29uZmlndXJlIGZpbGVzCisgY29uZmlndXJlX2ZpbGUoJHtDTUFLRV9TT1VSQ0VfRElSfS9ldGMvZG5mZHJhZ29yYS55YW1sLmluICR7Q01BS0VfQklOQVJZX0RJUn0vZXRjL2RuZmRyYWdvcmEueWFtbCBAT05MWSkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhLzAwMDEtZGlzYWJsZS1idWlsZC1tYW5wYWdlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLWRpc2FibGUtYnVpbGQtbWFucGFnZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhiYjYzNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLWRpc2FibGUtYnVpbGQtbWFucGFnZXMucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSAyZTZhMGRiMjRiZTM3M2E1Yjc3NDFkYzVhMGQzMjJhMjgzODlmYmYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWmhlbmcgUnVvcWluIDx6aGVuZ3JxLmZuc3RAY24uZnVqaXRzdS5jb20+CitEYXRlOiBUaHUsIDIzIE5vdiAyMDE3IDE2OjM1OjQ0ICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdIGRpc2FibGUgYnVpbGQgbWFucGFnZXMuCisKK1NpZ25lZC1vZmYtYnk6IFpoZW5nIFJ1b3FpbiA8emhlbmdycS5mbnN0QGNuLmZ1aml0c3UuY29tPgorLS0tCisgQ01ha2VMaXN0cy50eHQgfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggN2M2NmIzOS4uZmMzMjc1MCAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTY1LDcgKzY1LDYgQEAgZW5kaWYoR0VUVEVYVF9GT1VORCkKKyAKKyAjIEJ1aWxkIGFuZCBpbnN0YWxsIHRoZSBtYW4tcGFnZXMKKyBpZihOT1QgU1BISU5YX0VYRUNVVEFCTEUtTk9URk9VTkQpCistCWFkZF9zdWJkaXJlY3RvcnkobWFuKQorIGVuZGlmKE5PVCBTUEhJTlhfRVhFQ1VUQUJMRS1OT1RGT1VORCkKKyAKKyAjIEluc3RhbGxpbmcgYXBwbGljYXRpb24gY29kZQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmFfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2QxZWZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhX2dpdC5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gImRuZmRyYWdvcmEgaXMgYSBETkYgZnJvbnRlbmQsIGJhc2VkIG9uIHJwbWRyYWdvcmEgZnJvbSBNYWdlaWEgKG9yaWdpbmFsbHkgcnBtZHJha2UpIFBlcmwgY29kZS4iCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21hbmF0b29scy9kbmZkcmFnb3JhLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc2FibGUtYnVpbGQtbWFucGFnZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVRvLWZpeC1lcnJvci13aGVuLWRvX3BhY2thZ2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitQViA9ICIxLjAuMStnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICI0ZmVmNGNlODg5YjhlNGZhMDMxOTFkNDE0ZjYzYmZkNTA3OTYxNTJhIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIGdldHRleHQgcGtnY29uZmlnIHB5dGhvbjMtZGlyIHB5dGhvbjNuYXRpdmUgZGlzdHV0aWxzMy1iYXNlCisKK0RFUEVORFMgKz0gImRuZiBweXRob24zICIKKyNERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayArPSAibmF0aXZlc2RrLXB5dGhvbjMiCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICIgcHl0aG9uMy1jb3JlIGxpYnl1aSBsaWJ5dWktbmN1cnNlcyAiCisKKyMgbWFucGFnZXMgZ2VuZXJhdGlvbiByZXF1aXJlcyBodHRwOi8vd3d3LnNwaGlueC1kb2Mub3JnLworRVhUUkFfT0VDTUFLRSA9ICIgLURXSVRIX01BTj1PRkYgLURQWVRIT05fSU5TVEFMTF9ESVI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gLURQWVRIT05fREVTSVJFRD0zIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKKworRklMRVNfJHtQTn0gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vICR7ZGF0YWRpcn0vICR7YmluZGlyfS8gJHtzeXNjb25mZGlyfS9kbmZkcmFnb3JhICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRmb3JnZS9mb250Zm9yZ2VfMjAxNzA3MzEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mb250Zm9yZ2UvZm9udGZvcmdlXzIwMTcwNzMxLmJiCmluZGV4IGQ5ZjA4NjcuLjQ4MWZlZGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRmb3JnZS9mb250Zm9yZ2VfMjAxNzA3MzEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGZvcmdlL2ZvbnRmb3JnZV8yMDE3MDczMS5iYgpAQCAtNiw3ICs2LDcgQEAKICAgICBmaWxlOi8vTElDRU5TRTttZDU9M2Y5MjJiNDJlZDAwMzNmYTBmZDRjZDMyNjhmNjQyOWMgXAogIgogCi1ERVBFTkRTID0gImdsaWItMi4wIHBhbmdvIGdpZmxpYiB0aWZmIGxpYnhtbDIganBlZyBweXRob24gbGlidG9vbCB1dGhhc2ggZ251bGliIgorREVQRU5EUyA9ICJnbGliLTIuMCBwYW5nbyBnaWZsaWIgdGlmZiBsaWJ4bWwyIGpwZWcgcHl0aG9uIGxpYnRvb2wgdXRoYXNoIGdudWxpYiBnZXR0ZXh0LW5hdGl2ZSIKIERFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgbGlieGkiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBweXRob25uYXRpdmUgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGdldHRleHQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2Z2d20vZnZ3bS8wMDAxLUZpeC1jb21waWxhdGlvbi1mb3ItZGlzYWJsZWQtZ25vbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mdndtL2Z2d20vMDAwMS1GaXgtY29tcGlsYXRpb24tZm9yLWRpc2FibGVkLWdub21lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNzY0NzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mdndtL2Z2d20vMDAwMS1GaXgtY29tcGlsYXRpb24tZm9yLWRpc2FibGVkLWdub21lLnBhdGNoCkBAIC0wLDAgKzEsNjkgQEAKK0Zyb20gNjBjMTdlYjQ5MTIxYmYyYWE0ODVhY2QzMDc1MGIyZmM2YzhlYjYxZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphcm1vIEphYWtrb2xhIDxqYXJtby5qYWFra29sYUB2aW5jaXQuZmk+CitEYXRlOiBNb24sIDE5IEp1biAyMDE3IDE2OjQxOjM2ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBjb21waWxhdGlvbiBmb3IgSGVsaXguCisKK0dub21lIHN1cHBvcnQsIGluY2x1ZGluZyBHTk9NRV9JTklUX0hPT0ssIGhhcyBiZWVuIHJlbW92ZWQsIGJ1dCBpdCB3YXMKK3N0aWxsIGJlaW5nIGNhbGxlZC4KKworQ09NUEFUX09MRF9LRVlTWU1ERUYgaXMgYSBjaGVjayBmb3IgYSBsZWdhY3kgc3lzdGVtLCB3aGljaCBvdXIgc3lzdGVtCittb3N0IGRlZmluaXRlbHkgaXMgbm90LiAgSXQgaXMgYWNjb21wbGlzaGVkIGJ5IHRyeWluZyB0byBleGVjdXRlCithIHByb2dyYW0sIHdoaWNoIGRvZXMgbm90IHdvcmsgd2hlbiBjcm9zcyBjb21waWxpbmcuCisKK1RoZSBmdndtKDEpIG1hbiBwYWdlIGlzIGNyZWF0ZWQgZnJvbSBEb2Nib29rIFhNTCB3aGljaCBpcyBzZXQgZm9yCithIFdpbmRvd3MgY29kZSBwYWdlIHRoYXQgaXMgbm90IGF2YWlsYWJsZSB3aGVuIGNvbXBpbGluZy4gIEVhc2llc3QgaXMKK3RvIGp1c3Qgbm90IGNyZWF0ZSB0aGUgbWFuIHBhZ2UgYXMgdGhvc2UgYXJlIG5vdCBuZWVkZWQgb24gdGhlIG1vbml0b3IuCisKK1Vwc3RyZWFtLVN0YXR1czogaW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBKYXJtbyBKYWFra29sYSA8amFybW8uamFha2tvbGFAdmluY2l0LmZpPgorU2lnbmVkLW9mZi1ieTogUmlrdSBIw6Rtw6Rsw6RpbmVuIDxyaWt1LmhhbWFsYWluZW5AZ2UuY29tPgorU2lnbmVkLW9mZi1ieTogU2ViYXN0aWFuIFJlaWNoZWwgPHNlYmFzdGlhbi5yZWljaGVsQGNvbGxhYm9yYS5jby51az4KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgIHwgMjAgKysrKy0tLS0tLS0tLS0tLS0tLS0KKyBkb2MvZnZ3bS9NYWtlZmlsZS5hbSB8ICAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA0OGNlMjY0Li5mYWI3YjQ0IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xNDEzLDIzICsxNDEzLDcgQEAgZWxzZQorICAgcHJvYmxlbV9nZGtpbWxpYj0iOiBGYWlsZWQgb24gZ2RrLWltbGliLCBzZWUgY29uZmlnLmxvZyIKKyBmaQorIAorLUdOT01FX0lOSVRfSE9PSworLQorLSMgVW5mb3J0dW5hdGVseSB3ZSBoYXZlIDIgZ25vbWUgc3VwcG9ydHM6IFdNIGhpbnRzIGFuZCBnbm9tZSBsaWJzLgorLSMgVGhlICR3aXRoX2dub21laGludHMgYmVsb3cgcmVmZXJzIHRvIHRoZSBmaXJzdCwgbm90IEdOT01FX0lOSVRfSE9PSy4KKy1pZiB0ZXN0ICEgeCIkZW5hYmxlX2dub21lX2hpbnRzIiA9IHhubzsgdGhlbgorLSAgd2l0aF9nbm9tZWhpbnRzPXllcworLSAgcHJvYmxlbV9nbm9tZWhpbnRzPSIiCistZWxzZQorLSAgd2l0aF9nbm9tZWhpbnRzPW5vCistICBwcm9ibGVtX2dub21laGludHM9IjogRXhwbGljaXRseSBkaXNhYmxlZCIKKy1maQorLQorICMgRGVmaW5lIHNvbWUgY29tcGF0aWJpbGl0eSBtYWNyb3MgbmVlZGVkIGZvciBjb25maWcuaC4KKy1tZ19ERUZJTkVfSUZfTk9UKFsjaW5jbHVkZSA8WDExL2tleXN5bS5oPl0sCistICBbZGVmaW5lZCBYS19QYWdlX1VwICYmIGRlZmluZWQgWEtfUGFnZV9Eb3duXSwKKy0gIFtDT01QQVRfT0xEX0tFWVNZTURFRl0sIFskWF9DRkxBR1NdLAorLSAgW09sZCBBSVggc3lzdGVtcyAoMy4yLjUpIGRvbid0IGRlZmluZSBzb21lIGNvbW1vbiBrZXlzeW1zLl0pCisgQUhfVkVSQkFUSU0oW19DT01QQVRfT0xEX0tFWVNZTURFRl0sCisgWyNpZmRlZiBDT01QQVRfT0xEX0tFWVNZTURFRgorICMgIGRlZmluZSBYS19QYWdlX1VwICAgWEtfUHJpb3IKK2RpZmYgLS1naXQgYS9kb2MvZnZ3bS9NYWtlZmlsZS5hbSBiL2RvYy9mdndtL01ha2VmaWxlLmFtCitpbmRleCBjZGRiMTAyLi5mZjAwMTQ5IDEwMDc1NQorLS0tIGEvZG9jL2Z2d20vTWFrZWZpbGUuYW0KKysrKyBiL2RvYy9mdndtL01ha2VmaWxlLmFtCitAQCAtMTAsNyArMTAsNyBAQCBYU0xfUFJPRklMRSA9ICQoc3JjZGlyKS8uLi9kb2Nib29rLXhzbC9wcm9maWxpbmcvcHJvZmlsZS54c2wKKyBIVE1MX0ZJTEVTID0gZnZ3bS5tYW4uaHRtbAorIFhNTF9GSUxFUyA9IEBET0NfU0VDVElPTlNfWE1MX1BBVEhACisgRVhUUkFfRElTVCA9IEBET0NfU0VDVElPTlNfWE1MQCAkKG1hbl9NQU5TKSBzZWN0aW9ucworLW1hbl9NQU5TID0gZnZ3bS4xCisrbWFuX01BTlMgPQorIAorIGlmIEZWV01fQlVJTERfSFRNTERPQworIGRvY19EQVRBID0gJChIVE1MX0ZJTEVTKQorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mdndtL2Z2d20vMDAwMi1Bdm9pZC1hYnNvbHV0ZS1zeW1saW5rcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2Z2d20vZnZ3bS8wMDAyLUF2b2lkLWFic29sdXRlLXN5bWxpbmtzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1NmNjODYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mdndtL2Z2d20vMDAwMi1Bdm9pZC1hYnNvbHV0ZS1zeW1saW5rcy5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tOiBTZWJhc3RpYW4gUmVpY2hlbCA8c2ViYXN0aWFuLnJlaWNoZWxAY29sbGFib3JhLmNvLnVrPgorRGF0ZTogVHVlLCAyOSBBdWYgMjAxNyAxNjowODo0MiArMDIwMAorU3ViamVjdDogW1BBVENIXSBBdm9pZCBhYnNvbHV0ZSBzeW1saW5rcworCitBdm9pZCB1c2FnZSBvZiBhYnNvbHV0ZSBzeW1saW5rcywgd2hpY2ggYnJlYWtzIHlvY3RvIGJ1aWxkcworc2luY2UgcHlyby4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBTZWJhc3RpYW4gUmVpY2hlbCA8c2ViYXN0aWFuLnJlaWNoZWxAY29sbGFib3JhLmNvLnVrPgorCitkaWZmIC0tZ2l0IGEvZGVmYXVsdC1jb25maWcvTWFrZWZpbGUuYW0gYi9kZWZhdWx0LWNvbmZpZy9NYWtlZmlsZS5hbQoraW5kZXggNWUxNmQwOTVhMTM3Li41NDA0MTQ1YTc0MmMgMTAwNjQ0CistLS0gYS9kZWZhdWx0LWNvbmZpZy9NYWtlZmlsZS5hbQorKysrIGIvZGVmYXVsdC1jb25maWcvTWFrZWZpbGUuYW0KK0BAIC0xNyw5ICsxNyw5IEBAIEVYVFJBX0RJU1QgID0gaW1hZ2VzIFwKKyAKKyBpbnN0YWxsLWRhdGEtaG9vazoKKyAJY3AgLXIgJChzcmNkaXIpL2ltYWdlcyAkKGluc3RfbG9jYXRpb24pCistCWxuIC1zZiAkKGluc3RfbG9jYXRpb24pL0Z2d21TY3JpcHQtRGF0ZVRpbWUgJChpbnN0X2xvY2F0aW9uKS8uLgorLQlsbiAtc2YgJChpbnN0X2xvY2F0aW9uKS9GdndtU2NyaXB0LUNvbmZpcm1RdWl0ICQoaW5zdF9sb2NhdGlvbikvLi4KKy0JbG4gLXNmICQoaW5zdF9sb2NhdGlvbikvRnZ3bVNjcmlwdC1Db25maXJtQ29weUNvbmZpZyAkKGluc3RfbG9jYXRpb24pLy4uCisrCWxuIC1zZiBkZWZhdWx0LWNvbmZpZy9GdndtU2NyaXB0LURhdGVUaW1lICQoaW5zdF9sb2NhdGlvbikvLi4KKysJbG4gLXNmIGRlZmF1bHQtY29uZmlnL0Z2d21TY3JpcHQtQ29uZmlybVF1aXQgJChpbnN0X2xvY2F0aW9uKS8uLgorKwlsbiAtc2YgZGVmYXVsdC1jb25maWcvRnZ3bVNjcmlwdC1Db25maXJtQ29weUNvbmZpZyAkKGluc3RfbG9jYXRpb24pLy4uCisgCisgdW5pbnN0YWxsLWhvb2s6CisgCXJtIC1mciAkKERFU1RESVIpLyQoY29uZmlnZGlyKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZnZ3bS9mdndtXzIuNi43LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZnZ3bS9mdndtXzIuNi43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiODUxYmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mdndtL2Z2d21fMi42LjcuYmIKQEAgLTAsMCArMSwxMTQgQEAKK1NVTU1BUlkgPSAiRiBWaXJ0dWFsIFdpbmRvdyBNYW5hZ2VyICIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnZ3bS5vcmcvIgorU0VDVElPTiA9ICJ4MTEvd20iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzYzZmJjZmI1OTEyNDY4OWFmNzJjOTE0NTYwZWFmNmUiCisKK0RFUEVORFMgPSAiIFwKKyAgICBiaXNvbi1uYXRpdmUgXAorICAgIGZsZXgtbmF0aXZlIFwKKyAgICBmcmVldHlwZS1uYXRpdmUgXAorICAgIGdldHRleHQtbmF0aXZlIFwKKyAgICBsaWJ4c2x0LW5hdGl2ZSBcCisgICAgZm9udGNvbmZpZyBcCisgICAgbGliaWNlIFwKKyAgICBsaWJwbmcgXAorICAgIGxpYnJzdmcgXAorICAgIGxpYnNtIFwKKyAgICBsaWJ4YXUgXAorICAgIGxpYnhjYiBcCisgICAgbGlieGN1cnNvciBcCisgICAgbGlieGRtY3AgXAorICAgIGxpYnhleHQgXAorICAgIGxpYnhmaXhlcyBcCisgICAgbGlieGZ0IFwKKyAgICBsaWJ4aW5lcmFtYSBcCisgICAgbGlieG1sMiBcCisgICAgbGlieHJlbmRlciBcCisgICAgbGlieHQgXAorICAgIHZpcnR1YWwvbGlieDExIFwKKyAgICB4cmFuZHIgXAorICAgIHpsaWIgXAorIgorCitQViA9ICIyLjYuNytnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICIgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vZnZ3bW9yZy9mdndtLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgZmlsZTovLzAwMDEtRml4LWNvbXBpbGF0aW9uLWZvci1kaXNhYmxlZC1nbm9tZS5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItQXZvaWQtYWJzb2x1dGUtc3ltbGlua3MucGF0Y2ggXAorIgorCitTUkNSRVYgPSAiNTk3YTRlMjk2ZGE0ZjIxZTcxYTE3ZmFjYWIyOTdlMDE2YTNhODBhOCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHBrZ2NvbmZpZyBweXRob25uYXRpdmUgcGVybG5hdGl2ZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKyMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAieC13aW5kb3ctbWFuYWdlciIKK0FMVEVSTkFUSVZFX1RBUkdFVFt4LXdpbmRvdy1tYW5hZ2VyXSA9ICIke2JpbmRpcn0vZnZ3bSIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3gtd2luZG93LW1hbmFnZXJdID0gIjIwIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtYmlkaSBcCisgICAgLS1kaXNhYmxlLWZvbnRjb25maWd0ZXN0IFwKKyAgICAtLWRpc2FibGUtZnJlZXR5cGV0ZXN0IFwKKyAgICAtLWRpc2FibGUtaHRtbGRvYyBcCisgICAgLS1kaXNhYmxlLWltbGlidGVzdCBcCisgICAgLS1kaXNhYmxlLW1hbmRvYyBcCisgICAgLS1kaXNhYmxlLW5scyBcCisgICAgLS1kaXNhYmxlLXBlcmxsaWIgXAorICAgIC0tZGlzYWJsZS1yc3ZnIFwKKyAgICAtLWRpc2FibGUtc2hhcGUgXAorICAgIC0tZGlzYWJsZS1zbSBcCisgICAgLS1kaXNhYmxlLXhmdHRlc3QgXAorICAgIC0td2l0aC1pbWxpYi1leGVjLXByZWZpeD0vbm9uZXhpc3RlbnQgXAorICAgIC0td2l0aC1pbWxpYi1wcmVmaXg9L25vbmV4aXN0ZW50IFwKKyAgICAtLXdpdGhvdXQtbmN1cnNlcy1saWJyYXJ5IFwKKyAgICAtLXdpdGhvdXQtcmVhZGxpbmUtbGlicmFyeSBcCisgICAgLS13aXRob3V0LXJwbGF5LWxpYnJhcnkgXAorICAgIC0td2l0aG91dC1zdHJva2UtbGlicmFyeSBcCisgICAgLS13aXRob3V0LXRlcm1jYXAtbGlicmFyeSBcCisgICAgLS13aXRob3V0LXhwbS1saWJyYXJ5IFwKKyAgICBhY19jdl9mdW5jX21rc3RlbXA9bm8gXAorICAgIGhhc19zYWZldHlfbWtzdGVtcD15ZXMgXAorIgorCisjIHNob3cgdGhlIGV4YWN0IGNvbW1hbmRzIGluIHRoZSBsb2cgZmlsZQorRVhUUkFfT0VNQUtFID0gIiBcCisgICAgVj0xIFwKKyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAtbSAwNzU1ICR7RH0vJHtzeXNjb25mZGlyfS94ZGcvZnZ3bQorICAgICMgWW91IGNhbiBpbnN0YWxsIHRoZSBjb25maWcgZmlsZSBoZXJlCisKKyAgICBpbnN0YWxsIC1kIC1tIDA3NTUgJHtEfS8ke2RhdGFkaXJ9L2Z2d20KKyAgICB0b3VjaCAke0R9LyR7ZGF0YWRpcn0vZnZ3bS9Db25maWdGdndtRGVmYXVsdHMKK30KKworIyB0aGUgb25seSBuZWVkZWQgcGFja2FnZXMgKG5vdGU6IGxvY2FsZSBwYWNrYWdlcyBhcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQKKyMgYXMgd2VsbCkKK1BBQ0tBR0VTID0gIiBcCisgICAgJHtQTn0gXAorICAgICR7UE59LWRiZyBcCisiCisKKyMgbWluaW1hbCBzZXQgb2YgYmluYXJpZXMKK0ZJTEVTXyR7UE59ID0gIiBcCisgICAgJHtiaW5kaXJ9L2Z2d20gXAorICAgICR7YmluZGlyfS9mdndtLXJvb3QgXAorICAgICR7ZGF0YWRpcn0vZnZ3bS9Db25maWdGdndtRGVmYXVsdHMgXAorIgorCitSREVQRU5EU18ke1BOfSA9ICIgXAorICAgIHh1c2VyLWFjY291bnQgXAorIgorCisjIGJ5IGRlZmF1bHQgYSBsb3Qgb2Ygc3R1ZmYgaXMgaW5zdGFsbGVkIGFuZCBpdCdzIG5vdCBlYXN5IHRvIGNvbnRyb2wgd2hhdCB0bworIyBpbnN0YWxsLCBzbyBpbnN0YWxsIGV2ZXJ5dGhpbmcsIGJ1dCBza2lwIHRoZSBjaGVjaworSU5TQU5FX1NLSVBfJHtQTn0gPSAiIFwKKyAgICBpbnN0YWxsZWQtdnMtc2hpcHBlZCBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nZWdsL2dlZ2xfMC4zLjE4LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2VnbC9nZWdsXzAuMy4xOC5iYgppbmRleCA2Y2MyMGY1Li4wMDUzYzBjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nZWdsL2dlZ2xfMC4zLjE4LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dlZ2wvZ2VnbF8wLjMuMTguYmIKQEAgLTUsNyArNSw5IEBACiAKIEVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jcyIKIAotaW5oZXJpdCBnbm9tZWJhc2UgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGdub21lYmFzZSB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBQQUNLQUdFQ09ORklHID8/PSAiIgogUEFDS0FHRUNPTkZJR1tqYXNwZXJdID0gIi0td2l0aC1qYXNwZXIsLS13aXRob3V0LWphc3BlcixqYXNwZXIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9naW1wL2dpbXBfMi44LjIyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2ltcC9naW1wXzIuOC4yMi5iYgppbmRleCBjZDdlMjdhLi45NDM5ODZlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9naW1wL2dpbXBfMi44LjIyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dpbXAvZ2ltcF8yLjguMjIuYmIKQEAgLTI0LDcgKzI0LDkgQEAKICIKIERFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2xpYnhtdSBsaWJ4cG0nLCAnJywgZCl9IgogCi1pbmhlcml0IGdub21lIGd0ay1kb2MKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGdub21lIGd0ay1kb2MKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAogU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdpbXAub3JnL3B1Yi9naW1wL3YyLjgvZ2ltcC0ke1BWfS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLWFjLWRvLW5vdC1jaGVjay1mb3ItZnJlZXR5cGUtY29uZmlnLnBhdGNoIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsbS9maWxlcy8wMDAxLU1ha2UtR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwtYS1jb25maWd1cmFibGUtb3B0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2xtL2ZpbGVzLzAwMDEtTWFrZS1HTE1fRU5BQkxFX0VYUEVSSU1FTlRBTC1hLWNvbmZpZ3VyYWJsZS1vcHRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY5YzVhZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsbS9maWxlcy8wMDAxLU1ha2UtR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwtYS1jb25maWd1cmFibGUtb3B0aW9uLnBhdGNoCkBAIC0wLDAgKzEsODYwIEBACitGcm9tIDk5YTk2NzZhMDE5M2Y2MjkxZDcyMDJkN2FmNzJlMjQ1ODBhYmU1NjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNiBNYXIgMjAxOCAxMzo1NToyOSArMDEwMAorU3ViamVjdDogW1BBVENIIDEvMl0gTWFrZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBhIGNvbmZpZ3VyYWJsZSBvcHRpb24KK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworSXQgc2VlbXMgdGhhdCBlcnJvcmluZyBvdXQgaWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgaXMgbm90IHNldCB0dXJucyBpbnRvCitwYWNrYWdlcnMgbmlnaHRtYXJlOiBUaGVyZSBhcmUgcGFja2FnZXMgYXJvdW5kIGV4cGVjdGluZyBnbHggaGVhZGVycy4gRS5nCitsaWJnbHRmIFsxXSBmYWlscyBkdXJpbmcgY29uZmlndXJlIGNoZWNraW5nIGZvciB1c2FibGUgaGVhZGVycyBBTkQgZHVyaW5nCitjb21waWxlLiBQYXRpY3VsYXJseSBmaXhpbmcgY29uZmlndXJlIGZvciB0aG9zZSBwYWNrYWdlcyBpcyB0aW1lLWNvbnN1bWluZzoKK1RoZSBvbmx5IHdheSAoY29ycmVjdCBtZSBpZiBJIGFtIHdyb25nKSBpcyBjcmVhdGluZyBhIHBhdGNoIGFkZGluZworCitBQ19ERUZJTkUoW0dMTV9FTkFCTEVfRVhQRVJJTUVOVEFMXSwgWzFdLCBbZ2xtIG5lZWRzIHRoaXMgZm9yIGd0eCBoZWFkZXJzXSkKKworQnkgYWRkaW5nIGEgY29uZmlndXJlIG9wdGlvbiAnR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwnLCB0aGUgZGVjaXNpb24gdG8gdXNlCitnbG0vZ2x4IGlzIGRvbmUgYXQgb25lIChhbmQgdGhlIHJpZ2h0KSBwbGFjZS4KKworU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKworWzFdIGh0dHBzOi8vZ2Vycml0LmxpYnJlb2ZmaWNlLm9yZy9naXR3ZWI/cD1saWJnbHRmLmdpdAorCitVcHRyZWFtLVN0YXR1czogU3VibWl0dGVkIFsyXQorCitbMl0gaHR0cHM6Ly9naXRodWIuY29tL2ctdHJ1Yy9nbG0vcHVsbC83NDEKKy0tLQorIENNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgIHwgNiArKysrKysKKyBnbG0vQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICB8IDIgKysKKyBnbG0vZXhwZXJpbWVudGFsLmhwcC5pbiAgICAgICAgICAgICB8IDEgKworIGdsbS9leHQuaHBwICAgICAgICAgICAgICAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9hc3NvY2lhdGVkX21pbl9tYXguaHBwICAgICAgfCAxICsKKyBnbG0vZ3R4L2JpdC5ocHAgICAgICAgICAgICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvY2xvc2VzdF9wb2ludC5ocHAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9jb2xvcl9zcGFjZS5ocHAgICAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L2NvbG9yX3NwYWNlX1lDb0NnLmhwcCAgICAgICB8IDEgKworIGdsbS9ndHgvY29tbW9uLmhwcCAgICAgICAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9jb21wYXRpYmlsaXR5LmhwcCAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L2NvbXBvbmVudF93aXNlLmhwcCAgICAgICAgICB8IDEgKworIGdsbS9ndHgvZHVhbF9xdWF0ZXJuaW9uLmhwcCAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9ldWxlcl9hbmdsZXMuaHBwICAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L2V4dGVuZC5ocHAgICAgICAgICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvZXh0ZW5kZWRfbWluX21heC5ocHAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9mYXN0X2V4cG9uZW50aWFsLmhwcCAgICAgICAgfCAxICsKKyBnbG0vZ3R4L2Zhc3Rfc3F1YXJlX3Jvb3QuaHBwICAgICAgICB8IDEgKworIGdsbS9ndHgvZmFzdF90cmlnb25vbWV0cnkuaHBwICAgICAgIHwgMSArCisgZ2xtL2d0eC9ncmFkaWVudF9wYWludC5ocHAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L2hhbmRlZF9jb29yZGluYXRlX3NwYWNlLmhwcCB8IDEgKworIGdsbS9ndHgvaGFzaC5ocHAgICAgICAgICAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9pbnRlZ2VyLmhwcCAgICAgICAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L2ludGVyc2VjdC5ocHAgICAgICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvaW8uaHBwICAgICAgICAgICAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9sb2dfYmFzZS5ocHAgICAgICAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L21hdHJpeF9jcm9zc19wcm9kdWN0LmhwcCAgICB8IDEgKworIGdsbS9ndHgvbWF0cml4X2RlY29tcG9zZS5ocHAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9tYXRyaXhfZmFjdG9yaXNhdGlvbi5ocHAgICAgfCAxICsKKyBnbG0vZ3R4L21hdHJpeF9pbnRlcnBvbGF0aW9uLmhwcCAgICB8IDEgKworIGdsbS9ndHgvbWF0cml4X21ham9yX3N0b3JhZ2UuaHBwICAgIHwgMSArCisgZ2xtL2d0eC9tYXRyaXhfb3BlcmF0aW9uLmhwcCAgICAgICAgfCAxICsKKyBnbG0vZ3R4L21hdHJpeF9xdWVyeS5ocHAgICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvbWF0cml4X3RyYW5zZm9ybV8yZC5ocHAgICAgIHwgMSArCisgZ2xtL2d0eC9taXhlZF9wcm9kdWN0LmhwcCAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L25vcm0uaHBwICAgICAgICAgICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvbm9ybWFsLmhwcCAgICAgICAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9ub3JtYWxpemVfZG90LmhwcCAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L251bWJlcl9wcmVjaXNpb24uaHBwICAgICAgICB8IDEgKworIGdsbS9ndHgvb3B0aW11bV9wb3cuaHBwICAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9vcnRob25vcm1hbGl6ZS5ocHAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L3BlcnBlbmRpY3VsYXIuaHBwICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvcG9sYXJfY29vcmRpbmF0ZXMuaHBwICAgICAgIHwgMSArCisgZ2xtL2d0eC9wcm9qZWN0aW9uLmhwcCAgICAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L3F1YXRlcm5pb24uaHBwICAgICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvcmFuZ2UuaHBwICAgICAgICAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9yYXdfZGF0YS5ocHAgICAgICAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L3JvdGF0ZV9ub3JtYWxpemVkX2F4aXMuaHBwICB8IDEgKworIGdsbS9ndHgvcm90YXRlX3ZlY3Rvci5ocHAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9zY2FsYXJfbXVsdGlwbGljYXRpb24uaHBwICAgfCAxICsKKyBnbG0vZ3R4L3NjYWxhcl9yZWxhdGlvbmFsLmhwcCAgICAgICB8IDEgKworIGdsbS9ndHgvc3BsaW5lLmhwcCAgICAgICAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC9zdGRfYmFzZWRfdHlwZS5ocHAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L3N0cmluZ19jYXN0LmhwcCAgICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvdGV4dHVyZS5ocHAgICAgICAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC90cmFuc2Zvcm0uaHBwICAgICAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L3RyYW5zZm9ybTIuaHBwICAgICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvdHlwZV9hbGlnbmVkLmhwcCAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC90eXBlX3RyYWl0LmhwcCAgICAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L3ZlY19zd2l6emxlLmhwcCAgICAgICAgICAgICB8IDEgKworIGdsbS9ndHgvdmVjdG9yX2FuZ2xlLmhwcCAgICAgICAgICAgIHwgMSArCisgZ2xtL2d0eC92ZWN0b3JfcXVlcnkuaHBwICAgICAgICAgICAgfCAxICsKKyBnbG0vZ3R4L3dyYXAuaHBwICAgICAgICAgICAgICAgICAgICB8IDEgKworIDYzIGZpbGVzIGNoYW5nZWQsIDY5IGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2xtL2V4cGVyaW1lbnRhbC5ocHAuaW4KKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IGU1MTU5YjBmLi5iZDRkZDY1NCAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTgyLDYgKzgyLDExIEBAIG9wdGlvbihHTE1fVEVTVF9FTkFCTEVfU0lNRF9BVlggIkVuYWJsZSBBVlggb3B0aW1pemF0aW9ucyIgT0ZGKQorIG9wdGlvbihHTE1fVEVTVF9FTkFCTEVfU0lNRF9BVlgyICJFbmFibGUgQVZYMiBvcHRpbWl6YXRpb25zIiBPRkYpCisgb3B0aW9uKEdMTV9URVNUX0ZPUkNFX1BVUkUgIkZvcmNlICdwdXJlJyBpbnN0cnVjdGlvbnMiIE9GRikKKyAKKytvcHRpb24oR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgIkVuYWJsZSBleHBlcmltZW50YWwgR0xNX0dUWCIgT0ZGKQorK2NvbmZpZ3VyZV9maWxlKGdsbS9leHBlcmltZW50YWwuaHBwLmluIGV4cGVyaW1lbnRhbC5ocHAgQE9OTFkpCisraW5jbHVkZV9kaXJlY3Rvcmllcygke0NNQUtFX0JJTkFSWV9ESVJ9L2dsbSkKKytpbmNsdWRlX2RpcmVjdG9yaWVzKCR7Q01BS0VfQklOQVJZX0RJUn0pCisrCisgaWYoR0xNX1RFU1RfRk9SQ0VfUFVSRSkKKyAJYWRkX2RlZmluaXRpb25zKC1ER0xNX0ZPUkNFX1BVUkUpCisgCitAQCAtMTY3LDYgKzE3Miw3IEBAIG9wdGlvbihHTE1fSU5TVEFMTF9FTkFCTEUgIkdMTSBpbnN0YWxsIiBPTikKKyBzZXQoR0xNX0lOU1RBTExfQ09ORklHRElSICIke0NNQUtFX0lOU1RBTExfTElCRElSfS9jbWFrZS9nbG0iKQorIGlmIChHTE1fSU5TVEFMTF9FTkFCTEUpCisgCWluc3RhbGwoRElSRUNUT1JZIGdsbSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0pCisrCWluc3RhbGwoRklMRVMgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9leHBlcmltZW50YWwuaHBwIiBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0vZ2xtKQorIGVuZGlmKCkKKyAKKyB3cml0ZV9iYXNpY19wYWNrYWdlX3ZlcnNpb25fZmlsZSgiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2dsbUNvbmZpZ1ZlcnNpb24uY21ha2UiIFZFUlNJT04gJHtHTE1fVkVSU0lPTn0gQ09NUEFUSUJJTElUWSBBbnlOZXdlclZlcnNpb24pCitkaWZmIC0tZ2l0IGEvZ2xtL0NNYWtlTGlzdHMudHh0IGIvZ2xtL0NNYWtlTGlzdHMudHh0CitpbmRleCBkZjljOWVlNS4uZGM1ZGI0YmMgMTAwNjQ0CistLS0gYS9nbG0vQ01ha2VMaXN0cy50eHQKKysrKyBiL2dsbS9DTWFrZUxpc3RzLnR4dAorQEAgLTQzLDYgKzQzLDggQEAgc291cmNlX2dyb3VwKCJTSU1EIEZpbGVzIiBGSUxFUyAke1NJTURfSU5MSU5FfSkKKyBzb3VyY2VfZ3JvdXAoIlNJTUQgRmlsZXMiIEZJTEVTICR7U0lNRF9IRUFERVJ9KQorIAorIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9Ly4uKQorKyMgbWFrZSBvdXQtb2YgdHJlZSBidWlsZHMgZmluZCBleHBlcmltZW50YWwuaHBwCisraW5jbHVkZV9kaXJlY3Rvcmllcygke0NNQUtFX0JJTkFSWV9ESVJ9L2dsbSkKKyAKKyBpZihHTE1fU1RBVElDX0xJQlJBUllfRU5BQkxFIE9SIEdMTV9EWU5BTUlDX0xJQlJBUllfRU5BQkxFKQorIAlpZihHTE1fU1RBVElDX0xJQlJBUllfRU5BQkxFKQorZGlmZiAtLWdpdCBhL2dsbS9leHBlcmltZW50YWwuaHBwLmluIGIvZ2xtL2V4cGVyaW1lbnRhbC5ocHAuaW4KK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uYmZhYjUxMzgKKy0tLSAvZGV2L251bGwKKysrKyBiL2dsbS9leHBlcmltZW50YWwuaHBwLmluCitAQCAtMCwwICsxIEBACisrI2NtYWtlZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCitkaWZmIC0tZ2l0IGEvZ2xtL2V4dC5ocHAgYi9nbG0vZXh0LmhwcAoraW5kZXggZDA4NWJmZDUuLmEyOTQ4NDQ3IDEwMDY0NAorLS0tIGEvZ2xtL2V4dC5ocHAKKysrKyBiL2dsbS9leHQuaHBwCitAQCAtMzksNiArMzksNyBAQAorICMJaW5jbHVkZSAiLi9ndGMvdHlwZV9hbGlnbmVkLmhwcCIKKyAjZW5kaWYKKyAKKysjaW5jbHVkZSAiZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZkZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjaW5jbHVkZSAiLi9ndHgvYXNzb2NpYXRlZF9taW5fbWF4LmhwcCIKKyAjaW5jbHVkZSAiLi9ndHgvYml0LmhwcCIKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L2Fzc29jaWF0ZWRfbWluX21heC5ocHAgYi9nbG0vZ3R4L2Fzc29jaWF0ZWRfbWluX21heC5ocHAKK2luZGV4IDBjOTkzNWYzLi5kMDBjMmJjNCAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvYXNzb2NpYXRlZF9taW5fbWF4LmhwcAorKysrIGIvZ2xtL2d0eC9hc3NvY2lhdGVkX21pbl9tYXguaHBwCitAQCAtMTYsNiArMTYsNyBAQAorIC8vIERlcGVuZGVuY3k6CisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR1RYX2Fzc29jaWF0ZWRfbWluX21heCBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvYml0LmhwcCBiL2dsbS9ndHgvYml0LmhwcAoraW5kZXggMTQ0N2ZhMDAuLjMxOTU3MDgzIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9iaXQuaHBwCisrKysgYi9nbG0vZ3R4L2JpdC5ocHAKK0BAIC0xNSw2ICsxNSw3IEBACisgLy8gRGVwZW5kZW5jaWVzCisgI2luY2x1ZGUgIi4uL2d0Yy9iaXRmaWVsZC5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9iaXQgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L2Nsb3Nlc3RfcG9pbnQuaHBwIGIvZ2xtL2d0eC9jbG9zZXN0X3BvaW50LmhwcAoraW5kZXggNjg1OWJiOTYuLmViZDlmZTVhIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9jbG9zZXN0X3BvaW50LmhwcAorKysrIGIvZ2xtL2d0eC9jbG9zZXN0X3BvaW50LmhwcAorQEAgLTE1LDYgKzE1LDcgQEAKKyAvLyBEZXBlbmRlbmN5OgorICNpbmNsdWRlICIuLi9nbG0uaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfY2xvc2VzdF9wb2ludCBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvY29sb3Jfc3BhY2UuaHBwIGIvZ2xtL2d0eC9jb2xvcl9zcGFjZS5ocHAKK2luZGV4IGQxZTY1NWMzLi41MTQxNjgxOSAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvY29sb3Jfc3BhY2UuaHBwCisrKysgYi9nbG0vZ3R4L2NvbG9yX3NwYWNlLmhwcAorQEAgLTE1LDYgKzE1LDcgQEAKKyAvLyBEZXBlbmRlbmN5OgorICNpbmNsdWRlICIuLi9nbG0uaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfY29sb3Jfc3BhY2UgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L2NvbG9yX3NwYWNlX1lDb0NnLmhwcCBiL2dsbS9ndHgvY29sb3Jfc3BhY2VfWUNvQ2cuaHBwCitpbmRleCBlODJjYmQ4Yi4uN2FlNzEwNDEgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L2NvbG9yX3NwYWNlX1lDb0NnLmhwcAorKysrIGIvZ2xtL2d0eC9jb2xvcl9zcGFjZV9ZQ29DZy5ocHAKK0BAIC0xNSw2ICsxNSw3IEBACisgLy8gRGVwZW5kZW5jeToKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX2NvbG9yX3NwYWNlX1lDb0NnIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9jb21tb24uaHBwIGIvZ2xtL2d0eC9jb21tb24uaHBwCitpbmRleCA4MDgxYmZmNy4uNTdhNjhhOGQgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L2NvbW1vbi5ocHAKKysrKyBiL2dsbS9ndHgvY29tbW9uLmhwcAorQEAgLTE4LDYgKzE4LDcgQEAKKyAjaW5jbHVkZSAiLi4vdmVjNC5ocHAiCisgI2luY2x1ZGUgIi4uL2d0Yy92ZWMxLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX2NvbW1vbiBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvY29tcGF0aWJpbGl0eS5ocHAgYi9nbG0vZ3R4L2NvbXBhdGliaWxpdHkuaHBwCitpbmRleCBlNWI2MDM5OS4uOTg3NjY2OWMgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L2NvbXBhdGliaWxpdHkuaHBwCisrKysgYi9nbG0vZ3R4L2NvbXBhdGliaWxpdHkuaHBwCitAQCAtMTYsNiArMTYsNyBAQAorICNpbmNsdWRlICIuLi9nbG0uaHBwIgorICNpbmNsdWRlICIuLi9ndGMvcXVhdGVybmlvbi5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9jb21wYXRpYmlsaXR5IGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9jb21wb25lbnRfd2lzZS5ocHAgYi9nbG0vZ3R4L2NvbXBvbmVudF93aXNlLmhwcAoraW5kZXggMzliYWI1ZDUuLjRmZTBlNGUyIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9jb21wb25lbnRfd2lzZS5ocHAKKysrKyBiL2dsbS9ndHgvY29tcG9uZW50X3dpc2UuaHBwCitAQCAtMTgsNiArMTgsNyBAQAorICNpbmNsdWRlICIuLi9kZXRhaWwvc2V0dXAuaHBwIgorICNpbmNsdWRlICIuLi9kZXRhaWwvcXVhbGlmaWVyLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX2NvbXBvbmVudF93aXNlIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9kdWFsX3F1YXRlcm5pb24uaHBwIGIvZ2xtL2d0eC9kdWFsX3F1YXRlcm5pb24uaHBwCitpbmRleCBjNDM0M2U5ZC4uZDU5ZmI0NTkgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L2R1YWxfcXVhdGVybmlvbi5ocHAKKysrKyBiL2dsbS9ndHgvZHVhbF9xdWF0ZXJuaW9uLmhwcAorQEAgLTIwLDYgKzIwLDcgQEAKKyAjaW5jbHVkZSAiLi4vZ3RjL2NvbnN0YW50cy5ocHAiCisgI2luY2x1ZGUgIi4uL2d0Yy9xdWF0ZXJuaW9uLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX2R1YWxfcXVhdGVybmlvbiBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvZXVsZXJfYW5nbGVzLmhwcCBiL2dsbS9ndHgvZXVsZXJfYW5nbGVzLmhwcAoraW5kZXggZTY2ZTkyODEuLmFkNTk4OGMxIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9ldWxlcl9hbmdsZXMuaHBwCisrKysgYi9nbG0vZ3R4L2V1bGVyX2FuZ2xlcy5ocHAKK0BAIC0xNSw2ICsxNSw3IEBACisgLy8gRGVwZW5kZW5jeToKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX2V1bGVyX2FuZ2xlcyBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvZXh0ZW5kLmhwcCBiL2dsbS9ndHgvZXh0ZW5kLmhwcAoraW5kZXggZWRhNGU0NzAuLmNkZTZkYjYzIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9leHRlbmQuaHBwCisrKysgYi9nbG0vZ3R4L2V4dGVuZC5ocHAKK0BAIC0xNSw2ICsxNSw3IEBACisgLy8gRGVwZW5kZW5jeToKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX2V4dGVuZCBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvZXh0ZW5kZWRfbWluX21heC5ocHAgYi9nbG0vZ3R4L2V4dGVuZGVkX21pbl9tYXguaHBwCitpbmRleCAzZTc2N2IwYy4uMGJjZmZjYzYgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L2V4dGVuZGVkX21pbl9tYXguaHBwCisrKysgYi9nbG0vZ3R4L2V4dGVuZGVkX21pbl9tYXguaHBwCitAQCAtMTUsNiArMTUsNyBAQAorIC8vIERlcGVuZGVuY3k6CisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9leHRlbnRlZF9taW5fbWF4IGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9mYXN0X2V4cG9uZW50aWFsLmhwcCBiL2dsbS9ndHgvZmFzdF9leHBvbmVudGlhbC5ocHAKK2luZGV4IDJkNDkxOGU3Li5lNmQxMWYwYSAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvZmFzdF9leHBvbmVudGlhbC5ocHAKKysrKyBiL2dsbS9ndHgvZmFzdF9leHBvbmVudGlhbC5ocHAKK0BAIC0xNiw2ICsxNiw3IEBACisgLy8gRGVwZW5kZW5jeToKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX2Zhc3RfZXhwb25lbnRpYWwgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L2Zhc3Rfc3F1YXJlX3Jvb3QuaHBwIGIvZ2xtL2d0eC9mYXN0X3NxdWFyZV9yb290LmhwcAoraW5kZXggMWUxZWMzY2YuLmY3NThhZWVmIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9mYXN0X3NxdWFyZV9yb290LmhwcAorKysrIGIvZ2xtL2d0eC9mYXN0X3NxdWFyZV9yb290LmhwcAorQEAgLTE5LDYgKzE5LDcgQEAKKyAjaW5jbHVkZSAiLi4vZXhwb25lbnRpYWwuaHBwIgorICNpbmNsdWRlICIuLi9nZW9tZXRyaWMuaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfZmFzdF9zcXVhcmVfcm9vdCBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvZmFzdF90cmlnb25vbWV0cnkuaHBwIGIvZ2xtL2d0eC9mYXN0X3RyaWdvbm9tZXRyeS5ocHAKK2luZGV4IDczOTA2NWZiLi5mMTMzMjk1OCAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvZmFzdF90cmlnb25vbWV0cnkuaHBwCisrKysgYi9nbG0vZ3R4L2Zhc3RfdHJpZ29ub21ldHJ5LmhwcAorQEAgLTE1LDYgKzE1LDcgQEAKKyAvLyBEZXBlbmRlbmN5OgorICNpbmNsdWRlICIuLi9ndGMvY29uc3RhbnRzLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX2Zhc3RfdHJpZ29ub21ldHJ5IGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9ncmFkaWVudF9wYWludC5ocHAgYi9nbG0vZ3R4L2dyYWRpZW50X3BhaW50LmhwcAoraW5kZXggMjcxM2NlYzAuLmQ0NzAzOTkxIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9ncmFkaWVudF9wYWludC5ocHAKKysrKyBiL2dsbS9ndHgvZ3JhZGllbnRfcGFpbnQuaHBwCitAQCAtMTcsNiArMTcsNyBAQAorICNpbmNsdWRlICIuLi9nbG0uaHBwIgorICNpbmNsdWRlICIuLi9ndHgvb3B0aW11bV9wb3cuaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfZ3JhZGllbnRfcGFpbnQgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L2hhbmRlZF9jb29yZGluYXRlX3NwYWNlLmhwcCBiL2dsbS9ndHgvaGFuZGVkX2Nvb3JkaW5hdGVfc3BhY2UuaHBwCitpbmRleCAxZDBkNDEwNC4uM2E1MmRkY2YgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L2hhbmRlZF9jb29yZGluYXRlX3NwYWNlLmhwcAorKysrIGIvZ2xtL2d0eC9oYW5kZWRfY29vcmRpbmF0ZV9zcGFjZS5ocHAKK0BAIC0xNSw2ICsxNSw3IEBACisgLy8gRGVwZW5kZW5jeToKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX2hhbmRlZF9jb29yZGluYXRlX3NwYWNlIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9oYXNoLmhwcCBiL2dsbS9ndHgvaGFzaC5ocHAKK2luZGV4IGZlOGEzZWZkLi45MmJmYzliMiAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvaGFzaC5ocHAKKysrKyBiL2dsbS9ndHgvaGFzaC5ocHAKK0BAIC0xMiw2ICsxMiw3IEBACisgCisgI3ByYWdtYSBvbmNlCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9oYXNoIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9pbnRlZ2VyLmhwcCBiL2dsbS9ndHgvaW50ZWdlci5ocHAKK2luZGV4IDk2NjM3YTEzLi41ZDFhMTZjNiAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvaW50ZWdlci5ocHAKKysrKyBiL2dsbS9ndHgvaW50ZWdlci5ocHAKK0BAIC0xNiw2ICsxNiw3IEBACisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgI2luY2x1ZGUgIi4uL2d0Yy9pbnRlZ2VyLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX2ludGVnZXIgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L2ludGVyc2VjdC5ocHAgYi9nbG0vZ3R4L2ludGVyc2VjdC5ocHAKK2luZGV4IDYxZTIyMjZhLi40ODk1YmE5MyAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvaW50ZXJzZWN0LmhwcAorKysrIGIvZ2xtL2d0eC9pbnRlcnNlY3QuaHBwCitAQCAtMjEsNiArMjEsNyBAQAorICNpbmNsdWRlICIuLi9ndHgvY2xvc2VzdF9wb2ludC5ocHAiCisgI2luY2x1ZGUgIi4uL2d0eC92ZWN0b3JfcXVlcnkuaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfY2xvc2VzdF9wb2ludCBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvaW8uaHBwIGIvZ2xtL2d0eC9pby5ocHAKK2luZGV4IDQ5YTFlYzExLi5hZTM5Y2Q2MCAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvaW8uaHBwCisrKysgYi9nbG0vZ3R4L2lvLmhwcAorQEAgLTIzLDYgKzIzLDcgQEAKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAjaW5jbHVkZSAiLi4vZ3R4L3F1YXRlcm5pb24uaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfaW8gaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L2xvZ19iYXNlLmhwcCBiL2dsbS9ndHgvbG9nX2Jhc2UuaHBwCitpbmRleCBlODczZTM1Ni4uNDViOGQ1M2MgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L2xvZ19iYXNlLmhwcAorKysrIGIvZ2xtL2d0eC9sb2dfYmFzZS5ocHAKK0BAIC0xNSw2ICsxNSw3IEBACisgLy8gRGVwZW5kZW5jeToKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX2xvZ19iYXNlIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9tYXRyaXhfY3Jvc3NfcHJvZHVjdC5ocHAgYi9nbG0vZ3R4L21hdHJpeF9jcm9zc19wcm9kdWN0LmhwcAoraW5kZXggOTY3NzQzYjguLjUyZDZjMTczIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9tYXRyaXhfY3Jvc3NfcHJvZHVjdC5ocHAKKysrKyBiL2dsbS9ndHgvbWF0cml4X2Nyb3NzX3Byb2R1Y3QuaHBwCitAQCAtMTYsNiArMTYsNyBAQAorIC8vIERlcGVuZGVuY3k6CisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9tYXRyaXhfY3Jvc3NfcHJvZHVjdCBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvbWF0cml4X2RlY29tcG9zZS5ocHAgYi9nbG0vZ3R4L21hdHJpeF9kZWNvbXBvc2UuaHBwCitpbmRleCBiN2VjMGU4My4uNjc5M2ZlZTIgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L21hdHJpeF9kZWNvbXBvc2UuaHBwCisrKysgYi9nbG0vZ3R4L21hdHJpeF9kZWNvbXBvc2UuaHBwCitAQCAtMjAsNiArMjAsNyBAQAorICNpbmNsdWRlICIuLi9ndGMvcXVhdGVybmlvbi5ocHAiCisgI2luY2x1ZGUgIi4uL2d0Yy9tYXRyaXhfdHJhbnNmb3JtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX21hdHJpeF9kZWNvbXBvc2UgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L21hdHJpeF9mYWN0b3Jpc2F0aW9uLmhwcCBiL2dsbS9ndHgvbWF0cml4X2ZhY3RvcmlzYXRpb24uaHBwCitpbmRleCBlMzBhNzc0Ni4uNzljMjkzYmUgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L21hdHJpeF9mYWN0b3Jpc2F0aW9uLmhwcAorKysrIGIvZ2xtL2d0eC9tYXRyaXhfZmFjdG9yaXNhdGlvbi5ocHAKK0BAIC0xNSw2ICsxNSw3IEBACisgLy8gRGVwZW5kZW5jeToKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX21hdHJpeF9mYWN0b3Jpc2F0aW9uIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9tYXRyaXhfaW50ZXJwb2xhdGlvbi5ocHAgYi9nbG0vZ3R4L21hdHJpeF9pbnRlcnBvbGF0aW9uLmhwcAoraW5kZXggODljNDU5NmMuLjc5OTk4M2JiIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9tYXRyaXhfaW50ZXJwb2xhdGlvbi5ocHAKKysrKyBiL2dsbS9ndHgvbWF0cml4X2ludGVycG9sYXRpb24uaHBwCitAQCAtMTYsNiArMTYsNyBAQAorIC8vIERlcGVuZGVuY3k6CisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9tYXRyaXhfaW50ZXJwb2xhdGlvbiBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvbWF0cml4X21ham9yX3N0b3JhZ2UuaHBwIGIvZ2xtL2d0eC9tYXRyaXhfbWFqb3Jfc3RvcmFnZS5ocHAKK2luZGV4IDdmMjY0YTU5Li5lNjg0NjdjZCAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvbWF0cml4X21ham9yX3N0b3JhZ2UuaHBwCisrKysgYi9nbG0vZ3R4L21hdHJpeF9tYWpvcl9zdG9yYWdlLmhwcAorQEAgLTE2LDYgKzE2LDcgQEAKKyAvLyBEZXBlbmRlbmN5OgorICNpbmNsdWRlICIuLi9nbG0uaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfbWF0cml4X21ham9yX3N0b3JhZ2UgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L21hdHJpeF9vcGVyYXRpb24uaHBwIGIvZ2xtL2d0eC9tYXRyaXhfb3BlcmF0aW9uLmhwcAoraW5kZXggYmNlOTM4YmIuLjFlODViYjVlIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9tYXRyaXhfb3BlcmF0aW9uLmhwcAorKysrIGIvZ2xtL2d0eC9tYXRyaXhfb3BlcmF0aW9uLmhwcAorQEAgLTE1LDYgKzE1LDcgQEAKKyAvLyBEZXBlbmRlbmN5OgorICNpbmNsdWRlICIuLi9nbG0uaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfbWF0cml4X29wZXJhdGlvbiBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvbWF0cml4X3F1ZXJ5LmhwcCBiL2dsbS9ndHgvbWF0cml4X3F1ZXJ5LmhwcAoraW5kZXggNWRmNWY1MmYuLmVlYzFlZWMwIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9tYXRyaXhfcXVlcnkuaHBwCisrKysgYi9nbG0vZ3R4L21hdHJpeF9xdWVyeS5ocHAKK0BAIC0xOCw2ICsxOCw3IEBACisgI2luY2x1ZGUgIi4uL2d0eC92ZWN0b3JfcXVlcnkuaHBwIgorICNpbmNsdWRlIDxsaW1pdHM+CisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9tYXRyaXhfcXVlcnkgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L21hdHJpeF90cmFuc2Zvcm1fMmQuaHBwIGIvZ2xtL2d0eC9tYXRyaXhfdHJhbnNmb3JtXzJkLmhwcAoraW5kZXggMjM5YWI5ZjQuLjNjYThkMmYyIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9tYXRyaXhfdHJhbnNmb3JtXzJkLmhwcAorKysrIGIvZ2xtL2d0eC9tYXRyaXhfdHJhbnNmb3JtXzJkLmhwcAorQEAgLTE3LDYgKzE3LDcgQEAKKyAjaW5jbHVkZSAiLi4vbWF0M3gzLmhwcCIKKyAjaW5jbHVkZSAiLi4vdmVjMi5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9tYXRyaXhfdHJhbnNmb3JtXzJkIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9taXhlZF9wcm9kdWN0LmhwcCBiL2dsbS9ndHgvbWl4ZWRfcHJvZHVjdC5ocHAKK2luZGV4IDU4NTYyYWFiLi41Yzc0NjBkNSAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvbWl4ZWRfcHJvZHVjdC5ocHAKKysrKyBiL2dsbS9ndHgvbWl4ZWRfcHJvZHVjdC5ocHAKK0BAIC0xNSw2ICsxNSw3IEBACisgLy8gRGVwZW5kZW5jeToKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX21peGVkX3Byb2R1Y3QgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L25vcm0uaHBwIGIvZ2xtL2d0eC9ub3JtLmhwcAoraW5kZXggNDY0NzRlMDcuLjNjZjJjM2VhIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9ub3JtLmhwcAorKysrIGIvZ2xtL2d0eC9ub3JtLmhwcAorQEAgLTE3LDYgKzE3LDcgQEAKKyAjaW5jbHVkZSAiLi4vZ2VvbWV0cmljLmhwcCIKKyAjaW5jbHVkZSAiLi4vZ3R4L3F1YXRlcm5pb24uaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfbm9ybSBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvbm9ybWFsLmhwcCBiL2dsbS9ndHgvbm9ybWFsLmhwcAoraW5kZXggMTVjZWM5YzIuLjdiYjRjMDk2IDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9ub3JtYWwuaHBwCisrKysgYi9nbG0vZ3R4L25vcm1hbC5ocHAKK0BAIC0xNiw2ICsxNiw3IEBACisgLy8gRGVwZW5kZW5jeToKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX25vcm1hbCBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvbm9ybWFsaXplX2RvdC5ocHAgYi9nbG0vZ3R4L25vcm1hbGl6ZV9kb3QuaHBwCitpbmRleCA4NjA0OGU3MC4uYzY2MDRkYTQgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L25vcm1hbGl6ZV9kb3QuaHBwCisrKysgYi9nbG0vZ3R4L25vcm1hbGl6ZV9kb3QuaHBwCitAQCAtMTYsNiArMTYsNyBAQAorIC8vIERlcGVuZGVuY3k6CisgI2luY2x1ZGUgIi4uL2d0eC9mYXN0X3NxdWFyZV9yb290LmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX25vcm1hbGl6ZV9kb3QgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L251bWJlcl9wcmVjaXNpb24uaHBwIGIvZ2xtL2d0eC9udW1iZXJfcHJlY2lzaW9uLmhwcAoraW5kZXggMzczMmE1NmMuLmI0ODg0NWY3IDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9udW1iZXJfcHJlY2lzaW9uLmhwcAorKysrIGIvZ2xtL2d0eC9udW1iZXJfcHJlY2lzaW9uLmhwcAorQEAgLTE4LDYgKzE4LDcgQEAKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAjaW5jbHVkZSAiLi4vZ3RjL3R5cGVfcHJlY2lzaW9uLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX251bWJlcl9wcmVjaXNpb24gaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L29wdGltdW1fcG93LmhwcCBiL2dsbS9ndHgvb3B0aW11bV9wb3cuaHBwCitpbmRleCBlYjA5ZjFjMy4uOTRhNmJiYjIgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L29wdGltdW1fcG93LmhwcAorKysrIGIvZ2xtL2d0eC9vcHRpbXVtX3Bvdy5ocHAKK0BAIC0xNSw2ICsxNSw3IEBACisgLy8gRGVwZW5kZW5jeToKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX29wdGltdW1fcG93IGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9vcnRob25vcm1hbGl6ZS5ocHAgYi9nbG0vZ3R4L29ydGhvbm9ybWFsaXplLmhwcAoraW5kZXggMmE2ODRlZTQuLjRmZjQ3ZTUzIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9vcnRob25vcm1hbGl6ZS5ocHAKKysrKyBiL2dsbS9ndHgvb3J0aG9ub3JtYWxpemUuaHBwCitAQCAtMTgsNiArMTgsNyBAQAorICNpbmNsdWRlICIuLi9tYXQzeDMuaHBwIgorICNpbmNsdWRlICIuLi9nZW9tZXRyaWMuaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfb3J0aG9ub3JtYWxpemUgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L3BlcnBlbmRpY3VsYXIuaHBwIGIvZ2xtL2d0eC9wZXJwZW5kaWN1bGFyLmhwcAoraW5kZXggMzU2MDFhYzcuLjE3MjUxZWJlIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9wZXJwZW5kaWN1bGFyLmhwcAorKysrIGIvZ2xtL2d0eC9wZXJwZW5kaWN1bGFyLmhwcAorQEAgLTE3LDYgKzE3LDcgQEAKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAjaW5jbHVkZSAiLi4vZ3R4L3Byb2plY3Rpb24uaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfcGVycGVuZGljdWxhciBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvcG9sYXJfY29vcmRpbmF0ZXMuaHBwIGIvZ2xtL2d0eC9wb2xhcl9jb29yZGluYXRlcy5ocHAKK2luZGV4IGI4NDIxZGI0Li41MTI1MjE1ZCAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvcG9sYXJfY29vcmRpbmF0ZXMuaHBwCisrKysgYi9nbG0vZ3R4L3BvbGFyX2Nvb3JkaW5hdGVzLmhwcAorQEAgLTE1LDYgKzE1LDcgQEAKKyAvLyBEZXBlbmRlbmN5OgorICNpbmNsdWRlICIuLi9nbG0uaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfcG9sYXJfY29vcmRpbmF0ZXMgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L3Byb2plY3Rpb24uaHBwIGIvZ2xtL2d0eC9wcm9qZWN0aW9uLmhwcAoraW5kZXggOWEyNGFiZjkuLjRkNWJmNzZmIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9wcm9qZWN0aW9uLmhwcAorKysrIGIvZ2xtL2d0eC9wcm9qZWN0aW9uLmhwcAorQEAgLTE1LDYgKzE1LDcgQEAKKyAvLyBEZXBlbmRlbmN5OgorICNpbmNsdWRlICIuLi9nZW9tZXRyaWMuaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfcHJvamVjdGlvbiBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvcXVhdGVybmlvbi5ocHAgYi9nbG0vZ3R4L3F1YXRlcm5pb24uaHBwCitpbmRleCBjM2Q5OWE1Yy4uODA4YmEwZmQgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L3F1YXRlcm5pb24uaHBwCisrKysgYi9nbG0vZ3R4L3F1YXRlcm5pb24uaHBwCitAQCAtMTksNiArMTksNyBAQAorICNpbmNsdWRlICIuLi9ndGMvcXVhdGVybmlvbi5ocHAiCisgI2luY2x1ZGUgIi4uL2d0eC9ub3JtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX3F1YXRlcm5pb24gaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L3JhbmdlLmhwcCBiL2dsbS9ndHgvcmFuZ2UuaHBwCitpbmRleCBlMGVmNDZhZi4uMDNjNzk3YzMgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L3JhbmdlLmhwcAorKysrIGIvZ2xtL2d0eC9yYW5nZS5ocHAKK0BAIC0xNSw2ICsxNSw3IEBACisgLy8gRGVwZW5kZW5jaWVzCisgI2luY2x1ZGUgIi4uL2RldGFpbC9zZXR1cC5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9yYW5nZSBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvcmF3X2RhdGEuaHBwIGIvZ2xtL2d0eC9yYXdfZGF0YS5ocHAKK2luZGV4IGZiMzRjOGNiLi4wMDg0ZmVjNiAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvcmF3X2RhdGEuaHBwCisrKysgYi9nbG0vZ3R4L3Jhd19kYXRhLmhwcAorQEAgLTE2LDYgKzE2LDcgQEAKKyAjaW5jbHVkZSAiLi4vZGV0YWlsL3NldHVwLmhwcCIKKyAjaW5jbHVkZSAiLi4vZGV0YWlsL3R5cGVfaW50LmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX3Jhd19kYXRhIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9yb3RhdGVfbm9ybWFsaXplZF9heGlzLmhwcCBiL2dsbS9ndHgvcm90YXRlX25vcm1hbGl6ZWRfYXhpcy5ocHAKK2luZGV4IGVlZTkwZDZlLi44MjYxMjkyOCAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvcm90YXRlX25vcm1hbGl6ZWRfYXhpcy5ocHAKKysrKyBiL2dsbS9ndHgvcm90YXRlX25vcm1hbGl6ZWRfYXhpcy5ocHAKK0BAIC0xOSw2ICsxOSw3IEBACisgI2luY2x1ZGUgIi4uL2d0Yy9lcHNpbG9uLmhwcCIKKyAjaW5jbHVkZSAiLi4vZ3RjL3F1YXRlcm5pb24uaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfcm90YXRlX25vcm1hbGl6ZWRfYXhpcyBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvcm90YXRlX3ZlY3Rvci5ocHAgYi9nbG0vZ3R4L3JvdGF0ZV92ZWN0b3IuaHBwCitpbmRleCBjOGFjZTg5ZS4uZTk1NGIwNDEgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L3JvdGF0ZV92ZWN0b3IuaHBwCisrKysgYi9nbG0vZ3R4L3JvdGF0ZV92ZWN0b3IuaHBwCitAQCAtMTcsNiArMTcsNyBAQAorICNpbmNsdWRlICIuLi9nbG0uaHBwIgorICNpbmNsdWRlICIuLi9ndHgvdHJhbnNmb3JtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX3JvdGF0ZV92ZWN0b3IgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L3NjYWxhcl9tdWx0aXBsaWNhdGlvbi5ocHAgYi9nbG0vZ3R4L3NjYWxhcl9tdWx0aXBsaWNhdGlvbi5ocHAKK2luZGV4IGI3M2VkZjY3Li4yMmJhYTUyYSAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvc2NhbGFyX211bHRpcGxpY2F0aW9uLmhwcAorKysrIGIvZ2xtL2d0eC9zY2FsYXJfbXVsdGlwbGljYXRpb24uaHBwCitAQCAtMTYsNiArMTYsNyBAQAorIAorICNpbmNsdWRlICIuLi9kZXRhaWwvc2V0dXAuaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfc2NhbGFyX211bHRpcGxpY2F0aW9uIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9zY2FsYXJfcmVsYXRpb25hbC5ocHAgYi9nbG0vZ3R4L3NjYWxhcl9yZWxhdGlvbmFsLmhwcAoraW5kZXggN2ZjOGMxY2MuLmYyMWYzYjJiIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9zY2FsYXJfcmVsYXRpb25hbC5ocHAKKysrKyBiL2dsbS9ndHgvc2NhbGFyX3JlbGF0aW9uYWwuaHBwCitAQCAtMTUsNiArMTUsNyBAQAorIC8vIERlcGVuZGVuY3k6CisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9leHRlbmQgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L3NwbGluZS5ocHAgYi9nbG0vZ3R4L3NwbGluZS5ocHAKK2luZGV4IGY5NmQ3ZTA3Li43NjM1OWNmZCAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvc3BsaW5lLmhwcAorKysrIGIvZ2xtL2d0eC9zcGxpbmUuaHBwCitAQCAtMTYsNiArMTYsNyBAQAorICNpbmNsdWRlICIuLi9nbG0uaHBwIgorICNpbmNsdWRlICIuLi9ndHgvb3B0aW11bV9wb3cuaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfc3BsaW5lIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC9zdGRfYmFzZWRfdHlwZS5ocHAgYi9nbG0vZ3R4L3N0ZF9iYXNlZF90eXBlLmhwcAoraW5kZXggNTVhMmYwNzQuLjkyNTMyYjllIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC9zdGRfYmFzZWRfdHlwZS5ocHAKKysrKyBiL2dsbS9ndHgvc3RkX2Jhc2VkX3R5cGUuaHBwCitAQCAtMTcsNiArMTcsNyBAQAorICNpbmNsdWRlICIuLi9nbG0uaHBwIgorICNpbmNsdWRlIDxjc3RkbGliPgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfc3RkX2Jhc2VkX3R5cGUgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L3N0cmluZ19jYXN0LmhwcCBiL2dsbS9ndHgvc3RyaW5nX2Nhc3QuaHBwCitpbmRleCA0YjRlMjgwZi4uZGZjZDUwODUgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L3N0cmluZ19jYXN0LmhwcAorKysrIGIvZ2xtL2d0eC9zdHJpbmdfY2FzdC5ocHAKK0BAIC0yNCw2ICsyNCw3IEBACisgI2luY2x1ZGUgPHN0cmluZz4KKyAjaW5jbHVkZSA8Y21hdGg+CisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF9zdHJpbmdfY2FzdCBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvdGV4dHVyZS5ocHAgYi9nbG0vZ3R4L3RleHR1cmUuaHBwCitpbmRleCAzMTJiZjM5OC4uN2FmMTg1ZjYgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L3RleHR1cmUuaHBwCisrKysgYi9nbG0vZ3R4L3RleHR1cmUuaHBwCitAQCAtMTcsNiArMTcsNyBAQAorICNpbmNsdWRlICIuLi9ndGMvaW50ZWdlci5ocHAiCisgI2luY2x1ZGUgIi4uL2d0eC9jb21wb25lbnRfd2lzZS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF90ZXh0dXJlIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC90cmFuc2Zvcm0uaHBwIGIvZ2xtL2d0eC90cmFuc2Zvcm0uaHBwCitpbmRleCBkMjNiOTljZS4uNWE1ZDk2MTkgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L3RyYW5zZm9ybS5ocHAKKysrKyBiL2dsbS9ndHgvdHJhbnNmb3JtLmhwcAorQEAgLTE5LDYgKzE5LDcgQEAKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAjaW5jbHVkZSAiLi4vZ3RjL21hdHJpeF90cmFuc2Zvcm0uaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfdHJhbnNmb3JtIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC90cmFuc2Zvcm0yLmhwcCBiL2dsbS9ndHgvdHJhbnNmb3JtMi5ocHAKK2luZGV4IDg1ZjViZWE0Li41ZDdjODNmYyAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvdHJhbnNmb3JtMi5ocHAKKysrKyBiL2dsbS9ndHgvdHJhbnNmb3JtMi5ocHAKK0BAIC0xNyw2ICsxNyw3IEBACisgI2luY2x1ZGUgIi4uL2dsbS5ocHAiCisgI2luY2x1ZGUgIi4uL2d0eC90cmFuc2Zvcm0uaHBwIgorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfdHJhbnNmb3JtMiBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvdHlwZV9hbGlnbmVkLmhwcCBiL2dsbS9ndHgvdHlwZV9hbGlnbmVkLmhwcAoraW5kZXggNmZmOWYyNzYuLjZhZDkyZmFkIDEwMDY0NAorLS0tIGEvZ2xtL2d0eC90eXBlX2FsaWduZWQuaHBwCisrKysgYi9nbG0vZ3R4L3R5cGVfYWxpZ25lZC5ocHAKK0BAIC0xOCw2ICsxOCw3IEBACisgLy8gRGVwZW5kZW5jeToKKyAjaW5jbHVkZSAiLi4vZ3RjL3R5cGVfcHJlY2lzaW9uLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX3R5cGVfYWxpZ25lZCBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvdHlwZV90cmFpdC5ocHAgYi9nbG0vZ3R4L3R5cGVfdHJhaXQuaHBwCitpbmRleCA2MzdiYmQxOS4uNjU1MTljYWIgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L3R5cGVfdHJhaXQuaHBwCisrKysgYi9nbG0vZ3R4L3R5cGVfdHJhaXQuaHBwCitAQCAtMTIsNiArMTIsNyBAQAorIAorICNwcmFnbWEgb25jZQorIAorKyNpbmNsdWRlICIuLi9leHBlcmltZW50YWwuaHBwIgorICNpZm5kZWYgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwKKyAjCWVycm9yICJHTE06IEdMTV9HVFhfdHlwZV90cmFpdCBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvdmVjX3N3aXp6bGUuaHBwIGIvZ2xtL2d0eC92ZWNfc3dpenpsZS5ocHAKK2luZGV4IGRhZWJhYzM4Li4xM2Q1MjNkYyAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvdmVjX3N3aXp6bGUuaHBwCisrKysgYi9nbG0vZ3R4L3ZlY19zd2l6emxlLmhwcAorQEAgLTE0LDYgKzE0LDcgQEAKKyAKKyAjaW5jbHVkZSAiLi4vZ2xtLmhwcCIKKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX3ZlY19zd2l6emxlIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2xtL2d0eC92ZWN0b3JfYW5nbGUuaHBwIGIvZ2xtL2d0eC92ZWN0b3JfYW5nbGUuaHBwCitpbmRleCA0MDFhNDdlYi4uOThjOWQxMTAgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L3ZlY3Rvcl9hbmdsZS5ocHAKKysrKyBiL2dsbS9ndHgvdmVjdG9yX2FuZ2xlLmhwcAorQEAgLTIwLDYgKzIwLDcgQEAKKyAjaW5jbHVkZSAiLi4vZ3R4L3F1YXRlcm5pb24uaHBwIgorICNpbmNsdWRlICIuLi9ndHgvcm90YXRlX3ZlY3Rvci5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF92ZWN0b3JfYW5nbGUgaXMgYW4gZXhwZXJpbWVudGFsIGV4dGVuc2lvbiBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBVc2UgI2RlZmluZSBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTCBiZWZvcmUgaW5jbHVkaW5nIGl0LCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gdXNlIGl0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9nbG0vZ3R4L3ZlY3Rvcl9xdWVyeS5ocHAgYi9nbG0vZ3R4L3ZlY3Rvcl9xdWVyeS5ocHAKK2luZGV4IDY1NjBlYWE1Li41YWIxZmZkYSAxMDA2NDQKKy0tLSBhL2dsbS9ndHgvdmVjdG9yX3F1ZXJ5LmhwcAorKysrIGIvZ2xtL2d0eC92ZWN0b3JfcXVlcnkuaHBwCitAQCAtMTcsNiArMTcsNyBAQAorICNpbmNsdWRlIDxjZmxvYXQ+CisgI2luY2x1ZGUgPGxpbWl0cz4KKyAKKysjaW5jbHVkZSAiLi4vZXhwZXJpbWVudGFsLmhwcCIKKyAjaWZuZGVmIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMCisgIwllcnJvciAiR0xNOiBHTE1fR1RYX3ZlY3Rvcl9xdWVyeSBpcyBhbiBleHBlcmltZW50YWwgZXh0ZW5zaW9uIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuIFVzZSAjZGVmaW5lIEdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMIGJlZm9yZSBpbmNsdWRpbmcgaXQsIGlmIHlvdSByZWFsbHkgd2FudCB0byB1c2UgaXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCBhL2dsbS9ndHgvd3JhcC5ocHAgYi9nbG0vZ3R4L3dyYXAuaHBwCitpbmRleCAyYzRiNTVkZi4uNWJmMjZhMzMgMTAwNjQ0CistLS0gYS9nbG0vZ3R4L3dyYXAuaHBwCisrKysgYi9nbG0vZ3R4L3dyYXAuaHBwCitAQCAtMTYsNiArMTYsNyBAQAorICNpbmNsdWRlICIuLi9nbG0uaHBwIgorICNpbmNsdWRlICIuLi9ndGMvdmVjMS5ocHAiCisgCisrI2luY2x1ZGUgIi4uL2V4cGVyaW1lbnRhbC5ocHAiCisgI2lmbmRlZiBHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTAorICMJZXJyb3IgIkdMTTogR0xNX0dUWF93cmFwIGlzIGFuIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gVXNlICNkZWZpbmUgR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwgYmVmb3JlIGluY2x1ZGluZyBpdCwgaWYgeW91IHJlYWxseSB3YW50IHRvIHVzZSBpdC4iCisgI2VuZGlmCistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbG0vZmlsZXMvMDAwMi1nbG0taW5zdGFsbC1oZWFkZXJzLW9ubHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbG0vZmlsZXMvMDAwMi1nbG0taW5zdGFsbC1oZWFkZXJzLW9ubHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJlMzMxOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsbS9maWxlcy8wMDAyLWdsbS1pbnN0YWxsLWhlYWRlcnMtb25seS5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDdmZGQzNmQ3NDk2MjM4ZTAzZTQzZmNjMzI4MzlmNzU1ODgxMTZjNWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNiBNYXIgMjAxOCAxNTo0NDo0OCArMDEwMAorU3ViamVjdDogW1BBVENIIDIvMl0gZ2xtOiBpbnN0YWxsIGhlYWRlcnMgb25seQorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitQbGF1c2liaWxpdHkgY2hlY2sgaW4gcm9vdCBzb3VyY2UgcGF0aAorCiskIGZpbmQgZ2xtIC10eXBlIGYgISAtbmFtZSAnKi5ocHAnICEgLW5hbWUgJyouaCcgISAtbmFtZSAnKi5pbmwnCitnbG0vZGV0YWlsL2dsbS5jcHAKK2dsbS9kZXRhaWwvZHVtbXkuY3BwCitnbG0vZXhwZXJpbWVudGFsLmhwcC5pbgorZ2xtL0NNYWtlTGlzdHMudHh0CisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CisKK1VwdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWzFdCisKK1sxXSBodHRwczovL2dpdGh1Yi5jb20vZy10cnVjL2dsbS9wdWxsLzc0MQorLS0tCisgQ01ha2VMaXN0cy50eHQgfCA3ICsrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCBiZDRkZDY1NC4uMTEzZGQ3MzUgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0xNzEsNyArMTcxLDEyIEBAIG9wdGlvbihHTE1fSU5TVEFMTF9FTkFCTEUgIkdMTSBpbnN0YWxsIiBPTikKKyAKKyBzZXQoR0xNX0lOU1RBTExfQ09ORklHRElSICIke0NNQUtFX0lOU1RBTExfTElCRElSfS9jbWFrZS9nbG0iKQorIGlmIChHTE1fSU5TVEFMTF9FTkFCTEUpCistCWluc3RhbGwoRElSRUNUT1JZIGdsbSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0pCisrCWluc3RhbGwoRElSRUNUT1JZIGdsbQorKwkJREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9CisrCQlGSUxFU19NQVRDSElORworKwkJCVBBVFRFUk4gIiouaCIKKysJCQlQQVRURVJOICIqLmhwcCIKKysJCQlQQVRURVJOICIqLmlubCIpCisgCWluc3RhbGwoRklMRVMgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9leHBlcmltZW50YWwuaHBwIiBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0vZ2xtKQorIGVuZGlmKCkKKyAKKy0tIAorMi4xNC4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsbS9nbG1fMC45LjguNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsbS9nbG1fMC45LjguNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE3NGYyYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbG0vZ2xtXzAuOS44LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIk9wZW5HTCBNYXRoZW1hdGljcyBMaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiT3BlbkdMIE1hdGhlbWF0aWNzIChHTE0pIGlzIGEgaGVhZGVyIG9ubHkgQysrIFwKLW1hdGhlbWF0aWNzIGxpYnJhcnkgZm9yIGdyYXBoaWNzIHNvZnR3YXJlIGJhc2VkIG9uIHRoZSBPcGVuR0wgXAotU2hhZGluZyBMYW5ndWFnZSAoR0xTTCkgc3BlY2lmaWNhdGlvbnMuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9nbG0uZy10cnVjLm5ldCIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ctdHJ1Yy9nbG0vaXNzdWVzIgotCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY29weWluZy50eHQ7bWQ1PTQ0MzE2MDZkMTQ0MjUyMTQzYzljM2RmMzg0YTc0Y2FkIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZy10cnVjL2dsbTticmFuY2g9MC45LjgiCi1TUkNSRVYgPSAiNmZhMjAzZWViN2ZiY2JiNmY2MjA1MDFmYWQ0MDM1OWM4YTQ1NjA0OSIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UiCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsbS9nbG1fMC45LjktYTIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbG0vZ2xtXzAuOS45LWEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlMmVlMjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbG0vZ2xtXzAuOS45LWEyLmJiCkBAIC0wLDAgKzEsMjggQEAKK1NVTU1BUlkgPSAiT3BlbkdMIE1hdGhlbWF0aWNzIExpYnJhcnkiCitERVNDUklQVElPTiA9ICJPcGVuR0wgTWF0aGVtYXRpY3MgKEdMTSkgaXMgYSBoZWFkZXIgb25seSBDKysgXAorbWF0aGVtYXRpY3MgbGlicmFyeSBmb3IgZ3JhcGhpY3Mgc29mdHdhcmUgYmFzZWQgb24gdGhlIE9wZW5HTCBcCitTaGFkaW5nIExhbmd1YWdlIChHTFNMKSBzcGVjaWZpY2F0aW9ucy4iCitIT01FUEFHRSA9ICJodHRwczovL2dsbS5nLXRydWMubmV0IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vZy10cnVjL2dsbS9pc3N1ZXMiCisKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9yZWFkbWUubWQ7YmVnaW5saW5lPTIxO2VuZGxpbmU9MjI7bWQ1PTMwNzViNTcyN2QzNmYyOWVkY2NmOTdiOTNlNzJiNzkwIgorCitTUkNfVVJJID0gIiBcCisgICAgZ2l0Oi8vZ2l0aHViLmNvbS9nLXRydWMvZ2xtO2JyYW5jaD1tYXN0ZXIgXAorICAgIGZpbGU6Ly8wMDAxLU1ha2UtR0xNX0VOQUJMRV9FWFBFUklNRU5UQUwtYS1jb25maWd1cmFibGUtb3B0aW9uLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1nbG0taW5zdGFsbC1oZWFkZXJzLW9ubHkucGF0Y2ggXAorIgorU1JDUkVWID0gImZjYmVkZjUwNThlZjg2MTNkZDAyYWFjNjJlZjAwZDU1ZGNmZWFkZDciCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlCisKK0VYVFJBX09FQ01BS0UgPSAiLURHTE1fRU5BQkxFX0VYUEVSSU1FTlRBTD1PTiIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UiCitSREVQRU5EU18ke1BOfS1kZXYgPSAiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvZ3Bob3RvMi0yLjUuOC8wMDAxLWNvbmZpZ3VyZS5hYy1yZW1vdmUtQU1fUE9fU1VCRElSUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvZ3Bob3RvMi8wMDAxLWNvbmZpZ3VyZS5hYy1yZW1vdmUtQU1fUE9fU1VCRElSUy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9ncGhvdG8yLTIuNS44LzAwMDEtY29uZmlndXJlLmFjLXJlbW92ZS1BTV9QT19TVUJESVJTLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2dwaG90bzIvMDAwMS1jb25maWd1cmUuYWMtcmVtb3ZlLUFNX1BPX1NVQkRJUlMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvZ3Bob3RvMi0yLjUuOC8wMDAyLUxvb2stZm9yLXBvcHQtd2l0aC1HUF9DSEVDS19MSUJSQVJZLWZ1bmN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9ncGhvdG8yLzAwMDItTG9vay1mb3ItcG9wdC13aXRoLUdQX0NIRUNLX0xJQlJBUlktZnVuY3Rpb24ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvZ3Bob3RvMi0yLjUuOC8wMDAyLUxvb2stZm9yLXBvcHQtd2l0aC1HUF9DSEVDS19MSUJSQVJZLWZ1bmN0aW9uLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2dwaG90bzIvMDAwMi1Mb29rLWZvci1wb3B0LXdpdGgtR1BfQ0hFQ0tfTElCUkFSWS1mdW5jdGlvbi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9ncGhvdG8yXzIuNS44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9ncGhvdG8yXzIuNS4xNC5iYgpzaW1pbGFyaXR5IGluZGV4IDc5JQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2dwaG90bzJfMi41LjguYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvZ3Bob3RvMl8yLjUuMTQuYmIKaW5kZXggNjJkMjgzYi4uNzVhZDdmNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9ncGhvdG8yXzIuNS44LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvZ3Bob3RvMl8yLjUuMTQuYmIKQEAgLTExLDggKzExLDggQEAKICAgICAgICAgICAgZmlsZTovLzAwMDItTG9vay1mb3ItcG9wdC13aXRoLUdQX0NIRUNLX0xJQlJBUlktZnVuY3Rpb24ucGF0Y2ggXAogIgogCi1TUkNfVVJJW2dwaG90bzIubWQ1c3VtXSA9ICJiYWUzNjlhZWU2ODgxZTU5MGM1YzkxYmRiYjExYTVmOCIKLVNSQ19VUklbZ3Bob3RvMi5zaGEyNTZzdW1dID0gImE5YWJjZDE1ZDk1ZjIwNTMxOGQxN2UzYWMxMmFmN2NlNTIzZDJiYzQ5NDM3MDlkNTBiMGExMmMzMGNjNWVlNGQiCitTUkNfVVJJW2dwaG90bzIubWQ1c3VtXSA9ICI2YzZhMjFiNWU4NzkzMzBjZGQ3MWVmOTJkY2UzNjM5OSIKK1NSQ19VUklbZ3Bob3RvMi5zaGEyNTZzdW1dID0gIjkzMDJkMDJmYjQ3MmQ0OTM2OTg4MzgyYjcyNzdjY2RjNGVkYWY3ZWRlNTZjNDkwMjc4OTEyZmZkMDYyNzY5OWMiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMi0yLjUuOC8wMDAxLXNjcmlwdHMtcmVtb3ZlLWJhc2hpc21zLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLTIuNS44LzAwMDEtc2NyaXB0cy1yZW1vdmUtYmFzaGlzbXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMGRjODcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLTIuNS44LzAwMDEtc2NyaXB0cy1yZW1vdmUtYmFzaGlzbXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotRnJvbSBjMDBlNjNlOTdkODcxODgzNmJhMDExZDkxNzIxMjg3MzJlZWNmMDAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSXNtbyBQdXVzdGluZW4gPGlzbW8ucHV1c3RpbmVuQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMjQgSmFuIDIwMTcgMjI6MjQ6MDUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gc2NyaXB0czogcmVtb3ZlIGJhc2hpc21zLgotCi1Db252ZXJ0IGJhc2ggc2NyaXB0cyB0byBtb3JlIGdlbmVyaWMgc2hlbGwgc2NyaXB0cy4gVGhpcyByZW1vdmVzIHRoZQotc3RyaWN0IGJhc2ggZGVwZW5kZW5jeSBhbmQgdGhlIHNjcmlwdHMgc2hvdWxkIG5vdyBydW4gd2l0aCBhbnkgcG9zaXgKLXNoZWxsLiBBbHNvIGZpeCB0aGUgaXNzdWVzIHJlcG9ydGVkIGJ5IHNoZWxsY2hlY2sgd2hpbGUgYXQgaXQuCi0KLVVwc3RyZWFtLXN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ncGhvdG8vbGliZ3Bob3RvMi9jb21taXQvMzliNDM5NTUzMjA1OGMwZWRiOWE1NmQwZmYwNGU0OGE0NzJlNDc0M10KLQotLS0tCi0gcGFja2FnaW5nL2dlbmVyaWMvY2hlY2stcHRwLWNhbWVyYSAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQotIHBhY2thZ2luZy9saW51eC1ob3RwbHVnL2dwaG90by1zZXQtcHJvY3Blcm0gfCAxNCArKysrKysrLS0tLS0tLQotIHBhY2thZ2luZy9saW51eC1ob3RwbHVnL3VzYmNhbS5jb25zb2xlICAgICAgfCAgNCArKy0tCi0gcGFja2FnaW5nL2xpbnV4LWhvdHBsdWcvdXNiY2FtLmdyb3VwICAgICAgICB8ICAyICstCi0gcGFja2FnaW5nL2xpbnV4LWhvdHBsdWcvdXNiY2FtLnVzZXIgICAgICAgICB8ICAyICstCi0gcGFja2FnaW5nL2xpbnV4LWhvdHBsdWcvdXNiY2FtLngxMS1hcHAgICAgICB8ICA0ICsrLS0KLSA2IGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcGFja2FnaW5nL2dlbmVyaWMvY2hlY2stcHRwLWNhbWVyYSBiL3BhY2thZ2luZy9nZW5lcmljL2NoZWNrLXB0cC1jYW1lcmEKLWluZGV4IDE3OTNmYzguLmJjM2M2YWMgMTAwNjQ0Ci0tLS0gYS9wYWNrYWdpbmcvZ2VuZXJpYy9jaGVjay1wdHAtY2FtZXJhCi0rKysgYi9wYWNrYWdpbmcvZ2VuZXJpYy9jaGVjay1wdHAtY2FtZXJhCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS9iaW4vYmFzaAotKyMhL2Jpbi9zaAotICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi1AQCAtMjAsMTMgKzIwLDEzIEBAIElOVEVSRkFDRT0iJHsxOi0wNi8wMS8wMX0iCi0gCi0gQkFTRU5BTUU9JHtERVZQQVRIIyMqL30KLSBmb3IgZCBpbiAvc3lzLyR7REVWUEFUSH0vJHtCQVNFTkFNRX06KjsgZG8KLS0JW1sgLWQgJHtkfSBdXSB8fCBjb250aW51ZQotLQlJTlRFUkZBQ0VJRD0iJCg8ICR7ZH0vYkludGVyZmFjZUNsYXNzKSIKLS0JSU5URVJGQUNFSUQ9IiR7SU5URVJGQUNFSUR9LyQoPCAke2R9L2JJbnRlcmZhY2VTdWJDbGFzcykiCi0tCUlOVEVSRkFDRUlEPSIke0lOVEVSRkFDRUlEfS8kKDwgJHtkfS9iSW50ZXJmYWNlUHJvdG9jb2wpIgotKwlbIC1kICIke2R9IiBdIHx8IGNvbnRpbnVlCi0rCUlOVEVSRkFDRUlEPSIkKGNhdCAiJHtkfSIvYkludGVyZmFjZUNsYXNzKSIKLSsJSU5URVJGQUNFSUQ9IiR7SU5URVJGQUNFSUR9LyQoY2F0ICIke2R9Ii9iSW50ZXJmYWNlU3ViQ2xhc3MpIgotKwlJTlRFUkZBQ0VJRD0iJHtJTlRFUkZBQ0VJRH0vJChjYXQgIiR7ZH0iL2JJbnRlcmZhY2VQcm90b2NvbCkiCi0gCi0gCSNlY2hvICR7ZH06ICR7SU5URVJGQUNFSUR9Ci0tCWlmIFtbICR7SU5URVJGQUNFfSA9PSAke0lOVEVSRkFDRUlEfSBdXTsgdGhlbgotKwlpZiBbICIke0lOVEVSRkFDRX0iID0gIiR7SU5URVJGQUNFSUR9IiBdOyB0aGVuCi0gCQkjIEZvdW5kIGludGVyZmFjZQotIAkJZXhpdCAwCi0gCWZpCi1kaWZmIC0tZ2l0IGEvcGFja2FnaW5nL2xpbnV4LWhvdHBsdWcvZ3Bob3RvLXNldC1wcm9jcGVybSBiL3BhY2thZ2luZy9saW51eC1ob3RwbHVnL2dwaG90by1zZXQtcHJvY3Blcm0KLWluZGV4IGQ3MmVlNjguLjk3N2NiZjUgMTAwNjQ0Ci0tLS0gYS9wYWNrYWdpbmcvbGludXgtaG90cGx1Zy9ncGhvdG8tc2V0LXByb2NwZXJtCi0rKysgYi9wYWNrYWdpbmcvbGludXgtaG90cGx1Zy9ncGhvdG8tc2V0LXByb2NwZXJtCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS9iaW4vYmFzaAotKyMhL2Jpbi9zaAotICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi1AQCAtMTgsMjIgKzE4LDIyIEBACi0gIyBUaGlzIGlzIHRha2VuIGZyb20gRmVkb3JhIENvcmUgZ3Bob3RvMiBwYWNrYWdlLgotICMgaHR0cDovL2N2cy5mZWRvcmEucmVkaGF0LmNvbS92aWV3Y3ZzLypjaGVja291dCovZGV2ZWwvZ3Bob3RvMi9ncGhvdG8tc2V0LXByb2NwZXJtCi0gCi0tY29uc29sZV91c2VyPWBjYXQgL3Zhci9ydW4vY29uc29sZS9jb25zb2xlLmxvY2tgIAotK2NvbnNvbGVfdXNlcj0kKGNhdCAvdmFyL3J1bi9jb25zb2xlL2NvbnNvbGUubG9jaykKLSAKLSBpZiBbIC16ICIkY29uc29sZV91c2VyIiBdIDsgdGhlbgotICAgZXhpdCAxIAotIGZpCi0gCi0taWYgWyAteiAiJEhBTF9QUk9QX1VTQl9CVVNfTlVNQkVSIiAtbyAteiAiJEhBTF9QUk9QX1VTQl9MSU5VWF9ERVZJQ0VfTlVNQkVSIiBdIDsgdGhlbgotK2lmIFsgLXogIiRIQUxfUFJPUF9VU0JfQlVTX05VTUJFUiIgXSB8fCBbIC16ICIkSEFMX1BST1BfVVNCX0xJTlVYX0RFVklDRV9OVU1CRVIiIF0gOyB0aGVuCi0gICBleGl0IDEgCi0gZmkKLSAKLS1pZiBbICRIQUxfUFJPUF9VU0JfQlVTX05VTUJFUiAtbHQgMCAtbyAgJEhBTF9QUk9QX1VTQl9MSU5VWF9ERVZJQ0VfTlVNQkVSIC1sdCAwIF0gOyB0aGVuCi0raWYgWyAiJEhBTF9QUk9QX1VTQl9CVVNfTlVNQkVSIiAtbHQgMCBdIHx8IFsgIiRIQUxfUFJPUF9VU0JfTElOVVhfREVWSUNFX05VTUJFUiIgLWx0IDAgXSA7IHRoZW4KLSAgIGV4aXQgMSAKLSBmaQotIAotIAotLWJ1c19udW09YHByaW50ZiAlLjN1ICRIQUxfUFJPUF9VU0JfQlVTX05VTUJFUmAKLS1kZXZfbnVtPWBwcmludGYgJS4zdSAkSEFMX1BST1BfVVNCX0xJTlVYX0RFVklDRV9OVU1CRVJgCi0rYnVzX251bT0kKHByaW50ZiAlLjN1ICIkSEFMX1BST1BfVVNCX0JVU19OVU1CRVIiKQotK2Rldl9udW09JChwcmludGYgJS4zdSAiJEhBTF9QUk9QX1VTQl9MSU5VWF9ERVZJQ0VfTlVNQkVSIikKLSAKLS1jaG93biAkY29uc29sZV91c2VyIC9wcm9jL2J1cy91c2IvJGJ1c19udW0vJGRldl9udW0gCi0rY2hvd24gIiRjb25zb2xlX3VzZXIiIC9wcm9jL2J1cy91c2IvIiRidXNfbnVtIi8iJGRldl9udW0iCi1kaWZmIC0tZ2l0IGEvcGFja2FnaW5nL2xpbnV4LWhvdHBsdWcvdXNiY2FtLmNvbnNvbGUgYi9wYWNrYWdpbmcvbGludXgtaG90cGx1Zy91c2JjYW0uY29uc29sZQotaW5kZXggZDcyMTI4Zi4uN2FjNmRjNSAxMDA3NTUKLS0tLSBhL3BhY2thZ2luZy9saW51eC1ob3RwbHVnL3VzYmNhbS5jb25zb2xlCi0rKysgYi9wYWNrYWdpbmcvbGludXgtaG90cGx1Zy91c2JjYW0uY29uc29sZQotQEAgLTEsNCArMSw0IEBACi0tIyEvYmluL2Jhc2gKLSsjIS9iaW4vc2gKLSAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotQEAgLTUwLDcgKzUwLDcgQEAgdGhlbgotICAgICAgICAgL3Zhci9sb2NrL2NvbnNvbGUubG9jawotICAgICBkbwotICAgICAgICAgaWYgWyAtZiAiJGNvbmxvY2siIF07IHRoZW4KLS0JICAgIENPTlNPTEVPV05FUj1gY2F0ICRjb25sb2NrYAotKyAgICAgICAgICAgIENPTlNPTEVPV05FUj0kKGNhdCAkY29ubG9jaykKLSAgICAgICAgIGZpCi0gICAgIGRvbmUKLSAgICAgaWYgWyAtbiAiJENPTlNPTEVPV05FUiIgXQotZGlmZiAtLWdpdCBhL3BhY2thZ2luZy9saW51eC1ob3RwbHVnL3VzYmNhbS5ncm91cCBiL3BhY2thZ2luZy9saW51eC1ob3RwbHVnL3VzYmNhbS5ncm91cAotaW5kZXggZjk2YzMzZC4uODc2MWZhYyAxMDA3NTUKLS0tLSBhL3BhY2thZ2luZy9saW51eC1ob3RwbHVnL3VzYmNhbS5ncm91cAotKysrIGIvcGFja2FnaW5nL2xpbnV4LWhvdHBsdWcvdXNiY2FtLmdyb3VwCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS9iaW4vYmFzaAotKyMhL2Jpbi9zaAotICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi1kaWZmIC0tZ2l0IGEvcGFja2FnaW5nL2xpbnV4LWhvdHBsdWcvdXNiY2FtLnVzZXIgYi9wYWNrYWdpbmcvbGludXgtaG90cGx1Zy91c2JjYW0udXNlcgotaW5kZXggYzQ2ZjE1NS4uYTNiYTcxYSAxMDA2NDQKLS0tLSBhL3BhY2thZ2luZy9saW51eC1ob3RwbHVnL3VzYmNhbS51c2VyCi0rKysgYi9wYWNrYWdpbmcvbGludXgtaG90cGx1Zy91c2JjYW0udXNlcgotQEAgLTEsNCArMSw0IEBACi0tIyEvYmluL2Jhc2gKLSsjIS9iaW4vc2gKLSAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotZGlmZiAtLWdpdCBhL3BhY2thZ2luZy9saW51eC1ob3RwbHVnL3VzYmNhbS54MTEtYXBwIGIvcGFja2FnaW5nL2xpbnV4LWhvdHBsdWcvdXNiY2FtLngxMS1hcHAKLWluZGV4IDAyM2FlOWIuLjYxOGU3ZGIgMTAwNjQ0Ci0tLS0gYS9wYWNrYWdpbmcvbGludXgtaG90cGx1Zy91c2JjYW0ueDExLWFwcAotKysrIGIvcGFja2FnaW5nL2xpbnV4LWhvdHBsdWcvdXNiY2FtLngxMS1hcHAKLUBAIC0xLDQgKzEsNCBAQAotLSMhL2Jpbi9iYXNoCi0rIyEvYmluL3NoCi0gIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLUBAIC02OSw3ICs2OSw3IEBAIHRoZW4KLSAgICAgaWYgWyAiJHtVU0VSfSIgIT0gInJvb3QiIF0KLSAgICAgdGhlbgotIAkjIHdlIGRvbid0IHdhbnQgdG8gcnVuIHRoaXMgYXMgcm9vdC4gZGVmaW5pdGVseSBub3QuCi0tCWNkICIke0RJUkVDVE9SWX0iCi0rCWNkICIke0RJUkVDVE9SWX0iIHx8IGV4aXQgMQotIAl1c3Job21lPX4ke1VTRVJ9Ci0gCSIke1NVfSIgIiR7VVNFUn0iIC1jICIke0VOVn0gRElTUExBWT0ke0RJU1BMQVl9IEhPTUU9JHt1c3Job21lfSAke1gxMV9BUFB9IgotICAgICBmaQotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzItMi41LjgvMDAwMi1jb3JyZWN0LWpwZWctbWVtc3JjZGVzdC1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLTIuNS44LzAwMDItY29ycmVjdC1qcGVnLW1lbXNyY2Rlc3Qtc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2YyZDg2ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzItMi41LjgvMDAwMi1jb3JyZWN0LWpwZWctbWVtc3JjZGVzdC1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLS0tIGxpYmdwaG90bzItMi41LjgvY2FtbGlicy9heDIwMy9qcGVnX21lbXNyY2Rlc3QuaC5vcmlnCTIwMTYtMDYtMTUgMDk6MDM6MjAuNjI1Nzc0Njg0IC0wNDAwCi0rKysgbGliZ3Bob3RvMi0yLjUuOC9jYW1saWJzL2F4MjAzL2pwZWdfbWVtc3JjZGVzdC5oCTIwMTYtMDYtMTUgMDk6MDM6NDcuMDQ5Nzc0MTQ4IC0wNDAwCi1AQCAtMSw1ICsxLDcgQEAKLSAjaW5jbHVkZSA8anBlZ2xpYi5oPgotIAotKyNpZiBKUEVHX0xJQl9WRVJTSU9OIDwgODAgJiYgIWRlZmluZWQoTUVNX1NSQ0RTVF9TVVBQT1JURUQpCi0rCi0gdm9pZAotIGpwZWdfbWVtX3NyYyAoal9kZWNvbXByZXNzX3B0ciBjaW5mbywgdW5zaWduZWQgY2hhciAqIGJ1ZmZlciwKLSAJdW5zaWduZWQgbG9uZyBidWZzaXplKTsKLUBAIC03LDMgKzksNSBAQAotIHZvaWQKLSBqcGVnX21lbV9kZXN0IChqX2NvbXByZXNzX3B0ciBjaW5mbywgdW5zaWduZWQgY2hhciAqKiBvdXRidWZmZXIsCi0gCXVuc2lnbmVkIGxvbmcgKiBvdXRzaXplKTsKLSsKLSsjZW5kaWYKLS0tLSBsaWJncGhvdG8yLTIuNS44L2NhbWxpYnMvYXgyMDMvanBlZ19tZW1zcmNkZXN0LmMub3JpZwkyMDE2LTA2LTE1IDA5OjAzOjU4LjY4OTc3MzkxMyAtMDQwMAotKysrIGxpYmdwaG90bzItMi41LjgvY2FtbGlicy9heDIwMy9qcGVnX21lbXNyY2Rlc3QuYwkyMDE2LTA2LTE1IDA5OjA0OjE3Ljc2OTc3MzUyNiAtMDQwMAotQEAgLTI2LDcgKzI2LDcgQEAKLSAKLSAvKiBsaWJqcGVnOCBhbmQgbGF0ZXIgY29tZSB3aXRoIHRoZWlyIG93biAoQVBJIGNvbXBhdGlibGUpIG1lbW9yeSBzb3VyY2UKLSAgICBhbmQgZGVzdCAqLwotLSNpZiBKUEVHX0xJQl9WRVJTSU9OIDwgODAKLSsjaWYgSlBFR19MSUJfVkVSU0lPTiA8IDgwICAmJiAhZGVmaW5lZChNRU1fU1JDRFNUX1NVUFBPUlRFRCkKLSAKLSAvKiBFeHBhbmRlZCBkYXRhIHNvdXJjZSBvYmplY3QgZm9yIG1lbW9yeSBpbnB1dCAqLwotIAotLS0tIGxpYmdwaG90bzItMi41LjgvY2FtbGlicy9qbDIwMDVjL2pwZWdfbWVtc3JjZGVzdC5oLm9yaWcJMjAxNi0wNi0xNSAwOTowNTowMS44OTM3NzI2MzIgLTA0MDAKLSsrKyBsaWJncGhvdG8yLTIuNS44L2NhbWxpYnMvamwyMDA1Yy9qcGVnX21lbXNyY2Rlc3QuaAkyMDE2LTA2LTE1IDA5OjA1OjE3LjQzMzc3MjMxOCAtMDQwMAotQEAgLTEsNSArMSw3IEBACi0gI2luY2x1ZGUgPGpwZWdsaWIuaD4KLSAKLSsjaWYgSlBFR19MSUJfVkVSU0lPTiA8IDgwICYmICFkZWZpbmVkKE1FTV9TUkNEU1RfU1VQUE9SVEVEKQotKwotIHZvaWQKLSBqcGVnX21lbV9zcmMgKGpfZGVjb21wcmVzc19wdHIgY2luZm8sIHVuc2lnbmVkIGNoYXIgKiBidWZmZXIsCi0gCXVuc2lnbmVkIGxvbmcgYnVmc2l6ZSk7Ci1AQCAtNywzICs5LDUgQEAKLSB2b2lkCi0ganBlZ19tZW1fZGVzdCAoal9jb21wcmVzc19wdHIgY2luZm8sIHVuc2lnbmVkIGNoYXIgKiogb3V0YnVmZmVyLAotIAl1bnNpZ25lZCBsb25nICogb3V0c2l6ZSk7Ci0rCi0rI2VuZGlmCi0tLS0gbGliZ3Bob3RvMi0yLjUuOC9jYW1saWJzL2psMjAwNWMvanBlZ19tZW1zcmNkZXN0LmMub3JpZwkyMDE2LTA2LTE1IDA5OjA0OjQyLjY0MTc3MzAyMiAtMDQwMAotKysrIGxpYmdwaG90bzItMi41LjgvY2FtbGlicy9qbDIwMDVjL2pwZWdfbWVtc3JjZGVzdC5jCTIwMTYtMDYtMTUgMDk6MDQ6NDguNjU3NzcyOTAxIC0wNDAwCi1AQCAtMjYsNyArMjYsNyBAQAotIAotIC8qIGxpYmpwZWc4IGFuZCBsYXRlciBjb21lIHdpdGggdGhlaXIgb3duIChBUEkgY29tcGF0aWJsZSkgbWVtb3J5IHNvdXJjZQotICAgIGFuZCBkZXN0ICovCi0tI2lmIEpQRUdfTElCX1ZFUlNJT04gPCA4MAotKyNpZiBKUEVHX0xJQl9WRVJTSU9OIDwgODAgICYmICFkZWZpbmVkKE1FTV9TUkNEU1RfU1VQUE9SVEVEKQotIAotIC8qIEV4cGFuZGVkIGRhdGEgc291cmNlIG9iamVjdCBmb3IgbWVtb3J5IGlucHV0ICovCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzItMi41LjgvYXZvaWRfdXNpbmdfc3ByaW50Zi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMi0yLjUuOC9hdm9pZF91c2luZ19zcHJpbnRmLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYmE0YzY5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMi0yLjUuOC9hdm9pZF91c2luZ19zcHJpbnRmLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLUZyb20gNGFkZmU1YTZjOWRiMDc1MzdkZjMwMmYzYzE3NzEzNTE1YmYyM2EyZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgotRGF0ZTogU2F0LCAxMSBKdWwgMjAxNSAwOTozODoxMyArMDAwMAotU3ViamVjdDogW1BBVENIXSBhdm9pZCB1c2Ugb2Ygc3ByaW50ZiB0byBjb252ZXJ0ICUlIHRvICUsIGR1cGxpY2F0ZSB0aGUgbWFjcm8KLQotZ2l0LXN2bi1pZDogaHR0cHM6Ly9zdm4uY29kZS5zZi5uZXQvcC9ncGhvdG8vY29kZS90cnVuay9saWJncGhvdG8yQDE1NDkwIDY3ZWQ3Nzc4LTczODgtNDRhYi05MGNmLTBhMjkxZjY1ZjU3YwotLS0tCi0gY2FtbGlicy9wdHAyL2NoZGsuYyAgICAgfCAgOCArKy0tLQotIGNhbWxpYnMvcHRwMi9jaGRrX3B0cC5oIHwgODIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgODQgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NhbWxpYnMvcHRwMi9jaGRrLmMgYi9jYW1saWJzL3B0cDIvY2hkay5jCi1pbmRleCA1ZmI4NGVhLi4zYjhhOTk1IDEwMDY0NAotLS0tIGEvY2FtbGlicy9wdHAyL2NoZGsuYwotKysrIGIvY2FtbGlicy9wdHAyL2NoZGsuYwotQEAgLTExMTksMTggKzExMTksMTQgQEAgY2hka19jYW1lcmFfY2FwdHVyZSAoQ2FtZXJhICpjYW1lcmEsIENhbWVyYUNhcHR1cmVUeXBlIHR5cGUsIENhbWVyYUZpbGVQYXRoICpwYXQKLSAJaW50CQlyZXQsIHJldGludDsKLSAJY2hhcgkJKnRhYmxlLCAqczsKLSAJUFRQUGFyYW1zCSpwYXJhbXMgPSAmY2FtZXJhLT5wbC0+cGFyYW1zOwotLQljaGFyCQkqbHVhOwotLQljb25zdCBjaGFyCSpsdWFzY3JpcHQgPQlQVFBfQ0hES19MVUFfU0VSSUFMSVpFX01TR1MgXAotKwljb25zdCBjaGFyCSpsdWFzY3JpcHQgPSBQVFBfQ0hES19MVUFfU0VSSUFMSVpFX01TR1NfU0lNUExFUVVPVEUgXAotIAkJCQlQVFBfQ0hES19MVUFfUkxJQl9TSE9PVAlcCi0gCQkJCSJyZXR1cm4gcmxpYl9zaG9vdCh7aW5mbz10cnVlfSk7XG4iOwotIAotIAlyZXQgPSAgY2FtZXJhX3ByZXBhcmVfY2hka19jYXB0dXJlKGNhbWVyYSwgY29udGV4dCk7Ci0gCWlmIChyZXQgIT0gR1BfT0spIHJldHVybiByZXQ7Ci0gCi0tCWx1YSA9IG1hbGxvYyhzdHJsZW4obHVhc2NyaXB0KSsxKTsKLS0Jc3ByaW50ZihsdWEsbHVhc2NyaXB0KTsgLyogVGhpcyBleHBhbmRzIHRoZSAlcSBpbnNpZGUgdGhlIHN0cmluZyB0b28gLi4uIGRvIG5vdCBvcHRpbWl6ZSBhd2F5LiAqLwotLQlyZXQgPSBjaGRrX2dlbmVyaWNfc2NyaXB0X3J1biAocGFyYW1zLCBsdWEsICZ0YWJsZSwgJnJldGludCwgY29udGV4dCk7Ci0tCWZyZWUgKGx1YSk7Ci0rCXJldCA9IGNoZGtfZ2VuZXJpY19zY3JpcHRfcnVuIChwYXJhbXMsIGx1YXNjcmlwdCwgJnRhYmxlLCAmcmV0aW50LCBjb250ZXh0KTsKLSAJR1BfTE9HX0QoInJsaWJfc2hvb3QgcmV0dXJuZWQgdGFibGUgJXMsIHJldGludCAlZFxuIiwgdGFibGUsIHJldGludCk7Ci0gCXMgPSBzdHJzdHIodGFibGUsICJleHA9Iik7Ci0gCWlmIChzKSB7Ci1kaWZmIC0tZ2l0IGEvY2FtbGlicy9wdHAyL2NoZGtfcHRwLmggYi9jYW1saWJzL3B0cDIvY2hka19wdHAuaAotaW5kZXggZDExZTBiNy4uNjVkY2ZkNyAxMDA2NDQKLS0tLSBhL2NhbWxpYnMvcHRwMi9jaGRrX3B0cC5oCi0rKysgYi9jYW1saWJzL3B0cDIvY2hka19wdHAuaAotQEAgLTE5OCwxMCArMTk4LDkyIEBAIGZ1bmN0aW9uIHNlcmlhbGl6ZSh2LG9wdHMpXG5cCi0gCXJldHVybiB0YWJsZS5jb25jYXQocilcblwKLSBlbmRcbiIKLSAKLSsjZGVmaW5lIFBUUF9DSERLX0xVQV9TRVJJQUxJWkVfU0lNUExFUVVPVEUgIlxuXAotK3NlcmlhbGl6ZV9yID0gZnVuY3Rpb24odixvcHRzLHIsc2VlbixkZXB0aClcblwKLSsJbG9jYWwgdnQgPSB0eXBlKHYpXG5cCi0rCWlmIHZ0ID09ICduaWwnIG9yICB2dCA9PSAnYm9vbGVhbicgb3IgdnQgPT0gJ251bWJlcicgdGhlblxuXAotKwkJdGFibGUuaW5zZXJ0KHIsdG9zdHJpbmcodikpXG5cCi0rCQlyZXR1cm5cblwKLSsJZW5kXG5cCi0rCWlmIHZ0ID09ICdzdHJpbmcnIHRoZW5cblwKLSsJCXRhYmxlLmluc2VydChyLHN0cmluZy5mb3JtYXQoJyVxJyx2KSlcblwKLSsJCXJldHVyblxuXAotKwllbmRcblwKLSsJaWYgdnQgPT0gJ3RhYmxlJyB0aGVuXG5cCi0rCQlpZiBub3QgZGVwdGggdGhlblxuXAotKwkJCWRlcHRoID0gMVxuXAotKwkJZW5kXG5cCi0rCQlpZiBkZXB0aCA+PSBvcHRzLm1heGRlcHRoIHRoZW5cblwKLSsJCQllcnJvcignc2VyaWFsaXplOiBtYXggZGVwdGgnKVxuXAotKwkJZW5kXG5cCi0rCQlpZiBub3Qgc2VlbiB0aGVuXG5cCi0rCQkJc2Vlbj17fVxuXAotKwkJZWxzZWlmIHNlZW5bdl0gdGhlblxuXAotKwkJCWlmIG9wdHMuZXJyX2N5Y2xlIHRoZW5cblwKLSsJCQkJZXJyb3IoJ3NlcmlhbGl6ZTogY3ljbGUnKVxuXAotKwkJCWVsc2VcblwKLSsJCQkJdGFibGUuaW5zZXJ0KHIsJ1wiY3ljbGU6Jy4udG9zdHJpbmcodikuLidcIicpXG5cCi0rCQkJCXJldHVyblxuXAotKwkJCWVuZFxuXAotKwkJZW5kXG5cCi0rCQlzZWVuW3ZdID0gdHJ1ZTtcblwKLSsJCXRhYmxlLmluc2VydChyLCd7JylcblwKLSsJCWZvciBrLHYxIGluIHBhaXJzKHYpIGRvXG5cCi0rCQkJaWYgb3B0cy5wcmV0dHkgdGhlblxuXAotKwkJCQl0YWJsZS5pbnNlcnQociwnXFxuJy4uc3RyaW5nLnJlcCgnICcsZGVwdGgpKVxuXAotKwkJCWVuZFxuXAotKwkJCWlmIHR5cGUoaykgPT0gJ3N0cmluZycgYW5kIHN0cmluZy5tYXRjaChrLCdeW18lYV1bJWElZF9dKiQnKSB0aGVuXG5cCi0rCQkJCXRhYmxlLmluc2VydChyLGspXG5cCi0rCQkJZWxzZVxuXAotKwkJCQl0YWJsZS5pbnNlcnQociwnWycpXG5cCi0rCQkJCXNlcmlhbGl6ZV9yKGssb3B0cyxyLHNlZW4sZGVwdGgrMSlcblwKLSsJCQkJdGFibGUuaW5zZXJ0KHIsJ10nKVxuXAotKwkJCWVuZFxuXAotKwkJCXRhYmxlLmluc2VydChyLCc9JylcblwKLSsJCQlzZXJpYWxpemVfcih2MSxvcHRzLHIsc2VlbixkZXB0aCsxKVxuXAotKwkJCXRhYmxlLmluc2VydChyLCcsJylcblwKLSsJCWVuZFxuXAotKwkJaWYgb3B0cy5wcmV0dHkgdGhlblxuXAotKwkJCXRhYmxlLmluc2VydChyLCdcXG4nLi5zdHJpbmcucmVwKCcgJyxkZXB0aC0xKSlcblwKLSsJCWVuZFxuXAotKwkJdGFibGUuaW5zZXJ0KHIsJ30nKVxuXAotKwkJcmV0dXJuXG5cCi0rCWVuZFxuXAotKwlpZiBvcHRzLmVycl90eXBlIHRoZW5cblwKLSsJCWVycm9yKCdzZXJpYWxpemU6IHVuc3VwcG9ydGVkIHR5cGUgJyAuLiB2dCwgMilcblwKLSsJZWxzZVxuXAotKwkJdGFibGUuaW5zZXJ0KHIsJ1wiJy4udG9zdHJpbmcodikuLidcIicpXG5cCi0rCWVuZFxuXAotK2VuZFxuXAotK3NlcmlhbGl6ZV9kZWZhdWx0cyA9IHtcblwKLSsJbWF4ZGVwdGg9MTAsXG5cCi0rCWVycl90eXBlPXRydWUsXG5cCi0rCWVycl9jeWNsZT10cnVlLFxuXAotKwlwcmV0dHk9ZmFsc2UsXG5cCi0rfVxuXAotK2Z1bmN0aW9uIHNlcmlhbGl6ZSh2LG9wdHMpXG5cCi0rCWlmIG9wdHMgdGhlblxuXAotKwkJZm9yIGssdiBpbiBwYWlycyhzZXJpYWxpemVfZGVmYXVsdHMpIGRvXG5cCi0rCQkJaWYgbm90IG9wdHNba10gdGhlblxuXAotKwkJCQlvcHRzW2tdPXZcblwKLSsJCQllbmRcblwKLSsJCWVuZFxuXAotKwllbHNlXG5cCi0rCQlvcHRzPXNlcmlhbGl6ZV9kZWZhdWx0c1xuXAotKwllbmRcblwKLSsJbG9jYWwgcj17fVxuXAotKwlzZXJpYWxpemVfcih2LG9wdHMscilcblwKLSsJcmV0dXJuIHRhYmxlLmNvbmNhdChyKVxuXAotK2VuZFxuIgotKwotICNkZWZpbmUgUFRQX0NIREtfTFVBX1NFUklBTElaRV9NU0dTIFwKLSBQVFBfQ0hES19MVUFfU0VSSUFMSVpFXAotICJ1c2JfbXNnX3RhYmxlX3RvX3N0cmluZz1zZXJpYWxpemVcbiIKLSAKLSsjZGVmaW5lIFBUUF9DSERLX0xVQV9TRVJJQUxJWkVfTVNHU19TSU1QTEVRVU9URSBcCi0rUFRQX0NIREtfTFVBX1NFUklBTElaRV9TSU1QTEVRVU9URVwKLSsidXNiX21zZ190YWJsZV90b19zdHJpbmc9c2VyaWFsaXplXG4iCi0rCi0gI2RlZmluZSBQVFBfQ0hES19MVUFfRVhURU5EX1RBQkxFIFwKLSAiZnVuY3Rpb24gZXh0ZW5kX3RhYmxlKHRhcmdldCxzb3VyY2UsZGVlcClcblwKLSAJaWYgdHlwZSh0YXJnZXQpIH49ICd0YWJsZScgdGhlblxuXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLTIuNS44LzAwMDEtY29uZmlndXJlLmFjLXJlbW92ZS1BTV9QT19TVUJESVJTLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLzAwMDEtY29uZmlndXJlLmFjLXJlbW92ZS1BTV9QT19TVUJESVJTLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzItMi41LjgvMDAwMS1jb25maWd1cmUuYWMtcmVtb3ZlLUFNX1BPX1NVQkRJUlMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMi8wMDAxLWNvbmZpZ3VyZS5hYy1yZW1vdmUtQU1fUE9fU1VCRElSUy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLTIuNS44LzEwLWNhbWVyYS1saWJncGhvdG8yLWRldmljZS5mZGkgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzIvMTAtY2FtZXJhLWxpYmdwaG90bzItZGV2aWNlLmZkaQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLTIuNS44LzEwLWNhbWVyYS1saWJncGhvdG8yLWRldmljZS5mZGkKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMi8xMC1jYW1lcmEtbGliZ3Bob3RvMi1kZXZpY2UuZmRpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzItMi41LjgvMTAtY2FtZXJhLWxpYmdwaG90bzIuZmRpIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLzEwLWNhbWVyYS1saWJncGhvdG8yLmZkaQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLTIuNS44LzEwLWNhbWVyYS1saWJncGhvdG8yLmZkaQpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLzEwLWNhbWVyYS1saWJncGhvdG8yLmZkaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLTIuNS44LzQwLWxpYmdwaG90bzIucnVsZXMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzIvNDAtbGliZ3Bob3RvMi5ydWxlcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLTIuNS44LzQwLWxpYmdwaG90bzIucnVsZXMKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMi80MC1saWJncGhvdG8yLnJ1bGVzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzJfMi41LjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzJfMi41LjE2LmJiCnNpbWlsYXJpdHkgaW5kZXggODUlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMl8yLjUuOC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yXzIuNS4xNi5iYgppbmRleCA0NDM0YWY5Li43YTY5MWM2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzJfMi41LjguYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yXzIuNS4xNi5iYgpAQCAtMTQsMTMgKzE0LDEwIEBACiAgICAgICAgICAgIGZpbGU6Ly8xMC1jYW1lcmEtbGliZ3Bob3RvMi5mZGkgXAogICAgICAgICAgICBmaWxlOi8vNDAtbGliZ3Bob3RvMi5ydWxlcyBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1yZW1vdmUtQU1fUE9fU1VCRElSUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvcnJlY3QtanBlZy1tZW1zcmNkZXN0LXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYXZvaWRfdXNpbmdfc3ByaW50Zi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXNjcmlwdHMtcmVtb3ZlLWJhc2hpc21zLnBhdGNoIFwKICIKIAotU1JDX1VSSVtsaWJncGhvdG8yLm1kNXN1bV0gPSAiODczYWIwMWFjZWQ0OWM2YjkyYTk4ZTUxNWRiNWRjZWYiCi1TUkNfVVJJW2xpYmdwaG90bzIuc2hhMjU2c3VtXSA9ICIwMzFhMjYyZTM0MmZhZTQzZjcyNGFmZTY2Nzg3OTQ3Y2UxZmI0ODMyNzdkZmU1YThjZjFmYmU5MmM1OGUyN2I2IgorU1JDX1VSSVtsaWJncGhvdG8yLm1kNXN1bV0gPSAiMDg0ZDIyMGQwNzhkMjhjMGM3YTNiYTEzZjQ0NzYxMjgiCitTUkNfVVJJW2xpYmdwaG90bzIuc2hhMjU2c3VtXSA9ICJlNzU3NDE2ZDE2MjNlMDFhOWQwZDI5NGIyZTc5MDE2MmU0MzRjMDk2NGY1MGQzYjdmZjFhMzQyNGI2MmEyOTA2IgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBsaWJfcGFja2FnZQogCkBAIC01NCwzICs1MSw0IEBACiBGSUxFU18ke1BOfSArPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2LyogJHtkYXRhZGlyfS9oYWwiCiBGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS8qLyovLmRlYnVnIgogRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vKi8qLyoubGEiCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vbGliZ3Bob3RvMl9wb3J0LzAuMTIuMC92Y2FtZXJhL1JFQURNRS50eHQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ndGtwZXJmL2d0a3BlcmZfMC40MC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2d0a3BlcmYvZ3RrcGVyZl8wLjQwLmJiCmluZGV4IDJkYjkxOTAuLjQwOTQ1MTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2d0a3BlcmYvZ3RrcGVyZl8wLjQwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2d0a3BlcmYvZ3RrcGVyZl8wLjQwLmJiCkBAIC0xNiw3ICsxNiw5IEBACiAKIFMgPSAiJHtXT1JLRElSfS8ke0JQTn0iCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZyBwa2djb25maWcgZ2V0dGV4dAoraW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIGJpbmNvbmZpZyBwa2djb25maWcgZ2V0dGV4dAorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CiAgICAgcm0gLWYgJHtTfS9tNC9pbml0Lm00CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ2bmNzZXJ2ZXIvbGlidm5jc2VydmVyXzAuOS4xMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXJfMC45LjExLmJiCmluZGV4IDQ1N2Q3MjEuLjM4ZGFjMDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXJfMC45LjExLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXJfMC45LjExLmJiCkBAIC0xMiw3ICsxMiw5IEBACiAKIFJERVBFTkRTXyR7UE59ICs9ICJsaWJwbmcgZ3RrKyBsaWJnY3J5cHQiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZyBwa2djb25maWcKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBiaW5jb25maWcgcGtnY29uZmlnCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL0xpYlZOQy9saWJ2bmNzZXJ2ZXIvYXJjaGl2ZS9MaWJWTkNTZXJ2ZXItJHtQVn0udGFyLmd6IgogU1JDX1VSSVttZDVzdW1dID0gIjdmMDYxMDRkNWMwMDk4MTNlOTUxNDI5MzJjNGRkYjA2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS1uY3Vyc2VzLzAwMDEtRml4LXRoZS1lcnJvci1vZi1jYW4tdC1maW5kLWhlYWRlci1maWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS1uY3Vyc2VzLzAwMDEtRml4LXRoZS1lcnJvci1vZi1jYW4tdC1maW5kLWhlYWRlci1maWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0NWYzY2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLW5jdXJzZXMvMDAwMS1GaXgtdGhlLWVycm9yLW9mLWNhbi10LWZpbmQtaGVhZGVyLWZpbGUucGF0Y2gKQEAgLTAsMCArMSwxMDEgQEAKK0Zyb20gZWIwMDg2ZGM0ZWE4ZmU5Y2RhMDY5NDU2Mjg3YjNhMjlhMjYzMWQzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFpoZW5nIFJ1b3FpbiA8emhlbmdycS5mbnN0QGNuLmZ1aml0c3UuY29tPgorRGF0ZTogV2VkLCAxMyBEZWMgMjAxNyAxNjoxODo0NSArMDkwMAorU3ViamVjdDogW1BBVENIXSBGaXggdGhlIGVycm9yIG9mIGNhbid0IGZpbmQgaGVhZGVyIGZpbGUKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KK1RoaXMgZml4IGlzIGp1c3QgZm9yIHlvY3RvLgorCitTaWduZWQtb2ZmLWJ5OiBaaGVuZyBSdW9xaW4gPHpoZW5ncnEuZm5zdEBjbi5mdWppdHN1LmNvbT4KKy0tLQorIHNyYy9OQ0FwcGxpY2F0aW9uLmNjIHwgMiArLQorIHNyYy9OQ3N0eWxlLmggICAgICAgIHwgMiArLQorIHNyYy9OQ3Vyc2VzLmggICAgICAgIHwgMiArLQorIHNyYy9uY3Vyc2VzcC5oICAgICAgIHwgMiArLQorIHNyYy9uY3Vyc2Vzdy5jYyAgICAgIHwgMiArLQorIHNyYy9uY3Vyc2Vzdy5oICAgICAgIHwgNCArKy0tCisgNiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvTkNBcHBsaWNhdGlvbi5jYyBiL3NyYy9OQ0FwcGxpY2F0aW9uLmNjCitpbmRleCA1YmNmOTY5Li41MTBmMDM0IDEwMDY0NAorLS0tIGEvc3JjL05DQXBwbGljYXRpb24uY2MKKysrKyBiL3NyYy9OQ0FwcGxpY2F0aW9uLmNjCitAQCAtMjMsNyArMjMsNyBAQAorIAorIC8tKi8KKyAKKy0jaW5jbHVkZSA8bmN1cnNlc3cvY3Vyc2VzLmg+CisrI2luY2x1ZGUgPGN1cnNlcy5oPgorIAorICNkZWZpbmUgIFlVSUxvZ0NvbXBvbmVudCAibmN1cnNlcyIKKyAjaW5jbHVkZSA8eXVpL1lVSUxvZy5oPgorZGlmZiAtLWdpdCBhL3NyYy9OQ3N0eWxlLmggYi9zcmMvTkNzdHlsZS5oCitpbmRleCBhNDBkNWE4Li4zNjU3OTE3IDEwMDY0NAorLS0tIGEvc3JjL05Dc3R5bGUuaAorKysrIGIvc3JjL05Dc3R5bGUuaAorQEAgLTI1LDcgKzI1LDcgQEAKKyAjaWZuZGVmIE5Dc3R5bGVfaAorICNkZWZpbmUgTkNzdHlsZV9oCisgCistI2luY2x1ZGUgPG5jdXJzZXN3L25jdXJzZXMuaD4KKysjaW5jbHVkZSA8bmN1cnNlcy5oPgorIAorICNpbmNsdWRlIDxpb3Nmd2Q+CisgI2luY2x1ZGUgPHN0cmluZz4KK2RpZmYgLS1naXQgYS9zcmMvTkN1cnNlcy5oIGIvc3JjL05DdXJzZXMuaAoraW5kZXggYTA3YzZiZi4uZDE3ZDNjMyAxMDA2NDQKKy0tLSBhL3NyYy9OQ3Vyc2VzLmgKKysrKyBiL3NyYy9OQ3Vyc2VzLmgKK0BAIC0zNCw3ICszNCw3IEBACisgI2luY2x1ZGUgPHl1aS9ZV2lkZ2V0Lmg+CisgI2luY2x1ZGUgPHl1aS9ZTWVudUl0ZW0uaD4KKyAKKy0jaW5jbHVkZSA8bmN1cnNlc3cvY3Vyc2VzLmg+CS8qIGN1cnNlcy5oOiAjZGVmaW5lICBOQ1VSU0VTX0NIX1QgY2NoYXJfdCAqLworKyNpbmNsdWRlIDxjdXJzZXMuaD4JLyogY3Vyc2VzLmg6ICNkZWZpbmUgIE5DVVJTRVNfQ0hfVCBjY2hhcl90ICovCisgI2luY2x1ZGUgPHdjaGFyLmg+CisgCisgI2luY2x1ZGUgIm5jdXJzZXN3LmgiCitkaWZmIC0tZ2l0IGEvc3JjL25jdXJzZXNwLmggYi9zcmMvbmN1cnNlc3AuaAoraW5kZXggZDQ3ODM0Ny4uMmZjZmVhNSAxMDA2NDQKKy0tLSBhL3NyYy9uY3Vyc2VzcC5oCisrKysgYi9zcmMvbmN1cnNlc3AuaAorQEAgLTI4LDcgKzI4LDcgQEAKKyAjaW5jbHVkZSA8aW9zZndkPgorIAorICNpbmNsdWRlICJuY3Vyc2Vzdy5oIgorLSNpbmNsdWRlIDxuY3Vyc2Vzdy9wYW5lbC5oPgorKyNpbmNsdWRlIDxwYW5lbC5oPgorIAorIGNsYXNzIE5DdXJzZXNQYW5lbCA6IHB1YmxpYyBOQ3Vyc2VzV2luZG93CisgeworZGlmZiAtLWdpdCBhL3NyYy9uY3Vyc2Vzdy5jYyBiL3NyYy9uY3Vyc2Vzdy5jYworaW5kZXggM2M3NzFhZi4uYmI4MzIxMCAxMDA2NDQKKy0tLSBhL3NyYy9uY3Vyc2Vzdy5jYworKysrIGIvc3JjL25jdXJzZXN3LmNjCitAQCAtNDcsNyArNDcsNyBAQAorICNpbmNsdWRlIDxpb3N0cmVhbT4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorLSNpbmNsdWRlIDxuY3Vyc2Vzdy90ZXJtLmg+CisrI2luY2x1ZGUgPHRlcm0uaD4KKyAjdW5kZWYgbGluZQorICN1bmRlZiBjb2x1bW5zCisgCitkaWZmIC0tZ2l0IGEvc3JjL25jdXJzZXN3LmggYi9zcmMvbmN1cnNlc3cuaAoraW5kZXggZDI1OTIzYS4uYzE0MGQzNyAxMDA2NDQKKy0tLSBhL3NyYy9uY3Vyc2Vzdy5oCisrKysgYi9zcmMvbmN1cnNlc3cuaAorQEAgLTI3LDggKzI3LDggQEAKKyAKKyAjaW5jbHVkZSA8aW9zZndkPgorIAorLSNpbmNsdWRlIDxuY3Vyc2Vzdy9jdXJzZXMuaD4KKy0jaW5jbHVkZSA8bmN1cnNlc3cvZXRpcC5oPgorKyNpbmNsdWRlIDxjdXJzZXMuaD4KKysjaW5jbHVkZSA8ZXRpcC5oPgorICNpbmNsdWRlIDxjc3RkaW8+CisgI2luY2x1ZGUgPGNzdGRhcmc+CisgI2luY2x1ZGUgPGNsaW1pdHM+CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWktbmN1cnNlcy8wMDAxLXVzZS1fbmxfbXNnX2NhdF9jbnRyLW9ubHktd2l0aC1nbGliYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWktbmN1cnNlcy8wMDAxLXVzZS1fbmxfbXNnX2NhdF9jbnRyLW9ubHktd2l0aC1nbGliYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTM3NzRjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS1uY3Vyc2VzLzAwMDEtdXNlLV9ubF9tc2dfY2F0X2NudHItb25seS13aXRoLWdsaWJjLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gNGI4NGYyNDNhNzBhOGMwN2Y2YTM4ZGFkM2M5NDExZmE3MDdmMjVjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDQgTWFyIDIwMTggMTc6MDg6NDMgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gdXNlIF9ubF9tc2dfY2F0X2NudHIgb25seSB3aXRoIGdsaWJjCisKK1RoZSBtdXNsIGxpYmMgcHJvdmlkZXMgbGliaW50bCAoc2ltaWxhciB0byBnbGliYykKK2J1dCBkb2VzIG5vdCB1c2UgdGhlIHNhbWUgaW50ZXJuYWxzLAorc28gZXZlbiB0aG91Z2ggd2UgYXJlIHVzaW5nIHRoZSBHTlUgZ2V0dGV4dAordGhlIGxpYmludGwgaW5jbHVkZWQgd2l0aCB0aGUgbGliYyBkb2VzIG5vdCBkZWZpbmUKK19ubF9tc2dfY2F0X2NudHIgYW5kIGl0IGRvZXMgbm90IG5lZWQgdG8uCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL05DaTE4bi5oIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvTkNpMThuLmggYi9zcmMvTkNpMThuLmgKK2luZGV4IDE2NWIwZTcuLmJmYzRlZDcgMTAwNjQ0CistLS0gYS9zcmMvTkNpMThuLmgKKysrKyBiL3NyYy9OQ2kxOG4uaAorQEAgLTU5LDEyICs1OSwxMyBAQCBpbmxpbmUgdm9pZCBzZXRUZXh0ZG9tYWluKCBjb25zdCBjaGFyICogZG9tYWluICkKKyAgICAgYmluZHRleHRkb21haW4oIGRvbWFpbiwgIFlTZXR0aW5nczo6bG9jYWxlRGlyKCkuY19zdHIoKSApOworICAgICBiaW5kX3RleHRkb21haW5fY29kZXNldCggZG9tYWluLCAiVVRGLTgiICk7CisgICAgIHRleHRkb21haW4oIGRvbWFpbiApOworLQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgICAgLy8gTWFrZSBjaGFuZ2Uga25vd24KKyAgICAgeworIAlleHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7CisgCSsrX25sX21zZ19jYXRfY250cjsKKyAgICAgfQorKyNlbmRpZgorIH0KKyAKKyAKKy0tIAorMi4xNi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWktbmN1cnNlc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLW5jdXJzZXNfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OGM3MTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLW5jdXJzZXNfZ2l0LmJiCkBAIC0wLDAgKzEsNDkgQEAKK1NVTU1BUlkgPSAiQ2hhcmFjdGVyIEJhc2VkIFVzZXIgSW50ZXJmYWNlIGZvciBsaWJ5dWkiCitMSUNFTlNFID0gIkxHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcubGdwbC0zO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiBcCisgICAgZmlsZTovL0NPUFlJTkcubGdwbC0yLjE7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpYnl1aS9saWJ5dWktbmN1cnNlcy5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS11c2UtX25sX21zZ19jYXRfY250ci1vbmx5LXdpdGgtZ2xpYmMucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vMDAwMS1GaXgtdGhlLWVycm9yLW9mLWNhbi10LWZpbmQtaGVhZGVyLWZpbGUucGF0Y2giCisKK1BWID0gIjIuNDguMytnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICI3OWI4MDRiNDVmZmM2YTBkOTJlMjhlNzkzZmYzODlhMjBiNjNiNTRiIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIGdldHRleHQgcGtnY29uZmlnCisKK0RFUEVORFMgKz0gImJvb3N0IGxpYnl1aSBuY3Vyc2VzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgIGNkICR7U30KKyAgICBnaXQgY2hlY2tvdXQgYm9vdHN0cmFwLnNoCisgICAgc2VkIC1pICJzIy91c3IjJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSR7YmFzZV9wcmVmaXh9JiMiIGJvb3RzdHJhcC5zaAorICAgIC4vYm9vdHN0cmFwLnNoCisgICAgbWtkaXIgLXAgJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSR7YmFzZV9wcmVmaXh9L3Vzci9saWI2NC8KKyAgICBjcCAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9JHtiYXNlX3ByZWZpeH0vdXNyL2xpYi9saWJ5dWkuc28qICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2Jhc2VfcHJlZml4fS91c3IvbGliNjQvCisgICAgY2QgLQorICAgIHNlZCAtaSAicyNcJHtZUFJFRklYfSNcJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSR7YmFzZV9wcmVmaXh9JiMiICR7U30vQ01ha2VMaXN0cy50eHQKKyAgICBzZWQgLWkgInMjL3VzciMke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9JHtiYXNlX3ByZWZpeH0mIyIgJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSR7bGliZGlyfS9jbWFrZS9saWJ5dWkvTGlieXVpTGlicmFyeURlcGVuZHMtcmVsZWFzZS5jbWFrZQorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaWYgWyAiJHtsaWJkaXJ9IiA9ICIke2Jhc2VfcHJlZml4fS91c3IvbGliIiBdICYmIFsgLWQgJHtEfS91c3IvbGliNjQgXTsgdGhlbgorICAgICAgICBtdiAke0R9L3Vzci9saWI2NCAke0R9L3Vzci9saWIKKyAgICBmaQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgeworICAgIG1rZGlyIC1wICR7RH0vJHtiYXNlX3ByZWZpeH0KKyAgICBtdiAke0R9L3VzciAke0R9LyR7YmFzZV9wcmVmaXh9Cit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyoiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLzAwMDEtRml4LUdDQy04LXdhcm5pbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLzAwMDEtRml4LUdDQy04LXdhcm5pbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFiYTQyZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWkvMDAwMS1GaXgtR0NDLTgtd2FybmluZy5wYXRjaApAQCAtMCwwICsxLDQ4IEBACitGcm9tIDFlNmQ0MGZlYzE2YTk0ZDFhNGJkNDA2MzQ0MDUyNjcyMDBiN2U5NjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBtYXJ4aW4gPG1saXNrYUBzdXNlLmN6PgorRGF0ZTogVHVlLCAxMCBBcHIgMjAxOCAxNToyMTo0MCArMDIwMAorU3ViamVjdDogW1BBVENIXSBGaXggR0NDIDggd2FybmluZzoKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworL2hvbWUvbWFyeGluL1Byb2dyYW1taW5nL2xpYnl1aS9zcmMvWURpYWxvZy5jYzogSW4gc3RhdGljIG1lbWJlciBmdW5jdGlvbiDigJhzdGF0aWMgdm9pZCBZRGlhbG9nOjpzaG93VGV4dChjb25zdCBzdHJpbmcmLCBib29sKeKAmToKKy9ob21lL21hcnhpbi9Qcm9ncmFtbWluZy9saWJ5dWkvc3JjL1lEaWFsb2cuY2M6NjkwOjI2OiBlcnJvcjogY2F0Y2hpbmcgcG9seW1vcnBoaWMgdHlwZSDigJhjbGFzcyBZVUlFeGNlcHRpb27igJkgYnkgdmFsdWUgWy1XZXJyb3I9Y2F0Y2gtdmFsdWU9XQorICAgICBjYXRjaCAoIFlVSUV4Y2VwdGlvbiBleGNlcHRpb24gKQorICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn4KKy9ob21lL21hcnhpbi9Qcm9ncmFtbWluZy9saWJ5dWkvc3JjL1lEaWFsb2cuY2M6IEluIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24g4oCYc3RhdGljIGJvb2wgWURpYWxvZzo6c2hvd1JlbE5vdGVzVGV4dCgp4oCZOgorL2hvbWUvbWFyeGluL1Byb2dyYW1taW5nL2xpYnl1aS9zcmMvWURpYWxvZy5jYzo4MTQ6MjY6IGVycm9yOiBjYXRjaGluZyBwb2x5bW9ycGhpYyB0eXBlIOKAmGNsYXNzIFlVSUV4Y2VwdGlvbuKAmSBieSB2YWx1ZSBbLVdlcnJvcj1jYXRjaC12YWx1ZT1dCisgICAgIGNhdGNoICggWVVJRXhjZXB0aW9uIGV4Y2VwdGlvbiApCisgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2xpYnl1aS9saWJ5dWkvcHVsbC8xMjJdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgc3JjL1lEaWFsb2cuY2MgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL1lEaWFsb2cuY2MgYi9zcmMvWURpYWxvZy5jYworaW5kZXggOTJlNTAzMS4uOGVjZmY5MCAxMDA2NDQKKy0tLSBhL3NyYy9ZRGlhbG9nLmNjCisrKysgYi9zcmMvWURpYWxvZy5jYworQEAgLTY4Nyw3ICs2ODcsNyBAQCBZRGlhbG9nOjpzaG93VGV4dCggY29uc3Qgc3RkOjpzdHJpbmcgJiB0ZXh0LCBib29sIHVzZVJpY2hUZXh0ICkKKyAJZGlhbG9nLT53YWl0Rm9yRXZlbnQoKTsKKyAJZGlhbG9nLT5kZXN0cm95KCk7CisgICAgIH0KKy0gICAgY2F0Y2ggKCBZVUlFeGNlcHRpb24gZXhjZXB0aW9uICkKKysgICAgY2F0Y2ggKCBZVUlFeGNlcHRpb24gJmV4Y2VwdGlvbiApCisgICAgIHsKKyAJLy8gRG9uJ3QgbGV0IHRoZSBhcHBsaWNhdGlvbiBkaWUganVzdCBiZWNhdXNlIGhlbHAgY291bGRuJ3QgYmUgZGlzcGxheWVkLgorIAorQEAgLTgxMSw3ICs4MTEsNyBAQCBZRGlhbG9nOjpzaG93UmVsTm90ZXNUZXh0KCkKKyAJfQorICAgICAgICAgZGlhbG9nLT5kZXN0cm95KCk7CisgICAgIH0KKy0gICAgY2F0Y2ggKCBZVUlFeGNlcHRpb24gZXhjZXB0aW9uICkKKysgICAgY2F0Y2ggKCBZVUlFeGNlcHRpb24gJmV4Y2VwdGlvbiApCisgICAgIHsKKyAgICAgICAgIC8vIERvbid0IGxldCB0aGUgYXBwbGljYXRpb24gZGllIGp1c3QgYmVjYXVzZSBSTiBjb3VsZG4ndCBiZSBkaXNwbGF5ZWQuCisgCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI2OTAxOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWkvMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy5wYXRjaApAQCAtMCwwICsxLDY4NyBAQAorRnJvbSAxODU2MjY3MTk4MmFkOTc1NDliY2NiNDQ0ZmRiYjU5MDViNmU5MzM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjQgQXByIDIwMTggMTU6MDY6MTQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggY2xhbmcKKworRml4IHdhcm5pbmdzIGZvdW5kIHdpdGggY2xhbmcKKworZXJyb3I6IGNsYXNzICdZQnV0dG9uQm94UHJpdmF0ZScgd2FzIHByZXZpb3VzbHkgZGVjbGFyZWQgYXMgYSBzdHJ1Y3QgWy1XZXJyb3IsLVdtaXNtYXRjaGVkLXRhZ3NdCit8ICAgICBmcmllbmQgY2xhc3MgWUJ1dHRvbkJveFByaXZhdGU7CisKK1lUaW1lem9uZVNlbGVjdG9yLmNjOjM1Ojk6IGVycm9yOiBwcml2YXRlIGZpZWxkICdkdW1teScgaXMgbm90IHVzZWQgWy1XZXJyb3IsLVd1bnVzZWQtcHJpdmF0ZS1maWVsZF0KKyAgIGJvb2wgZHVtbXk7CisgICAgICAgIF4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJ5dWkvbGlieXVpL3B1bGwvMTIzXQorCisgc3JjL1lBbGlnbm1lbnQuaCAgICAgICAgICB8IDIgKy0KKyBzcmMvWUJhckdyYXBoLmggICAgICAgICAgIHwgMiArLQorIHNyYy9ZQnVzeUluZGljYXRvci5oICAgICAgfCAyICstCisgc3JjL1lCdXR0b25Cb3guaCAgICAgICAgICB8IDQgKystLQorIHNyYy9ZQ2hlY2tCb3guaCAgICAgICAgICAgfCAyICstCisgc3JjL1lDaGVja0JveEZyYW1lLmggICAgICB8IDIgKy0KKyBzcmMvWUNvbWJvQm94LmggICAgICAgICAgIHwgMiArLQorIHNyYy9ZQ29tbWFuZExpbmUuaCAgICAgICAgfCAyICstCisgc3JjL1lDb250ZXh0TWVudS5oICAgICAgICB8IDIgKy0KKyBzcmMvWURhdGVGaWVsZC5oICAgICAgICAgIHwgMiArLQorIHNyYy9ZRGlhbG9nLmggICAgICAgICAgICAgfCAyICstCisgc3JjL1lEb3dubG9hZFByb2dyZXNzLmggICB8IDIgKy0KKyBzcmMvWUR1bWJUYWIuaCAgICAgICAgICAgIHwgMiArLQorIHNyYy9ZRW1wdHkuaCAgICAgICAgICAgICAgfCAyICstCisgc3JjL1lFdmVudEZpbHRlci5oICAgICAgICB8IDIgKy0KKyBzcmMvWUZyYW1lLmggICAgICAgICAgICAgIHwgMiArLQorIHNyYy9ZR3JhcGguaCAgICAgICAgICAgICAgfCAyICstCisgc3JjL1lJbWFnZS5oICAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvWUlucHV0RmllbGQuaCAgICAgICAgIHwgMiArLQorIHNyYy9ZSW50RmllbGQuaCAgICAgICAgICAgfCAyICstCisgc3JjL1lMYWJlbC5oICAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvWUxheW91dEJveC5oICAgICAgICAgIHwgMiArLQorIHNyYy9ZTG9nVmlldy5oICAgICAgICAgICAgfCAyICstCisgc3JjL1lNZW51QnV0dG9uLmggICAgICAgICB8IDIgKy0KKyBzcmMvWU11bHRpTGluZUVkaXQuaCAgICAgIHwgMiArLQorIHNyYy9ZTXVsdGlQcm9ncmVzc01ldGVyLmggfCAyICstCisgc3JjL1lNdWx0aVNlbGVjdGlvbkJveC5oICB8IDIgKy0KKyBzcmMvWVBhcnRpdGlvblNwbGl0dGVyLmggIHwgMiArLQorIHNyYy9ZUHJvZ3Jlc3NCYXIuaCAgICAgICAgfCAyICstCisgc3JjL1lQdXNoQnV0dG9uLmggICAgICAgICB8IDIgKy0KKyBzcmMvWVJhZGlvQnV0dG9uLmggICAgICAgIHwgMiArLQorIHNyYy9ZUmFkaW9CdXR0b25Hcm91cC5oICAgfCAyICstCisgc3JjL1lSaWNoVGV4dC5oICAgICAgICAgICB8IDIgKy0KKyBzcmMvWVNlbGVjdGlvbkJveC5oICAgICAgIHwgMiArLQorIHNyYy9ZU2VsZWN0aW9uV2lkZ2V0LmggICAgfCAyICstCisgc3JjL1lTaW1wbGVJbnB1dEZpZWxkLmggICB8IDIgKy0KKyBzcmMvWVNsaWRlci5oICAgICAgICAgICAgIHwgMiArLQorIHNyYy9ZU3BhY2luZy5oICAgICAgICAgICAgfCAyICstCisgc3JjL1lTcXVhc2guaCAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvWVRhYmxlLmggICAgICAgICAgICAgIHwgMiArLQorIHNyYy9ZVGFibGVIZWFkZXIuaCAgICAgICAgfCAyICstCisgc3JjL1lUaW1lRmllbGQuaCAgICAgICAgICB8IDIgKy0KKyBzcmMvWVRpbWV6b25lU2VsZWN0b3IuY2MgIHwgMiArLQorIHNyYy9ZVHJlZS5oICAgICAgICAgICAgICAgfCAyICstCisgc3JjL1lVSUxvZy5oICAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvWVdpZGdldC5oICAgICAgICAgICAgIHwgMiArLQorIHNyYy9ZV2l6YXJkLmggICAgICAgICAgICAgfCAyICstCisgNDcgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgNDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvWUFsaWdubWVudC5oIGIvc3JjL1lBbGlnbm1lbnQuaAoraW5kZXggZDcxNmM3Ny4uNzI3Njk0NCAxMDA2NDQKKy0tLSBhL3NyYy9ZQWxpZ25tZW50LmgKKysrKyBiL3NyYy9ZQWxpZ25tZW50LmgKK0BAIC0yOCw3ICsyOCw3IEBACisgI2luY2x1ZGUgIllTaW5nbGVDaGlsZENvbnRhaW5lcldpZGdldC5oIgorIAorIAorLWNsYXNzIFlBbGlnbm1lbnRQcml2YXRlOworK3N0cnVjdCBZQWxpZ25tZW50UHJpdmF0ZTsKKyAKKyAvKioKKyAgKiBJbXBsZW1lbnRhdGlvbiBvZiBhbGwgdGhlIGFsaWdubWVudCB3aWRnZXRzOgorZGlmZiAtLWdpdCBhL3NyYy9ZQmFyR3JhcGguaCBiL3NyYy9ZQmFyR3JhcGguaAoraW5kZXggMjlmN2YyNi4uZDdlYWFkMiAxMDA2NDQKKy0tLSBhL3NyYy9ZQmFyR3JhcGguaAorKysrIGIvc3JjL1lCYXJHcmFwaC5oCitAQCAtMjksNyArMjksNyBAQAorICNpbmNsdWRlICJZQ29sb3IuaCIKKyAKKyAKKy1jbGFzcyBZQmFyR3JhcGhQcml2YXRlOworK3N0cnVjdCBZQmFyR3JhcGhQcml2YXRlOworIGNsYXNzIFlCYXJHcmFwaFNlZ21lbnQ7CisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lCdXN5SW5kaWNhdG9yLmggYi9zcmMvWUJ1c3lJbmRpY2F0b3IuaAoraW5kZXggOTUzMGZhNS4uNzUyOTdkOCAxMDA2NDQKKy0tLSBhL3NyYy9ZQnVzeUluZGljYXRvci5oCisrKysgYi9zcmMvWUJ1c3lJbmRpY2F0b3IuaAorQEAgLTI3LDcgKzI3LDcgQEAKKyAKKyAjaW5jbHVkZSAiWVdpZGdldC5oIgorIAorLWNsYXNzIFlCdXN5SW5kaWNhdG9yUHJpdmF0ZTsKKytzdHJ1Y3QgWUJ1c3lJbmRpY2F0b3JQcml2YXRlOworIAorIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZQnV0dG9uQm94LmggYi9zcmMvWUJ1dHRvbkJveC5oCitpbmRleCA4NGY4ZGJiLi5jYTUxZjU3IDEwMDY0NAorLS0tIGEvc3JjL1lCdXR0b25Cb3guaAorKysrIGIvc3JjL1lCdXR0b25Cb3guaAorQEAgLTMwLDcgKzMwLDcgQEAKKyAjaW5jbHVkZSAiWVdpZGdldC5oIgorICNpbmNsdWRlICJZUHVzaEJ1dHRvbi5oIgorIAorLWNsYXNzIFlCdXR0b25Cb3hQcml2YXRlOworK3N0cnVjdCBZQnV0dG9uQm94UHJpdmF0ZTsKKyBjbGFzcyBZUHVzaEJ1dHRvbjsKKyAKKyAKK0BAIC0xNDcsNyArMTQ3LDcgQEAgc3RydWN0IFlCdXR0b25Cb3hNYXJnaW5zCisgICoqLworIGNsYXNzIFlCdXR0b25Cb3ggOiBwdWJsaWMgWVdpZGdldAorIHsKKy0gICAgZnJpZW5kIGNsYXNzIFlCdXR0b25Cb3hQcml2YXRlOworKyAgICBmcmllbmQgc3RydWN0IFlCdXR0b25Cb3hQcml2YXRlOworIAorIHByb3RlY3RlZDoKKyAgICAgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lDaGVja0JveC5oIGIvc3JjL1lDaGVja0JveC5oCitpbmRleCA3OTNjYzc3Li4wM2YzZmFhIDEwMDY0NAorLS0tIGEvc3JjL1lDaGVja0JveC5oCisrKysgYi9zcmMvWUNoZWNrQm94LmgKK0BAIC0zMCw3ICszMCw3IEBACisgI2luY2x1ZGUgIllXaWRnZXQuaCIKKyAjaW5jbHVkZSAiSW1wbFB0ci5oIgorIAorLWNsYXNzIFlDaGVja0JveFByaXZhdGU7Cisrc3RydWN0IFlDaGVja0JveFByaXZhdGU7CisgCisgZW51bSBZQ2hlY2tCb3hTdGF0ZQorIHsKK2RpZmYgLS1naXQgYS9zcmMvWUNoZWNrQm94RnJhbWUuaCBiL3NyYy9ZQ2hlY2tCb3hGcmFtZS5oCitpbmRleCAyNDNmMWEwLi43MDE3MTEwIDEwMDY0NAorLS0tIGEvc3JjL1lDaGVja0JveEZyYW1lLmgKKysrKyBiL3NyYy9ZQ2hlY2tCb3hGcmFtZS5oCitAQCAtMjksNyArMjksNyBAQAorICNpbmNsdWRlICJZU2luZ2xlQ2hpbGRDb250YWluZXJXaWRnZXQuaCIKKyAjaW5jbHVkZSAiSW1wbFB0ci5oIgorIAorLWNsYXNzIFlDaGVja0JveEZyYW1lUHJpdmF0ZTsKKytzdHJ1Y3QgWUNoZWNrQm94RnJhbWVQcml2YXRlOworIAorIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZQ29tYm9Cb3guaCBiL3NyYy9ZQ29tYm9Cb3guaAoraW5kZXggNDE2MzU5YS4uYWQwZTU1MCAxMDA2NDQKKy0tLSBhL3NyYy9ZQ29tYm9Cb3guaAorKysrIGIvc3JjL1lDb21ib0JveC5oCitAQCAtMjcsNyArMjcsNyBAQAorIAorICNpbmNsdWRlICJZU2VsZWN0aW9uV2lkZ2V0LmgiCisgCistY2xhc3MgWUNvbWJvQm94UHJpdmF0ZTsKKytzdHJ1Y3QgWUNvbWJvQm94UHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWUNvbW1hbmRMaW5lLmggYi9zcmMvWUNvbW1hbmRMaW5lLmgKK2luZGV4IDcwY2I0ZmUuLmYzNDRhM2IgMTAwNjQ0CistLS0gYS9zcmMvWUNvbW1hbmRMaW5lLmgKKysrKyBiL3NyYy9ZQ29tbWFuZExpbmUuaAorQEAgLTI4LDcgKzI4LDcgQEAKKyAjaW5jbHVkZSA8c3RyaW5nPgorICNpbmNsdWRlICJJbXBsUHRyLmgiCisgCistY2xhc3MgWUNvbW1hbmRMaW5lUHJpdmF0ZTsKKytzdHJ1Y3QgWUNvbW1hbmRMaW5lUHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWUNvbnRleHRNZW51LmggYi9zcmMvWUNvbnRleHRNZW51LmgKK2luZGV4IGE0YWNiMWMuLjEyNTMwMDIgMTAwNjQ0CistLS0gYS9zcmMvWUNvbnRleHRNZW51LmgKKysrKyBiL3NyYy9ZQ29udGV4dE1lbnUuaAorQEAgLTI5LDcgKzI5LDcgQEAKKyAjaW5jbHVkZSAiWU1lbnVJdGVtLmgiCisgCisgY2xhc3MgWU1lbnVJdGVtOworLWNsYXNzIFlDb250ZXh0TWVudVByaXZhdGU7Cisrc3RydWN0IFlDb250ZXh0TWVudVByaXZhdGU7CisgCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lEYXRlRmllbGQuaCBiL3NyYy9ZRGF0ZUZpZWxkLmgKK2luZGV4IGU1YTQ2OGQuLjYxNjRmYmEgMTAwNjQ0CistLS0gYS9zcmMvWURhdGVGaWVsZC5oCisrKysgYi9zcmMvWURhdGVGaWVsZC5oCitAQCAtMjcsNyArMjcsNyBAQAorIAorICNpbmNsdWRlICJZU2ltcGxlSW5wdXRGaWVsZC5oIgorIAorLWNsYXNzIFlEYXRlRmllbGRQcml2YXRlOworK3N0cnVjdCBZRGF0ZUZpZWxkUHJpdmF0ZTsKKyAKKyAvKioKKyAgKiBJbnB1dCBmaWVsZCBmb3IgZW50ZXJpbmcgYSBkYXRlLgorZGlmZiAtLWdpdCBhL3NyYy9ZRGlhbG9nLmggYi9zcmMvWURpYWxvZy5oCitpbmRleCA2NmMyNWMwLi4zNzEyMDliIDEwMDY0NAorLS0tIGEvc3JjL1lEaWFsb2cuaAorKysrIGIvc3JjL1lEaWFsb2cuaAorQEAgLTMyLDcgKzMyLDcgQEAKKyAKKyBjbGFzcyBZU2hvcnRjdXRNYW5hZ2VyOworIGNsYXNzIFlQdXNoQnV0dG9uOworLWNsYXNzIFlEaWFsb2dQcml2YXRlOworK3N0cnVjdCBZRGlhbG9nUHJpdmF0ZTsKKyBjbGFzcyBZRXZlbnQ7CisgY2xhc3MgWUV2ZW50RmlsdGVyOworIAorZGlmZiAtLWdpdCBhL3NyYy9ZRG93bmxvYWRQcm9ncmVzcy5oIGIvc3JjL1lEb3dubG9hZFByb2dyZXNzLmgKK2luZGV4IGM0N2VjNGYuLmZlMDlhOWQgMTAwNjQ0CistLS0gYS9zcmMvWURvd25sb2FkUHJvZ3Jlc3MuaAorKysrIGIvc3JjL1lEb3dubG9hZFByb2dyZXNzLmgKK0BAIC0yOCw3ICsyOCw3IEBACisgI2luY2x1ZGUgIllXaWRnZXQuaCIKKyAKKyAKKy1jbGFzcyBZRG93bmxvYWRQcm9ncmVzc1ByaXZhdGU7Cisrc3RydWN0IFlEb3dubG9hZFByb2dyZXNzUHJpdmF0ZTsKKyAKKyAvKioKKyAgKiBEb3dubG9hZFByb2dyZXNzOiBBIHByb2dyZXNzIGJhciB0aGF0IG1vbml0b3JzIGRvd25sb2FkaW5nIGEgZmlsZSBieQorZGlmZiAtLWdpdCBhL3NyYy9ZRHVtYlRhYi5oIGIvc3JjL1lEdW1iVGFiLmgKK2luZGV4IGFlYzE3YTMuLmY4ZmIyNTAgMTAwNjQ0CistLS0gYS9zcmMvWUR1bWJUYWIuaAorKysrIGIvc3JjL1lEdW1iVGFiLmgKK0BAIC0yNyw3ICsyNyw3IEBACisgCisgI2luY2x1ZGUgIllTZWxlY3Rpb25XaWRnZXQuaCIKKyAKKy1jbGFzcyBZRHVtYlRhYlByaXZhdGU7Cisrc3RydWN0IFlEdW1iVGFiUHJpdmF0ZTsKKyAKKyAvKioKKyAgKiBEdW1iVGFiOiBBIHZlcnkgc2ltcGxlIHRhYiB3aWRnZXQgdGhhdCBjYW4gZGlzcGxheSBhbmQgc3dpdGNoIGJldHdlZW4gYQorZGlmZiAtLWdpdCBhL3NyYy9ZRW1wdHkuaCBiL3NyYy9ZRW1wdHkuaAoraW5kZXggOWEzY2IzNi4uOWI4OGZiYyAxMDA2NDQKKy0tLSBhL3NyYy9ZRW1wdHkuaAorKysrIGIvc3JjL1lFbXB0eS5oCitAQCAtMjksNyArMjksNyBAQAorICNpbmNsdWRlICJJbXBsUHRyLmgiCisgCisgCistY2xhc3MgWUVtcHR5UHJpdmF0ZTsKKytzdHJ1Y3QgWUVtcHR5UHJpdmF0ZTsKKyAKKyAvKioKKyAgKiBBIHdpZGdldCB3aXRoIHplcm8gc2l6ZSwgdXNlZnVsIGFzIGEgcGxhY2Vob2xkZXIuCitkaWZmIC0tZ2l0IGEvc3JjL1lFdmVudEZpbHRlci5oIGIvc3JjL1lFdmVudEZpbHRlci5oCitpbmRleCAzZGMxODAzLi43NGFhNjJkIDEwMDY0NAorLS0tIGEvc3JjL1lFdmVudEZpbHRlci5oCisrKysgYi9zcmMvWUV2ZW50RmlsdGVyLmgKK0BAIC0zMiw3ICszMiw3IEBACisgY2xhc3MgWUV2ZW50OworIGNsYXNzIFlEaWFsb2c7CisgCistY2xhc3MgWUV2ZW50RmlsdGVyUHJpdmF0ZTsKKytzdHJ1Y3QgWUV2ZW50RmlsdGVyUHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWUZyYW1lLmggYi9zcmMvWUZyYW1lLmgKK2luZGV4IDExMWU4ZWMuLjRmOGM2MWUgMTAwNjQ0CistLS0gYS9zcmMvWUZyYW1lLmgKKysrKyBiL3NyYy9ZRnJhbWUuaAorQEAgLTI5LDcgKzI5LDcgQEAKKyAjaW5jbHVkZSAiWVNpbmdsZUNoaWxkQ29udGFpbmVyV2lkZ2V0LmgiCisgI2luY2x1ZGUgIkltcGxQdHIuaCIKKyAKKy1jbGFzcyBZRnJhbWVQcml2YXRlOworK3N0cnVjdCBZRnJhbWVQcml2YXRlOworIAorIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZR3JhcGguaCBiL3NyYy9ZR3JhcGguaAoraW5kZXggZDkwZDFhZS4uMjg3ZDgwMCAxMDA2NDQKKy0tLSBhL3NyYy9ZR3JhcGguaAorKysrIGIvc3JjL1lHcmFwaC5oCitAQCAtMzcsNyArMzcsNyBAQAorICAqIEZvciB0aGF0IHJlYXNvbiBhIGxvdCBvZiBmdW5jdGlvbnMgc2ltcGx5IHRha2UgYSB2b2lkKiBpbnN0ZWFkIG9mIGdyYXBoX3QqLgorICAqLworIAorLWNsYXNzIFlHcmFwaFByaXZhdGU7Cisrc3RydWN0IFlHcmFwaFByaXZhdGU7CisgCisgLyoqCisgICogQSBncmFwaCB3aXRoIG5vZGVzIGFuZCBlZGdlcywgcmVuZGVyZWQgd2l0aCBHcmFwaHZpei4KK2RpZmYgLS1naXQgYS9zcmMvWUltYWdlLmggYi9zcmMvWUltYWdlLmgKK2luZGV4IDE3YmVhMjEuLjg0ZWI2NzQgMTAwNjQ0CistLS0gYS9zcmMvWUltYWdlLmgKKysrKyBiL3NyYy9ZSW1hZ2UuaAorQEAgLTI5LDcgKzI5LDcgQEAKKyAjaW5jbHVkZSA8c3RyaW5nPgorIAorIAorLWNsYXNzIFlJbWFnZVByaXZhdGU7Cisrc3RydWN0IFlJbWFnZVByaXZhdGU7CisgCisgLyoqCisgICogQSBwaWN0dXJlLCBwb3NzaWJseSBhbmltYXRlZCwgbG9hZGVkIGZyb20gYSBmaWxlLgorZGlmZiAtLWdpdCBhL3NyYy9ZSW5wdXRGaWVsZC5oIGIvc3JjL1lJbnB1dEZpZWxkLmgKK2luZGV4IDcwNjQxY2UuLmZhMjliNDIgMTAwNjQ0CistLS0gYS9zcmMvWUlucHV0RmllbGQuaAorKysrIGIvc3JjL1lJbnB1dEZpZWxkLmgKK0BAIC0yOCw3ICsyOCw3IEBACisgI2luY2x1ZGUgPHN0cmluZz4KKyAjaW5jbHVkZSAiWVdpZGdldC5oIgorIAorLWNsYXNzIFlJbnB1dEZpZWxkUHJpdmF0ZTsKKytzdHJ1Y3QgWUlucHV0RmllbGRQcml2YXRlOworIAorIAorIAorZGlmZiAtLWdpdCBhL3NyYy9ZSW50RmllbGQuaCBiL3NyYy9ZSW50RmllbGQuaAoraW5kZXggOWRhMDUzNy4uOGFkMjk0OSAxMDA2NDQKKy0tLSBhL3NyYy9ZSW50RmllbGQuaAorKysrIGIvc3JjL1lJbnRGaWVsZC5oCitAQCAtMjcsNyArMjcsNyBAQAorIAorICNpbmNsdWRlICJZV2lkZ2V0LmgiCisgCistY2xhc3MgWUludEZpZWxkUHJpdmF0ZTsKKytzdHJ1Y3QgWUludEZpZWxkUHJpdmF0ZTsKKyAKKyAKKyAKK2RpZmYgLS1naXQgYS9zcmMvWUxhYmVsLmggYi9zcmMvWUxhYmVsLmgKK2luZGV4IGQyZmZmNjEuLmJmMDZkOGIgMTAwNjQ0CistLS0gYS9zcmMvWUxhYmVsLmgKKysrKyBiL3NyYy9ZTGFiZWwuaAorQEAgLTMwLDcgKzMwLDcgQEAKKyAjaW5jbHVkZSAiSW1wbFB0ci5oIgorIAorIAorLWNsYXNzIFlMYWJlbFByaXZhdGU7Cisrc3RydWN0IFlMYWJlbFByaXZhdGU7CisgCisgLyoqCisgICogSW1wbGVtZW50YXRpb24gb2YgdGhlIExhYmVsLCBIZWFkaW5nIGFuZCBPdXRwdXRGaWVsZCB3aWRnZXRzCitkaWZmIC0tZ2l0IGEvc3JjL1lMYXlvdXRCb3guaCBiL3NyYy9ZTGF5b3V0Qm94LmgKK2luZGV4IGU2NTJhNDUuLjA3MGVhZmYgMTAwNjQ0CistLS0gYS9zcmMvWUxheW91dEJveC5oCisrKysgYi9zcmMvWUxheW91dEJveC5oCitAQCAtMjksNyArMjksNyBAQAorICNpbmNsdWRlICJZV2lkZ2V0LmgiCisgCisgCistY2xhc3MgWUxheW91dEJveFByaXZhdGU7Cisrc3RydWN0IFlMYXlvdXRCb3hQcml2YXRlOworIAorIC8qKgorICAqIEEgdmVydGljYWwgb3IgaG9yaXpvbnRhbCBzdGFja2luZyBvZiB3aWRnZXRzLCBpbXBsZW1lbnRpbmcgSEJveCBhbmQgVkJveC4KK2RpZmYgLS1naXQgYS9zcmMvWUxvZ1ZpZXcuaCBiL3NyYy9ZTG9nVmlldy5oCitpbmRleCA1M2ZiOWVlLi41YjQ0MjI5IDEwMDY0NAorLS0tIGEvc3JjL1lMb2dWaWV3LmgKKysrKyBiL3NyYy9ZTG9nVmlldy5oCitAQCAtMjcsNyArMjcsNyBAQAorIAorICNpbmNsdWRlICJZV2lkZ2V0LmgiCisgCistY2xhc3MgWUxvZ1ZpZXdQcml2YXRlOworK3N0cnVjdCBZTG9nVmlld1ByaXZhdGU7CisgCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lNZW51QnV0dG9uLmggYi9zcmMvWU1lbnVCdXR0b24uaAoraW5kZXggMjA1ZTczMC4uNWRmN2VmYiAxMDA2NDQKKy0tLSBhL3NyYy9ZTWVudUJ1dHRvbi5oCisrKysgYi9zcmMvWU1lbnVCdXR0b24uaAorQEAgLTI5LDcgKzI5LDcgQEAKKyAjaW5jbHVkZSAiWU1lbnVJdGVtLmgiCisgCisgY2xhc3MgWU1lbnVJdGVtOworLWNsYXNzIFlNZW51QnV0dG9uUHJpdmF0ZTsKKytzdHJ1Y3QgWU1lbnVCdXR0b25Qcml2YXRlOworIAorIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZTXVsdGlMaW5lRWRpdC5oIGIvc3JjL1lNdWx0aUxpbmVFZGl0LmgKK2luZGV4IGM1MmE2YWUuLjFmNzkyZjggMTAwNjQ0CistLS0gYS9zcmMvWU11bHRpTGluZUVkaXQuaAorKysrIGIvc3JjL1lNdWx0aUxpbmVFZGl0LmgKK0BAIC0yNyw3ICsyNyw3IEBACisgCisgI2luY2x1ZGUgIllXaWRnZXQuaCIKKyAKKy1jbGFzcyBZTXVsdGlMaW5lRWRpdFByaXZhdGU7Cisrc3RydWN0IFlNdWx0aUxpbmVFZGl0UHJpdmF0ZTsKKyAKKyAvKioKKyAgKiBBIG11bHRpLWxpbmUgcGxhaW4tdGV4dCBhcmVhCitkaWZmIC0tZ2l0IGEvc3JjL1lNdWx0aVByb2dyZXNzTWV0ZXIuaCBiL3NyYy9ZTXVsdGlQcm9ncmVzc01ldGVyLmgKK2luZGV4IDU3Yzc1OGQuLmY2YmVjOTEgMTAwNjQ0CistLS0gYS9zcmMvWU11bHRpUHJvZ3Jlc3NNZXRlci5oCisrKysgYi9zcmMvWU11bHRpUHJvZ3Jlc3NNZXRlci5oCitAQCAtMjgsNyArMjgsNyBAQAorICNpbmNsdWRlICJZV2lkZ2V0LmgiCisgI2luY2x1ZGUgPHZlY3Rvcj4KKyAKKy1jbGFzcyBZTXVsdGlQcm9ncmVzc01ldGVyUHJpdmF0ZTsKKytzdHJ1Y3QgWU11bHRpUHJvZ3Jlc3NNZXRlclByaXZhdGU7CisgCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lNdWx0aVNlbGVjdGlvbkJveC5oIGIvc3JjL1lNdWx0aVNlbGVjdGlvbkJveC5oCitpbmRleCBiYmU1YTIwLi5mM2EyOTQ3IDEwMDY0NAorLS0tIGEvc3JjL1lNdWx0aVNlbGVjdGlvbkJveC5oCisrKysgYi9zcmMvWU11bHRpU2VsZWN0aW9uQm94LmgKK0BAIC0yNyw3ICsyNyw3IEBACisgCisgI2luY2x1ZGUgIllTZWxlY3Rpb25XaWRnZXQuaCIKKyAKKy1jbGFzcyBZTXVsdGlTZWxlY3Rpb25Cb3hQcml2YXRlOworK3N0cnVjdCBZTXVsdGlTZWxlY3Rpb25Cb3hQcml2YXRlOworIAorIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZUGFydGl0aW9uU3BsaXR0ZXIuaCBiL3NyYy9ZUGFydGl0aW9uU3BsaXR0ZXIuaAoraW5kZXggMjgzOWJiYy4uOWRlMTE3NCAxMDA2NDQKKy0tLSBhL3NyYy9ZUGFydGl0aW9uU3BsaXR0ZXIuaAorKysrIGIvc3JjL1lQYXJ0aXRpb25TcGxpdHRlci5oCitAQCAtMjgsNyArMjgsNyBAQAorICNpbmNsdWRlICJZV2lkZ2V0LmgiCisgCisgCistY2xhc3MgWVBhcnRpdGlvblNwbGl0dGVyUHJpdmF0ZTsKKytzdHJ1Y3QgWVBhcnRpdGlvblNwbGl0dGVyUHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWVByb2dyZXNzQmFyLmggYi9zcmMvWVByb2dyZXNzQmFyLmgKK2luZGV4IDcxODM1MmYuLmJhYWI2NjIgMTAwNjQ0CistLS0gYS9zcmMvWVByb2dyZXNzQmFyLmgKKysrKyBiL3NyYy9ZUHJvZ3Jlc3NCYXIuaAorQEAgLTI3LDcgKzI3LDcgQEAKKyAKKyAjaW5jbHVkZSAiWVdpZGdldC5oIgorIAorLWNsYXNzIFlQcm9ncmVzc0JhclByaXZhdGU7Cisrc3RydWN0IFlQcm9ncmVzc0JhclByaXZhdGU7CisgCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lQdXNoQnV0dG9uLmggYi9zcmMvWVB1c2hCdXR0b24uaAoraW5kZXggNWI2NWM5OC4uZTI4ODI1MiAxMDA2NDQKKy0tLSBhL3NyYy9ZUHVzaEJ1dHRvbi5oCisrKysgYi9zcmMvWVB1c2hCdXR0b24uaAorQEAgLTI3LDcgKzI3LDcgQEAKKyAKKyAjaW5jbHVkZSAiWVdpZGdldC5oIgorIAorLWNsYXNzIFlQdXNoQnV0dG9uUHJpdmF0ZTsKKytzdHJ1Y3QgWVB1c2hCdXR0b25Qcml2YXRlOworIAorIAorIAorZGlmZiAtLWdpdCBhL3NyYy9ZUmFkaW9CdXR0b24uaCBiL3NyYy9ZUmFkaW9CdXR0b24uaAoraW5kZXggOWRjNjJkZS4uNWE3YzBkZCAxMDA2NDQKKy0tLSBhL3NyYy9ZUmFkaW9CdXR0b24uaAorKysrIGIvc3JjL1lSYWRpb0J1dHRvbi5oCitAQCAtMjgsNyArMjgsNyBAQAorICNpbmNsdWRlICJZV2lkZ2V0LmgiCisgCisgY2xhc3MgWVJhZGlvQnV0dG9uR3JvdXA7CistY2xhc3MgWVJhZGlvQnV0dG9uUHJpdmF0ZTsKKytzdHJ1Y3QgWVJhZGlvQnV0dG9uUHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWVJhZGlvQnV0dG9uR3JvdXAuaCBiL3NyYy9ZUmFkaW9CdXR0b25Hcm91cC5oCitpbmRleCAwNjNhNTJlLi42NzFhMjU3IDEwMDY0NAorLS0tIGEvc3JjL1lSYWRpb0J1dHRvbkdyb3VwLmgKKysrKyBiL3NyYy9ZUmFkaW9CdXR0b25Hcm91cC5oCitAQCAtMjgsNyArMjgsNyBAQAorICNpbmNsdWRlICJZU2luZ2xlQ2hpbGRDb250YWluZXJXaWRnZXQuaCIKKyAKKyBjbGFzcyBZUmFkaW9CdXR0b247CistY2xhc3MgWVJhZGlvQnV0dG9uR3JvdXBQcml2YXRlOworK3N0cnVjdCBZUmFkaW9CdXR0b25Hcm91cFByaXZhdGU7CisgCisgdHlwZWRlZiBzdGQ6Omxpc3Q8WVJhZGlvQnV0dG9uICo+IAkJWVJhZGlvQnV0dG9uTGlzdDsKKyB0eXBlZGVmIFlSYWRpb0J1dHRvbkxpc3Q6Oml0ZXJhdG9yCQlZUmFkaW9CdXR0b25MaXN0SXRlcmF0b3I7CitkaWZmIC0tZ2l0IGEvc3JjL1lSaWNoVGV4dC5oIGIvc3JjL1lSaWNoVGV4dC5oCitpbmRleCAxNDliZmIzLi44NmIzZjgwIDEwMDY0NAorLS0tIGEvc3JjL1lSaWNoVGV4dC5oCisrKysgYi9zcmMvWVJpY2hUZXh0LmgKK0BAIC0zMCw3ICszMCw3IEBACisgI2luY2x1ZGUgIkltcGxQdHIuaCIKKyAKKyAKKy1jbGFzcyBZUmljaFRleHRQcml2YXRlOworK3N0cnVjdCBZUmljaFRleHRQcml2YXRlOworIAorIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZU2VsZWN0aW9uQm94LmggYi9zcmMvWVNlbGVjdGlvbkJveC5oCitpbmRleCA3ZmM0ZmI4Li45YmJmOWYzIDEwMDY0NAorLS0tIGEvc3JjL1lTZWxlY3Rpb25Cb3guaAorKysrIGIvc3JjL1lTZWxlY3Rpb25Cb3guaAorQEAgLTI3LDcgKzI3LDcgQEAKKyAKKyAjaW5jbHVkZSAiWVNlbGVjdGlvbldpZGdldC5oIgorIAorLWNsYXNzIFlTZWxlY3Rpb25Cb3hQcml2YXRlOworK3N0cnVjdCBZU2VsZWN0aW9uQm94UHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWVNlbGVjdGlvbldpZGdldC5oIGIvc3JjL1lTZWxlY3Rpb25XaWRnZXQuaAoraW5kZXggYWJiZGZiNC4uY2YwNWFmZCAxMDA2NDQKKy0tLSBhL3NyYy9ZU2VsZWN0aW9uV2lkZ2V0LmgKKysrKyBiL3NyYy9ZU2VsZWN0aW9uV2lkZ2V0LmgKK0BAIC0yOSw3ICsyOSw3IEBACisgI2luY2x1ZGUgIllJdGVtLmgiCisgI2luY2x1ZGUgIkltcGxQdHIuaCIKKyAKKy1jbGFzcyBZU2VsZWN0aW9uV2lkZ2V0UHJpdmF0ZTsKKytzdHJ1Y3QgWVNlbGVjdGlvbldpZGdldFByaXZhdGU7CisgCisgLyoqCisgICogQmFzZSBjbGFzcyBmb3IgdmFyaW91cyBraW5kcyBvZiBtdWx0aS12YWx1ZSB3aWRnZXRzLgorZGlmZiAtLWdpdCBhL3NyYy9ZU2ltcGxlSW5wdXRGaWVsZC5oIGIvc3JjL1lTaW1wbGVJbnB1dEZpZWxkLmgKK2luZGV4IDZkOTI2ZDQuLmI5M2ZlNmIgMTAwNjQ0CistLS0gYS9zcmMvWVNpbXBsZUlucHV0RmllbGQuaAorKysrIGIvc3JjL1lTaW1wbGVJbnB1dEZpZWxkLmgKK0BAIC0yNyw3ICsyNyw3IEBACisgCisgI2luY2x1ZGUgIllXaWRnZXQuaCIKKyAKKy1jbGFzcyBZU2ltcGxlSW5wdXRGaWVsZFByaXZhdGU7Cisrc3RydWN0IFlTaW1wbGVJbnB1dEZpZWxkUHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWVNsaWRlci5oIGIvc3JjL1lTbGlkZXIuaAoraW5kZXggZDI5ZjZiOC4uNGJjZDdkMyAxMDA2NDQKKy0tLSBhL3NyYy9ZU2xpZGVyLmgKKysrKyBiL3NyYy9ZU2xpZGVyLmgKK0BAIC0yNyw3ICsyNyw3IEBACisgCisgI2luY2x1ZGUgIllJbnRGaWVsZC5oIgorIAorLWNsYXNzIFlTbGlkZXJQcml2YXRlOworK3N0cnVjdCBZU2xpZGVyUHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWVNwYWNpbmcuaCBiL3NyYy9ZU3BhY2luZy5oCitpbmRleCBlOGFhZmQzLi4wNjZjZDY4IDEwMDY0NAorLS0tIGEvc3JjL1lTcGFjaW5nLmgKKysrKyBiL3NyYy9ZU3BhY2luZy5oCitAQCAtMjgsNyArMjgsNyBAQAorICNpbmNsdWRlICJZV2lkZ2V0LmgiCisgI2luY2x1ZGUgIkltcGxQdHIuaCIKKyAKKy1jbGFzcyBZU3BhY2luZ1ByaXZhdGU7Cisrc3RydWN0IFlTcGFjaW5nUHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWVNxdWFzaC5oIGIvc3JjL1lTcXVhc2guaAoraW5kZXggNGJkMGZiNi4uMzgwNGNjNCAxMDA2NDQKKy0tLSBhL3NyYy9ZU3F1YXNoLmgKKysrKyBiL3NyYy9ZU3F1YXNoLmgKK0BAIC0yOSw3ICsyOSw3IEBACisgI2luY2x1ZGUgIkltcGxQdHIuaCIKKyAKKyAKKy1jbGFzcyBZU3F1YXNoUHJpdmF0ZTsKKytzdHJ1Y3QgWVNxdWFzaFByaXZhdGU7CisgCisgLyoqCisgICogSFNxdWFzaCwgVlNxdWFzaCBIVlNxdWFzaDogcmVkdWNlIGNoaWxkIHRvIGl0cyBwcmVmZXJyZWQgc2l6ZS4KK2RpZmYgLS1naXQgYS9zcmMvWVRhYmxlLmggYi9zcmMvWVRhYmxlLmgKK2luZGV4IDY2OTRmMTAuLjQ2OWI4Y2EgMTAwNjQ0CistLS0gYS9zcmMvWVRhYmxlLmgKKysrKyBiL3NyYy9ZVGFibGUuaAorQEAgLTMwLDcgKzMwLDcgQEAKKyAjaW5jbHVkZSAiWVRhYmxlSXRlbS5oIgorICNpbmNsdWRlICJZVGFibGVIZWFkZXIuaCIKKyAKKy1jbGFzcyBZVGFibGVQcml2YXRlOworK3N0cnVjdCBZVGFibGVQcml2YXRlOworIAorIAorIAorZGlmZiAtLWdpdCBhL3NyYy9ZVGFibGVIZWFkZXIuaCBiL3NyYy9ZVGFibGVIZWFkZXIuaAoraW5kZXggNzAxNjZjMi4uNGFlOTliNCAxMDA2NDQKKy0tLSBhL3NyYy9ZVGFibGVIZWFkZXIuaAorKysrIGIvc3JjL1lUYWJsZUhlYWRlci5oCitAQCAtMzEsNyArMzEsNyBAQAorIAorIAorIAorLWNsYXNzIFlUYWJsZUhlYWRlclByaXZhdGU7Cisrc3RydWN0IFlUYWJsZUhlYWRlclByaXZhdGU7CisgCisgLyoqCisgICogSGVscGVyIGNsYXNzIGZvciBZVGFibGUgZm9yIHRhYmxlIGNvbHVtbiBwcm9wZXJ0aWVzOgorZGlmZiAtLWdpdCBhL3NyYy9ZVGltZUZpZWxkLmggYi9zcmMvWVRpbWVGaWVsZC5oCitpbmRleCBhYjJmOWEzLi5mM2E3Yjk0IDEwMDY0NAorLS0tIGEvc3JjL1lUaW1lRmllbGQuaAorKysrIGIvc3JjL1lUaW1lRmllbGQuaAorQEAgLTI3LDcgKzI3LDcgQEAKKyAKKyAjaW5jbHVkZSAiWVNpbXBsZUlucHV0RmllbGQuaCIKKyAKKy1jbGFzcyBZVGltZUZpZWxkUHJpdmF0ZTsKKytzdHJ1Y3QgWVRpbWVGaWVsZFByaXZhdGU7CisgCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lUaW1lem9uZVNlbGVjdG9yLmNjIGIvc3JjL1lUaW1lem9uZVNlbGVjdG9yLmNjCitpbmRleCA5MjU5YjY0Li5lMmY5YjZmIDEwMDY0NAorLS0tIGEvc3JjL1lUaW1lem9uZVNlbGVjdG9yLmNjCisrKysgYi9zcmMvWVRpbWV6b25lU2VsZWN0b3IuY2MKK0BAIC0zMiw3ICszMiw3IEBACisgCisgY2xhc3MgWVRpbWV6b25lU2VsZWN0b3JQcml2YXRlCisgeworLSAgIGJvb2wgZHVtbXk7CisrLy8gICBib29sIGR1bW15OworIH07CisgCisgCitkaWZmIC0tZ2l0IGEvc3JjL1lUcmVlLmggYi9zcmMvWVRyZWUuaAoraW5kZXggMTRmYTI3OS4uNzBlMTM2NCAxMDA2NDQKKy0tLSBhL3NyYy9ZVHJlZS5oCisrKysgYi9zcmMvWVRyZWUuaAorQEAgLTI4LDcgKzI4LDcgQEAKKyAjaW5jbHVkZSAiWVNlbGVjdGlvbldpZGdldC5oIgorIAorIGNsYXNzIFlUcmVlSXRlbTsKKy1jbGFzcyBZVHJlZVByaXZhdGU7Cisrc3RydWN0IFlUcmVlUHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWVVJTG9nLmggYi9zcmMvWVVJTG9nLmgKK2luZGV4IDA4OTBiYzUuLjRhOTI3YTcgMTAwNjQ0CistLS0gYS9zcmMvWVVJTG9nLmgKKysrKyBiL3NyYy9ZVUlMb2cuaAorQEAgLTY0LDcgKzY0LDcgQEAKKyAKKyAKKyAKKy1jbGFzcyBZVUlMb2dQcml2YXRlOworK3N0cnVjdCBZVUlMb2dQcml2YXRlOworIAorIGVudW0gWVVJTG9nTGV2ZWxfdAorIHsKK2RpZmYgLS1naXQgYS9zcmMvWVdpZGdldC5oIGIvc3JjL1lXaWRnZXQuaAoraW5kZXggNWIyODVkMC4uNjM2YTQxYiAxMDA2NDQKKy0tLSBhL3NyYy9ZV2lkZ2V0LmgKKysrKyBiL3NyYy9ZV2lkZ2V0LmgKK0BAIC00NSw3ICs0NSw3IEBAIHR5cGVkZWYgWUNoaWxkcmVuTWFuYWdlcjxZV2lkZ2V0PglZV2lkZ2V0Q2hpbGRyZW5NYW5hZ2VyOworIHR5cGVkZWYgWVNpbmdsZUNoaWxkTWFuYWdlcjxZV2lkZ2V0PglZU2luZ2xlV2lkZ2V0Q2hpbGRNYW5hZ2VyOworIHR5cGVkZWYgWUNoaWxkcmVuUmVqZWN0b3I8WVdpZGdldD4JWVdpZGdldENoaWxkcmVuUmVqZWN0b3I7CisgCistY2xhc3MgWVdpZGdldFByaXZhdGU7Cisrc3RydWN0IFlXaWRnZXRQcml2YXRlOworIAorIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZV2l6YXJkLmggYi9zcmMvWVdpemFyZC5oCitpbmRleCA3NjcxY2JmLi45NzViNTk3IDEwMDY0NAorLS0tIGEvc3JjL1lXaXphcmQuaAorKysrIGIvc3JjL1lXaXphcmQuaAorQEAgLTI4LDcgKzI4LDcgQEAKKyAjaW5jbHVkZSAiWVdpZGdldC5oIgorIAorIGNsYXNzIFlNYWNyb1JlY29yZGVyOworLWNsYXNzIFlXaXphcmRQcml2YXRlOworK3N0cnVjdCBZV2l6YXJkUHJpdmF0ZTsKKyBjbGFzcyBZUHVzaEJ1dHRvbjsKKyBjbGFzcyBZUmVwbGFjZVBvaW50OworIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Mjk0NTI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aV9naXQuYmIKQEAgLTAsMCArMSw0MSBAQAorU1VNTUFSWSA9ICJMaWJ5dWkgaXMgYSB3aWRnZXQgYWJzdHJhY3Rpb24gbGlicmFyeSBwcm92aWRpbmcgUXQsIEdUSyBhbmQgbmN1cnNlcyBmcm9udGVuZHMuIgorTElDRU5TRSA9ICJMR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLmdwbC0zO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLmxncGwtMi4xO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLmxncGwtMzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIgXAorICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpYnl1aS9saWJ5dWkuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LUdDQy04LXdhcm5pbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy5wYXRjaCBcCisgICAgICAgICAgICIKKworUFYgPSAiMy4zLjMrZ2l0IgorU1JDUkVWID0gIjJiNjM0Y2I3ODIxZTJlNzlkZDRiN2E3M2NhZjhlNjdjNTAxODkzNzYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UgZ2V0dGV4dCBwa2djb25maWcKKworREVQRU5EUyArPSAiYm9vc3QiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgICAgICBjZCAke1N9CisgICAgICAgIC4vYm9vdHN0cmFwLnNoCisgICAgICAgIGNkIC0KK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICAgICBpZiBbICIke2xpYmRpcn0iID0gIiR7YmFzZV9wcmVmaXh9L3Vzci9saWIiIF0gJiYgWyAtZCAke0R9L3Vzci9saWI2NCBdOyB0aGVuCisgICAgICAgICAgICBtdiAke0R9L3Vzci9saWI2NCAke0R9L3Vzci9saWIKKyAgICAgICAgZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKKyAgICAgICAgbWtkaXIgLXAgJHtEfS8ke2Jhc2VfcHJlZml4fQorICAgICAgICBtdiAke0R9L3VzciAke0R9LyR7YmFzZV9wcmVmaXh9Cit9CisKK0ZJTEVTXyR7UE59LWRldiA9ICIke2xpYmRpcn0vKiAke2luY2x1ZGVkaXJ9L3l1aSoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuYm94L29wZW5ib3hfMy42LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuYm94L29wZW5ib3hfMy42LjEuYmIKaW5kZXggYjM1NGFlNy4uYzM1YTBjNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmJveC9vcGVuYm94XzMuNi4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5ib3gvb3BlbmJveF8zLjYuMS5iYgpAQCAtMTYsOSArMTYsMTEgQEAKICMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAotQUxURVJOQVRJVkVfJHtQTn0tY29yZSA9ICJ4LXdpbmRvdy1tYW5hZ2VyIgorQUxURVJOQVRJVkVfJHtQTn0tY29yZSA9ICJ4LXdpbmRvdy1tYW5hZ2VyIHgtc2Vzc2lvbi1tYW5hZ2VyIgogQUxURVJOQVRJVkVfVEFSR0VUW3gtd2luZG93LW1hbmFnZXJdID0gIiR7YmluZGlyfS9vcGVuYm94IgogQUxURVJOQVRJVkVfUFJJT1JJVFlbeC13aW5kb3ctbWFuYWdlcl0gPSAiMTAiCitBTFRFUk5BVElWRV9UQVJHRVRbeC1zZXNzaW9uLW1hbmFnZXJdID0gIiR7YmluZGlyfS9vcGVuYm94LXNlc3Npb24iCitBTFRFUk5BVElWRV9QUklPUklUWVt4LXNlc3Npb24tbWFuYWdlcl0gPSAiMTAwIgogCiBQQUNLQUdFQ09ORklHID8/PSAiIgogUEFDS0FHRUNPTkZJR1tpbWxpYjJdID0gIi0tZW5hYmxlLWltbGliMiwtLWRpc2FibGUtaW1saWIyLGltbGliMiIKQEAgLTM4LDcgKzQwLDcgQEAKIH0KIAogUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWNvcmUgJHtQTn0tY29uZmlnICR7UE59LXRoZW1lLWNsZWFybG9va3MiCi1GSUxFU18ke1BOfS1jb3JlID0gIiR7YmluZGlyfS9vcGVuYm94ICR7bGliZGlyfS8qJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tY29yZSA9ICIke2JpbmRpcn0vb3BlbmJveCAke2JpbmRpcn0vb3BlbmJveC1zZXNzaW9uICR7bGliZGlyfS8qJHtTT0xJQlN9IgogCiBGSUxFU18ke1BOfS1seGRlICs9ICIke2RhdGFkaXJ9L2x4ZGUvIFwKICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vbHhwYW5lbCBcCkBAIC00Niw2ICs0OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2ljb25zIgogCiBGSUxFU18ke1BOfS1nbm9tZSArPSAiIFwKKyAgICAke2JpbmRpcn0vb3BlbmJveC1nbm9tZS1zZXNzaW9uIFwKICAgICAke2RhdGFkaXJ9L2dub21lIFwKICAgICAke2RhdGFkaXJ9L2dub21lLXNlc3Npb24gXAogIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZm9udHMtdHJ1ZXR5cGUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1mb250cy10cnVldHlwZS5iYgppbmRleCA2MzJlN2Q0Li4zMDY5ZDJkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1mb250cy10cnVldHlwZS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1mb250cy10cnVldHlwZS5iYgpAQCAtNSw3ICs1LDcgQEAKIFBWID0gIjEuMCIKIFBSID0gInIyIgogCi1pbmhlcml0IHBhY2thZ2Vncm91cCBhbGxhcmNoCitpbmhlcml0IHBhY2thZ2Vncm91cAogCiBQQUNLQUdFUyArPSAiXAogICAgICR7UE59LWNvcmUgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29tbV8yLjQwLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb21tXzIuNDAuMS5iYgppbmRleCAwMmJiMWNjLi5lMGY3MmNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb21tXzIuNDAuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb21tXzIuNDAuMS5iYgpAQCAtMTIsNyArMTIsOSBAQAogU1JDX1VSSVttZDVzdW1dID0gIjg3NGVhZGQ5NDM0NjEzZGJhY2YwMjcyYzgyYzNhYzIzIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk3NjJlZTJhMmQ1NzgxYmU2Nzk3NDQ4ZDRkZDIzODNjZTE0OTA3MTU5YjMwYmMxMmJmNmIwOGU3MjI3YmUzYWYiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBFWFRSQV9PRUNPTkYgPSAiIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uICIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcXJlbmNvZGUvcXJlbmNvZGVfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcXJlbmNvZGUvcXJlbmNvZGVfZ2l0LmJiCmluZGV4IDZhMTU5YTcuLmY1Mzk3NzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3FyZW5jb2RlL3FyZW5jb2RlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9xcmVuY29kZS9xcmVuY29kZV9naXQuYmIKQEAgLTQsOSArNCw5IEBACiBTRUNUSU9OID0gImxpYnMiCiBMSUNFTlNFID0gIkxHUEx2Mi4xIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCi1QViA9ICIzLjQuNCtnaXQke1NSQ1BWfSIKK1BWID0gIjQuMC4wK2dpdCR7U1JDUFZ9IgogCi1TUkNSRVYgPSAiMWI1NjVjN2I1OTkwMjk4MThmYzU5NmU3ZGE0MzcxYTMwODNkYTM2YyIKK1NSQ1JFViA9ICIwN2YzYzVkNGJmOTEzNjcxMTQyMmNjN2RiZjI4YWZmNDY5ZGEyMjBhIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2Z1a3VjaGkvbGlicXJlbmNvZGUuZ2l0IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltL01ha2VmaWxlLm9lIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltL01ha2VmaWxlLm9lCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWU2OTM0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS9NYWtlZmlsZS5vZQorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLSMgTWFrZWZpbGUgZm9yIHNsaW0gLSBPcGVuRW1iZWRkZWQKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotCi1TTElNTERGTEFHUz0tbFhmdCAtbFgxMSAtbGZyZWV0eXBlIC1sWHJlbmRlciAtbGZvbnRjb25maWcgLWxwbmcxMiAtbHogLWxtIC1sY3J5cHQgLWxYbXUgLWxwbmcgLWxqcGVnIC1scnQgLWxwdGhyZWFkCi1DVVNUT009LURIQVZFX1NIQURPVwotCi1VU0VfUEFNPTEKLWlmZGVmIFVTRV9QQU0KLVNMSU1MREZMQUdTKz0gLWxwYW0KLUNVU1RPTSs9IC1EVVNFX1BBTQotZW5kaWYKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1OQU1FPXNsaW0KLVZFUlNJT049MS4zLjIKLQotREVGSU5FUz0tRFBBQ0tBR0U9XCIkKE5BTUUpXCIgLURWRVJTSU9OPVwiJChWRVJTSU9OKVwiIFwKLQkJLURQS0dEQVRBRElSPVwiJChQUkVGSVgpL3NoYXJlL3NsaW1cIiAtRFNZU0NPTkZESVI9XCIkKENGR0RJUilcIgotCi1PQkpFQ1RTPWpwZWcubyBwbmcubyBtYWluLm8gaW1hZ2UubyBudW1sb2NrLm8gY2ZnLm8gc3dpdGNodXNlci5vIGFwcC5vIFwKLQlwYW5lbC5vIHV0aWwubwotaWZkZWYgVVNFX1BBTQotT0JKRUNUUys9UEFNLm8KLWVuZGlmCi0KLWFsbDogc2xpbQotCi1zbGltOiAkKE9CSkVDVFMpCi0JJChDWFgpICQoT0JKRUNUUykgJChMREZMQUdTKSAkKFNMSU1MREZMQUdTKSAtbyAkKE5BTUUpCi0KLS5jcHAubzoKLQkkKENYWCkgJChDWFhGTEFHUykgJChERUZJTkVTKSAkKENVU1RPTSkgLWMgJDwgLW8gJEAKLQotLmMubzoKLQkkKENDKSAkKENGTEFHUykgJChERUZJTkVTKSAkKENVU1RPTSkgLWMgJDwgLW8gJEAKLQotaW5zdGFsbDogc2xpbSBpbnN0YWxsLXRoZW1lCi0JaW5zdGFsbCAtRCAtbSA3NTUgc2xpbSAkKERFU1RESVIpJChQUkVGSVgpL2Jpbi9zbGltCi0JaW5zdGFsbCAtRCAtbSA2NDQgc2xpbS4xICQoREVTVERJUikkKE1BTkRJUikvbWFuMS9zbGltLjEKLQl0ZXN0IC1lICQoREVTVERJUikkKENGR0RJUikvc2xpbS5jb25mIHx8IFwKLQkJaW5zdGFsbCAtRCAtbSA2NDQgc2xpbS5jb25mICQoREVTVERJUikkKENGR0RJUikvc2xpbS5jb25mCi0KLWNsZWFuOgotCUBybSAtZiBzbGltICoubwotCi1kaXN0OgotCUBybSAtcmYgJChOQU1FKS0kKFZFUlNJT04pCi0JQG1rZGlyICQoTkFNRSktJChWRVJTSU9OKQotCUBjcCAtciAqLmNwcCAqLmggKi5jIE1ha2VmaWxlIE1ha2VmaWxlLiogQ09QWUlORyBDaGFuZ2VMb2cgSU5TVEFMTCBSRUFETUUgVE9ETyBcCi0JCXhpbml0cmMuc2FtcGxlIHNsaW0uMSBUSEVNRVMgdGhlbWVzIHNsaW0uY29uZiAkKE5BTUUpLSQoVkVSU0lPTikKLQlAcm0gLXJmICQoTkFNRSktJChWRVJTSU9OKS90aGVtZXMvLnN2bgkkKE5BTUUpLSQoVkVSU0lPTikvdGhlbWVzL2RlZmF1bHQvLnN2bgotCUB0YXIgY3Z6ZiAkKE5BTUUpLSQoVkVSU0lPTikudGFyLmd6ICQoTkFNRSktJChWRVJTSU9OKQotCUBybSAtcmYgJChOQU1FKS0kKFZFUlNJT04pCi0KLQotaW5zdGFsbC10aGVtZToKLQlpbnN0YWxsIC1EIC1tIDY0NCB0aGVtZXMvZGVmYXVsdC9zbGltLnRoZW1lIFwKLQkJICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvc2xpbS90aGVtZXMvZGVmYXVsdC9zbGltLnRoZW1lCi0JaW5zdGFsbCAtRCAtbSA2NDQgdGhlbWVzL2RlZmF1bHQvcGFuZWwucG5nIFwKLQkJICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvc2xpbS90aGVtZXMvZGVmYXVsdC9wYW5lbC5wbmcKLQlpbnN0YWxsIC1EIC1tIDY0NCB0aGVtZXMvZGVmYXVsdC9iYWNrZ3JvdW5kLmpwZyBcCi0JCSAkKERFU1RESVIpJChQUkVGSVgpL3NoYXJlL3NsaW0vdGhlbWVzL2RlZmF1bHQvYmFja2dyb3VuZC5qcGcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS9zbGltLWR5bndtIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltL3NsaW0tZHlud20KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5YzlkNDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltL3NsaW0tZHlud20KKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLSMhL2Jpbi9zaAotdXBkYXRlX3NsaW1fd21saXN0Ci1pZiBbICJ4JDEiID0gIngtbm9kYWVtb24iIF07IHRoZW4KLSAgc2hpZnQKLSAgZXhlYyBzbGltICIkQCIKLWVsc2UKLSAgc2xpbSAtZCAiJEAiCi1maQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltL3NsaW0ucGFtZCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS9zbGltLnBhbWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwYzM0YjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltL3NsaW0ucGFtZAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLSMgQmVnaW4gL2V0Yy9wYW0uZC9zbGltCi0KLWF1dGggICAgICAgcmVxdWlyZWQgICAgIHBhbV9zaGVsbHMuc28KLWF1dGggICAgICAgaW5jbHVkZSAgICAgIGNvbW1vbi1hdXRoCi1hdXRoICAgICAgIG9wdGlvbmFsICAgICBwYW1fc2VjdXJldHR5LnNvCi1hdXRoICAgICAgIG9wdGlvbmFsICAgICBwYW1fZ25vbWVfa2V5cmluZy5zbwotCi1hY2NvdW50ICAgIHJlcXVpcmVkICAgICBwYW1fbm9sb2dpbi5zbwotYWNjb3VudCAgICBpbmNsdWRlICAgICAgY29tbW9uLWFjY291bnQKLQotcGFzc3dvcmQgICBpbmNsdWRlICAgICAgY29tbW9uLXBhc3N3b3JkCi0KLXNlc3Npb24gICAgaW5jbHVkZSAgICAgIGNvbW1vbi1zZXNzaW9uCi1zZXNzaW9uICAgIHJlcXVpcmVkICAgICBwYW1fbWtob21lZGlyLnNvIHNrZWw9L2V0Yy9za2VsLyB1bWFzaz0wMDIyCi1zZXNzaW9uICAgIG9wdGlvbmFsICAgICBwYW1fbGFzdGxvZy5zbyBub3d0bXAKLXNlc3Npb24gICAgb3B0aW9uYWwgICAgIHBhbV9tYWlsLnNvIGRpcj0vdmFyL21haWwgc3RhbmRhcmQKLXNlc3Npb24gICAgb3B0aW9uYWwgICAgIHBhbV9nbm9tZV9rZXlyaW5nLnNvICBhdXRvX3N0YXJ0Ci0KLSMgRW5kIC9ldGMvcGFtLmQvc2xpbQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltL3NsaW0uc2VydmljZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS9zbGltLnNlcnZpY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MTM1MWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltL3NsaW0uc2VydmljZQorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLVtVbml0XQotRGVzY3JpcHRpb249U0xpTSBTaW1wbGUgTG9naW4gTWFuYWdlcgotUmVxdWlyZXM9ZGV2LXR0eTcuZGV2aWNlCi1BZnRlcj1kZXYtdHR5Ny5kZXZpY2Ugc3lzdGVtZC11c2VyLXNlc3Npb25zLnNlcnZpY2UKLQotW1NlcnZpY2VdCi1FeGVjU3RhcnQ9L3Vzci9iaW4vc2xpbSAtbm9kYWVtb24KLVN0YW5kYXJkT3V0cHV0PXN5c2xvZwotCi1bSW5zdGFsbF0KLVdhbnRlZEJ5PWdyYXBoaWNhbC50YXJnZXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS91cGRhdGVfc2xpbV93bWxpc3QgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vdXBkYXRlX3NsaW1fd21saXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjExNjUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS91cGRhdGVfc2xpbV93bWxpc3QKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0jIS91c3IvYmluL3BlcmwgLXcKLSMKLSMgdXBkYXRlX3NsaW1fd21saXN0LCBiYXNlZCBvbjoKLSMgdXBkYXRlX3dkbV93bWxpc3QsIChjKSAxOTk4IE1hcmNlbG8gTWFnYWxs824gPG1tYWdhbGxvQGRlYmlhbi5vcmc+Ci0jIHJld3JpdGVuIHRvIHVzZSB0aGUgeC13aW5kb3ctbWFuYWdlciBhbHRlcm5hdGl2ZQotIyBtb2RpZmllZCB0byBhbHNvIHVzZSB0aGUgeC1zZXNzaW9uLW1hbmFnZXIgYWx0ZXJuYXRpdmUgYnkgQXJ0aHVyIEtvcm4KLSMgQ29weXJpZ2h0IDIwMDAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KLSMgTW9kaWZpZWQgdG8gdXNlIHRoZSBmcmVlZGVza3RvcC5vcmcgLmRlc2t0b3AgbGlrZSBrZG0gYW5kIGdkbQotIwotIyBUaGlzIHNjcmlwdCB3aWxsIHJlYWQgdGhlIGxpc3Qgb2YgaW5zdGFsbGVkIHdpbmRvdyBtYW5hZ2VycyBmcm9tCi0jIHRoZSBmcmVlZGVza3RvcCAuZGVza3RvcCBmaWxlcyBpbiA8ZXRjPi9YMTEvc2Vzc2lvbnMvOjxldGM+L2RtL1Nlc3Npb25zLzoKLSMgPHNoYXJlPi94c2Vzc2lvbnMvCi0jIGFuZCB1cGRhdGUgdGhlIHNlc3Npb25zIGxpbmUgaW4gL2V0Yy9zbGltLmNvbmYuCi0jIEJFV0FSRTogSXQgZG9lc24ndCBhc2sgYW55IHF1ZXN0aW9ucyBhYm91dCB0aGlzLiBJdCBqdXN0IGRvZXMgaXQuIEl0Ci0jIHRha2VzIGFuIG9wdGlvbmFsIGxpc3Qgb2Ygd2luZG93IG1hbmFnZXJzLgotCi11c2Ugc3RyaWN0OwotdXNlIEZpbGU6OkRlc2t0b3BFbnRyeTsKLQotbXkgJHdtX2xpc3Q9Jyc7Ci1teSAlZGVza3RvcF9maWxlczsKLQotdW5sZXNzIChAQVJHVikgewotICAgICNteSBAd21fbGlzdCA9ICgnZGVmYXVsdCcpOwotICAgIG15IEB3bV9saXN0OwotICAgIGZvcmVhY2ggbXkgJGRpciAoJy9ldGMvWDExL3Nlc3Npb25zLycsJy9ldGMvZG0vU2Vzc2lvbnMvJywnL3Vzci9zaGFyZS94c2Vzc2lvbnMvJykgewotCSAgICBuZXh0IHVubGVzcyAob3BlbmRpciBESVIsICRkaXIpOwotCSAgICBteSBAZmlsZXM7Ci0JICAgIEBmaWxlcyA9IGdyZXAgeyAvXC5kZXNrdG9wJC8gJiYgLXIgIiRkaXIvJF8iIH0gcmVhZGRpcihESVIpOwotCSAgICBmb3JlYWNoIG15ICRmaWxlIChAZmlsZXMpIHsKLQkJICAgcHVzaCBAeyRkZXNrdG9wX2ZpbGVzeyRmaWxlfX0sICIkZGlyLyRmaWxlIjsKLQkgICAgfQotICAgIH0KLSAgICBERVNLVE9QOiBmb3JlYWNoIG15ICRkZXNrdG9wX2ZpbGUgKGtleXMoJWRlc2t0b3BfZmlsZXMpKSB7Ci0JICAgIGZvcmVhY2ggbXkgJGZpbGUgKEB7JGRlc2t0b3BfZmlsZXN7JGRlc2t0b3BfZmlsZX19KSB7Ci0JCSAgICBteSAkZW50cnkgPSBGaWxlOjpEZXNrdG9wRW50cnktPm5ld19mcm9tX2ZpbGUoJGZpbGUpOwotCQkgICAgbmV4dCBERVNLVE9QIGlmIChkZWZpbmVkKCRlbnRyeS0+Z2V0X3ZhbHVlKCdIaWRkZW4nKSkKLQkJCWFuZCAkZW50cnktPmdldF92YWx1ZSgnSGlkZGVuJykgZXEgJ3RydWUnKTsKLQkJICAgIGlmICgkZW50cnktPmdldF92YWx1ZSgnTmFtZScpID1+IC9eZ25vbWUkL2kpIHsKLQkJCSAgICBwdXNoIChAd21fbGlzdCwgJ2dub21lJyk7Ci0JCSAgICB9Ci0JCSAgICBlbHNpZiAoJGVudHJ5LT5nZXRfdmFsdWUoJ05hbWUnKSA9fiAvXmtkZSQvaSkgewotCQkJICAgIHB1c2ggKEB3bV9saXN0LCAna2RlJyk7Ci0JCSAgICB9Ci0JCSAgICBlbHNpZiAoZGVmaW5lZCgkZW50cnktPmdldF92YWx1ZSgnRXhlYycpKSkgewotCQkJICAgIHB1c2ggKEB3bV9saXN0LCAkZW50cnktPmdldF92YWx1ZSgnRXhlYycpKTsKLQkJICAgIH0KLQkJICAgIGVsc2UgeyAjIG5vdCBmb3VuZCwgZ28gdG8gbmV4dCBmaWxlCi0JCQkgICAgbmV4dDsKLQkJICAgIH0KLQkJICAgICMgZm91bmQsIHByb2NlZWQgdG8gbmV4dCBkZXN0b3AgZmlsZQotCQkgICAgbmV4dCBERVNLVE9QOwotCSAgICB9Ci0gICAgfQotICAgJHdtX2xpc3QgPSBqb2luICgnLCcsIHNvcnQgQHdtX2xpc3QpIC4gJyxjdXN0b20nOwotfSBlbHNlIHsKLSAgICAkd21fbGlzdCA9IGpvaW4gKCcsJywgc29ydCBAQVJHVik7Ci19Ci0KLW9wZW4gKFNMSU1fQ09ORklHX0ZJTEUsICc8L2V0Yy9zbGltLmNvbmYnKQotICAgIG9yIGRpZSAiQ2FuJ3Qgb3BlbiAvZXRjL3NsaW0uY29uZiBmb3IgcmVhZGluZzogJCEiOwotb3BlbiAoTkVXX1NMSU1fQ09ORklHX0ZJTEUsICc+L2V0Yy9zbGltLmNvbmYubmV3JykKLSAgICBvciBkaWUgIkNhbid0IG9wZW4gL2V0Yy9zbGltLmNvbmYubmV3IGZvciB3cml0aW5nOiAkISI7Ci0KLXdoaWxlICg8U0xJTV9DT05GSUdfRklMRT4pIHsKLSAgICBzfF4oc2Vzc2lvbnNccyopLip8JDEkd21fbGlzdHw7Ci0gICAgcHJpbnQgTkVXX1NMSU1fQ09ORklHX0ZJTEU7Ci19Ci0KLWNsb3NlKFNMSU1fQ09ORklHX0ZJTEUpOwotY2xvc2UoTkVXX1NMSU1fQ09ORklHX0ZJTEUpOwotCi1yZW5hbWUgJy9ldGMvc2xpbS5jb25mLm5ldycsICcvZXRjL3NsaW0uY29uZicKLSAgICBvciBkaWUgIkNhbid0IHJlbmFtZSAvZXRjL3NsaW0uY29uZi5uZXc6ICQhIjsKLQotZXhpdCAwOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWJfMS4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWJfMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2M0OGZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliXzEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVNVTU1BUlkgPSAiQW4gYWJzdHJhY3Rpb24gbGF5ZXIgZm9yIHRvdWNoc2NyZWVuIHBhbmVsIGV2ZW50cyIKLURFU0NSSVBUSU9OID0gIlRzbGliIGlzIGFuIGFic3RyYWN0aW9uIGxheWVyIGZvciB0b3VjaHNjcmVlbiBwYW5lbCBcCi1ldmVudHMsIGFzIHdlbGwgYXMgYSBmaWx0ZXIgc3RhY2sgZm9yIHRoZSBtYW5pcHVsYXRpb24gb2YgdGhvc2UgZXZlbnRzLiBcCi1Uc2xpYiBpcyBnZW5lcmFsbHkgdXNlZCBvbiBlbWJlZGRlZCBkZXZpY2VzIHRvIHByb3ZpZGUgYSBjb21tb24gdXNlciBcCi1zcGFjZSBpbnRlcmZhY2UgdG8gdG91Y2hzY3JlZW4gZnVuY3Rpb25hbGl0eS4iCi1IT01FUEFHRSA9ICJodHRwOi8vdHNsaWIub3JnLyIKLQotQVVUSE9SID0gIlJ1c3NlbGwgS2luZyB3LyBwbHVnaW5zIGJ5IENocmlzIExhcnNvbiBldC4gYWwuIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMzBhOTcxNmVmMzc2MmUzNDY3YTJmNjJiZjc5MGYwYSIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20va2VyZ290aC90c2xpYi9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS90c2xpYi0ke1BWfS50YXIueHo7ZG93bmxvYWRmaWxlbmFtZT10c2xpYi0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vdHMuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly90c2xpYi5zaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxNDc3MWY4NjA3YjM0MWJiNGIyOTc4MTlkMzdlODM3ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZTM1ZTVmNzEwZWE5MzNiMTE4ZjcxMGUyY2U0NDAzYWMwNzZmZTY5OTI2YjU3MDMzMzg2N2Q0ZGUwODJhNTFjIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2tlcmdvdGgvdHNsaWIvcmVsZWFzZXMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2hhcmVkIC0tZGlzYWJsZS1oMzYwMCAtLWVuYWJsZS1pbnB1dCAtLWRpc2FibGUtY29yZ2kgLS1kaXNhYmxlLWNvbGxpZSAtLWRpc2FibGUtbWs3MTIgLS1kaXNhYmxlLWFyY3RpYzIgLS1kaXNhYmxlLXVjYjF4MDAiCi0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90cy5jb25mICR7U30vZXRjL3RzLmNvbmYKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9wcm9maWxlLmQvCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vdHNsaWIuc2ggJHtEfSR7c3lzY29uZmRpcn0vcHJvZmlsZS5kLwotfQotCi0jIFBlb3BsZSBzaG91bGQgY29uc2lkZXIgdXNpbmcgdWRldidzIC9kZXYvaW5wdXQvdG91Y2hzY3JlZW4wIHN5bWxpbmsKLSMgaW5zdGVhZCBvZiBkZXRlY3Qtc3R5bHVzCi0jUkRFUEVORFNfdHNsaWItY29uZl93ZWlyZC1tYWNoaW5lID0gImRldGVjdC1zdHlsdXMiCi1SUFJPVklERVNfdHNsaWItY29uZiA9ICJsaWJ0cy0wLjAtY29uZiIKLQotUEFDS0FHRVMgPSsgInRzbGliLWNvbmYgdHNsaWItdGVzdHMgdHNsaWItY2FsaWJyYXRlIgotREVCSUFOX05PQVVUT05BTUVfdHNsaWItY29uZiA9ICIxIgotREVCSUFOX05PQVVUT05BTUVfdHNsaWItdGVzdHMgPSAiMSIKLURFQklBTl9OT0FVVE9OQU1FX3RzbGliLWNhbGlicmF0ZSA9ICIxIgotCi1SREVQRU5EU18ke1BOfSA9ICJ0c2xpYi1jb25mIgotUlJFQ09NTUVORFNfJHtQTn0gPSAicG9pbnRlcmNhbCIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vdHMvKi5sYSIKLUZJTEVTX3RzbGliLWNvbmYgPSAiJHtzeXNjb25mZGlyfS90cy5jb25mICR7c3lzY29uZmRpcn0vcHJvZmlsZS5kL3RzbGliLnNoICR7ZGF0YWRpcn0vdHNsaWIiCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vKi5zby4qICR7bGliZGlyfS90cy8qLnNvKiIKLUZJTEVTX3RzbGliLWNhbGlicmF0ZSArPSAiJHtiaW5kaXJ9L3RzX2NhbGlicmF0ZSIKLUZJTEVTX3RzbGliLXRlc3RzID0gIiR7YmluZGlyfS90c19oYXJ2ZXN0ICR7YmluZGlyfS90c19wcmludCAke2JpbmRpcn0vdHNfcHJpbnRfcmF3ICR7YmluZGlyfS90c190ZXN0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWJfMS4xNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliXzEuMTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FlOTQxYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliXzEuMTUuYmIKQEAgLTAsMCArMSw4MiBAQAorU1VNTUFSWSA9ICJBbiBhYnN0cmFjdGlvbiBsYXllciBmb3IgdG91Y2hzY3JlZW4gcGFuZWwgZXZlbnRzIgorREVTQ1JJUFRJT04gPSAiVHNsaWIgaXMgYW4gYWJzdHJhY3Rpb24gbGF5ZXIgZm9yIHRvdWNoc2NyZWVuIHBhbmVsIFwKK2V2ZW50cywgYXMgd2VsbCBhcyBhIGZpbHRlciBzdGFjayBmb3IgdGhlIG1hbmlwdWxhdGlvbiBvZiB0aG9zZSBldmVudHMuIFwKK1RzbGliIGlzIGdlbmVyYWxseSB1c2VkIG9uIGVtYmVkZGVkIGRldmljZXMgdG8gcHJvdmlkZSBhIGNvbW1vbiB1c2VyIFwKK3NwYWNlIGludGVyZmFjZSB0byB0b3VjaHNjcmVlbiBmdW5jdGlvbmFsaXR5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly90c2xpYi5vcmcvIgorCitBVVRIT1IgPSAiTWFydGluIEtlcHBsaW5nZXIgPG1hcnRpbmtAcG9zdGVvLmRlPiIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiTEdQTHYyKyAmIEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1mYzE3OGJjZDQyNTA5MDkzOWE4YjYzNGQxZDZhOTU5NCBcCisgICAgZmlsZTovL3Rlc3RzL0NPUFlJTkc7bWQ1PWEyM2E3NGIzZjRjYWY5NjE2MjMwNzg5ZDk0MjE3YWNiIFwKKyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20va2VyZ290aC90c2xpYi9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS90c2xpYi0ke1BWfS50YXIueHo7ZG93bmxvYWRmaWxlbmFtZT10c2xpYi0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vdHMuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly90c2xpYi5zaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiOWZmMzY3ODhjOWFiNzZhMTBiNTg0MjIyMjdiOTYyOWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2NlNDg4MDdjYWI2NTUwNzZkNzFhMWNlZWYzZWQwYWI4YTI1ZGY5ODA3NDk4MWQ0YThmZDE0NzdlZTVmNzEwYyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9rZXJnb3RoL3RzbGliL3JlbGVhc2VzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gImRlYm91bmNlIGRlaml0dGVyIGlpciBsaW5lYXIgbWVkaWFuIHB0aHJlcyBza2lwIGxvd3Bhc3MgaW52ZXJ0IHZhcmlhbmNlIGlucHV0IHRvdWNoa2l0IHdhdmVzaGFyZSIKK1BBQ0tBR0VDT05GSUdbZGVib3VuY2VdID0gIi0tZW5hYmxlLWRlYm91bmNlLC0tZGlzYWJsZS1kZWJvdW5jZSIKK1BBQ0tBR0VDT05GSUdbZGVqaXR0ZXJdID0gIi0tZW5hYmxlLWRlaml0dGVyLC0tZGlzYWJsZS1kZWppdHRlciIKK1BBQ0tBR0VDT05GSUdbaWlyXSA9ICItLWVuYWJsZS1paXIsLS1kaXNhYmxlLWlpciIKK1BBQ0tBR0VDT05GSUdbbGluZWFyXSA9ICItLWVuYWJsZS1saW5lYXIsLS1kaXNhYmxlLWxpbmVhciIKK1BBQ0tBR0VDT05GSUdbbWVkaWFuXSA9ICItLWVuYWJsZS1tZWRpYW4sLS1kaXNhYmxlLW1lZGlhbiIKK1BBQ0tBR0VDT05GSUdbcHRocmVzXSA9ICItLWVuYWJsZS1wdGhyZXMsLS1kaXNhYmxlLXB0aHJlcyIKK1BBQ0tBR0VDT05GSUdbc2tpcF0gPSAiLS1lbmFibGUtc2tpcCwtLWRpc2FibGUtc2tpcCIKK1BBQ0tBR0VDT05GSUdbbG93cGFzc10gPSAiLS1lbmFibGUtbG93cGFzcywtLWRpc2FibGUtbG93cGFzcyIKK1BBQ0tBR0VDT05GSUdbaW52ZXJ0XSA9ICItLWVuYWJsZS1pbnZlcnQsLS1kaXNhYmxlLWludmVydCIKK1BBQ0tBR0VDT05GSUdbdmFyaWFuY2VdID0gIi0tZW5hYmxlLXZhcmlhbmNlLC0tZGlzYWJsZS12YXJpYW5jZSIKK1BBQ0tBR0VDT05GSUdbaW5wdXRdID0gIi0tZW5hYmxlLWlucHV0LC0tZGlzYWJsZS1pbnB1dCIKK1BBQ0tBR0VDT05GSUdbdGF0dW5nXSA9ICItLWVuYWJsZS10YXR1bmcsLS1kaXNhYmxlLXRhdHVuZyIKK1BBQ0tBR0VDT05GSUdbdG91Y2hraXRdID0gIi0tZW5hYmxlLXRvdWNoa2l0LC0tZGlzYWJsZS10b3VjaGtpdCIKK1BBQ0tBR0VDT05GSUdbd2F2ZXNoYXJlXSA9ICItLWVuYWJsZS13YXZlc2hhcmUsLS1kaXNhYmxlLXdhdmVzaGFyZSIKK1BBQ0tBR0VDT05GSUdbdWNiMXgwMF0gPSAiLS1lbmFibGUtdWNiMXgwMCwtLWRpc2FibGUtdWNiMXgwMCIKK1BBQ0tBR0VDT05GSUdbbWs3MTJdID0gIi0tZW5hYmxlLW1rNzEyLC0tZGlzYWJsZS1tazcxMiIKK1BBQ0tBR0VDT05GSUdbaDM2MDBdID0gIi0tZW5hYmxlLWgzNjAwLC0tZGlzYWJsZS1oMzYwMCIKK1BBQ0tBR0VDT05GSUdbZG1jXSA9ICItLWVuYWJsZS1kbWMsLS1kaXNhYmxlLWRtYyIKK1BBQ0tBR0VDT05GSUdbbGluZWFyLWgyMjAwXSA9ICItLWVuYWJsZS1saW5lYXItaDIyMDAsLS1kaXNhYmxlLWxpbmVhci1oMjIwMCIKK1BBQ0tBR0VDT05GSUdbY29yZ2ldID0gIi0tZW5hYmxlLWNvcmdpLC0tZGlzYWJsZS1jb3JnaSIKK1BBQ0tBR0VDT05GSUdbY29sbGllXSA9ICItLWVuYWJsZS1jb2xsaWUsLS1kaXNhYmxlLWNvbGxpZSIKK1BBQ0tBR0VDT05GSUdbYXJjdGljMl0gPSAiLS1lbmFibGUtYXJjdGljMiwtLWRpc2FibGUtYXJjdGljMiIKK1BBQ0tBR0VDT05GSUdbZG1jX2R1czMwMDBdID0gIi0tZW5hYmxlLWRtY19kdXMzMDAwLC0tZGlzYWJsZS1kbWNfZHVzMzAwMCIKK1BBQ0tBR0VDT05GSUdbY3k4bXJsbi1wYWxtcHJlXSA9ICItLWVuYWJsZS1jeThtcmxuLXBhbG1wcmUsLS1kaXNhYmxlLWN5OG1ybG4tcGFsbXByZSIKK1BBQ0tBR0VDT05GSUdbZ2FsYXhdID0gIi0tZW5hYmxlLWdhbGF4LC0tZGlzYWJsZS1nYWxheCIKK1BBQ0tBR0VDT05GSUdbZGVidWddID0gIi0tZW5hYmxlLWRlYnVnLC0tZGlzYWJsZS1kZWJ1ZyIKKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3RzLmNvbmYgJHtTfS9ldGMvdHMuY29uZgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3Byb2ZpbGUuZC8KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS90c2xpYi5zaCAke0R9JHtzeXNjb25mZGlyfS9wcm9maWxlLmQvCit9CisKK1JQUk9WSURFU190c2xpYi1jb25mID0gImxpYnRzLTAuMC1jb25mIgorCitQQUNLQUdFUyA9KyAidHNsaWItY29uZiB0c2xpYi10ZXN0cyB0c2xpYi1jYWxpYnJhdGUgdHNsaWItdWlucHV0IgorREVCSUFOX05PQVVUT05BTUVfdHNsaWItY29uZiA9ICIxIgorREVCSUFOX05PQVVUT05BTUVfdHNsaWItdGVzdHMgPSAiMSIKK0RFQklBTl9OT0FVVE9OQU1FX3RzbGliLWNhbGlicmF0ZSA9ICIxIgorREVCSUFOX05PQVVUT05BTUVfdHNsaWItdWlucHV0ID0gIjEiCisKK1JERVBFTkRTXyR7UE59ID0gInRzbGliLWNvbmYiCitSUkVDT01NRU5EU18ke1BOfSA9ICJwb2ludGVyY2FsIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS90cy8qLmxhIgorRklMRVNfdHNsaWItY29uZiA9ICIke3N5c2NvbmZkaXJ9L3RzLmNvbmYgJHtzeXNjb25mZGlyfS9wcm9maWxlLmQvdHNsaWIuc2ggJHtkYXRhZGlyfS90c2xpYiIKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qLnNvLiogJHtsaWJkaXJ9L3RzLyouc28qIgorRklMRVNfdHNsaWItY2FsaWJyYXRlICs9ICIke2JpbmRpcn0vdHNfY2FsaWJyYXRlIgorRklMRVNfdHNsaWItdWlucHV0ICs9ICIke2JpbmRpcn0vdHNfdWlucHV0IgorCitGSUxFU190c2xpYi10ZXN0cyA9ICIke2JpbmRpcn0vdHNfaGFydmVzdCAke2JpbmRpcn0vdHNfcHJpbnQgJHtiaW5kaXJ9L3RzX3ByaW50X3JhdyAke2JpbmRpcn0vdHNfcHJpbnRfbXQgXAorICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3RzX3Rlc3QgJHtiaW5kaXJ9L3RzX3Rlc3RfbXQgJHtiaW5kaXJ9L3RzX3ZlcmlmeSAke2JpbmRpcn0vdHNfZmluZGRldiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3ZkcGF1L2xpYnZkcGF1X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3ZkcGF1L2xpYnZkcGF1X2dpdC5iYgppbmRleCAzMWY0ZGY0Li4zMWJjY2UwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy92ZHBhdS9saWJ2ZHBhdV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdmRwYXUvbGlidmRwYXVfZ2l0LmJiCkBAIC0xMiw3ICsxMiw5IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKICAgICBybSAtZiAke0R9JHtsaWJkaXJ9LyovKi5sYQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveGN1cnNvcmdlbi94Y3Vyc29yZ2VuXzEuMC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveGN1cnNvcmdlbi94Y3Vyc29yZ2VuXzEuMC41LmJiCmluZGV4IDI3YTM4YzEuLmEyMWRjNDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hjdXJzb3JnZW4veGN1cnNvcmdlbl8xLjAuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94Y3Vyc29yZ2VuL3hjdXJzb3JnZW5fMS4wLjUuYmIKQEAgLTcsNiArNyw4IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiMDlmNTY5NzhhNjI4NTQ1MzRkZWFjYzhhYThmZjMwMzEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmM3MTcxYTBmYTIxMmRhODY2ZmNhMjMwMTI0MTYzMGUyMDA5YWVhOGM0ZGRiNzVmMjFiNTFhMzFjMmU0YzU4MSIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvYmRmdG9wY2ZfMS4wLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9iZGZ0b3BjZl8xLjEuYmIKc2ltaWxhcml0eSBpbmRleCA3MCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvYmRmdG9wY2ZfMS4wLjUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL2JkZnRvcGNmXzEuMS5iYgppbmRleCAzNWQ1MDAyLi45MTE2YjVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9iZGZ0b3BjZl8xLjAuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9iZGZ0b3BjZl8xLjEuYmIKQEAgLTcsNyArNyw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mOWEzNTMzM2FkZjc1ZWRkMWVhZWY4NGJjYTY1YTQ5MCIKIERFUEVORFMgPSAibGlieGZvbnQiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI1M2E0OGUxZmRmZWMyOWFiMmU4OWY4NmQ0YjdjYTkwMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzOGY0NDdiZTBjNjFmOTRjNDczZjEyOGNmNTE5ZGQwY2ZmNjNiNWQ3Nzc1MjQwYTJlODk1YTE4M2E2MWUyMDI2IgorU1JDX1VSSVttZDVzdW1dID0gIjJhNDU1ZDNjMDIzOTA1OTdmZWI5Y2VmYjNmZTk3YTQ1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRiNGRmMDVmYzUzZjFlOTg5OTM2MzhkNmY3ZTE3OGQ5NWIzMTc0NWM0NTY4Y2VlNDA3ZTE2NzQ5MWZkMzExYTIiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvc2Vzc3JlZ18xLjEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3Nlc3NyZWdfMS4xLjEuYmIKc2ltaWxhcml0eSBpbmRleCA3MyUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvc2Vzc3JlZ18xLjEuMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvc2Vzc3JlZ18xLjEuMS5iYgppbmRleCAzODg1ZDYxLi5kMmFmYTc4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9zZXNzcmVnXzEuMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3Nlc3NyZWdfMS4xLjEuYmIKQEAgLTQsOCArNCw4IEBACiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ5MzhhNzBjODI4MGMyNjVhMWNjZDI5NTQzNjVkMTg1IgogU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tRXJyb3ItRml4LnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gImUyMzhjODlkYWJjNTY2ZTE4MzVlMWVjYjYxYjYwNWI5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU1MTE3NzY1NzgzNWUwOTAyYjVlZWU3YjE5NzEzMDM1YmVhYTE1ODFiYmQzYzY1MDZiYWE1NTNlNzUxZTAxN2MiCitTUkNfVVJJW21kNXN1bV0gPSAiZTQ3NTE2N2E4OTJiNTg5ZGEyM2VkZjhlZGY4Yzk0MmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzhhNzZhZTNmM2Y2YTI2NTQ3YTM0NjMwZDFiNzQwZjQyMzQ0ODQ4YjVmYjZkN2M5YzdmN2RhMjU1ZTM1YTZlMSIKIAogQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1EX1dUTVBYX0ZJTEU9V1RNUF9GSUxFIC1EX1BBVEhfV1RNUFg9X1BBVEhfV1RNUCAtRF9VVE1QWF9GSUxFPVVUTVBfRklMRSAtRF9QQVRIX1VUTVBYPV9QQVRIX1VUTVAgIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94bHNjbGllbnRzXzEuMS4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGxzY2xpZW50c18xLjEuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDc0JQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94bHNjbGllbnRzXzEuMS4zLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94bHNjbGllbnRzXzEuMS40LmJiCmluZGV4IDU4M2E1MzEuLjQyYmRhN2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hsc2NsaWVudHNfMS4xLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGxzY2xpZW50c18xLjEuNC5iYgpAQCAtMTAsNSArMTAsNSBAQAogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKIAotU1JDX1VSSVttZDVzdW1dID0gIjlmYmY2YjE3NGE1MTM4YTYxNzM4YTQyZTcwN2FkOGY1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVkOTY2NmZjYzZjM2RlMjEwZmM3MGQ1YTg0MWE0MDQ5NTVhZjcwOWE2MTZmZGU1MzBmZTRlOGY3NzIzZTNkM2QiCitTUkNfVVJJW21kNXN1bV0gPSAiNGZhOTIzNzdlMGRkYzEzN2NkMjI2YTdhODdiNmIyOWEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzczZjJhZjQ5YzdlYTJjNDRmYmE0MjEzYmVlNjQzMjU4NzVjMWIzYzliYzRiYmNkOGRhYzkyNjE3NTE4MDljMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hsc2ZvbnRzXzEuMC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGxzZm9udHNfMS4wLjYuYmIKc2ltaWxhcml0eSBpbmRleCA2NSUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGxzZm9udHNfMS4wLjUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hsc2ZvbnRzXzEuMC42LmJiCmluZGV4IDlmZWVkNzUuLjc2Yjc2ZTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hsc2ZvbnRzXzEuMC41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hsc2ZvbnRzXzEuMC42LmJiCkBAIC02LDUgKzYsNSBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZWM3NGRkN2VhNGQxMGM0NzE1YTdjNDRmMTU5YTQwYiIKIAotU1JDX1VSSVttZDVzdW1dID0gIjZmNTcxMWJlZjhjNzY1ODU3YTA4ODdhOTE0NzYyODNiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwMjk1YmVjMzUwNzdjZWU5M2JlMmU0YzI2Y2MwMDI2OGVkNmFjZTc3OWFlNmU5Nzc2NmE4NjZjMWUzOTI3ZmEiCitTUkNfVVJJW21kNXN1bV0gPSAiNTc3NGZkNGY1MThiM2YzMzhmMmIyOGYyNzBlMDRiZmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODliODBiM2EwMzAwMDZhYjZjZWY3MTdiZTI4NmMxMmYyNDc3ODk0YjIyNzE1OGIxZTYxMzMyNzRmNmViZDM2OCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h0ZXJtXzMzMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h0ZXJtXzMzMC5iYgppbmRleCBlM2JiMGZiLi4xNmY5Yjc4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94dGVybV8zMzAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHRlcm1fMzMwLmJiCkBAIC0yNywzICsyNyw4IEBACiB9CiAKIEZJTEVTXyR7UE59ICs9ICIvdXNyL2xpYi9YMTEiCisKKyMgYnVzeWJveCBjYW4gc3VwcGx5IHJlc2l6ZSB0b28KK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV8ke1BOfSA9ICJyZXNpemUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94d3VkXzEuMC40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHd1ZF8xLjAuNS5iYgpzaW1pbGFyaXR5IGluZGV4IDczJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94d3VkXzEuMC40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94d3VkXzEuMC41LmJiCmluZGV4IDMzYmQ3ZjAuLjdjYjU1MGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h3dWRfMS4wLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHd1ZF8xLjAuNS5iYgpAQCAtOCw1ICs4LDUgQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzFlODg5MmM4MGI3YTBjMWM1ZjM3YzhlOGFlNmQ3OTQiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIzMDI1YjE1MmI0ZjEzZmRmZmQwYzQ2ZDBiZTU4N2JlNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkNmIzYTA5Y2NmZTc1MDg2OGUyNmJkMjM4NDkwMGFiNWZmMGQ0MzRmN2Y0MGNkMjcyYTUwZWRhOGFhYTFmOGJkIgorU1JDX1VSSVttZDVzdW1dID0gIjc5OTcyMDkzYmIwNzY2ZmNkMDIyM2IyYmQ2ZDExOTMyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk5OTk3MDUxZjhhODkyMzEzZjIyZWRmNDFkYWI0NTg2NGU4NmU3MDYyZWU5MDEyZDVkYmI2YTQwZmM2YjEwYTkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRhdGEveG9yZy1kYXRhLWNvbW1vbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRhdGEveG9yZy1kYXRhLWNvbW1vbi5pbmMKaW5kZXggYjIzMDk2Mi4uY2I2YjVhYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kYXRhL3hvcmctZGF0YS1jb21tb24uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZGF0YS94b3JnLWRhdGEtY29tbW9uLmluYwpAQCAtNyw0ICs3LDYgQEAKIFNSQ19VUkkgPSAiJHtYT1JHX01JUlJPUn0vaW5kaXZpZHVhbC9kYXRhLyR7QlB9LnRhci5iejIiCiBTID0gIiR7V09SS0RJUn0vJHtYT1JHX1BOfS0ke1BWfSIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDEtQ09QWUlORy1hZGQtR1BMdjItbGljZW5zZS1maWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDAxLUNPUFlJTkctYWRkLUdQTHYyLWxpY2Vuc2UtZmlsZS5wYXRjaAppbmRleCAyOWRkNzFhLi4yYmZlODViIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDEtQ09QWUlORy1hZGQtR1BMdjItbGljZW5zZS1maWxlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwMS1DT1BZSU5HLWFkZC1HUEx2Mi1saWNlbnNlLWZpbGUucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDgzNGZhMDY5MjBmODhjZWVkZjc1Mjk2NGM4ZTI5NmM2NTNkNTQxZTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGY5MTk3MjU5MThmYWQyYjMyNTA0Zjg5YTI4MzEwZmNhZTRhYjA0MDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBZdSBLZSA8a2UueXVAaW50ZWwuY29tPgogRGF0ZTogV2VkLCAxMSBBcHIgMjAxMiAxNDoyNjoxNiArMDIwMAotU3ViamVjdDogW1BBVENIIDAxLzEyXSBDT1BZSU5HOiBhZGQgR1BMdjIgbGljZW5zZSBmaWxlCitTdWJqZWN0OiBbUEFUQ0hdIENPUFlJTkc6IGFkZCBHUEx2MiBsaWNlbnNlIGZpbGUKIAogdGhpcyBpcyBhIGxvY2FsIGZpbGUgcmVjaXBlIGFuZCB0aGUgbGljZW5zZSBmaWxlIGlzIG1pc3NpbmcuSW4gb3JkZXIKIHRvIHBhc3MgdGhlIGxpY2Vuc2UgY2hlY2tzdW0gY2hlY2tpbmcsIHRoZSBsaWNlbnNlIGZpbGUgaXMgbmVlZGVkLiBTbwpAQCAtOSw5ICs5LDEwIEBACiAKIFNpZ25lZC1vZmYtYnk6IFl1IEtlIDxrZS55dUBpbnRlbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CisKIC0tLQotIENPUFlJTkcgfCAgMzM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDEgZmlsZXMgY2hhbmdlZCwgMzM5IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCisgQ09QWUlORyB8IDMzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDMzOSBpbnNlcnRpb25zKCspCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IENPUFlJTkcKIAogZGlmZiAtLWdpdCBhL0NPUFlJTkcgYi9DT1BZSU5HCkBAIC0zNTksNiArMzYwLDMgQEAKICtjb25zaWRlciBpdCBtb3JlIHVzZWZ1bCB0byBwZXJtaXQgbGlua2luZyBwcm9wcmlldGFyeSBhcHBsaWNhdGlvbnMgd2l0aCB0aGUKICtsaWJyYXJ5LiAgSWYgdGhpcyBpcyB3aGF0IHlvdSB3YW50IHRvIGRvLCB1c2UgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbAogK1B1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLgotLS0gCi0xLjcuOC41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwMS1Eb24tdC1pbnN0YWxsLVhzZXNzaW9uLW9yLVhzZXJ2ZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDEtRG9uLXQtaW5zdGFsbC1Yc2Vzc2lvbi1vci1Yc2VydmVyLnBhdGNoCmluZGV4IDI2Mjg4ZDYuLjBlZDEyZDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwMS1Eb24tdC1pbnN0YWxsLVhzZXNzaW9uLW9yLVhzZXJ2ZXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDAxLURvbi10LWluc3RhbGwtWHNlc3Npb24tb3ItWHNlcnZlci5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYzkyY2U2YTRiMzYyMjg3NGY4MjBiNWVjNDg3YTJiNjNmNTE5ODI2YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMTAwMmExMTM3YjE0MGRhZDMzMTliZjMyMDZmZWM1YjZjNmI3NGZlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CiBEYXRlOiBUaHUsIDEwIE5vdiAyMDE2IDE0OjMzOjA1ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIERvbid0IGluc3RhbGwgWHNlc3Npb24gb3IgWHNlcnZlcgpAQCAtOCwxNSArOCwxNiBAQAogYmUgdXNlZCBhcyBiZWZvcmUuCiAKIFNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CisKIC0tLQotIE1ha2VmaWxlIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKyBNYWtlZmlsZSB8IDIgLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IGNhYTVkZTEuLjdlMzZiYmMgMTAwNjQ0CitpbmRleCBjYWE1ZGUxLi45NDI4MjA1IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUKICsrKyBiL01ha2VmaWxlCi1AQCAtMjAsNyArMjAsNSBAQCBpbnN0YWxsLXByb2dyYW06CitAQCAtMjAsOCArMjAsNiBAQCBpbnN0YWxsLXByb2dyYW06CiAgCWluc3RhbGwgLW0gNzU1IHJ1bi1jYWxpYnJhdGUuc2ggJChERVNURElSKSQoUFJFRklYKS9iaW4vcnVuLWNhbGlicmF0ZS5zaAogIAlpbnN0YWxsIC1tIDY0NCBYMTEvWGRlZmF1bHRzICQoREVTVERJUikvZXRjL1gxMS9YZGVmYXVsdHMKICAJaW5zdGFsbCAtbSA3NTUgWDExL1hpbml0ICQoREVTVERJUikvZXRjL1gxMS9YaW5pdApAQCAtMjUsNiArMjYsMyBAQAogIAlpbnN0YWxsIC1tIDc1NSBYMTEveHNlcnZlci1jb21tb24gJChERVNURElSKS9ldGMvWDExL3hzZXJ2ZXItY29tbW9uCiAgCWluc3RhbGwgLW0gNzU1IFgxMS9mdW5jdGlvbnMgJChERVNURElSKS9ldGMvWDExL2Z1bmN0aW9ucwogIAlpbnN0YWxsIC1kICQoREVTVERJUikvZXRjL1gxMS94bW9kbWFwCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwMi1hZGQtc2V0ZHBpLVhpbml0LmQtc2NyaXB0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDAyLWFkZC1zZXRkcGktWGluaXQuZC1zY3JpcHQucGF0Y2gKaW5kZXggMjNiNTM0NS4uMGJlM2ZhNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDAyLWFkZC1zZXRkcGktWGluaXQuZC1zY3JpcHQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDAyLWFkZC1zZXRkcGktWGluaXQuZC1zY3JpcHQucGF0Y2gKQEAgLTEsMTIgKzEsMTMgQEAKLUZyb20gM2QxYTFhODI3MzExMjY2ODkyN2E2YzZiYjNlMzYxZTg5NmY1YjIyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gM2I1ZjQzMWEzNzAwNTRiZmMwOTA3OTZlOGQ1NWRlOGM4Y2VhNDZmNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTEgQXByIDIwMTIgMTQ6Mjg6NDUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAwMi8xMl0gYWRkIHNldGRwaSBYaW5pdC5kIHNjcmlwdAorU3ViamVjdDogW1BBVENIXSBhZGQgc2V0ZHBpIFhpbml0LmQgc2NyaXB0CiAKIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKwogLS0tCi0gWDExL1hpbml0LmQvNTBzZXRkcGkgfCAgIDkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCA5MiBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQorIFgxMS9YaW5pdC5kLzUwc2V0ZHBpIHwgOTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA5MiBpbnNlcnRpb25zKCspCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFgxMS9YaW5pdC5kLzUwc2V0ZHBpCiAKIGRpZmYgLS1naXQgYS9YMTEvWGluaXQuZC81MHNldGRwaSBiL1gxMS9YaW5pdC5kLzUwc2V0ZHBpCkBAIC0xMDcsNiArMTA4LDMgQEAKICsKICtzZXRfZHBpICIkU0VUX1NDUkVFTl9EUEkiCiArc2V0X3J4dnRfZm9udCAiJFNDUkVFTl9EUEkiCi0tLSAKLTEuNy44LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDA2LWFkZC1zdXBwb3J0LWZvci1ldGMtWDExLXhzZXJ2ZXItc3lzdGVtLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDA2LWFkZC1zdXBwb3J0LWZvci1ldGMtWDExLXhzZXJ2ZXItc3lzdGVtLnBhdGNoCmluZGV4IDdlZTg1NzIuLjUzYTI4M2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwNi1hZGQtc3VwcG9ydC1mb3ItZXRjLVgxMS14c2VydmVyLXN5c3RlbS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDYtYWRkLXN1cHBvcnQtZm9yLWV0Yy1YMTEteHNlcnZlci1zeXN0ZW0ucGF0Y2gKQEAgLTEsMTUgKzEsMTYgQEAKLUZyb20gMGM0MmUxZmI4NGNjMmJmZTc2OGJlZDE3ZjNiOTc5YWNhODY4Y2Y2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYjYwZTM2NGMzNWQ1NmEyYTMxNjQyNTRkOThjOTkzMWJmYTNmZWVkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTEgQXByIDIwMTIgMTQ6MzQ6NDMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAwNi8xMl0gYWRkIHN1cHBvcnQgZm9yIC9ldGMvWDExL3hzZXJ2ZXItc3lzdGVtCitTdWJqZWN0OiBbUEFUQ0hdIGFkZCBzdXBwb3J0IGZvciAvZXRjL1gxMS94c2VydmVyLXN5c3RlbQogCiBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CisKIC0tLQotIFgxMS94c2VydmVyLWNvbW1vbiB8ICAgIDUgKysrKysKLSAxIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKKyBYMTEveHNlcnZlci1jb21tb24gfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvWDExL3hzZXJ2ZXItY29tbW9uIGIvWDExL3hzZXJ2ZXItY29tbW9uCi1pbmRleCA0YzdlZDZlLi42ZDhjOWRmIDEwMDY0NAoraW5kZXggNTI2NTVjYi4uYmI3YzJmZiAxMDA2NDQKIC0tLSBhL1gxMS94c2VydmVyLWNvbW1vbgogKysrIGIvWDExL3hzZXJ2ZXItY29tbW9uCiBAQCAtMjA0LDMgKzIwNCw4IEBAIGZpCkBAIC0yMSw2ICsyMiwzIEBACiAraWYgWyAtZSAvZXRjL1gxMS94c2VydmVyLXN5c3RlbSBdIDsgdGhlbiAgICAgICAgICAgICAgICAgICAgCiArICAgICAgIC4gL2V0Yy9YMTEveHNlcnZlci1zeXN0ZW0gICAgICAgICAgICAgICAgICAgIAogK2ZpICAgICAgICAgICAgICAgICAgICAKLS0tIAotMS43LjguNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDctdXNlLW93bi1mdW5jdGlvbnMtZmlsZS1pbnN0ZWFkLWV0Yy1pbml0LmQtZnVuY3Rpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDA3LXVzZS1vd24tZnVuY3Rpb25zLWZpbGUtaW5zdGVhZC1ldGMtaW5pdC5kLWZ1bmN0aW9ucy5wYXRjaAppbmRleCA4NzkxMjI2Li45NGEzNTQwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDctdXNlLW93bi1mdW5jdGlvbnMtZmlsZS1pbnN0ZWFkLWV0Yy1pbml0LmQtZnVuY3Rpb25zLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwNy11c2Utb3duLWZ1bmN0aW9ucy1maWxlLWluc3RlYWQtZXRjLWluaXQuZC1mdW5jdGlvbnMucGF0Y2gKQEAgLTEsMTcgKzEsMTggQEAKLUZyb20gNjNlNmI5YTU0ZTFmMTJkYmY3ZGRiZmUzMzc2ZmZmNGMzODI0MjFhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDkyYzY1YTMyYTRhZTQ0YzM0NTgwZWQ4YWM1ZDNmNTBhMTU1Y2ZlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTEgQXByIDIwMTIgMTQ6MzY6MDIgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8xMl0gdXNlIG93biBmdW5jdGlvbnMgZmlsZSBpbnN0ZWFkIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucworU3ViamVjdDogW1BBVENIXSB1c2Ugb3duIGZ1bmN0aW9ucyBmaWxlIGluc3RlYWQgL2V0Yy9pbml0LmQvZnVuY3Rpb25zCiAKICogc28gd2UgZG9uJ3QgaGF2ZSB0byBkZXBlbmQgb24gaW5pdHNjcmlwdHMKIAogU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorCiAtLS0KLSBNYWtlZmlsZSAgICAgICAgICAgICB8ICAgIDEgKwotIFgxMS9YaW5pdC5kLzExemF1cnVzIHwgICAgMiArLQotIFgxMS9YaW5pdC5kLzEya2V5bWFwIHwgICAgMiArLQotIFgxMS9mdW5jdGlvbnMgICAgICAgIHwgICAxMSArKysrKysrKysrKwotIFgxMS94c2VydmVyLWNvbW1vbiAgIHwgICAgMiArLQorIE1ha2VmaWxlICAgICAgICAgICAgIHwgIDEgKworIFgxMS9YaW5pdC5kLzExemF1cnVzIHwgIDIgKy0KKyBYMTEvWGluaXQuZC8xMmtleW1hcCB8ICAyICstCisgWDExL2Z1bmN0aW9ucyAgICAgICAgfCAxMSArKysrKysrKysrKworIFgxMS94c2VydmVyLWNvbW1vbiAgIHwgIDIgKy0KICA1IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFgxMS9mdW5jdGlvbnMKIApAQCAtNzAsNyArNzEsNyBAQAogKwkJeyBnc3ViKCIgIiwgIl8iLCAkMik7IHByaW50IHRvbG93ZXIoJDIpIH0gJyA8L3Byb2MvY3B1aW5mbwogK30KIGRpZmYgLS1naXQgYS9YMTEveHNlcnZlci1jb21tb24gYi9YMTEveHNlcnZlci1jb21tb24KLWluZGV4IDZkOGM5ZGYuLmRlOTJiYjcgMTAwNjQ0CitpbmRleCBiYjdjMmZmLi5kNjIyZjJhIDEwMDY0NAogLS0tIGEvWDExL3hzZXJ2ZXItY29tbW9uCiArKysgYi9YMTEveHNlcnZlci1jb21tb24KIEBAIC0zMCw3ICszMCw3IEBAIGlmIFsgLWYgL2V0Yy9wcm9maWxlIF07IHRoZW4KQEAgLTgyLDYgKzgzLDMgQEAKICAKICBmYWxsYmFja19zY3JlZW5fYXJnKCkgewogICAgICBnZW9tPWBmYnNldCB8IGdyZXAgZ2VvbWV0cnlgCi0tLSAKLTEuNy44LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDA4LXhzZXJ2ZXItY29tbW9uLWFkZC1kcGktYW5kLW5vY3Vyc29yLXBhcmFtcy1mb3ItZ3RhMDEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDgteHNlcnZlci1jb21tb24tYWRkLWRwaS1hbmQtbm9jdXJzb3ItcGFyYW1zLWZvci1ndGEwMS5wYXRjaAppbmRleCBlMzVlNGE3Li45MGQwZjI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDgteHNlcnZlci1jb21tb24tYWRkLWRwaS1hbmQtbm9jdXJzb3ItcGFyYW1zLWZvci1ndGEwMS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDgteHNlcnZlci1jb21tb24tYWRkLWRwaS1hbmQtbm9jdXJzb3ItcGFyYW1zLWZvci1ndGEwMS5wYXRjaApAQCAtMSwxNiArMSwxNyBAQAotRnJvbSAwZWU3YmY4N2UwYzgzYWJjNzlkZTNhOTlkZmEzYzg3ZGQ1YzViMjI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlMmFiYmUxMTBlNzFhN2I0YjU2NTY0ZTZiOWQ1OGZmYTdmMzRhOWU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgogRGF0ZTogV2VkLCAxMSBBcHIgMjAxMiAxNDozNzoyOSArMDIwMAotU3ViamVjdDogW1BBVENIIDA4LzEyXSB4c2VydmVyLWNvbW1vbjogYWRkIGRwaSBhbmQgbm9jdXJzb3IgcGFyYW1zIGZvciBndGEwMQotIGFuZCBndGEwMgorU3ViamVjdDogW1BBVENIXSB4c2VydmVyLWNvbW1vbjogYWRkIGRwaSBhbmQgbm9jdXJzb3IgcGFyYW1zIGZvciBndGEwMSBhbmQKKyBndGEwMgogCiBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CisKIC0tLQotIFgxMS94c2VydmVyLWNvbW1vbiB8ICAgIDggKysrKysrLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKyBYMTEveHNlcnZlci1jb21tb24gfCA4ICsrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL1gxMS94c2VydmVyLWNvbW1vbiBiL1gxMS94c2VydmVyLWNvbW1vbgotaW5kZXggZGU5MmJiNy4uZjc2ZmE1ZiAxMDA2NDQKK2luZGV4IGQ2MjJmMmEuLmEyYzA1OTEgMTAwNjQ0CiAtLS0gYS9YMTEveHNlcnZlci1jb21tb24KICsrKyBiL1gxMS94c2VydmVyLWNvbW1vbgogQEAgLTEzMywxNSArMTMzLDE5IEBAIGVsc2UKQEAgLTM1LDYgKzM2LDMgQEAKICAgICAgICAgICAgICBmaQogICAgICAgICAgICAgIDs7CiAgICAgICAgICAibW90b3JvbGFfZXp4X3BsYXRmb3JtIikKLS0tIAotMS43LjguNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDkteHNlcnZlci1jb21tb24tYWRkLXN1cHBvcnQtZm9yLW45MDAtYWxpYXMtbm9raWFfcngtNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwOS14c2VydmVyLWNvbW1vbi1hZGQtc3VwcG9ydC1mb3ItbjkwMC1hbGlhcy1ub2tpYV9yeC01LnBhdGNoCmluZGV4IDFhMGJkZTguLjhmYjY5YjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwOS14c2VydmVyLWNvbW1vbi1hZGQtc3VwcG9ydC1mb3ItbjkwMC1hbGlhcy1ub2tpYV9yeC01LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwOS14c2VydmVyLWNvbW1vbi1hZGQtc3VwcG9ydC1mb3ItbjkwMC1hbGlhcy1ub2tpYV9yeC01LnBhdGNoCkBAIC0xLDE2ICsxLDE2IEBACi1Gcm9tIDZkNmNhZWNiNzE3MmI5YjMzZTczNjQ1NjRiMGU2ZWFiZjY3YjZlOGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGYyZDgwOGNlYTViOWY2OTE1OGY4MmUxNmMwNmY4ODJhNmRiMTBkNjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDExIEFwciAyMDEyIDE0OjQwOjE0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMTJdIHhzZXJ2ZXItY29tbW9uOiBhZGQgc3VwcG9ydCBmb3IgbjkwMCBhbGlhcwotIG5va2lhX3J4LTUxX2JvYXJkCitTdWJqZWN0OiBbUEFUQ0hdIHhzZXJ2ZXItY29tbW9uOiBhZGQgc3VwcG9ydCBmb3IgbjkwMCBhbGlhcyBub2tpYV9yeC01MV9ib2FyZAogCiBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CisKIC0tLQotIFgxMS94c2VydmVyLWNvbW1vbiB8ICAgIDcgKysrKysrKwotIDEgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQorIFgxMS94c2VydmVyLWNvbW1vbiB8IDcgKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL1gxMS94c2VydmVyLWNvbW1vbiBiL1gxMS94c2VydmVyLWNvbW1vbgotaW5kZXggZjc2ZmE1Zi4uODZlZDE3ZiAxMDA2NDQKK2luZGV4IGEyYzA1OTEuLmI4YzM3ZTYgMTAwNjQ0CiAtLS0gYS9YMTEveHNlcnZlci1jb21tb24KICsrKyBiL1gxMS94c2VydmVyLWNvbW1vbgogQEAgLTEzMiw2ICsxMzIsMTMgQEAgZWxzZQpAQCAtMjcsNiArMjcsMyBAQAogICAgICAgICAgImd0YTAxIiApCiAgICAgICAgICAgICAgRFBJPSIyODAiCiAgICAgICAgICAgICAgaWYgWyAiJFhTRVJWRVIiICE9ICJYb3JnIiBdIDsgdGhlbgotLS0gCi0xLjcuOC41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAxMC14c2VydmVyLWNvbW1vbi1hZGQtc3VwcG9ydC1mb3ItbmV4dXMtUy1hbGlhcy1oZXJyaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDEwLXhzZXJ2ZXItY29tbW9uLWFkZC1zdXBwb3J0LWZvci1uZXh1cy1TLWFsaWFzLWhlcnJpbmcucGF0Y2gKaW5kZXggNjg4YmU0MC4uZDMwYzdiYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDEwLXhzZXJ2ZXItY29tbW9uLWFkZC1zdXBwb3J0LWZvci1uZXh1cy1TLWFsaWFzLWhlcnJpbmcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDEwLXhzZXJ2ZXItY29tbW9uLWFkZC1zdXBwb3J0LWZvci1uZXh1cy1TLWFsaWFzLWhlcnJpbmcucGF0Y2gKQEAgLTEsMTUgKzEsMTYgQEAKLUZyb20gNTIwMDNlNmI1MmIxNDE3YzFhMGU1NzI0M2Q4MzM0OWFkZGNkYWNmNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTE5NGJhMjAxM2Y5ZTU4Y2Y3M2NkMzliNTdiZTY4Mzg2ZTUwMWVkYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTEgQXByIDIwMTIgMTQ6NDA6NDQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8xMl0geHNlcnZlci1jb21tb246IGFkZCBzdXBwb3J0IGZvciBuZXh1cyBTIGFsaWFzIGhlcnJpbmcKK1N1YmplY3Q6IFtQQVRDSF0geHNlcnZlci1jb21tb246IGFkZCBzdXBwb3J0IGZvciBuZXh1cyBTIGFsaWFzIGhlcnJpbmcKIAogU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorCiAtLS0KLSBYMTEveHNlcnZlci1jb21tb24gfCAgICAzICsrKwotIDEgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQorIFgxMS94c2VydmVyLWNvbW1vbiB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvWDExL3hzZXJ2ZXItY29tbW9uIGIvWDExL3hzZXJ2ZXItY29tbW9uCi1pbmRleCA4NmVkMTdmLi41YzlhNmViIDEwMDY0NAoraW5kZXggYjhjMzdlNi4uOWFhNmIyNCAxMDA2NDQKIC0tLSBhL1gxMS94c2VydmVyLWNvbW1vbgogKysrIGIvWDExL3hzZXJ2ZXItY29tbW9uCiBAQCAtMTI2LDYgKzEyNiw5IEBAIGVsc2UKQEAgLTIyLDYgKzIzLDMgQEAKICAgICAgICAgICJnZW5lcmljX29tYXAxNTEwLzE2MTAvMTcxMCIpCiAgICAgICAgICAgICAgQVJHUz0iJEFSR1MgLXNjcmVlbiAke1NDUkVFTl9TSVpFfSIKICAgICAgICAgICAgICBEUEk9IjIyNSIgOzsKLS0tIAotMS43LjguNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMTEteHNlcnZlci1jb21tb24tYWRkLXN1cHBvcnQtZm9yLW5leHVzLW9uZS1hbGlhcy1tYWhpbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAxMS14c2VydmVyLWNvbW1vbi1hZGQtc3VwcG9ydC1mb3ItbmV4dXMtb25lLWFsaWFzLW1haGltLnBhdGNoCmluZGV4IGY4MDQ1NmQuLjIzZTE3ZjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAxMS14c2VydmVyLWNvbW1vbi1hZGQtc3VwcG9ydC1mb3ItbmV4dXMtb25lLWFsaWFzLW1haGltLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAxMS14c2VydmVyLWNvbW1vbi1hZGQtc3VwcG9ydC1mb3ItbmV4dXMtb25lLWFsaWFzLW1haGltLnBhdGNoCkBAIC0xLDE2ICsxLDE2IEBACi1Gcm9tIDBlY2M5NzhiN2Q4Y2I2ODY3NjQ2ZmIyYTI5NTIzZWJlZjNhZmEwMTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGRmZDgzMmIzNWI2Y2I0Y2YyYjZmMmI1MWRmN2IwOTk5ZjEwYzhjYTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDExIEFwciAyMDEyIDE0OjQxOjA2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMTJdIHhzZXJ2ZXItY29tbW9uOiBhZGQgc3VwcG9ydCBmb3IgbmV4dXMgb25lIGFsaWFzCi0gbWFoaW1haGkKK1N1YmplY3Q6IFtQQVRDSF0geHNlcnZlci1jb21tb246IGFkZCBzdXBwb3J0IGZvciBuZXh1cyBvbmUgYWxpYXMgbWFoaW1haGkKIAogU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorCiAtLS0KLSBYMTEveHNlcnZlci1jb21tb24gfCAgICAzICsrKwotIDEgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQorIFgxMS94c2VydmVyLWNvbW1vbiB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvWDExL3hzZXJ2ZXItY29tbW9uIGIvWDExL3hzZXJ2ZXItY29tbW9uCi1pbmRleCA1YzlhNmViLi41NTU5NGZkIDEwMDY0NAoraW5kZXggOWFhNmIyNC4uOGRhOTI2ZSAxMDA2NDQKIC0tLSBhL1gxMS94c2VydmVyLWNvbW1vbgogKysrIGIvWDExL3hzZXJ2ZXItY29tbW9uCiBAQCAtMTI5LDYgKzEyOSw5IEBAIGVsc2UKQEAgLTIzLDYgKzIzLDMgQEAKICAgICAgICAgICJnZW5lcmljX29tYXAxNTEwLzE2MTAvMTcxMCIpCiAgICAgICAgICAgICAgQVJHUz0iJEFSR1MgLXNjcmVlbiAke1NDUkVFTl9TSVpFfSIKICAgICAgICAgICAgICBEUEk9IjIyNSIgOzsKLS0tIAotMS43LjguNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMTIteHNlcnZlci1jb21tb24tYWRkLXN1cHBvcnQtZm9yLWd0YTA0LWFsaWFzLU9wZW5QaG9lbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAxMi14c2VydmVyLWNvbW1vbi1hZGQtc3VwcG9ydC1mb3ItZ3RhMDQtYWxpYXMtT3BlblBob2VuLnBhdGNoCmluZGV4IDU0YTAzMjkuLjVlNzk0ZjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAxMi14c2VydmVyLWNvbW1vbi1hZGQtc3VwcG9ydC1mb3ItZ3RhMDQtYWxpYXMtT3BlblBob2VuLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAxMi14c2VydmVyLWNvbW1vbi1hZGQtc3VwcG9ydC1mb3ItZ3RhMDQtYWxpYXMtT3BlblBob2VuLnBhdGNoCkBAIC0xLDE2ICsxLDE2IEBACi1Gcm9tIGQxOTRmMDMwMjU4MmYxY2E1OTlmMmVhNThjMTVlMTVmNGZkNmJkZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGQ5ZTA1ZTUzYjMwYzY2NzA1ODUyMjU2ZmY1YzYwMzI1MmFhOTRiMmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDExIEFwciAyMDEyIDE0OjQxOjUyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvMTJdIHhzZXJ2ZXItY29tbW9uOiBhZGQgc3VwcG9ydCBmb3IgZ3RhMDQgYWxpYXMKLSBPcGVuUGhvZW51eAorU3ViamVjdDogW1BBVENIXSB4c2VydmVyLWNvbW1vbjogYWRkIHN1cHBvcnQgZm9yIGd0YTA0IGFsaWFzIE9wZW5QaG9lbnV4CiAKIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKwogLS0tCi0gWDExL3hzZXJ2ZXItY29tbW9uIHwgICAgOCArKysrKysrKwotIDEgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQorIFgxMS94c2VydmVyLWNvbW1vbiB8IDggKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9YMTEveHNlcnZlci1jb21tb24gYi9YMTEveHNlcnZlci1jb21tb24KLWluZGV4IDU1NTk0ZmQuLjQzNDMzM2UgMTAwNjQ0CitpbmRleCA4ZGE5MjZlLi5kOTMyNWRkIDEwMDY0NAogLS0tIGEvWDExL3hzZXJ2ZXItY29tbW9uCiArKysgYi9YMTEveHNlcnZlci1jb21tb24KIEBAIC0xNjEsNiArMTYxLDE0IEBAIGVsc2UKQEAgLTI4LDYgKzI4LDMgQEAKICAgICAgICAgICJtb3Rvcm9sYV9lenhfcGxhdGZvcm0iKQogICAgICAgICAgICAgIEFSR1M9IiRBUkdTIC1zY3JlZW4gMjQweDMyMCIKICAgICAgICAgICAgICBEUEk9IjE3MCIgOzsKLS0tIAotMS43LjguNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMTMteHNlcnZlci1jb21tb24tYWRkLXN1cHBvcnQtZm9yLXR1bmEtYWxpYXMtR2FsYXh5LU5leC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAxMy14c2VydmVyLWNvbW1vbi1hZGQtc3VwcG9ydC1mb3ItdHVuYS1hbGlhcy1HYWxheHktTmV4LnBhdGNoCmluZGV4IDQ5MzIxZWIuLjc4ZDJlNDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAxMy14c2VydmVyLWNvbW1vbi1hZGQtc3VwcG9ydC1mb3ItdHVuYS1hbGlhcy1HYWxheHktTmV4LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAxMy14c2VydmVyLWNvbW1vbi1hZGQtc3VwcG9ydC1mb3ItdHVuYS1hbGlhcy1HYWxheHktTmV4LnBhdGNoCkBAIC0xLDEzICsxLDEzIEBACi1Gcm9tIDE3NmMzYmQzZDg2YzIyM2ZkNDRiMGYxNWI2MmQzODUyNmJiM2IwZDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDU3YWI1MjFmZmMxMDI0ZjIxMTA1Y2ExNGJlMmQwNDFhNDc3OTQyYjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDE3IEF1ZyAyMDEyIDEzOjAwOjU2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMTMvMTNdIHhzZXJ2ZXItY29tbW9uOiBhZGQgc3VwcG9ydCBmb3IgdHVuYSBhbGlhcyBHYWxheHkKLSBOZXh1cworU3ViamVjdDogW1BBVENIXSB4c2VydmVyLWNvbW1vbjogYWRkIHN1cHBvcnQgZm9yIHR1bmEgYWxpYXMgR2FsYXh5IE5leHVzCiAKIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKwogLS0tCi0gWDExL3hzZXJ2ZXItY29tbW9uIHwgICAgOCArKysrKysrKwotIDEgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQorIFgxMS94c2VydmVyLWNvbW1vbiB8IDggKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9YMTEveHNlcnZlci1jb21tb24gYi9YMTEveHNlcnZlci1jb21tb24KIGluZGV4IGQ5MzI1ZGQuLjAxN2U1YWUgMTAwNjQ0CkBAIC0yOCw2ICsyOCwzIEBACiAgICAgICAgICAibW90b3JvbGFfZXp4X3BsYXRmb3JtIikKICAgICAgICAgICAgICBBUkdTPSIkQVJHUyAtc2NyZWVuIDI0MHgzMjAiCiAgICAgICAgICAgICAgRFBJPSIxNzAiIDs7Ci0tLSAKLTEuNy44LjYKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDE1LXhzZXJ2ZXItY29tbW9uLWRpc2FibGUtVENQLWNvbm5lY3Rpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDE1LXhzZXJ2ZXItY29tbW9uLWRpc2FibGUtVENQLWNvbm5lY3Rpb25zLnBhdGNoCmluZGV4IDA2ZGYyNjEuLmE3MzE5MTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAxNS14c2VydmVyLWNvbW1vbi1kaXNhYmxlLVRDUC1jb25uZWN0aW9ucy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMTUteHNlcnZlci1jb21tb24tZGlzYWJsZS1UQ1AtY29ubmVjdGlvbnMucGF0Y2gKQEAgLTEsMyArMSw0IEBACitGcm9tIDUyMzYyMDllMzBlMGY0NTExM2UxNDBmMDY2N2M4ZmZjZmU2MjE1MzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKYXZpZXIgVmlndWVyYSA8amF2aWVyLnZpZ3VlcmFAZGlnaS5jb20+CiBEYXRlOiBXZWQsIDI2IE5vdiAyMDE0IDA5OjI0OjQ0ICswMTAwCiBTdWJqZWN0OiBbUEFUQ0hdIHhzZXJ2ZXItY29tbW9uOiBkaXNhYmxlIFRDUCBjb25uZWN0aW9ucwpAQCAtNSwxMiArNiwxMyBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogCiBTaWduZWQtb2ZmLWJ5OiBKYXZpZXIgVmlndWVyYSA8amF2aWVyLnZpZ3VlcmFAZGlnaS5jb20+CisKIC0tLQogIFgxMS94c2VydmVyLWNvbW1vbiB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL1gxMS94c2VydmVyLWNvbW1vbiBiL1gxMS94c2VydmVyLWNvbW1vbgotaW5kZXggMDE3ZTVhZWUxYWIwLi40ZGM0OGM0MTI3NDEgMTAwNjQ0CitpbmRleCAwMTdlNWFlLi40ZGM0OGM0IDEwMDY0NAogLS0tIGEvWDExL3hzZXJ2ZXItY29tbW9uCiArKysgYi9YMTEveHNlcnZlci1jb21tb24KIEBAIC00NCw3ICs0NCw3IEBAIFNDUkVFTl9TSVpFPWBmYWxsYmFja19zY3JlZW5fYXJnYApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb25fMS4zNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uXzEuMzQuYmIKaW5kZXggY2MzMDU0MS4uYTVlZDIxZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb25fMS4zNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbl8xLjM0LmJiCkBAIC01LDcgKzUsOSBAQAogUFIgPSAicjkiCiAKICMgd2UgYXJlIHVzaW5nIGEgZ3BlLXN0eWxlIE1ha2VmaWxlCi1pbmhlcml0IGdwZQoraW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ3BlCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI4MmYyZjg0Y2Q5NjYxMGU4ZjdiOTJjNzAwY2QzMWMxNCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJjZDA0YzMzNDE4Zjc3NmIxZTEzZmNjN2FmM2Q2YmQwYzdjY2NkMDNmYmFiZDdkYmNkOTdmODgxNjZjYzM0MjEwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NwdXBvd2VyL2NwdXBvd2VyLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NwdXBvd2VyL2NwdXBvd2VyLmJiCmluZGV4IGM5NjNjOGUuLjRhYmQyNzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcHVwb3dlci9jcHVwb3dlci5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3B1cG93ZXIvY3B1cG93ZXIuYmIKQEAgLTMsNyArMyw3IEBACiBzYXZpbmcgcmVsYXRlZCBmZWF0dXJlcyBvZiB5b3VyIHByb2Nlc3Nvci4iCiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDc4MTBmYWI3NDg3ZmIwYWFkMzI3Yjc2ZjFiZTdjZDciCi1ERVBFTkRTID0gInBjaXV0aWxzIgorREVQRU5EUyA9ICJwY2l1dGlscyBnZXR0ZXh0LW5hdGl2ZSIKIFBST1ZJREVTID0gInZpcnR1YWwvY3B1cG93ZXIiCiAKIGluaGVyaXQga2VybmVsc3JjIGtlcm5lbC1hcmNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3Jhc2gvY3Jhc2gvMDAwNC1jcmFzaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLW1pcHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3Jhc2gvY3Jhc2gvMDAwNC1jcmFzaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLW1pcHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlN2NlNmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoLzAwMDQtY3Jhc2gtZml4LWJ1aWxkLWZhaWx1cmUtd2l0aC1taXBzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotRnJvbSA0MjNlYmRjZTA3YWE5ZjM5OGYzMmMwYWRmNjU5MzUzMDY5ZDAyM2M2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgNCBNYXkgMjAxNyAwNzoxNDoxMyArMDAwMAotU3ViamVjdDogW1BBVENIXSBjcmFzaDogZml4IGJ1aWxkIGZhaWx1cmUgd2l0aCBtaXBzCi0KLVdoZW4gYnVpbGQgY3Jhc2ggd2l0aCBtaXBzOgotCi1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLW1pcHMtbGludXgtbmF0LmM6MTU3OjE6IGVycm9yOiBjb25mbGljdGluZyB0eXBlcyBmb3IgJ3BzX2dldF90aHJlYWRfYXJlYScKLSBwc19nZXRfdGhyZWFkX2FyZWEgKGNvbnN0IHN0cnVjdCBwc19wcm9jaGFuZGxlICpwaCwKLSBefn5+fn5+fn5+fn5+fn5+fn4KLUluIGZpbGUgaW5jbHVkZWQgZnJvbSBnZGJfcHJvY19zZXJ2aWNlLmg6MjY6MCwKLSAgICAgICAgICAgICAgICAgZnJvbSBtaXBzLWxpbnV4LW5hdC5jOjMyOgotfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci0KLVRoaXMgcHJvYmxlbSBoYXZlIGJlZW4gZml4ZWQgb24gaW50ZWwgYW5kIGFybSBwbGFudGZvcm0sIHdlIGNhbiB1c2UgdGhlCi1zaW1pbGFyIGFwcHJvY2ggdG8gZml4IGl0IG9uIG1pcHMuCi0KLVVwc3RyZWFtLXN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vY3Jhc2gtdXRpbGl0eS9jcmFzaC9wdWxsLzExXQotCi1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwotIGNyYXNoLWZpeC1idWlsZC1mYWlsdXJlLXdpdGgtbWlwcy5wYXRjaCB8IDM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBjcmFzaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLW1pcHMucGF0Y2gKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDU0OTY1MjMuLjJlYzMzMjUgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKLUBAIC0yNjgsNiArMjY4LDcgQEAgZ2RiX3BhdGNoOgotIAkJZ3JlcCAnZXh0ZXJuIHBzX2Vycl9lIHBzX2dldF90aHJlYWRfYXJlYSAoc3RydWN0JyAke1JFQ0lQRV9TWVNST09UfS91c3IvaW5jbHVkZS9wcm9jX3NlcnZpY2UuaDsgXAotIAkJaWYgWyAkJD8gLWVxIDAgXTsgdGhlbiBcCi0gCQkJcGF0Y2ggLXAwIDwgJHtHREJ9LXByb2Nfc2VydmljZS5oLnBhdGNoOyBcCi0rCQkJcGF0Y2ggLXAxIDwgY3Jhc2gtZml4LWJ1aWxkLWZhaWx1cmUtd2l0aC1taXBzLnBhdGNoOyBcCi0gCQlmaTsgXAotIAlmaQotIAotZGlmZiAtLWdpdCBhL2NyYXNoLWZpeC1idWlsZC1mYWlsdXJlLXdpdGgtbWlwcy5wYXRjaCBiL2NyYXNoLWZpeC1idWlsZC1mYWlsdXJlLXdpdGgtbWlwcy5wYXRjaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjBjNzBjNWYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2NyYXNoLWZpeC1idWlsZC1mYWlsdXJlLXdpdGgtbWlwcy5wYXRjaAotQEAgLTAsMCArMSwzOSBAQAotK0Zyb20gNjE1YzgwMmQ5YzczZmFkNDg3MjNiNjU2NzA0MmNkNTRmNjc5NTg0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLStGcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotK0RhdGU6IFRodSwgNCBNYXkgMjAxNyAwNjoxNDo0NyArMDAwMAotK1N1YmplY3Q6IFtQQVRDSF0gY3Jhc2g6IGZpeCBidWlsZCBmYWlsdXJlIHdpdGggbWlwcwotKwotK1doZW4gYnVpbGQgY3Jhc2ggd2l0aCBtaXBzOgotKwotK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLSttaXBzLWxpbnV4LW5hdC5jOjE1NzoxOiBlcnJvcjogY29uZmxpY3RpbmcgdHlwZXMgZm9yICdwc19nZXRfdGhyZWFkX2FyZWEnCi0rIHBzX2dldF90aHJlYWRfYXJlYSAoY29uc3Qgc3RydWN0IHBzX3Byb2NoYW5kbGUgKnBoLAotKyBefn5+fn5+fn5+fn5+fn5+fn4KLStJbiBmaWxlIGluY2x1ZGVkIGZyb20gZ2RiX3Byb2Nfc2VydmljZS5oOjI2OjAsCi0rICAgICAgICAgICAgICAgICBmcm9tIG1pcHMtbGludXgtbmF0LmM6MzI6Ci0rfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotKwotK1RoaXMgcHJvYmxlbSBoYXZlIGJlZW4gZml4ZWQgb24gaW50ZWwgYW5kIGFybSBwbGFudGZvcm0sIHdlIGNhbiB1c2UgdGhlCi0rc2ltaWxhciBhcHByb2NoIHRvIGZpeCBpdCBvbiBtaXBzLgotKwotK1NpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci0rLS0tCi0rIGdkYi03LjYvZ2RiL21pcHMtbGludXgtbmF0LmMgfCAyICstCi0rIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotKwotK2RpZmYgLS1naXQgYS9nZGItNy42L2dkYi9taXBzLWxpbnV4LW5hdC5jIGIvZ2RiLTcuNi9nZGIvbWlwcy1saW51eC1uYXQuYwotK2luZGV4IDYxZTgzYzYuLmQ1MTdlMzcgMTAwNjQ0Ci0rLS0tIGEvZ2RiLTcuNi9nZGIvbWlwcy1saW51eC1uYXQuYwotKysrKyBiL2dkYi03LjYvZ2RiL21pcHMtbGludXgtbmF0LmMKLStAQCAtMTU0LDcgKzE1NCw3IEBAIG1pcHM2NF9saW51eF9yZWdpc3Rlcl9hZGRyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ25vLCBpbnQgc3RvcmUpCi0rIC8qIEZldGNoIHRoZSB0aHJlYWQtbG9jYWwgc3RvcmFnZSBwb2ludGVyIGZvciBsaWJ0aHJlYWRfZGIuICAqLwotKyAKLSsgcHNfZXJyX2UKLSstcHNfZ2V0X3RocmVhZF9hcmVhIChjb25zdCBzdHJ1Y3QgcHNfcHJvY2hhbmRsZSAqcGgsCi0rK3BzX2dldF90aHJlYWRfYXJlYSAoc3RydWN0IHBzX3Byb2NoYW5kbGUgKnBoLAotKyAgICAgICAgICAgICAgICAgICAgIGx3cGlkX3QgbHdwaWQsIGludCBpZHgsIHZvaWQgKipiYXNlKQotKyB7Ci0rICAgaWYgKHB0cmFjZSAoUFRSQUNFX0dFVF9USFJFQURfQVJFQSwgbHdwaWQsIE5VTEwsIGJhc2UpICE9IDApCi0rLS0gCi0rMi4xMS4wCi0rCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3Jhc2gvY3Jhc2hfNy4xLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3Jhc2gvY3Jhc2hfNy4yLjAuYmIKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoXzcuMS45LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3Jhc2gvY3Jhc2hfNy4yLjAuYmIKaW5kZXggZDQwOTM3ZS4uOWJlYTQ4ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoXzcuMS45LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaF83LjIuMC5iYgpAQCAtMjQsMTAgKzI0LDkgQEAKICAgICAgICAgICAgZmlsZTovL3JlbW92ZS11bnJlY29nbml6ZWQtZ2NjLW9wdGlvbi1tMzItZm9yLW1pcHMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1jcmFzaC1maXgtYnVpbGQtZXJyb3ItdW5rbm93bi10eXBlLW5hbWUtZ2RiX2ZwcmVnc2V0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDMtY3Jhc2gtZGV0ZWN0LXRoZS1zeXNyb290LXMtZ2xpYmMtaGVhZGVyLWZpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1jcmFzaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLW1pcHMucGF0Y2ggXAogICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZjNiNDRhMTUxZGJlNzA0NjQ2MmI5Y2FhYTk4NDdjYTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzQ4ZTEyNjk0NDNhNmE4ZTgzMzdlMzI4YjIxYjAzZTRlNTAyNDhmNjA3ZWVkODNmYmIyN2ViMGQ4MzNkNmFhNCIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ODg5OWRlMzExOGUwNGNmYTQwYTIzNjRmNTYxODE5MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZDA3NmUxZmVmYjQxYWExNzhhZDNlMWNlZjY1MTE2NzBlZmM0N2RlNWNiMDRkNGFmOWJkZDRlOGYyZjE4Y2JjIgogCiBTUkNfVVJJW2dkYi5tZDVzdW1dID0gImE5ODM2NzA3MzM3ZTVmN2JmNzZhMDA5YTg5MDRmNDcwIgogU1JDX1VSSVtnZGIuc2hhMjU2c3VtXSA9ICI4MDcwMzg5YTVkY2MxMDRlYjBiZTQ4M2Q1ODI3MjlmOThlZDRkNzYxYWQxOWNlZGQzZjE3YjVkMjUwMmZhYTM2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pcG1pdG9vbC9pcG1pdG9vbF8xLjguMTguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2xfMS44LjE4LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lwbWl0b29sL2lwbWl0b29sXzEuOC4xOC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2lwbWl0b29sL2lwbWl0b29sXzEuOC4xOC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pcG1pdXRpbC9pcG1pdXRpbC9maXhfc3lzdGVtZF9wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2lwbWl1dGlsL2lwbWl1dGlsL2ZpeF9zeXN0ZW1kX3BhdGgucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaXBtaXV0aWwvaXBtaXV0aWwvZml4X3N5c3RlbWRfcGF0aC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2lwbWl1dGlsL2lwbWl1dGlsL2ZpeF9zeXN0ZW1kX3BhdGgucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaXBtaXV0aWwvaXBtaXV0aWxfMy4wLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXV0aWwvaXBtaXV0aWxfMy4wLjUuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaXBtaXV0aWwvaXBtaXV0aWxfMy4wLjUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdXRpbC9pcG1pdXRpbF8zLjAuNS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2guaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2guaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxZTczZTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaC5pbmMKQEAgLTAsMCArMSw0OSBAQAorU1VNTUFSWSA9ICJMaW51eCBkeW5hbWljIGtlcm5lbCBwYXRjaGluZyBpbmZyYXN0cnVjdHVyZSIKK0RFU0NSSVBUSU9OID0gImtwYXRjaCBpcyBhIExpbnV4IGR5bmFtaWMga2VybmVsIHBhdGNoaW5nIGluZnJhc3RydWN0dXJlIHdoaWNoIGFsbG93cyB5b3UgdG8gcGF0Y2ggYSBydW5uaW5nIGtlcm5lbCB3aXRob3V0IHJlYm9vdGluZyBvciByZXN0YXJ0aW5nIGFueSBwcm9jZXNzZXMuIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKK0RFUEVORFMgPSAiZWxmdXRpbHMgYmFzaCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2R5bnVwL2twYXRjaC5naXQ7cHJvdG9jb2w9aHR0cHMgXAorCWZpbGU6Ly8wMDAxLWtwYXRjaC1idWlsZC1hZGQtY3Jvc3MtY29tcGlsYXRpb24tc3VwcG9ydC5wYXRjaCBcCisJZmlsZTovLzAwMDIta3BhdGNoLWJ1aWxkLWFsbG93LW92ZXJyaWRpbmctb2YtZGlzdHJvLW5hbWUucGF0Y2ggXAorCSIKKworRVhUUkFfT0VNQUtFID0gIiBcCisJUFJFRklYPSR7cHJlZml4fSBcCisJQklORElSPSR7RH0ke2JpbmRpcn0gXAorCVNCSU5ESVI9JHtEfSR7c2JpbmRpcn0gXAorCUxJQkRJUj0ke0R9JHtsaWJkaXJ9IFwKKwlNQU5ESVI9JHtEfSR7bWFuZGlyfS9tYW4xIFwKKwlTWVNURU1ERElSPSR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IFwKKwlERVNURElSPSR7RH0gXAorCUJVSUxETU9EPW5vIFwKKwlDQz0nJHtDQ30nIFwKKwkiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2RvX2luc3RhbGwgKCkgeworCW9lX3J1bm1ha2UgaW5zdGFsbAorfQorCitQQUNLQUdFUyA9KyAia3BhdGNoLWJ1aWxkIgorUFJPVklERVMgKz0gImtwYXRjaC1idWlsZCIKKworQ09NUEFUSUJMRV9IT1NUID0gIih4ODZfNjQpLiotbGludXgiCisKK1JERVBFTkRTXyR7UE59ID0gImJhc2ggYmludXRpbHMiCitSREVQRU5EU19rcGF0Y2gtYnVpbGQgPSAiYmFzaCBnbGliYy11dGlscyIKKworRklMRVNfJHtQTn0gPSAiIFwKKwkke3NiaW5kaXJ9L2twYXRjaCBcCisJJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9rcGF0Y2guc2VydmljZSBcCisJJHttYW5kaXJ9L21hbjEva3BhdGNoLjEuZ3ogXAorCSIKK0ZJTEVTX2twYXRjaC1idWlsZCA9ICIgXAorCSR7YmluZGlyfS9rcGF0Y2gtYnVpbGQgXAorCSR7bGliZXhlY2Rpcn0vKiBcCisJJHtkYXRhZGlyfS9rcGF0Y2ggXAorCSR7bWFuZGlyfS9tYW4xL2twYXRjaC1idWlsZC4xLmd6IFwKKwkiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJrcGF0Y2guc2VydmljZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoLzAwMDEta3BhdGNoLWJ1aWxkLWFkZC1jcm9zcy1jb21waWxhdGlvbi1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2gvMDAwMS1rcGF0Y2gtYnVpbGQtYWRkLWNyb3NzLWNvbXBpbGF0aW9uLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU5ZmIyMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoLzAwMDEta3BhdGNoLWJ1aWxkLWFkZC1jcm9zcy1jb21waWxhdGlvbi1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsMTAzIEBACitGcm9tIGE5YTgwYTFmNGRmNjU4OTJhMDI2OTI5NWNlOGE2NGIwNmYyZmY2MWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSdXNsYW4gQmlsb3ZvbCA8cmJpbG92b2xAY2lzY28uY29tPgorRGF0ZTogVHVlLCAxOSBEZWMgMjAxNyAxNTo1OTowNCArMDIwMAorU3ViamVjdDogW1BBVENIXSBrcGF0Y2gtYnVpbGQ6IGFkZCBjcm9zcy1jb21waWxhdGlvbiBzdXBwb3J0CisKK1RoaXMgcGF0Y2ggaW50cm9kdWNlcyBuZXcgb3B0aW9uIGZvciBrcGF0Y2gtYnVpbGQKK3NjcmlwdCAiLS1jcm9zcy1jb21waWxlIiB3aGljaCBjYW4gYmUgdXNlZCBmb3IKK3NwZWNpZnlpbmcgY3Jvc3MtY29tcGxpZXIgcHJlZml4LgorSXQgYWxsb3dzIHRvIGJ1aWxkIGxpdmUgcGF0Y2hlcyBub3Qgb25seSBvbgordGFyZ2V0IHN5c3RlbSwgYnV0IGFsc28gb24gaG9zdHMgZm9yIGEgdGFyZ2V0IG90aGVyCit0aGFuIHRoZSBvbmUgb24gd2hpY2ggdGhlIGNvbXBpbGVyIGlzIHJ1bm5pbmcKKworQWxzbyByZW1vdmVkIHF1b3RlcyBpbiBleGVjIGxpbmVzLCBzbyBpdCBpcworcG9zc2libGUgdG8gcGFzcyBtdWx0eS1jb21wb25lbnQgc3RyaW5ncyBsaWtlCisiY2NhY2hlIHg4Nl82NC14ZWxpbnV4LWxpbnV4LSIgYXMgY3Jvc3MtY29tcGlsZXIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFJ1c2xhbiBCaWxvdm9sIDxyYmlsb3ZvbEBjaXNjby5jb20+CistLS0KKyBrcGF0Y2gtYnVpbGQva3BhdGNoLWJ1aWxkIHwgMTMgKysrKysrKysrKystLQorIGtwYXRjaC1idWlsZC9rcGF0Y2gtZ2NjICAgfCAgNCArKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEva3BhdGNoLWJ1aWxkL2twYXRjaC1idWlsZCBiL2twYXRjaC1idWlsZC9rcGF0Y2gtYnVpbGQKK2luZGV4IDE2NmVjYmQuLmFmMjRjYzQgMTAwNzU1CistLS0gYS9rcGF0Y2gtYnVpbGQva3BhdGNoLWJ1aWxkCisrKysgYi9rcGF0Y2gtYnVpbGQva3BhdGNoLWJ1aWxkCitAQCAtMTk1LDcgKzE5NSw3IEBAIGdjY192ZXJzaW9uX2NoZWNrKCkgeworIAkjIGdjYyAtLXZlcnNpb24gdmFyaWVzIGJldHdlZW4gZGlzdHJpYnV0aW9ucyB0aGVyZWZvcmUgZXh0cmFjdCB2ZXJzaW9uCisgCSMgYnkgY29tcGlsaW5nIGEgdGVzdCBmaWxlIGFuZCBjb21wYXJlIGl0IHRvIHZtbGludXgncyB2ZXJzaW9uLgorIAllY2hvICd2b2lkIG1haW4odm9pZCkge30nID4gIiRjIgorLQlvdXQ9IiQoZ2NjIC1jIC1wZyAtZmZ1bmN0aW9uLXNlY3Rpb25zIC1vICIkbyIgIiRjIiAyPiYxKSIKKysJb3V0PSIkKCR7S1BBVENIX0NST1NTX0NPTVBJTEV9Z2NjIC1jIC1wZyAtZmZ1bmN0aW9uLXNlY3Rpb25zIC1vICIkbyIgIiRjIiAyPiYxKSIKKyAJZ2NjdmVyPSIkKGdjY192ZXJzaW9uX2Zyb21fZmlsZSAiJG8iKSIKKyAJa2djY3Zlcj0iJChnY2NfdmVyc2lvbl9mcm9tX2ZpbGUgIiRWTUxJTlVYIikiCisgCXJtIC1mICIkYyIgIiRvIgorQEAgLTM4MSwxMiArMzgxLDE0IEBAIHVzYWdlKCkgeworIAllY2hvICIJCS1kLCAtLWRlYnVnICAgICAgICBFbmFibGUgJ3h0cmFjZScgYW5kIGtlZXAgc2NyYXRjaCBmaWxlcyIgPiYyCisgCWVjaG8gIgkJICAgICAgICAgICAgICAgICAgIGluIDxDQUNIRURJUj4vdG1wIiA+JjIKKyAJZWNobyAiCQkgICAgICAgICAgICAgICAgICAgKGNhbiBiZSBzcGVjaWZpZWQgbXVsdGlwbGUgdGltZXMpIiA+JjIKKysJZWNobyAiCQktLWNyb3NzLWNvbXBpbGUgICAgU3BlY2lmeSB0aGUgcHJlZml4IHVzZWQgZm9yIGFsbCBleGVjdXRhYmxlcyIgPiYyCisrCWVjaG8gIgkJICAgICAgICAgICAgICAgICAgIHVzZWQgZHVyaW5nIGNvbXBpbGF0aW9uIiA+JjIKKyAJZWNobyAiCQktLXNraXAtY2xlYW51cCAgICAgU2tpcCBwb3N0LWJ1aWxkIGNsZWFudXAiID4mMgorIAllY2hvICIJCS0tc2tpcC1nY2MtY2hlY2sgICBTa2lwIGdjYyB2ZXJzaW9uIG1hdGNoaW5nIGNoZWNrIiA+JjIKKyAJZWNobyAiCQkgICAgICAgICAgICAgICAgICAgKG5vdCByZWNvbW1lbmRlZCkiID4mMgorIH0KKyAKKy1vcHRpb25zPSIkKGdldG9wdCAtbyBoYTpyOnM6Yzp2Omo6dDpuOm86ZCAtbCAiaGVscCxhcmNodmVyc2lvbjosc291cmNlcnBtOixzb3VyY2VkaXI6LGNvbmZpZzosdm1saW51eDosam9iczosdGFyZ2V0OixuYW1lOixvdXRwdXQ6LGRlYnVnLHNraXAtZ2NjLWNoZWNrLHNraXAtY2xlYW51cCIgLS0gIiRAIikiIHx8IGRpZSAiZ2V0b3B0IGZhaWxlZCIKKytvcHRpb25zPSIkKGdldG9wdCAtbyBoYTpyOnM6Yzp2Omo6dDpuOm86ZCAtbCAiaGVscCxhcmNodmVyc2lvbjosc291cmNlcnBtOixzb3VyY2VkaXI6LGNvbmZpZzosdm1saW51eDosam9iczosdGFyZ2V0OixuYW1lOixvdXRwdXQ6LGRlYnVnLGNyb3NzLWNvbXBpbGU6LHNraXAtZ2NjLWNoZWNrLHNraXAtY2xlYW51cCIgLS0gIiRAIikiIHx8IGRpZSAiZ2V0b3B0IGZhaWxlZCIKKyAKKyBldmFsIHNldCAtLSAiJG9wdGlvbnMiCisgCitAQCAtNDQ0LDYgKzQ0NiwxMCBAQCB3aGlsZSBbWyAkIyAtZ3QgMCBdXTsgZG8KKyAJCQllY2hvICJERUJVRyBtb2RlIGVuYWJsZWQiCisgCQlmaQorIAkJOzsKKysJLS1jcm9zcy1jb21waWxlKQorKwkJS1BBVENIX0NST1NTX0NPTVBJTEU9IiQyIgorKwkJc2hpZnQKKysJCTs7CisgCS0tc2tpcC1jbGVhbnVwKQorIAkJZWNobyAiU2tpcHBpbmcgY2xlYW51cCIKKyAJCVNLSVBDTEVBTlVQPTEKK0BAIC02OTEsNiArNjk3LDggQEAgaWYgW1sgJERFQlVHIC1nZSA0IF1dOyB0aGVuCisgCWV4cG9ydCBLUEFUQ0hfR0NDX0RFQlVHPTEKKyBmaQorIAorK2V4cG9ydCBLUEFUQ0hfQ1JPU1NfQ09NUElMRQorKworIGVjaG8gIkJ1aWxkaW5nIG9yaWdpbmFsIGtlcm5lbCIKKyAuL3NjcmlwdHMvc2V0bG9jYWx2ZXJzaW9uIC0tc2F2ZS1zY212ZXJzaW9uIHx8IGRpZQorIG1ha2UgbXJwcm9wZXIgMj4mMSB8IGxvZ2dlciB8fCBkaWUKK0BAIC04NDAsNiArODQ4LDcgQEAgY2QgIiRURU1QRElSL3BhdGNoIiB8fCBkaWUKKyBLUEFUQ0hfQlVJTEQ9IiRTUkNESVIiIEtQQVRDSF9OQU1FPSIkTU9ETkFNRSIgXAorIEtCVUlMRF9FWFRSQV9TWU1CT0xTPSIkS0JVSUxEX0VYVFJBX1NZTUJPTFMiIFwKKyBLUEFUQ0hfTERGTEFHUz0iJEtQQVRDSF9MREZMQUdTIiBcCisrQ1JPU1NfQ09NUElMRT0iJEtQQVRDSF9DUk9TU19DT01QSUxFIiBcCisgCW1ha2UgMj4mMSB8IGxvZ2dlciB8fCBkaWUKKyAKKyBpZiAhICIkS1BBVENIX01PRFVMRSI7IHRoZW4KK2RpZmYgLS1naXQgYS9rcGF0Y2gtYnVpbGQva3BhdGNoLWdjYyBiL2twYXRjaC1idWlsZC9rcGF0Y2gtZ2NjCitpbmRleCA2YmExMzNjLi4zOTM3OTQ4IDEwMDc1NQorLS0tIGEva3BhdGNoLWJ1aWxkL2twYXRjaC1nY2MKKysrKyBiL2twYXRjaC1idWlsZC9rcGF0Y2gtZ2NjCitAQCAtOCw3ICs4LDcgQEAgVE9PTENIQUlOQ01EPSIkMSIKKyBzaGlmdAorIAorIGlmIFtbIC16ICIkS1BBVENIX0dDQ19URU1QRElSIiBdXTsgdGhlbgorLQlleGVjICIkVE9PTENIQUlOQ01EIiAiJEAiCisrCWV4ZWMgJHtLUEFUQ0hfQ1JPU1NfQ09NUElMRX0ke1RPT0xDSEFJTkNNRH0gIiRAIgorIGZpCisgCisgZGVjbGFyZSAtYSBhcmdzPSgiJEAiKQorQEAgLTgwLDQgKzgwLDQgQEAgZWxpZiBbWyAiJFRPT0xDSEFJTkNNRCIgPSAibGQiIF1dIDsgdGhlbgorIAlkb25lCisgZmkKKyAKKy1leGVjICIkVE9PTENIQUlOQ01EIiAiJHthcmdzW0BdfSIKKytleGVjICR7S1BBVENIX0NST1NTX0NPTVBJTEV9JHtUT09MQ0hBSU5DTUR9ICIke2FyZ3NbQF19IgorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaC8wMDAyLWtwYXRjaC1idWlsZC1hbGxvdy1vdmVycmlkaW5nLW9mLWRpc3Ryby1uYW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2gvMDAwMi1rcGF0Y2gtYnVpbGQtYWxsb3ctb3ZlcnJpZGluZy1vZi1kaXN0cm8tbmFtZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWQ4YTdmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2gvMDAwMi1rcGF0Y2gtYnVpbGQtYWxsb3ctb3ZlcnJpZGluZy1vZi1kaXN0cm8tbmFtZS5wYXRjaApAQCAtMCwwICsxLDYyIEBACitGcm9tIGQ0MThkNzE2ZGFlMWUyYTA1MTMxZGZiNDJhMTlhNGRhMmZjOGE4NWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSdXNsYW4gQmlsb3ZvbCA8cmJpbG92b2xAY2lzY28uY29tPgorRGF0ZTogVHVlLCAyIEphbiAyMDE4IDE0OjUwOjAzICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGtwYXRjaC1idWlsZDogYWxsb3cgb3ZlcnJpZGluZyBvZiBkaXN0cm8gbmFtZQorCitJdCBpcyBzb21ldGltZXMgdXNlZnVsIHRvIGhhdmUgYWJpbGl0eSB0byBvdmVycmlkZQorZGlzdHJvIG5hbWUsIGZvciBleGFtcGxlIGR1cmluZyBjcm9zcy1jb21waWxhdGlvbgorYnVpbGQgd2hlbiBsaXZlcGF0Y2ggbW9kdWxlcyB3aWxsIGJlIHJhbiBvbiB0aGUKK3RhcmdldCB3aGljaCBkaWZmZXJzIGZyb20gaG9zdC4KKworVGhpcyBwYXRjaCBhZGRzIGEgbmV3IC0tZGlzdHJvIG9wdGlvbiB3aGljaAoraW1wbGVtZW50cyBhbGwgbmVlZGVkIGZ1bmN0aW9uYWxpdHkKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFJ1c2xhbiBCaWxvdm9sIDxyYmlsb3ZvbEBjaXNjby5jb20+CistLS0KKyBrcGF0Y2gtYnVpbGQva3BhdGNoLWJ1aWxkIHwgOSArKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEva3BhdGNoLWJ1aWxkL2twYXRjaC1idWlsZCBiL2twYXRjaC1idWlsZC9rcGF0Y2gtYnVpbGQKK2luZGV4IGFmMjRjYzQuLjRmOWY3OGQgMTAwNzU1CistLS0gYS9rcGF0Y2gtYnVpbGQva3BhdGNoLWJ1aWxkCisrKysgYi9rcGF0Y2gtYnVpbGQva3BhdGNoLWJ1aWxkCitAQCAtMzgzLDEyICszODMsMTMgQEAgdXNhZ2UoKSB7CisgCWVjaG8gIgkJICAgICAgICAgICAgICAgICAgIChjYW4gYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzKSIgPiYyCisgCWVjaG8gIgkJLS1jcm9zcy1jb21waWxlICAgIFNwZWNpZnkgdGhlIHByZWZpeCB1c2VkIGZvciBhbGwgZXhlY3V0YWJsZXMiID4mMgorIAllY2hvICIJCSAgICAgICAgICAgICAgICAgICB1c2VkIGR1cmluZyBjb21waWxhdGlvbiIgPiYyCisrCWVjaG8gIgkJLS1kaXN0cm8gICAgICAgICAgIE92ZXJyaWRlIGRpc3RybyBuYW1lIiA+JjIKKyAJZWNobyAiCQktLXNraXAtY2xlYW51cCAgICAgU2tpcCBwb3N0LWJ1aWxkIGNsZWFudXAiID4mMgorIAllY2hvICIJCS0tc2tpcC1nY2MtY2hlY2sgICBTa2lwIGdjYyB2ZXJzaW9uIG1hdGNoaW5nIGNoZWNrIiA+JjIKKyAJZWNobyAiCQkgICAgICAgICAgICAgICAgICAgKG5vdCByZWNvbW1lbmRlZCkiID4mMgorIH0KKyAKKy1vcHRpb25zPSIkKGdldG9wdCAtbyBoYTpyOnM6Yzp2Omo6dDpuOm86ZCAtbCAiaGVscCxhcmNodmVyc2lvbjosc291cmNlcnBtOixzb3VyY2VkaXI6LGNvbmZpZzosdm1saW51eDosam9iczosdGFyZ2V0OixuYW1lOixvdXRwdXQ6LGRlYnVnLGNyb3NzLWNvbXBpbGU6LHNraXAtZ2NjLWNoZWNrLHNraXAtY2xlYW51cCIgLS0gIiRAIikiIHx8IGRpZSAiZ2V0b3B0IGZhaWxlZCIKKytvcHRpb25zPSIkKGdldG9wdCAtbyBoYTpyOnM6Yzp2Omo6dDpuOm86ZCAtbCAiaGVscCxhcmNodmVyc2lvbjosc291cmNlcnBtOixzb3VyY2VkaXI6LGNvbmZpZzosdm1saW51eDosam9iczosdGFyZ2V0OixuYW1lOixvdXRwdXQ6LGRlYnVnLGNyb3NzLWNvbXBpbGU6LGRpc3Rybzosc2tpcC1nY2MtY2hlY2ssc2tpcC1jbGVhbnVwIiAtLSAiJEAiKSIgfHwgZGllICJnZXRvcHQgZmFpbGVkIgorIAorIGV2YWwgc2V0IC0tICIkb3B0aW9ucyIKKyAKK0BAIC00NTAsNiArNDUxLDEwIEBAIHdoaWxlIFtbICQjIC1ndCAwIF1dOyBkbworIAkJS1BBVENIX0NST1NTX0NPTVBJTEU9IiQyIgorIAkJc2hpZnQKKyAJCTs7CisrCS0tZGlzdHJvKQorKwkJRElTVFJPPSIkMiIKKysJCXNoaWZ0CisrCQk7OworIAktLXNraXAtY2xlYW51cCkKKyAJCWVjaG8gIlNraXBwaW5nIGNsZWFudXAiCisgCQlTS0lQQ0xFQU5VUD0xCitAQCAtNTI2LDcgKzUzMSw3IEBAIGZpCisgIyBEb24ndCBjaGVjayBleHRlcm5hbCBmaWxlLgorICMgc2hlbGxjaGVjayBkaXNhYmxlPVNDMTA5MQorIHNvdXJjZSAvZXRjL29zLXJlbGVhc2UKKy1ESVNUUk89IiRJRCIKKytESVNUUk89IiR7RElTVFJPOi0ke0lEfX0iCisgaWYgW1sgIiRESVNUUk8iID0gZmVkb3JhIF1dIHx8IFtbICIkRElTVFJPIiA9IHJoZWwgXV0gfHwgW1sgIiRESVNUUk8iID0gb2wgXV0gfHwgW1sgIiRESVNUUk8iID0gY2VudG9zIF1dOyB0aGVuCisgCVtbIC16ICIkVk1MSU5VWCIgXV0gJiYgVk1MSU5VWD0iL3Vzci9saWIvZGVidWcvbGliL21vZHVsZXMvJEFSQ0hWRVJTSU9OL3ZtbGludXgiCisgCVtbIC1lICIkVk1MSU5VWCIgXV0gfHwgZGllICJrZXJuZWwtZGVidWdpbmZvLSRBUkNIVkVSU0lPTiBub3QgaW5zdGFsbGVkIgorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaF9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ5NWUyOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoX2dpdC5iYgpAQCAtMCwwICsxLDExIEBACityZXF1aXJlIGtwYXRjaC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK1NSQ1JFViA9ICJkYjZlZmJiOGM3ZTkwZDJiNzYxMjcyY2Y1NjMwNDcxMTkwNzI3NjhmIgorCitQViA9ICIwLjUuMCtnaXQke1NSQ1BWfSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC5pbmMKaW5kZXggZTIwMDEyNy4uOWYxNDM3MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXguaW5jCkBAIC0xNiw3ICsxNiw3IEBACiAKICMgS2VybmVsIGJvb3Rsb2dvIGlzIGRpc3Ryby1zcGVjaWZpYyAoZGVmYXVsdCBpcyBPRSBsb2dvKS4KICMgTG9nbyByZXNvbHV0aW9uIChxdmdhLCB2Z2EsIC4uLikgaXMgbWFjaGluZS1zcGVjaWZpYy4KLUxPR09fU0laRSA/PSAnJHtAYmFzZV9jb25kaXRpb25hbCgiTUFDSElORV9HVUlfQ0xBU1MiLCAiYmlnc2NyZWVuIiwgInZnYSIsICJxdmdhIiwgZCl9JworTE9HT19TSVpFID89ICcke0BvZS51dGlscy5jb25kaXRpb25hbCgiTUFDSElORV9HVUlfQ0xBU1MiLCAiYmlnc2NyZWVuIiwgInZnYSIsICJxdmdhIiwgZCl9JwogIyBUbyB1c2UgdGhpcywgYWRkIGZpbGU6Ly8ke0xPR09fU0laRX0vbG9nb19saW51eF9jbHV0MjI0LnBwbS5iejIgb3Igc2ltaWxhcgogIyB0byB5b3VyIGtlcm5lbCByZWNpcGUsIGFuZCB0aGVuIHN0cnVjdHVyZSB5b3VyIGxvZ29zIGZvciBlYWNoIHJlc29sdXRpb24KICMgYWNjb3JkaW5nbHkuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWluaWNvcmVkdW1wZXIvZmlsZXMvbWluaWNvcmVkdW1wZXIuaW5pdCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9taW5pY29yZWR1bXBlci9maWxlcy9taW5pY29yZWR1bXBlci5pbml0CmluZGV4IDkwZWY3ZmEuLjljOTZlMzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9taW5pY29yZWR1bXBlci9maWxlcy9taW5pY29yZWR1bXBlci5pbml0CisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9taW5pY29yZWR1bXBlci9maWxlcy9taW5pY29yZWR1bXBlci5pbml0CkBAIC0yMiw3ICsyMiw3IEBACiAKIGNhc2UgIiQxIiBpbgogICAgIHN0YXJ0KQotICAgICAgICBlY2hvICJ8L3Vzci9iaW4vbWluaWNvcmVkdW1wZXIgJXAgJXUgJWcgJXMgJXQgJWggJWUiID4gL3Byb2Mvc3lzL2tlcm5lbC9jb3JlX3BhdHRlcm4KKyAgICAgICAgZWNobyAifC91c3Ivc2Jpbi9taW5pY29yZWR1bXBlciAlcCAldSAlZyAlcyAldCAlaCAlZSIgPiAvcHJvYy9zeXMva2VybmVsL2NvcmVfcGF0dGVybgogICAgICAgICA7OwogICAgIHN0b3ApCiAgICAgICAgIGVjaG8gImNvcmUiID4gL3Byb2Mvc3lzL2tlcm5lbC9jb3JlX3BhdHRlcm4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9taW5pY29yZWR1bXBlci9maWxlcy9taW5pY29yZWR1bXBlci5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL2ZpbGVzL21pbmljb3JlZHVtcGVyLnNlcnZpY2UKaW5kZXggODUxYjU0Yy4uNDVkMDk4ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL2ZpbGVzL21pbmljb3JlZHVtcGVyLnNlcnZpY2UKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL2ZpbGVzL21pbmljb3JlZHVtcGVyLnNlcnZpY2UKQEAgLTQsNyArNCw3IEBACiBbU2VydmljZV0KIFR5cGU9b25lc2hvdAogUmVtYWluQWZ0ZXJFeGl0PXllcwotRXhlY1N0YXJ0PS9iaW4vc2ggLWMgJy9iaW4vZWNobyAifC91c3IvYmluL21pbmljb3JlZHVtcGVyICUlcCAlJXUgJSVnICUlcyAlJXQgJSVoICUlZSIgPiAvcHJvYy9zeXMva2VybmVsL2NvcmVfcGF0dGVybicKK0V4ZWNTdGFydD0vYmluL3NoIC1jICcvYmluL2VjaG8gInwvdXNyL3NiaW4vbWluaWNvcmVkdW1wZXIgJSVwICUldSAlJWcgJSVzICUldCAlJWggJSVlIiA+IC9wcm9jL3N5cy9rZXJuZWwvY29yZV9wYXR0ZXJuJwogRXhlY1N0b3A9L2Jpbi9zaCAtYyAnL2Jpbi9lY2hvICJjb3JlIiA+IC9wcm9jL3N5cy9rZXJuZWwvY29yZV9wYXR0ZXJuJwogCiBbSW5zdGFsbF0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9taW5pY29yZWR1bXBlci9taW5pY29yZWR1bXBlcl8yLjAuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9taW5pY29yZWR1bXBlci9taW5pY29yZWR1bXBlcl8yLjAuMC5iYgppbmRleCAxODU4ZTEwLi4wZDNjNjZiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWluaWNvcmVkdW1wZXIvbWluaWNvcmVkdW1wZXJfMi4wLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL21pbmljb3JlZHVtcGVyXzIuMC4wLmJiCkBAIC0zOCw0ICszOCw4IEBACiAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbWluaWNvcmVkdW1wZXIuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQogICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCiAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbWluaWNvcmVkdW1wZXIuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbWluaWNvcmVkdW1wZXIKKworICAgICMgY29ycmVjdCBwYXRoIG9mIG1pbmljb3JlZHVtcGVyCisgICAgc2VkIC1pIC1lIHM6L3Vzci9iaW4vbWluaWNvcmVkdW1wZXI6JHtzYmluZGlyfS9taW5pY29yZWR1bXBlcjpnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9taW5pY29yZWR1bXBlcgorICAgIHNlZCAtaSAtZSBzOi91c3IvYmluL21pbmljb3JlZHVtcGVyOiR7c2JpbmRpcn0vbWluaWNvcmVkdW1wZXI6ZyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9taW5pY29yZWR1bXBlci5zZXJ2aWNlCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1vc3MtMS4wLjE3L2xpYmlvLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2Etb3NzL2xpYmlvLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggNjYlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLW9zcy0xLjAuMTcvbGliaW8ucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLW9zcy9saWJpby5wYXRjaAppbmRleCBhMDUzZTRjLi41Mjk5OTQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1vc3MtMS4wLjE3L2xpYmlvLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLW9zcy9saWJpby5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUluZGV4OiBhbHNhLW9zcy0xLjAuMTUvYWxzYS9zdGRpb2VtdS5jCitJbmRleDogYWxzYS1vc3MtMS4wLjI4L2Fsc2Evc3RkaW9lbXUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGFsc2Etb3NzLTEuMC4xNS5vcmlnL2Fsc2Evc3RkaW9lbXUuYwkyMDA3LTEwLTE1IDEwOjUwOjQwLjAwMDAwMDAwMCArMDIwMAotKysrIGFsc2Etb3NzLTEuMC4xNS9hbHNhL3N0ZGlvZW11LmMJMjAwOC0wNy0yMSAyMjoxNzowNi4zMDMxNjE0MzggKzAyMDAKKy0tLSBhbHNhLW9zcy0xLjAuMjgub3JpZy9hbHNhL3N0ZGlvZW11LmMKKysrKyBhbHNhLW9zcy0xLjAuMjgvYWxzYS9zdGRpb2VtdS5jCiBAQCAtMzcsNyArMzcsOSBAQAogICNlbmRpZgogIApAQCAtMTIsNyArMTIsNyBAQAogIAogIHN0cnVjdCBmZF9jb29raWUgewogIAlpbnQgZmQ7Ci1AQCAtOTksNyArMTAxLDExIEBACitAQCAtOTksNyArMTAxLDExIEBAIHN0YXRpYyBGSUxFICpmYWtlX2ZvcGVuKGNvbnN0IGNoYXIgKnBhdGgKICAKICAJaWYgKG9wZW5fbW9kZSAmJiBmZGMtPmZkID4gMCkgewogIAkJcmVzdWx0ID0gZm9wZW5jb29raWUgKGZkYywidyIsIGZucyk7CkBAIC0yNCwxMSArMjQsMTEgQEAKICAJfQogIAlyZXR1cm4gcmVzdWx0OwogIH0KLUluZGV4OiBhbHNhLW9zcy0xLjAuMTUvY29uZmlndXJlLmluCitJbmRleDogYWxzYS1vc3MtMS4wLjI4L2NvbmZpZ3VyZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGFsc2Etb3NzLTEuMC4xNS5vcmlnL2NvbmZpZ3VyZS5pbgkyMDA3LTEwLTE1IDEwOjUwOjQwLjAwMDAwMDAwMCArMDIwMAotKysrIGFsc2Etb3NzLTEuMC4xNS9jb25maWd1cmUuaW4JMjAwOC0wNy0yMSAyMjoxNjoxMS43MTk4MzcyOTggKzAyMDAKLUBAIC0zMyw2ICszMywxMiBAQAorLS0tIGFsc2Etb3NzLTEuMC4yOC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGFsc2Etb3NzLTEuMC4yOC9jb25maWd1cmUuYWMKK0BAIC0zNSw2ICszNSwxMiBAQCBpZiB0ZXN0ICIkd2l0aF9hb3NzIiA9ICJ5ZXMiOyB0aGVuCiAgICBMSUJTPSIkT0xEX0xJQlMiCiAgZmkKICAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLW9zc18xLjAuMTcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1vc3NfMS4wLjI4LmJiCnNpbWlsYXJpdHkgaW5kZXggNzUlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLW9zc18xLjAuMTcuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLW9zc18xLjAuMjguYmIKaW5kZXggODk2NmRiYi4uMGM0YTlmNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2Etb3NzXzEuMC4xNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1vc3NfMS4wLjI4LmJiCkBAIC0zLDExICszLDEyIEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzkzYTVjYTQ0NWY2OTY1ODczZWNhMDI1OWExN2Y4MzMiCiBERVBFTkRTID0gImFsc2EtbGliIgotUFIgPSAicjEiCiAKIFNSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL29zcy1saWIvYWxzYS1vc3MtJHtQVn0udGFyLmJ6MiBcCiAgICAgZmlsZTovL2xpYmlvLnBhdGNoIFwKICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5MWY1N2U4Y2VlMWFkNGNjOTU2Y2FhOGI2MmFjNWQ0MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzYWU2MmNhYTg4YTBiYzdiMzBlZDgzNmRjYjc5NGRjNmVmNGQzNjUwNDM5ZTIyNjBkYjU0Y2FjZTdkNWM2YWQ1IgogCiBpbmhlcml0IGF1dG90b29scwogCkBAIC0xNyw2ICsxOCwzIEBACiAgICAgdG91Y2ggTkVXUyBSRUFETUUgQVVUSE9SUyBDaGFuZ2VMb2cKICAgICBzZWQgLWkgInMvbGliYW9zcy5zby8ke0xFQURfU09OQU1FfS8iICR7U30vYWxzYS9hb3NzLmluCiB9Ci0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxYjE4NTBjMmZjOTE0NzZhNzNkNTBmNTM3Y2JkNDAyZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZDAwOWUyM2UyY2JlZTE2OTFlYzNjOTVkMTgzODA1NmE4MDRkOTg0NDBlYWU3NzE1ZDZjM2FlYmM3MTBmOWNhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9jZHJraXQvY2Rya2l0XzEuMS4xMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvY2Rya2l0L2NkcmtpdF8xLjEuMTEuYmIKaW5kZXggYzBmMjIwZi4uM2IxMGU5NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9jZHJraXQvY2Rya2l0XzEuMS4xMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2NkcmtpdC9jZHJraXRfMS4xLjExLmJiCkBAIC0xOCwzICsxOCw3IEBACiAKIERFUEVORFMgPSAibGliY2FwIGZpbGUgYnppcDIiCiBSREVQRU5EU18ke1BOfSA9ICJwZXJsIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBsbiAtc2YgJHtiaW5kaXJ9L2dlbmlzb2ltYWdlICR7RH0ke2JpbmRpcn0vbWtpc29mcworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDEtYXVkaW9fYWxzYTA5LmMtYWxzYS1kcmFpbi1maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvMDAwMS1hdWRpb19hbHNhMDkuYy1hbHNhLWRyYWluLWZpeC5wYXRjaAppbmRleCA2YzdmM2JkLi4xMzBmM2MyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvMDAwMS1hdWRpb19hbHNhMDkuYy1hbHNhLWRyYWluLWZpeC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvMDAwMS1hdWRpb19hbHNhMDkuYy1hbHNhLWRyYWluLWZpeC5wYXRjaApAQCAtMSw5ICsxLDEwIEBACi1Gcm9tIGE4NjBmZTA3OTZjNDNlMzVlYWM5NzgzMTQwZmNiNTYzY2FiOWY1NWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDk0NWRmMmRhODdhNDEyNzU4Y2VhYjRhYzU3MTFhYmJiMjY5YTQ3YzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogVGh1LCA4IEp1biAyMDE3IDIzOjA5OjUxIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8zXSBhdWRpb19hbHNhMDkuYzogYWxzYSBkcmFpbiBmaXgKK1N1YmplY3Q6IFtQQVRDSF0gYXVkaW9fYWxzYTA5LmM6IGFsc2EgZHJhaW4gZml4CiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIGF1ZGlvX2Fsc2EwOS5jIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQpAQCAtMjEsNiArMjIsMyBAQAogICAgCiAgCWlmIChhbHNhZGJnKSAKICAJCXByaW50X3N0YXRlKCk7Ci0tLSAKLTIuMTMuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvMDAwMi1VbmRlZmluZS1vcGVuNjQtYW5kLWZvcGVuNjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvMDAwMi1VbmRlZmluZS1vcGVuNjQtYW5kLWZvcGVuNjQucGF0Y2gKaW5kZXggMzM3NTQ2YS4uMTBhNmJhMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDItVW5kZWZpbmUtb3BlbjY0LWFuZC1mb3BlbjY0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC8wMDAyLVVuZGVmaW5lLW9wZW42NC1hbmQtZm9wZW42NC5wYXRjaApAQCAtMSwxMSArMSwxMiBAQAotRnJvbSAxZmJlZTZlOTYzODRmMzQwYjgxNmUyMjFmZTFjMmYzZmYwYjQ4N2JmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlMjE4ZDVhMGE1NDVlYmI5NjIzZDYyZGE1Y2ZjYTQ3OGY5YzkwZmNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgOCBKdW4gMjAxNyAyMzoxMTozMSAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvM10gVW5kZWZpbmUgb3BlbjY0IGFuZCBmb3BlbjY0CitTdWJqZWN0OiBbUEFUQ0hdIFVuZGVmaW5lIG9wZW42NCBhbmQgZm9wZW42NAogCiBTaW5jZSB0aGUgc2lnbmF0dXJlcyBkbyBub3QgbWF0Y2ggd2l0aCBsaWJjCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIGVzZGRzcC5jIHwgMiArKwogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKQEAgLTMwLDYgKzMxLDMgQEAKICBGSUxFICoKICBmb3BlbjY0IChjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlKQogIHsKLS0tIAotMi4xMy4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC8wMDAzLVVzZS1JLXBhdGgtaW4tY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDMtVXNlLUktcGF0aC1pbi1jb25maWd1cmUucGF0Y2gKaW5kZXggNjJjODgwZC4uODMzNjViNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDMtVXNlLUktcGF0aC1pbi1jb25maWd1cmUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDMtVXNlLUktcGF0aC1pbi1jb25maWd1cmUucGF0Y2gKQEAgLTEsMTIgKzEsMTMgQEAKLUZyb20gOTc5YTAyZDllYzljMjg2ODYwMjFjZDJiNDljYTU1ZDIxOTVjOWRjZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gODljNjJkYjU0NzE2ZDUxNGU2MzlmOWUxYmZkM2MxZjdkODI2NDFkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDggSnVuIDIwMTcgMjM6MTI6MzYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIFVzZSAtST08cGF0aD4gaW4gY29uZmlndXJlCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSAtST08cGF0aD4gaW4gY29uZmlndXJlCiAKIFRoaXMgaGVscHMgdG8gdXNlIHByb3BlciBzeXNyb290IGluCiBjcm9zcyBidWlsZCBlbnZpcm9ubWVudAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBjb25maWd1cmUuYWMgfCA0ICsrLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQpAQCAtMzMsNiArMzQsMyBAQAogIAlTT1VORF9MSUJTPS1sbW1lCiAgICAgICAgZXNhYwogICAgIGZpCi0tLSAKLTIuMTMuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvbm8tZG9jcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC9uby1kb2NzLnBhdGNoCmluZGV4IGZjNjlmMWEuLjhhNTQ2ZTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC9uby1kb2NzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC9uby1kb2NzLnBhdGNoCkBAIC0xLDExICsxLDE5IEBACi1JbmRleDogZXNvdW5kLTAuMi4zNi9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVzb3VuZC0wLjIuMzYub3JpZy9NYWtlZmlsZS5hbQotKysrIGVzb3VuZC0wLjIuMzYvTWFrZWZpbGUuYW0KK0Zyb20gYmZjYWE5YmRjNzA0NDBkYjk2ZjEwYWZjMGMyYTc5Mjg3MGY3NWFjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+CitEYXRlOiBGcmksIDMgSnVuIDIwMTEgMTk6Mzk6MDIgKzAyMDAKKworLS0tCisgTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCAwOGM0Yzk0Li5lZGU5ZDI2IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCiBAQCAtMSw1ICsxLDUgQEAKICAKIC1TVUJESVJTID0gZG9jcwogK1NVQkRJUlMgPSAKICAKLSBBQ0xPQ0FMX0ZMQUdTID0gLUkgbTQKKyBBQ0xPQ0FMX0FNRkxBR1MgPSAtSSBtNAogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9qYWNrL2phY2svMDAwMS10eXBlY2FzdC1pbnB1dC1wYXJhbWV0ZXItdG8taW50LWZvci1hYnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2phY2svamFjay8wMDAxLXR5cGVjYXN0LWlucHV0LXBhcmFtZXRlci10by1pbnQtZm9yLWFicy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzExOWYxOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2phY2svamFjay8wMDAxLXR5cGVjYXN0LWlucHV0LXBhcmFtZXRlci10by1pbnQtZm9yLWFicy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gOGVjNmY3NWJmN2EzMThhM2ExZTM1MmRmN2M5NzYzMGNmYWJhNTM3YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIxIEFwciAyMDE3IDE2OjE4OjM5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHR5cGVjYXN0IGlucHV0IHBhcmFtZXRlciB0byBpbnQgZm9yIGFicygpCi0KLUZpeGVzCi0uLi90ZXN0cy90ZXN0LmNwcDo0ODI6NzM6IGVycm9yOiBjYWxsIG9mIG92ZXJsb2FkZWQgJ2FicyhqYWNrX25mcmFtZXNfdCknIGlzIGFtYmlndW91cwotCi1iZWNhdXNlIHRoZSBzaWduYXR1cmUgaXMgaW50IGFicyhpbnQpIGFuZCBpdHMgcGFzc2luZwotdW5zaWduZWQgaW50IHRvIGl0LgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gdGVzdHMvdGVzdC5jcHAgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0cy90ZXN0LmNwcCBiL3Rlc3RzL3Rlc3QuY3BwCi1pbmRleCA4YThhODExNy4uOTY1NTc0MmUgMTAwNjQ0Ci0tLS0gYS90ZXN0cy90ZXN0LmNwcAotKysrIGIvdGVzdHMvdGVzdC5jcHAKLUBAIC00NzksNyArNDc5LDcgQEAgaW50IHByb2Nlc3M0KGphY2tfbmZyYW1lc190IG5mcmFtZXMsIHZvaWQgKmFyZykKLSAJamFja19uZnJhbWVzX3QgZGVsdGFfdGltZSA9IGN1cl90aW1lIC0gbGFzdF90aW1lOwotIAotIAlMb2coImNhbGxpbmcgcHJvY2VzczQgY2FsbGJhY2sgOiBqYWNrX2ZyYW1lX3RpbWUgPSAlbGQgZGVsdGFfdGltZSA9ICVsZFxuIiwgY3VyX3RpbWUsIGRlbHRhX3RpbWUpOwotLQlpZiAoZGVsdGFfdGltZSA+IDAgICYmIChqYWNrX25mcmFtZXNfdClhYnMoZGVsdGFfdGltZSAtIGN1cl9idWZmZXJfc2l6ZSkgPiB0b2xlcmFuY2UpIHsKLSsJaWYgKGRlbHRhX3RpbWUgPiAwICAmJiAoamFja19uZnJhbWVzX3QpYWJzKGludChkZWx0YV90aW1lIC0gY3VyX2J1ZmZlcl9zaXplKSkgPiB0b2xlcmFuY2UpIHsKLSAJCXByaW50ZigiISEhIEVSUk9SICEhISBqYWNrX2ZyYW1lX3RpbWUgc2VlbXMgdG8gcmV0dXJuIGluY29ycmVjdCB2YWx1ZXMgY3VyX2J1ZmZlcl9zaXplID0gJWQsIGRlbHRhX3RpbWUgPSAlZCB0b2xlcmFuY2UgJWRcbiIsIGN1cl9idWZmZXJfc2l6ZSwgZGVsdGFfdGltZSwgdG9sZXJhbmNlKTsKLSAJfQotIAotLS0gCi0yLjEyLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9qYWNrL2phY2tfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9qYWNrL2phY2tfZ2l0LmJiCmluZGV4IGI4NWJhOGEuLjExZGE2YjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvamFjay9qYWNrX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2phY2svamFja19naXQuYmIKQEAgLTE0LDExICsxNCw5IEBACiAKIERFUEVORFMgPSAibGlic2FtcGxlcmF0ZTAgbGlic25kZmlsZTEgcmVhZGxpbmUiCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9qYWNrYXVkaW8vamFjazIuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdHlwZWNhc3QtaW5wdXQtcGFyYW1ldGVyLXRvLWludC1mb3ItYWJzLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNSRVYgPSAiMmQxZDMyMzUwNTU4NWQ0MDZhN2U2NGZiOTMyOTUzYmFlZmM1OTQ1ZSIKLVBWID0gIjEuOS4xMCtnaXQke1NSQ1BWfSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9qYWNrYXVkaW8vamFjazIuZ2l0IgorU1JDUkVWID0gImMxNjQ3ODE5ZWVkNmQxMWY5NGIyMTk4MWQ5Yzg2OTYyOTI5OWYzNTciCitQViA9ICIxLjkuMTIiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBpbmhlcml0IHdhZiBwa2djb25maWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGliYXNzL2xpYmFzc18wLjEzLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmFzcy9saWJhc3NfMC4xMy42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGFjMGY4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGliYXNzL2xpYmFzc18wLjEzLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1tdWx0aW1lZGlhLyR7QlBOfS8ke0JQTn0uaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkYWE2Y2ZjYTQzN2MwNzc2YWY1Zjc5NzUwY2RkOWI0ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmOGE4NzRkMTA0ZTNlNzJlMmNjMDU3ZTVhMTcxMGM2NTBiMTAzNjc0ODY4NDVhMjZlNWZmMjhlZDdhOTEyYzJkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJhc3MvbGliYXNzLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGliYXNzL2xpYmFzc18wLjE0LjAuYmIKc2ltaWxhcml0eSBpbmRleCA4NSUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJhc3MvbGliYXNzLmluYwpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJhc3MvbGliYXNzXzAuMTQuMC5iYgppbmRleCA0YmMzZGIwLi4zNDU0YTVjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmFzcy9saWJhc3MuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGliYXNzL2xpYmFzc18wLjE0LjAuYmIKQEAgLTcsNyArNyw5IEBACiAKIERFUEVORFMgPSAiZW5jYSBmb250Y29uZmlnIGZyZWV0eXBlIGxpYnBuZyBmcmliaWRpIgogCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJhc3MvbGliYXNzL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9L2xpYmFzcy0ke1BWfS50YXIueHoiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGliYXNzL2xpYmFzcy5naXQiCitTUkNSRVYgPSAiNzMyODRiNjc2YjEyYjQ3ZTE3YWYyZWYxYjQzMDUyNzI5OWUxMGMxNyIKK1MgPSAiJHtXT1JLRElSfS9naXQiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmNkaW8vbGliY2Rpb18wLjkzLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJjZGlvL2xpYmNkaW9fMi4wLjAuYmIKc2ltaWxhcml0eSBpbmRleCA4NiUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJjZGlvL2xpYmNkaW9fMC45My5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJjZGlvL2xpYmNkaW9fMi4wLjAuYmIKaW5kZXggOTllNmE4NC4uNmJmNjRkNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJjZGlvL2xpYmNkaW9fMC45My5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmNkaW8vbGliY2Rpb18yLjAuMC5iYgpAQCAtNSw4ICs1LDkgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgogCiBTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkMTU0NDc2ZmVhYWM1YTdiNWYxODBlODNlYWYzZDY4OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0OTcyY2QyMmZkOGQwZThiZmY5MjJkMzVjN2E2NDViZTBkYjBhYjBlN2IzZGZhZWNjOWNkODI3MjQyOWQ2OTc1IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMGNiMjU5MDUxMTNiOTMwZTQ1MzlkMmY0ZWI2NTc0YjAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWI0ODFiNWRhMDA5YmVhMzFkYjg3NTgwNTY2NTk3NGUyZmM1NjhlMmIyYWZhNTE2ZjQwMzY3MzM2NTdjZjk1OCIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic2RsLW1peGVyL2xpYnNkbDItbWl4ZXJfMi4wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNkbC1taXhlci9saWJzZGwyLW1peGVyXzIuMC4yLmJiCnNpbWlsYXJpdHkgaW5kZXggNzclCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic2RsLW1peGVyL2xpYnNkbDItbWl4ZXJfMi4wLjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic2RsLW1peGVyL2xpYnNkbDItbWl4ZXJfMi4wLjIuYmIKaW5kZXggODI3NmI0NC4uNzE4ZjNmNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzZGwtbWl4ZXIvbGlic2RsMi1taXhlcl8yLjAuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNkbC1taXhlci9saWJzZGwyLW1peGVyXzIuMC4yLmJiCkBAIC0yLDEyICsyLDEyIEBACiBTRUNUSU9OID0gImxpYnMiCiBERVBFTkRTID0gInZpcnR1YWwvbGlic2RsMiBmbGFjIGxpYm1pa21vZCBsaWJ2b3JiaXMiCiBMSUNFTlNFID0gIlpsaWIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9MjlkOGJjN2MzOGFhNDRiMWNmM2E2MzNhNDY1ODk5MTciCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9OTVlMGMzY2Y2M2Y3MWI5NTA5MTFlNjk4YTU0YjdmYzUiCiAKIFNSQ19VUkkgPSAiaHR0cDovL3d3dy5saWJzZGwub3JnL3Byb2plY3RzL1NETF9taXhlci9yZWxlYXNlL1NETDJfbWl4ZXItJHtQVn0udGFyLmd6IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYzZjNGY1NTZkNDQxNTg3MWY1MjYyNDhmNWM5YTYyN2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWEyNGY2MmE2MTAyNDlkNzQ0Y2JkOGQyOGVlMzk5ZDg5MDVkYjcyMjJiZjNiZGJjOGE4YjRhNzZlNTk3Njk1ZiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhYWEwNTUxMzkzOTkzYzE0YTEzZjcyYjMzOWMwZWQ2YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZTYxNWUyN2VmY2E0ZjQzOWRmOWFmNmFhMmM2ZGU4NDE1MGQxN2NiZmQxMjE3NGI1NDg2OGMxMmYxOWM4M2JiIgogCiBTID0gIiR7V09SS0RJUn0vU0RMMl9taXhlci0ke1BWfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wdl8wLjI2LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXB2XzAuMjYuMC5iYgppbmRleCA0NGQ5MmEwLi5kZTc4ZGUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXB2XzAuMjYuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXB2XzAuMjYuMC5iYgpAQCAtMTYsNyArMTYsNyBAQAogCiBTUkNfVVJJID0gIiBcCiAgICAgaHR0cHM6Ly9naXRodWIuY29tL21wdi1wbGF5ZXIvbXB2L2FyY2hpdmUvdiR7UFZ9LnRhci5nejtuYW1lPW1wdiBcCi0gICAgaHR0cDovL3d3dy5mcmVlaGFja2Vycy5vcmcvfnRuYWd5L3JlbGVhc2Uvd2FmLTEuOC4xMjtuYW1lPXdhZjtzdWJkaXI9JHtCUE59LSR7UFZ9IFwKKyAgICBodHRwOi8vd3d3LmZyZWVoYWNrZXJzLm9yZy9+dG5hZ3kvcmVsZWFzZS93YWYtMS44LjEyO25hbWU9d2FmO2Rvd25sb2FkZmlsZW5hbWU9d2FmO3N1YmRpcj0ke0JQTn0tJHtQVn0gXAogIgogU1JDX1VSSVttcHYubWQ1c3VtXSA9ICIwMzhkMGI2NjBkZTA3ZmY2NDVhZDZhNzQxNzA0ZWNhYiIKIFNSQ19VUklbbXB2LnNoYTI1NnN1bV0gPSAiZGFmM2VmMzU4ZDVmMjYwZjIyNjlmN2NhYWJjZTI3ZjQ0NmMyOTE0NTdlYzMzMDA3NzE1MjEyNzEzM2I3MWI0NiIKQEAgLTY0LDkgKzY0LDEwIEBACiAgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCiAiCiAKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICBsbiAtc2Ygd2FmLTEuOC4xMiAke1N9L3dhZgorYWRqdXN0X3dhZl9wZXJtcygpIHsKICAgICBjaG1vZCAreCAke1N9L3dhZgogfQogCitkb19wYXRjaFtwb3N0ZnVuY3NdICs9ICJhZGp1c3Rfd2FmX3Blcm1zIgorCiBGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDEtUmV2ZXJ0LW1lZGlhLWN0bC1Eb24tdC1pbnN0YWxsLWxpYm1lZGlhY3RsLWFuZC1saWJ2NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDEtUmV2ZXJ0LW1lZGlhLWN0bC1Eb24tdC1pbnN0YWxsLWxpYm1lZGlhY3RsLWFuZC1saWJ2NC5wYXRjaAppbmRleCA3NDEzMDk0Li5lYjI5NGIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAxLVJldmVydC1tZWRpYS1jdGwtRG9uLXQtaW5zdGFsbC1saWJtZWRpYWN0bC1hbmQtbGlidjQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMS1SZXZlcnQtbWVkaWEtY3RsLURvbi10LWluc3RhbGwtbGlibWVkaWFjdGwtYW5kLWxpYnY0LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyZDZiZmE3NWIyZTE2YjRkNzY0ZjFiZjAwYmI5MDJmYjRiNWU1MDdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2N2E2ZTkxOWI4MjYzZDZkMmI3MTUwZTYyZjI2ZmIwNmJiYzUyNmVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMjcgRmViIDIwMTUgMjE6NTU6MzYgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSF0gUmV2ZXJ0ICJtZWRpYS1jdGw6IERvbid0IGluc3RhbGwgbGlibWVkaWFjdGwgYW5kCkBAIC0xMCw2ICsxMCw3IEBACiAKIENvbmZsaWN0czoKIAl1dGlscy9tZWRpYS1jdGwvTWFrZWZpbGUuYW0KKwogLS0tCiAgdXRpbHMvbWVkaWEtY3RsL01ha2VmaWxlLmFtIHwgMTAgKysrLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCkBAIC00MCw2ICs0MSwzIEBACiAgbWVkaWFjdGxfaW5jbHVkZWRpcj0kKGluY2x1ZGVkaXIpL21lZGlhY3RsCiAgbm9pbnN0X0hFQURFUlMgPSBtZWRpYWN0bC5oIHY0bDJzdWJkZXYuaAogIAotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAxLWJ1aWxkc3lzdGVtLWRvLW5vdC1hc3N1bWUtYnVpbGRpbmctaW4tc291cmNlLXRyZWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAxLWJ1aWxkc3lzdGVtLWRvLW5vdC1hc3N1bWUtYnVpbGRpbmctaW4tc291cmNlLXRyZWUucGF0Y2gKaW5kZXggNTQxNjFmOS4uMTI2MDlkMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMS1idWlsZHN5c3RlbS1kby1ub3QtYXNzdW1lLWJ1aWxkaW5nLWluLXNvdXJjZS10cmVlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDEtYnVpbGRzeXN0ZW0tZG8tbm90LWFzc3VtZS1idWlsZGluZy1pbi1zb3VyY2UtdHJlZS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gODA2ODIyZjVhY2I3NTZkNWFjZGEwZjkwNjNjODRiMjhiMzhiM2ZmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzUzNzJiODA4OGMyMDQ3NDQ5N2I3OWVjNmNmMWU5OWYyZDE3ZjU2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IElzbW8gUHV1c3RpbmVuIDxpc21vLnB1dXN0aW5lbkBpbnRlbC5jb20+CiBEYXRlOiBNb24sIDMgQXByIDIwMTcgMTM6MjM6MzggKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCB2NGwtdXRpbHNdIGJ1aWxkc3lzdGVtOiBkbyBub3QgYXNzdW1lIGJ1aWxkaW5nIGluIHNvdXJjZSB0cmVlLgorU3ViamVjdDogW1BBVENIXSBidWlsZHN5c3RlbTogZG8gbm90IGFzc3VtZSBidWlsZGluZyBpbiBzb3VyY2UgdHJlZS4KIAogVXNlICQodG9wX3NyY2RpcikgYXMgcmVmZXJlbmNlIGZvciBpbmNsdWRlIHBhdGhzIGFuZCBidWlsZHRpbWUgc2NyaXB0cy4KIE90aGVyd2lzZSBjb21waWxhdGlvbiBvdXRzaWRlIG9mIHByb2plY3Qgcm9vdCBkaXJlY3Rvcnkgd2lsbCBmYWlsCkBAIC0xMiw2ICsxMiw3IEBACiBVcHN0cmVhbS1zdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdC5saW51eHR2Lm9yZy8vdjRsLXV0aWxzLmdpdC9jb21taXQvP2lkPWJkOThjOWE5OWJmZmM4ZDQ0YzU0ODU5MzQ1ZTRkZmVlMGFkYTQyNzVdCiAKIFNpZ25lZC1vZmYtYnk6IElzbW8gUHV1c3RpbmVuIDxpc21vLnB1dXN0aW5lbkBpbnRlbC5jb20+CisKIC0tLQogIHV0aWxzL2NlYy1jb21wbGlhbmNlL01ha2VmaWxlLmFtICB8IDIgKy0KICB1dGlscy9jZWMtY3RsL01ha2VmaWxlLmFtICAgICAgICAgfCAyICstCkBAIC0yMiw3ICsyMyw3IEBACiAgNiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS91dGlscy9jZWMtY29tcGxpYW5jZS9NYWtlZmlsZS5hbSBiL3V0aWxzL2NlYy1jb21wbGlhbmNlL01ha2VmaWxlLmFtCi1pbmRleCBlYzVkZTUxLi44MzMxYWEwIDEwMDY0NAoraW5kZXggZjA1ZmU2Yy4uZjdkMTUzNSAxMDA2NDQKIC0tLSBhL3V0aWxzL2NlYy1jb21wbGlhbmNlL01ha2VmaWxlLmFtCiArKysgYi91dGlscy9jZWMtY29tcGxpYW5jZS9NYWtlZmlsZS5hbQogQEAgLTcsNyArNyw3IEBAIGNlY19jb21wbGlhbmNlX0xERkxBR1MgPSAtbHJ0CkBAIC0zNSwxMCArMzYsMTAgQEAKICBjZWMtY29tcGxpYW5jZS5jcHA6IHZlcnNpb24uaAogIAogZGlmZiAtLWdpdCBhL3V0aWxzL2NlYy1jdGwvTWFrZWZpbGUuYW0gYi91dGlscy9jZWMtY3RsL01ha2VmaWxlLmFtCi1pbmRleCAwYTdlZjIyLi42YWZiNmM5IDEwMDY0NAoraW5kZXggNGE2ZWFlNS4uNTcwYTA3MCAxMDA2NDQKIC0tLSBhL3V0aWxzL2NlYy1jdGwvTWFrZWZpbGUuYW0KICsrKyBiL3V0aWxzL2NlYy1jdGwvTWFrZWZpbGUuYW0KLUBAIC03LDcgKzcsNyBAQCBjZWNfY3RsX0xERkxBR1MgPSAtbHJ0CitAQCAtNiw3ICs2LDcgQEAgY2VjX2N0bF9TT1VSQ0VTID0gY2VjLWN0bC5jcHAKICBjZWMtY3RsLmNwcDogY2VjLWN0bC1nZW4uaAogIAogIGNlYy1jdGwtZ2VuLmg6IG1zZzJjdGwucGwgLi4vLi4vaW5jbHVkZS9saW51eC9jZWMuaCAuLi8uLi9pbmNsdWRlL2xpbnV4L2NlYy1mdW5jcy5oCkBAIC00OCw3ICs0OSw3IEBACiAgY2xlYW4tbG9jYWw6CiAgCS1ybSAtdmYgY2VjLWN0bC1nZW4uaAogZGlmZiAtLWdpdCBhL3V0aWxzL2NlYy1mb2xsb3dlci9NYWtlZmlsZS5hbSBiL3V0aWxzL2NlYy1mb2xsb3dlci9NYWtlZmlsZS5hbQotaW5kZXggNTM4ZWRiMi4uZmRiZjNkOSAxMDA2NDQKK2luZGV4IGQ4YWQyOTIuLmUzNTUzZWIgMTAwNjQ0CiAtLS0gYS91dGlscy9jZWMtZm9sbG93ZXIvTWFrZWZpbGUuYW0KICsrKyBiL3V0aWxzL2NlYy1mb2xsb3dlci9NYWtlZmlsZS5hbQogQEAgLTcsMTIgKzcsMTIgQEAgY2VjX2ZvbGxvd2VyX0xERkxBR1MgPSAtbHJ0CkBAIC02NSw3ICs2Niw3IEBACiArCSQodG9wX3NyY2RpcikvdXRpbHMvY2VjLWN0bC9tc2cyY3RsLnBsIDIgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL2xpbnV4L2NlYy5oICQodG9wX3NyY2RpcikvaW5jbHVkZS9saW51eC9jZWMtZnVuY3MuaCA+JEAKICAKICB2ZXJzaW9uLmg6Ci0gCUBpZiBnaXQgcmV2LXBhcnNlIEhFQUQgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKKyAJQGlmIGdpdCBzaG93LXJlZiAtcyBIRUFEID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCiBkaWZmIC0tZ2l0IGEvdXRpbHMvcXY0bDIvTWFrZWZpbGUuYW0gYi91dGlscy9xdjRsMi9NYWtlZmlsZS5hbQogaW5kZXggZmQ1ODQ4Ni4uY2NkMWEyYSAxMDA2NDQKIC0tLSBhL3V0aWxzL3F2NGwyL01ha2VmaWxlLmFtCkBAIC04MCw3ICs4MSw3IEBACiAgaWYgV0lUSF9RVEdMCiAgcXY0bDJfQ1BQRkxBR1MgKz0gJChRVEdMX0NGTEFHUykKIGRpZmYgLS1naXQgYS91dGlscy92NGwyLWNvbXBsaWFuY2UvTWFrZWZpbGUuYW0gYi91dGlscy92NGwyLWNvbXBsaWFuY2UvTWFrZWZpbGUuYW0KLWluZGV4IDAzZGI4ZGYuLjE4Yjk4OTIgMTAwNjQ0CitpbmRleCBjMmI1OTE5Li5mYjhkMTJlIDEwMDY0NAogLS0tIGEvdXRpbHMvdjRsMi1jb21wbGlhbmNlL01ha2VmaWxlLmFtCiArKysgYi91dGlscy92NGwyLWNvbXBsaWFuY2UvTWFrZWZpbGUuYW0KIEBAIC01LDcgKzUsNyBAQCBERUZTIDo9CkBAIC0xMDUsNiArMTA2LDMgQEAKICAKICBpZiBXSVRIX1Y0TDJfQ1RMX0xJQlY0TAogIHY0bDJfY3RsX0xEQUREID0gLi4vLi4vbGliL2xpYnY0bDIvbGlidjRsMi5sYSAuLi8uLi9saWIvbGlidjRsY29udmVydC9saWJ2NGxjb252ZXJ0LmxhIC1scnQgLWxwdGhyZWFkCi0tLSAKLTIuOS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDEtaXItY3RsLURlZmluZS1URU1QX0ZBSUxVUkVfUkVUUlktaWYtdW5kZWZpbmVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMS1pci1jdGwtRGVmaW5lLVRFTVBfRkFJTFVSRV9SRVRSWS1pZi11bmRlZmluZWQucGF0Y2gKaW5kZXggZjFlMTFkYS4uODJmYzNlMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMS1pci1jdGwtRGVmaW5lLVRFTVBfRkFJTFVSRV9SRVRSWS1pZi11bmRlZmluZWQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMS1pci1jdGwtRGVmaW5lLVRFTVBfRkFJTFVSRV9SRVRSWS1pZi11bmRlZmluZWQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGU2MGFlYTUwZTQxYWU4YTE3NjcyYmViNTg1OWJlZWNiNjZlN2EzMDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGIyZWZjYzIwNjE3ZDYzMTdmNzRjNGFjYjJhNmFmNWI3NjVmMjBiMzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogRnJpLCAxNCBKdWwgMjAxNyAxMzoxMToyNSAtMDcwMAotU3ViamVjdDogW1BBVENIIDEvM10gaXItY3RsOiBEZWZpbmUgVEVNUF9GQUlMVVJFX1JFVFJZIGlmIHVuZGVmaW5lZAorU3ViamVjdDogW1BBVENIXSBpci1jdGw6IERlZmluZSBURU1QX0ZBSUxVUkVfUkVUUlkgaWYgdW5kZWZpbmVkCiAKIHVzZSBzdHJuZHVwKCkgaW5zdGVhZCBvZiBzdHJuZHVwYSgpIHdoaWNoIGlzIG5vdAogdW5pdmVyc2FsbHkgYXZhaWxhYmxlIGluIEMgbGlicmFyaWVzCkBAIC05LDYgKzksNyBAQAogVGFrZW4gZnJvbSBBbHBpbmVMaW51eAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICB1dGlscy9pci1jdGwvaXItY3RsLmMgfCAxNCArKysrKysrKysrKysrLQogIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCkBAIC01MCw2ICs1MSwzIEBACiAgCiAgCWlmICghc3RydG9zY2FuY29kZShwICsgMSwgJnNjYW5jb2RlKSkgewogIAkJZnByaW50ZihzdGRlcnIsIF8oImVycm9yOiBpbnZhbGlkIHNjYW5jb2RlICclcydcbiIpLCBwICsgMSk7Ci0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAyLWNvbnRyaWItdGVzdC1MaW5rLW1jX25leHRnZW5fdGVzdC13aXRoLWxpYmFyZ3AtaWYtbmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAyLWNvbnRyaWItdGVzdC1MaW5rLW1jX25leHRnZW5fdGVzdC13aXRoLWxpYmFyZ3AtaWYtbmUucGF0Y2gKaW5kZXggMmZiNDA1Ny4uYTc3OWEzMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMi1jb250cmliLXRlc3QtTGluay1tY19uZXh0Z2VuX3Rlc3Qtd2l0aC1saWJhcmdwLWlmLW5lLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDItY29udHJpYi10ZXN0LUxpbmstbWNfbmV4dGdlbl90ZXN0LXdpdGgtbGliYXJncC1pZi1uZS5wYXRjaApAQCAtMSwxMSArMSwxMiBAQAotRnJvbSBiM2FjYzRjNjQwN2Y5NTUzZjMyNTgyYTlhZWU2YTExYjVmY2QxZDhhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0OWY4NjVhMTdkNjJkYjdiYmQzMzNhOWI4M2ZhZGVlYTU1Njg2ZTM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMTQgSnVsIDIwMTcgMTM6MTc6MTkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzNdIGNvbnRyaWIvdGVzdDogTGluayBtY19uZXh0Z2VuX3Rlc3Qgd2l0aCBsaWJhcmdwIGlmIG5lZWRlZAorU3ViamVjdDogW1BBVENIXSBjb250cmliL3Rlc3Q6IExpbmsgbWNfbmV4dGdlbl90ZXN0IHdpdGggbGliYXJncCBpZiBuZWVkZWQKIAogbXVzbCBkZXBlbmRzIG9uIGV4dGVybmFsIGFyZ3AgaW1wbGVtZW50YXRpb24gZS5nLgogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBjb250cmliL3Rlc3QvTWFrZWZpbGUuYW0gfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCkBAIC0yMyw2ICsyNCwzIEBACiAgCiAgCiAgaW9jdGxfdGVzdF9TT1VSQ0VTID0gaW9jdGwtdGVzdC5jIGlvY3RsLXRlc3QuaCBpb2N0bF8zMi5oIGlvY3RsXzY0LmgKLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDMtdjRsMi1jdGwtRG8tbm90LXVzZS1nZXRzdWJvcHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAzLXY0bDItY3RsLURvLW5vdC11c2UtZ2V0c3Vib3B0LnBhdGNoCmluZGV4IDBhOTg2YWUuLjViODRhZjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDMtdjRsMi1jdGwtRG8tbm90LXVzZS1nZXRzdWJvcHQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMy12NGwyLWN0bC1Eby1ub3QtdXNlLWdldHN1Ym9wdC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZDA0YWE2ODY2Y2JlYTU3YzRhODFiMDMzY2Q2MDU4NmE5NDM2YWM2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZjdhNGI3OWIzMzIzNTM0NDYwYTYzYjNlNmM1OGViYWYwNmFkZjIwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDE0IEp1bCAyMDE3IDEzOjIwOjA1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMy8zXSB2NGwyLWN0bDogRG8gbm90IHVzZSBnZXRzdWJvcHQKK1N1YmplY3Q6IFtQQVRDSF0gdjRsMi1jdGw6IERvIG5vdCB1c2UgZ2V0c3Vib3B0CiAKIFBPU0lYIHNheXMgdGhhdCBiZWhhdmlvciB3aGVuIHN1Ym9wdHMgbGlzdCBpcyBlbXB0eSBpcyB1bmRlZmluZWQuCiBtdXNsIGxpYnMgd2lsbCBzZXQgdmFsdWUgdG8gTlVMTCB3aGljaCBsZWFkcyB0byBjcmFzaC4KQEAgLTksNiArOSw3IEBACiBUYWtlbiBmcm9tIEFscGluZUxpbnV4CiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHV0aWxzL3Y0bDItY3RsL3Y0bDItY3RsLWNvbW1vbi5jcHAgfCAxOSArKysrKysrKysrLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCkBAIC00NCw2ICs0NSwzIEBACiAgfQogIAogIHZvaWQgY29tbW9uX2NtZChpbnQgY2gsIGNoYXIgKm9wdGFyZykKLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzL2V4cG9ydC1tZWRpYWN0bC1oZWFkZXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvZXhwb3J0LW1lZGlhY3RsLWhlYWRlcnMucGF0Y2gKaW5kZXggYzYxMGU3ZS4uNTVhNWNkYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvZXhwb3J0LW1lZGlhY3RsLWhlYWRlcnMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvZXhwb3J0LW1lZGlhY3RsLWhlYWRlcnMucGF0Y2gKQEAgLTEsOSArMSwxNyBAQAotSW5kZXg6IHY0bC11dGlscy0xLjYuMi91dGlscy9tZWRpYS1jdGwvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB2NGwtdXRpbHMtMS42LjIub3JpZy91dGlscy9tZWRpYS1jdGwvTWFrZWZpbGUuYW0KLSsrKyB2NGwtdXRpbHMtMS42LjIvdXRpbHMvbWVkaWEtY3RsL01ha2VmaWxlLmFtCi1AQCAtNCw4ICs0LDggQEAgbGlibWVkaWFjdGxfbGFfQ0ZMQUdTID0gJChMSUJVREVWX0NGTEFHUwotIGxpYm1lZGlhY3RsX2xhX0xERkxBR1MgPSAkKExJQlVERVZfTElCUykKK0Zyb20gYjgyZTUwOWMxMDY1OWE0NjQ3OTYxYTZkYTNhZGY0ZDI4NWRlYTJkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDEgTWFyIDIwMTUgMjI6MjU6MDcgKzAwMDAKKworLS0tCisgdXRpbHMvbWVkaWEtY3RsL01ha2VmaWxlLmFtIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3V0aWxzL21lZGlhLWN0bC9NYWtlZmlsZS5hbSBiL3V0aWxzL21lZGlhLWN0bC9NYWtlZmlsZS5hbQoraW5kZXggN2M1MjBhMi4uNzQ4MzUzZCAxMDA2NDQKKy0tLSBhL3V0aWxzL21lZGlhLWN0bC9NYWtlZmlsZS5hbQorKysrIGIvdXRpbHMvbWVkaWEtY3RsL01ha2VmaWxlLmFtCitAQCAtMTcsOCArMTcsOCBAQCBDTEVBTkZJTEVTID0gJChCVUlMVF9TT1VSQ0VTKQorIG5vZGlzdF9saWJ2NGwyc3ViZGV2X2xhX1NPVVJDRVMgPSAkKEJVSUxUX1NPVVJDRVMpCiAgbGlidjRsMnN1YmRldl9sYV9TT1VSQ0VTID0gbGlidjRsMnN1YmRldi5jCiAgbGlidjRsMnN1YmRldl9sYV9MSUJBREQgPSBsaWJtZWRpYWN0bC5sYQogLW1lZGlhY3RsX2luY2x1ZGVkaXI9JChpbmNsdWRlZGlyKS9tZWRpYWN0bApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvbWVkaWFjdGwtcGtnY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvbWVkaWFjdGwtcGtnY29uZmlnLnBhdGNoCmluZGV4IDM0ZmIzY2YuLjlmY2Y2MTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzL21lZGlhY3RsLXBrZ2NvbmZpZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy9tZWRpYWN0bC1wa2djb25maWcucGF0Y2gKQEAgLTEsOCArMSwxNiBAQAotSW5kZXg6IHY0bC11dGlscy0xLjYuMi91dGlscy9tZWRpYS1jdGwvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB2NGwtdXRpbHMtMS42LjIub3JpZy91dGlscy9tZWRpYS1jdGwvTWFrZWZpbGUuYW0KLSsrKyB2NGwtdXRpbHMtMS42LjIvdXRpbHMvbWVkaWEtY3RsL01ha2VmaWxlLmFtCi1AQCAtNyw2ICs3LDcgQEAgbGlidjRsMnN1YmRldl9sYV9MSUJBREQgPSBsaWJtZWRpYWN0bC5sYQorRnJvbSA0ODBjMDRhYzZhOWQxMWJmZWY5ZDRhY2EwNzMwNTJmZGNlZTRmZGVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMSBNYXIgMjAxNSAyMjoyNTowNyArMDAwMAorCistLS0KKyB1dGlscy9tZWRpYS1jdGwvTWFrZWZpbGUuYW0gfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3V0aWxzL21lZGlhLWN0bC9NYWtlZmlsZS5hbSBiL3V0aWxzL21lZGlhLWN0bC9NYWtlZmlsZS5hbQoraW5kZXggZDExZmEyZS4uN2M1MjBhMiAxMDA2NDQKKy0tLSBhL3V0aWxzL21lZGlhLWN0bC9NYWtlZmlsZS5hbQorKysrIGIvdXRpbHMvbWVkaWEtY3RsL01ha2VmaWxlLmFtCitAQCAtMjAsNiArMjAsNyBAQCBsaWJ2NGwyc3ViZGV2X2xhX0xJQkFERCA9IGxpYm1lZGlhY3RsLmxhCiAgbWVkaWFjdGxfaW5jbHVkZWRpcj0kKGluY2x1ZGVkaXIpL21lZGlhY3RsCiAgbm9pbnN0X0hFQURFUlMgPSBtZWRpYWN0bC5oIHY0bDJzdWJkZXYuaAogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJtL2xpYnZweC9saWJ2cHgtY29uZmlndXJlLXN1cHBvcnQtYmxhbmstcHJlZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJtL2xpYnZweC9saWJ2cHgtY29uZmlndXJlLXN1cHBvcnQtYmxhbmstcHJlZml4LnBhdGNoCmluZGV4IGM3YTZlNTEuLjZhZDdmMmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvd2VibS9saWJ2cHgvbGlidnB4LWNvbmZpZ3VyZS1zdXBwb3J0LWJsYW5rLXByZWZpeC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYm0vbGlidnB4L2xpYnZweC1jb25maWd1cmUtc3VwcG9ydC1ibGFuay1wcmVmaXgucGF0Y2gKQEAgLTEsMTkgKzEsMjggQEAKLVVwc3RyZWFtOiBub3QgeWV0CitGcm9tIGRjMGE1YzNkMmRkNGU3OWQxMmExNTBhMjQ2YTk1YzRkYzg4MzI2ZjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgorRGF0ZTogVHVlLCAxNiBBdWcgMjAxMSAxNjowNDozNSArMDIwMAorU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbTogbm90IHlldAogCiBGaXggY29uZmlndXJlIHRvIGFjY2VwdCAiLS1wcmVmaXg9IiAoYSBibGFuayBwcmVmaXgpLgogCi0tLS0gbGlidnB4LTAuOS4xL2J1aWxkL21ha2UvY29uZmlndXJlLnNoLm9yaWcJMjAxMC0wNi0xNyAwOTowODo1Ni4wMDAwMDAwMDAgLTA0MDAKLSsrKyBsaWJ2cHgtMC45LjEvYnVpbGQvbWFrZS9jb25maWd1cmUuc2gJMjAxMC0wOS0yMyAxNDoyNzo0OC4wMDAwMDAwMDAgLTA0MDAKLUBAIC00NDQsNiArNDQ0LDggQEAKKy0tLQorIGJ1aWxkL21ha2UvY29uZmlndXJlLnNoIHwgMjAgKysrKysrKysrKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2J1aWxkL21ha2UvY29uZmlndXJlLnNoIGIvYnVpbGQvbWFrZS9jb25maWd1cmUuc2gKK2luZGV4IDAwN2UwMjAuLjA0ZDVjYmYgMTAwNjQ0CistLS0gYS9idWlsZC9tYWtlL2NvbmZpZ3VyZS5zaAorKysrIGIvYnVpbGQvbWFrZS9jb25maWd1cmUuc2gKK0BAIC01ODEsNiArNTgxLDggQEAgcHJvY2Vzc19jb21tb25fY21kbGluZSgpIHsKICAgICAgICAgIDs7Ci0gICAgICAgICAtLXByZWZpeD0qKQorICAgICAgIC0tcHJlZml4PSopCiAgICAgICAgICBwcmVmaXg9IiR7b3B0dmFsfSIKICsgICAgICAgICMgRGlzdGluZ3Vpc2ggYmV0d2VlbiAicHJlZml4IG5vdCBzZXQiIGFuZCAicHJlZml4IHNldCB0byAnJyIKICsgICAgICAgIHByZWZpeHNldD0xCiAgICAgICAgICA7OwotICAgICAgICAgLS1saWJkaXI9KikKKyAgICAgICAtLWxpYmRpcj0qKQogICAgICAgICAgbGliZGlyPSIke29wdHZhbH0iCi1AQCAtNTg3LDEzICs1ODcsMjMgQEAgcHJvY2Vzc19jbWRsaW5lKCkgeworQEAgLTYxNCwxMyArNjE2LDIzIEBAIHByb2Nlc3NfY21kbGluZSgpIHsKICB9CiAgCiAgcG9zdF9wcm9jZXNzX2NvbW1vbl9jbWRsaW5lKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9nZW9jbHVlL2dlb2NsdWVfMi40LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dlb2NsdWUvZ2VvY2x1ZV8yLjQuNC5iYgppbmRleCAxZDUzMWFlLi5iMzFkOGViIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dlb2NsdWUvZ2VvY2x1ZV8yLjQuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dlb2NsdWUvZ2VvY2x1ZV8yLjQuNC5iYgpAQCAtOCw5ICs4LDkgQEAKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ODExNGI4M2EwNDM1ZDgxMzZiNDdiZDcwMTExY2U1Y2QiCiAKLURFUEVORFMgPSAiZ2xpYi0yLjAgZGJ1cyBqc29uLWdsaWIgbGlic291cC0yLjQgaW50bHRvb2wtbmF0aXZlIGdvYmplY3QtaW50cm9zcGVjdGlvbi1uYXRpdmUiCitERVBFTkRTID0gImdsaWItMi4wIGRidXMganNvbi1nbGliIGxpYnNvdXAtMi40IGludGx0b29sLW5hdGl2ZSIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdvYmplY3QtaW50cm9zcGVjdGlvbgogCiBTUkNfVVJJID0gIiBcCiAgICAgaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvZ2VvY2x1ZS9yZWxlYXNlcy8yLjQvZ2VvY2x1ZS0ke1BWfS50YXIueHogXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNi8wMDAxLVNDb25zdHJ1Y3QtcHJlZml4LWluY2x1ZGVweS13aXRoLXN5c3Jvb3QtYW5kLWRyb3Atc3kucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE2LzAwMDEtU0NvbnN0cnVjdC1wcmVmaXgtaW5jbHVkZXB5LXdpdGgtc3lzcm9vdC1hbmQtZHJvcC1zeS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmVhMzIyNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE2LzAwMDEtU0NvbnN0cnVjdC1wcmVmaXgtaW5jbHVkZXB5LXdpdGgtc3lzcm9vdC1hbmQtZHJvcC1zeS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLUZyb20gMWUyY2VhODk0NWJjMjE4M2ZiZTFhMDEyZGNkNjMzYTM1MjEyNTk1MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjQgQXByIDIwMTIgMTg6NDU6MTQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gU0NvbnN0cnVjdDogcHJlZml4IGluY2x1ZGVweSB3aXRoIHN5c3Jvb3QgYW5kIGRyb3Agc3lzcm9vdAotIGZyb20gcHl0aG9uX2xpYl9kaXIKLQotKiB3aXRob3V0IFBZVEhPTlBBVEgsIGRpc3R1dGlsJ3Mgc3lzY29uZmlnIHJldHVybnMgSU5DTFVERVBZIHdpdGhvdXQgc3lzcm9vdCBwcmVmaXgKLSAgYW5kIHdpdGggUFlUSE9OUEFUSCBmcm9tIE9FIGl0J3MgcG9pbnRpbmcgdG8gbmF0aXZlIHB5dGhvbiBkaXIKLQotICAgICQgZXhwb3J0IFBZVEhPTlBBVEg9L09FL3Noci1jb3JlL3RtcC1lZ2xpYmMvc3lzcm9vdHMvb20tZ3RhMDIvdXNyL2xpYi9weXRob24yLjcvCi0gICAgJCBweXRob24KLSAgICBQeXRob24gMi43LjIgKGRlZmF1bHQsIEFwciAxOCAyMDEyLCAwOToxOTo1OSkKLSAgICBbR0NDIDQuNi4yXSBvbiBsaW51eDIKLSAgICBUeXBlICJoZWxwIiwgImNvcHlyaWdodCIsICJjcmVkaXRzIiBvciAibGljZW5zZSIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0gICAgPj4+IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKLSAgICA+Pj4gc3lzY29uZmlnLmdldF9jb25maWdfdmFycygnSU5DTFVERVBZJykKLSAgICBbJy9PRS9zaHItY29yZS90bXAtZWdsaWJjL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvaW5jbHVkZS9weXRob24yLjcnXQotICAgID4+PgotICAgICQgdW5zZXQgUFlUSE9OUEFUSAotICAgICQgcHl0aG9uCi0gICAgUHl0aG9uIDIuNy4yIChkZWZhdWx0LCBBcHIgMTggMjAxMiwgMDk6MTk6NTkpCi0gICAgW0dDQyA0LjYuMl0gb24gbGludXgyCi0gICAgVHlwZSAiaGVscCIsICJjb3B5cmlnaHQiLCAiY3JlZGl0cyIgb3IgImxpY2Vuc2UiIGZvciBtb3JlIGluZm9ybWF0aW9uLgotICAgID4+PiBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCi0gICAgPj4+IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoJ0lOQ0xVREVQWScpCi0gICAgWycvcHl0aG9uMi43J10KLSAgICA+Pj4gaW1wb3J0IHN5c2NvbmZpZwotICAgID4+PiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzKCdJTkNMVURFUFknKQotICAgIFsnL09FL3Noci1jb3JlL3RtcC1lZ2xpYmMvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9pbmNsdWRlL3B5dGhvbjIuNyddCi0qIHB5dGhvbl9saWJfZGlyID0gcHl0aG9uX2xpYl9kaXIucmVwbGFjZShlbnZbJ3N5c3Jvb3QnXSwgJycpCi0gIHJldHVybnMgcGF0aCB0byB0YXJnZXQgc3lzcm9vdAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQZXRlciBBLiBCaWdvdCA8cGFiQHBhYmlnb3QuY29tPgotLS0tCi0gU0NvbnN0cnVjdCB8IDkgKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvU0NvbnN0cnVjdCBiL1NDb25zdHJ1Y3QKLWluZGV4IDZjOTMzMTEuLmNkZThiM2QgMTAwNjQ0Ci0tLS0gYS9TQ29uc3RydWN0Ci0rKysgYi9TQ29uc3RydWN0Ci1AQCAtMTE0OCw2ICsxMTQ4LDEyIEBAIGVsc2U6Ci0gICAgICAgICBiYXNlY2ZsYWdzICs9ICcgLWNvdmVyYWdlJwotICAgICAgICAgbGRmbGFncyArPSAnIC1jb3ZlcmFnZScKLSAgICAgICAgIGxkc2hhcmVkICs9ICcgLWNvdmVyYWdlJwotKwotKyAgICBpZiBlbnZbJ3N5c3Jvb3QnXToKLSsgICAgICAgIHByaW50ICJQcmVmaXhpbmcgaW5jbHVkZXB5ICclcycgd2l0aCBzeXNyb290IHByZWZpeCIgJSBpbmNsdWRlcHkKLSsgICAgICAgIGluY2x1ZGVweSA9IG9zLnBhdGgubm9ybXBhdGgoIiVzLyVzLyVzLyVzIiAlIChlbnZbJ3N5c3Jvb3QnXSwgZW52WydwcmVmaXgnXSwgZW52WydpbmNsdWRlZGlyJ10sIGluY2x1ZGVweSkpCi0rICAgICAgICBwcmludCAiJyVzJyIgJSBpbmNsdWRlcHkKLSsKLSAgICAgIyBpbiBjYXNlIENDL0NYWCB3YXMgc2V0IHRvIHRoZSBzY2FuLWJ1aWxkIHdyYXBwZXIsCi0gICAgICMgZW5zdXJlIHRoYXQgd2UgYnVpbGQgdGhlIHB5dGhvbiBtb2R1bGVzIHdpdGggc2Nhbi1idWlsZCwgdG9vCi0gICAgIGlmIGVudlsnQ0MnXSBpcyBOb25lIG9yIGVudlsnQ0MnXS5maW5kKCdzY2FuLWJ1aWxkJykgPCAwOgotQEAgLTE0MDgsMTEgKzE0MTQsMTQgQEAgaWYgbm90IGVudlsncHl0aG9uJ106Ci0gICAgIHB5dGhvbl9pbnN0YWxsID0gW10KLSBlbHNlOgotICAgICBweXRob25fbGliX2RpciA9IGVudlsncHl0aG9uX2xpYmRpciddCi0rICAgIHB5dGhvbl9saWJfZGlyID0gcHl0aG9uX2xpYl9kaXIucmVwbGFjZShlbnZbJ3N5c3Jvb3QnXSwgJycpCi0gICAgIHB5dGhvbl9tb2R1bGVfZGlyID0gcHl0aG9uX2xpYl9kaXIgKyBvcy5zZXAgKyAnZ3BzJwotICAgICBweXRob25fZXh0ZW5zaW9uc19pbnN0YWxsID0gcHl0aG9uX2Vudi5JbnN0YWxsKCBERVNURElSICsgcHl0aG9uX21vZHVsZV9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbl9idWlsdF9leHRlbnNpb25zKQotICAgICBpZiBub3QgZW52WydkZWJ1ZyddIGFuZCBub3QgZW52Wydwcm9maWxpbmcnXSBhbmQgbm90IGVudlsnbm9zdHJpcCddIGFuZCBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2RhcndpbicpOgotICAgICAgICAgcHl0aG9uX2Vudi5BZGRQb3N0QWN0aW9uKHB5dGhvbl9leHRlbnNpb25zX2luc3RhbGwsICckU1RSSVAgJFRBUkdFVCcpCi0rICAgIGVudi5BZGRQb3N0QWN0aW9uKHB5dGhvbl9leHRlbnNpb25zX2luc3RhbGwsICckQ0hSUEFUSCAtciAiJXMiICIkVEFSR0VUIicgXAotKyAgICAgICAgICAgICAgICAgICAgICUgKHB5dGhvbl9saWJfZGlyLCApKQotIAotICAgICBweXRob25fbW9kdWxlc19pbnN0YWxsID0gcHl0aG9uX2Vudi5JbnN0YWxsKCBERVNURElSICsgcHl0aG9uX21vZHVsZV9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uX21vZHVsZXMpCi0tLSAKLTIuMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTcvMDAwMS1TQ29uc3RydWN0LXByZWZpeC1pbmNsdWRlcHktd2l0aC1zeXNyb290LWFuZC1kcm9wLXN5LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNy8wMDAxLVNDb25zdHJ1Y3QtcHJlZml4LWluY2x1ZGVweS13aXRoLXN5c3Jvb3QtYW5kLWRyb3Atc3kucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZhMjdjMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTcvMDAwMS1TQ29uc3RydWN0LXByZWZpeC1pbmNsdWRlcHktd2l0aC1zeXNyb290LWFuZC1kcm9wLXN5LnBhdGNoCkBAIC0wLDAgKzEsODEgQEAKK0Zyb20gMWUyY2VhODk0NWJjMjE4M2ZiZTFhMDEyZGNkNjMzYTM1MjEyNTk1MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjQgQXByIDIwMTIgMTg6NDU6MTQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gU0NvbnN0cnVjdDogcHJlZml4IGluY2x1ZGVweSB3aXRoIHN5c3Jvb3QgYW5kIGRyb3Agc3lzcm9vdAorIGZyb20gcHl0aG9uX2xpYl9kaXIKKworKiB3aXRob3V0IFBZVEhPTlBBVEgsIGRpc3R1dGlsJ3Mgc3lzY29uZmlnIHJldHVybnMgSU5DTFVERVBZIHdpdGhvdXQgc3lzcm9vdCBwcmVmaXgKKyAgYW5kIHdpdGggUFlUSE9OUEFUSCBmcm9tIE9FIGl0J3MgcG9pbnRpbmcgdG8gbmF0aXZlIHB5dGhvbiBkaXIKKworICAgICQgZXhwb3J0IFBZVEhPTlBBVEg9L09FL3Noci1jb3JlL3RtcC1lZ2xpYmMvc3lzcm9vdHMvb20tZ3RhMDIvdXNyL2xpYi9weXRob24yLjcvCisgICAgJCBweXRob24KKyAgICBQeXRob24gMi43LjIgKGRlZmF1bHQsIEFwciAxOCAyMDEyLCAwOToxOTo1OSkKKyAgICBbR0NDIDQuNi4yXSBvbiBsaW51eDIKKyAgICBUeXBlICJoZWxwIiwgImNvcHlyaWdodCIsICJjcmVkaXRzIiBvciAibGljZW5zZSIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgPj4+IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKKyAgICA+Pj4gc3lzY29uZmlnLmdldF9jb25maWdfdmFycygnSU5DTFVERVBZJykKKyAgICBbJy9PRS9zaHItY29yZS90bXAtZWdsaWJjL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvaW5jbHVkZS9weXRob24yLjcnXQorICAgID4+PgorICAgICQgdW5zZXQgUFlUSE9OUEFUSAorICAgICQgcHl0aG9uCisgICAgUHl0aG9uIDIuNy4yIChkZWZhdWx0LCBBcHIgMTggMjAxMiwgMDk6MTk6NTkpCisgICAgW0dDQyA0LjYuMl0gb24gbGludXgyCisgICAgVHlwZSAiaGVscCIsICJjb3B5cmlnaHQiLCAiY3JlZGl0cyIgb3IgImxpY2Vuc2UiIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgID4+PiBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCisgICAgPj4+IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoJ0lOQ0xVREVQWScpCisgICAgWycvcHl0aG9uMi43J10KKyAgICA+Pj4gaW1wb3J0IHN5c2NvbmZpZworICAgID4+PiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzKCdJTkNMVURFUFknKQorICAgIFsnL09FL3Noci1jb3JlL3RtcC1lZ2xpYmMvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9pbmNsdWRlL3B5dGhvbjIuNyddCisqIHB5dGhvbl9saWJfZGlyID0gcHl0aG9uX2xpYl9kaXIucmVwbGFjZShlbnZbJ3N5c3Jvb3QnXSwgJycpCisgIHJldHVybnMgcGF0aCB0byB0YXJnZXQgc3lzcm9vdAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBQZXRlciBBLiBCaWdvdCA8cGFiQHBhYmlnb3QuY29tPgorLS0tCisgU0NvbnN0cnVjdCB8IDkgKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvU0NvbnN0cnVjdCBiL1NDb25zdHJ1Y3QKK2luZGV4IDMzMThiYjQ4Li5lMWM0Zjk2MyAxMDA2NDQKKy0tLSBhL1NDb25zdHJ1Y3QKKysrKyBiL1NDb25zdHJ1Y3QKK0BAIC05MzQsNyArOTM0LDcgQEAgZWxzZToKKyAKKyAjIFNldCB1cCBjb25maWd1cmF0aW9uIGZvciB0YXJnZXQgUHl0aG9uCisgCistUFlUSE9OX0xJQkRJUl9DQUxMID0gJ3N5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYigpJworK1BZVEhPTl9MSUJESVJfQ0FMTCA9ICdzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0xKScKKyAKKyBQWVRIT05fQ09ORklHX05BTUVTID0gWydDQycsICdDWFgnLCAnT1BUJywgJ0JBU0VDRkxBR1MnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ0NDU0hBUkVEJywgJ0xEU0hBUkVEJywgJ1NPJywgJ0lOQ0xVREVQWScsICdMREZMQUdTJ10KK0BAIC0xMzY0LDcgKzEzNjQsNyBAQCBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgTElOSz1sZHNoYXJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNITElCUFJFRklYPSIiLAorICAgICAgICAgICAgICAgICAgICAgICAgU0hMSUJTVUZGSVg9cHl0aG9uX2NvbmZpZ1snU08nXSwKKy0gICAgICAgICAgICAgICAgICAgICAgIENQUFBBVEg9W3B5dGhvbl9jb25maWdbJ0lOQ0xVREVQWSddXSwKKysgICAgICAgICAgICAgICAgICAgICAgIENQUFBBVEg9W29zLnBhdGgubm9ybXBhdGgoIiVzLyVzLyVzLyVzIiAlIChlbnZbJ3N5c3Jvb3QnXSwgZW52WydwcmVmaXgnXSwgZW52WydpbmNsdWRlZGlyJ10sIHB5dGhvbl9jb25maWdbJ0lOQ0xVREVQWSddKSldIGlmIGVudlsnc3lzcm9vdCddIGVsc2UgW3B5dGhvbl9jb25maWdbJ0lOQ0xVREVQWSddXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIENQUEZMQUdTPXB5dGhvbl9jb25maWdbJ09QVCddLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0ZMQUdTPXB5dGhvbl9jb25maWdbJ0JBU0VDRkxBR1MnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIENYWEZMQUdTPXB5dGhvbl9jb25maWdbJ0JBU0VDRkxBR1MnXSkKK0BAIC0xNjYyLDEyICsxNjYyLDE1IEBAIGlmICgobm90IGVudlsnZGVidWcnXSBhbmQgbm90IGVudlsncHJvZmlsaW5nJ10gYW5kIG5vdCBlbnZbJ25vc3RyaXAnXQorIGlmIG5vdCBlbnZbJ3B5dGhvbiddOgorICAgICBweXRob25faW5zdGFsbCA9IFtdCisgZWxzZToKKysgICAgcHl0aG9uX2xpYmRpciA9IHB5dGhvbl9saWJkaXIucmVwbGFjZShlbnZbJ3N5c3Jvb3QnXSwgJycpCisgICAgIHB5dGhvbl9tb2R1bGVfZGlyID0gcHl0aG9uX2xpYmRpciArIG9zLnNlcCArICdncHMnCisgICAgIHB5dGhvbl9leHRlbnNpb25zX2luc3RhbGwgPSBweXRob25fZW52Lkluc3RhbGwoREVTVERJUiArIHB5dGhvbl9tb2R1bGVfZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbl9idWlsdF9leHRlbnNpb25zKQorICAgICBpZiAoKG5vdCBlbnZbJ2RlYnVnJ10gYW5kIG5vdCBlbnZbJ3Byb2ZpbGluZyddCisgICAgICAgICAgYW5kIG5vdCBlbnZbJ25vc3RyaXAnXSBhbmQgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdkYXJ3aW4nKSkpOgorICAgICAgICAgcHl0aG9uX2Vudi5BZGRQb3N0QWN0aW9uKHB5dGhvbl9leHRlbnNpb25zX2luc3RhbGwsICckU1RSSVAgJFRBUkdFVCcpCisrICAgIGVudi5BZGRQb3N0QWN0aW9uKHB5dGhvbl9leHRlbnNpb25zX2luc3RhbGwsICckQ0hSUEFUSCAtciAiJXMiICIkVEFSR0VUIicgXAorKyAgICAgICAgICAgICAgICAgICAgICUgKHB5dGhvbl9saWJkaXIsICkpCisgCisgICAgIHB5dGhvbl9tb2R1bGVzX2luc3RhbGwgPSBweXRob25fZW52Lkluc3RhbGwoREVTVERJUiArIHB5dGhvbl9tb2R1bGVfZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbl9tb2R1bGVzKQorLS0gCisyLjEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE2LzAwMDEtaW5jbHVkZS1zeXMtdHR5ZGVmYXVsdHMuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTcvMDAwMS1pbmNsdWRlLXN5cy10dHlkZWZhdWx0cy5oLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTYvMDAwMS1pbmNsdWRlLXN5cy10dHlkZWZhdWx0cy5oLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE3LzAwMDEtaW5jbHVkZS1zeXMtdHR5ZGVmYXVsdHMuaC5wYXRjaAppbmRleCBmNDk2YjVlLi5lOTFlNGU5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE2LzAwMDEtaW5jbHVkZS1zeXMtdHR5ZGVmYXVsdHMuaC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE3LzAwMDEtaW5jbHVkZS1zeXMtdHR5ZGVmYXVsdHMuaC5wYXRjaApAQCAtMTksMTAgKzE5LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKIGRpZmYgLS1naXQgYS9ncHNtb24uYyBiL2dwc21vbi5jCi1pbmRleCBlYWQ4NGQwLi5mMjA1Y2IxIDEwMDY0NAoraW5kZXggODljNDNlZTIuLjVjYzBkYWJkIDEwMDY0NAogLS0tIGEvZ3BzbW9uLmMKICsrKyBiL2dwc21vbi5jCi1AQCAtMjAsNiArMjAsNyBAQAorQEAgLTI0LDYgKzI0LDcgQEAKICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAgI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTYvMDAwNC1TQ29uc3RydWN0LWRpc2FibGUtaHRtbC1hbmQtbWFuLWRvY3MtYnVpbGRpbmctYmVjYXVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNy8wMDA0LVNDb25zdHJ1Y3QtZGlzYWJsZS1odG1sLWFuZC1tYW4tZG9jcy1idWlsZGluZy1iZWNhdXMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCA4OSUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNi8wMDA0LVNDb25zdHJ1Y3QtZGlzYWJsZS1odG1sLWFuZC1tYW4tZG9jcy1idWlsZGluZy1iZWNhdXMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTcvMDAwNC1TQ29uc3RydWN0LWRpc2FibGUtaHRtbC1hbmQtbWFuLWRvY3MtYnVpbGRpbmctYmVjYXVzLnBhdGNoCmluZGV4IDg1MjdmMGQuLmJhM2QyMDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTYvMDAwNC1TQ29uc3RydWN0LWRpc2FibGUtaHRtbC1hbmQtbWFuLWRvY3MtYnVpbGRpbmctYmVjYXVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTcvMDAwNC1TQ29uc3RydWN0LWRpc2FibGUtaHRtbC1hbmQtbWFuLWRvY3MtYnVpbGRpbmctYmVjYXVzLnBhdGNoCkBAIC0yOSwyMyArMjksMjIgQEAKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvU0NvbnN0cnVjdCBiL1NDb25zdHJ1Y3QKLWluZGV4IDBlNTE4ZTcuLmMwMWE3MWIgMTAwNjQ0CitpbmRleCAzMzE4YmI0OC4uYTViYjc1NmQgMTAwNjQ0CiAtLS0gYS9TQ29uc3RydWN0CiArKysgYi9TQ29uc3RydWN0Ci1AQCAtNzA0LDEyICs3MDQsMTIgQEAgc2l6ZV90IHN0cmxjcHkoLypAb3V0QCovY2hhciAqZHN0LCAvKkBpbkAqL2NvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpemUpOworQEAgLTg4OSwxMSArODg5LDExIEBAIGVsc2U6CiAgCi0gICAgIG1hbmJ1aWxkZXIgPSBtYW5nZW5lcmF0b3IgPSBodG1sYnVpbGRlciA9IE5vbmUKKyAgICAgbWFuYnVpbGRlciA9IGh0bWxidWlsZGVyID0gTm9uZQogICAgICBpZiBlbnZbJ21hbmJ1aWxkJ106CiAtICAgICAgICBpZiBjb25maWcuQ2hlY2tYc2x0cHJvYygpOgogKyAgICAgICAgaWYgRmFsc2UgYW5kIGNvbmZpZy5DaGVja1hzbHRwcm9jKCk6Ci0gICAgICAgICAgICAgbWFuZ2VuZXJhdG9yID0gJ3hzbHRwcm9jJwogICAgICAgICAgICAgIGJ1aWxkID0gInhzbHRwcm9jIC0tbm9uZXQgJXMgJFNPVVJDRSA+JFRBUkdFVCIKICAgICAgICAgICAgICBodG1sYnVpbGRlciA9IGJ1aWxkICUgZG9jYm9va19odG1sX3VyaQogICAgICAgICAgICAgIG1hbmJ1aWxkZXIgPSBidWlsZCAlIGRvY2Jvb2tfbWFuX3VyaQogLSAgICAgICAgZWxpZiBXaGVyZUlzKCJ4bWx0byIpOgogKyAgICAgICAgZWxpZiBGYWxzZSBhbmQgV2hlcmVJcygieG1sdG8iKToKLSAgICAgICAgICAgICBtYW5nZW5lcmF0b3IgPSAneG1sdG8nCi0gICAgICAgICAgICAgeG1sdG8gPSAieG1sdG8gJXMgJFNPVVJDRSB8fCBtdiBgYmFzZW5hbWUgJFRBUkdFVGAgYGRpcm5hbWUgJFRBUkdFVGAiCisgICAgICAgICAgICAgeG1sdG8gPSAieG1sdG8gJXMgJFNPVVJDRSB8fCBtdiBgYmFzZW5hbWUgJFRBUkdFVGAgIiBcCisgICAgICAgICAgICAgICAgICAgICAiYGRpcm5hbWUgJFRBUkdFVGAiCiAgICAgICAgICAgICAgaHRtbGJ1aWxkZXIgPSB4bWx0byAlICJodG1sLW5vY2h1bmtzIgogLS0gCiAxLjguNS41CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC82MC1ncHNkLnJ1bGVzIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QvNjAtZ3BzZC5ydWxlcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjExNDNiOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC82MC1ncHNkLnJ1bGVzCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotIyB1ZGV2IHJ1bGVzIGZvciBncHNkCi0jICRJZCQKLSMKLSMgR1BTZXMgZG9uJ3QgaGF2ZSB0aGVpciBvd24gVVNCIGRldmljZSBjbGFzcy4gIFRoZXkncmUgc2VyaWFsLW92ZXItVVNCCi0jIGRldmljZXMsIHNvIHdoYXQgeW91IHNlZSBpcyBhY3R1YWxseSB0aGUgSUQgb2YgdGhlIHNlcmlhbC1vdmVyLVVTQiBjaGlwLgotIyBGb3J0dW5hdGVseSwganVzdCB0d28gb2YgdGhlc2UgYWNjb3VudCBmb3Igb3ZlciA4MCUgb2YgY29uc3VtZXItZ3JhZGUKLSMgR1BTIHNlbnNvcnMuICBUaGUgZ3BzZC5ob3RwbHVnLndyYXBwZXIgc2NyaXB0IHdpbGwgdGVsbCBhIHJ1bm5pbmcgZ3BzZAotIyB0aGF0IGl0IHNob3VsZCBsb29rIGF0IHRoZSBkZXZpY2UgdGhhdCBqdXN0IHdlbnQgYWN0aXZlLCBiZWNhdXNlIGl0Ci0jIG1pZ2h0IGJlIGEgR1BTLgotIwotIyBUaGUgZm9sbG93aW5nIHNldHVwIHdvcmtzIG9uIERlYmlhbiAtIHNvbWV0aGluZyBzaW1pbGFyIHdpbGwgYXBwbHkgb24gCi0jIG90aGVyIGRpc3RyaWJ1dGlvbnM6Ci0jIAotIyAgIC9ldGMvdWRldi9ncHNkLnJ1bGVzCi0jICAgL2V0Yy91ZGV2L3J1bGVzLmQvMDI1X2dwc2QucnVsZXMgLT4gLi4vZ3BzZC5ydWxlcwotIyAgIC9saWIvdWRldi9ncHNkLmhvdHBsdWcud3JhcHBlcgotIyAgIC9saWIvdWRldi9ncHNkLmhvdHBsdWcKLSMgCi0jIFNldHRpbmcgdGhlIGxpbmsgaW4gL2V0Yy91ZGV2L3J1bGVzLmQgYWN0aXZhdGVzIHRoZSBydWxlIGFuZCBkZXRlcm1pbmVzCi0jIHdoZW4gdG8gcnVuIGl0IG9uIGJvb3QgKHNpbWlsYXIgdG8gaW5pdC5kIHByb2Nlc3NpbmcpLgotCi1TVUJTWVNURU0hPSJ0dHkiLCBHT1RPPSJncHNkX3J1bGVzX2VuZCIKLQotIyBQcm9saWZpYyBUZWNobm9sb2d5LCBJbmMuIFBMMjMwMyBTZXJpYWwgUG9ydAotQVRUUntpZFZlbmRvcn09PSIwNjdiIiwgQVRUUntpZFByb2R1Y3R9PT0iMjMwMyIsIFNZTUxJTksrPSJncHMlbiIsIFJVTis9Ii9saWIvdWRldi9ncHNkLmhvdHBsdWcud3JhcHBlciIKLSMgQVRFTiBJbnRlcm5hdGlvbmFsIENvLiwgTHRkIFVDLTIzMkEgU2VyaWFsIFBvcnQgW3BsMjMwM10KLUFUVFJ7aWRWZW5kb3J9PT0iMDU1NyIsIEFUVFJ7aWRQcm9kdWN0fT09IjIwMDgiLCBTWU1MSU5LKz0iZ3BzJW4iLCBSVU4rPSIvbGliL3VkZXYvZ3BzZC5ob3RwbHVnLndyYXBwZXIiCi0jIEZUREkgOFUyMzJBTQotQVRUUntpZFZlbmRvcn09PSIwNDAzIiwgQVRUUntpZFByb2R1Y3R9PT0iNjAwMSIsIFNZTUxJTksrPSJncHMlbiIsIFJVTis9Ii9saWIvdWRldi9ncHNkLmhvdHBsdWcud3JhcHBlciIKLSMgQ3lwcmVzcyBNOC9DWTdDNjQwMTMgKERlTG9ybWUgdXNlcyB0aGVzZSkKLUFUVFJ7aWRWZW5kb3J9PT0iMTE2MyIsIEFUVFJ7aWRQcm9kdWN0fT09IjAxMDAiLCBTWU1MSU5LKz0iZ3BzJW4iLCBSVU4rPSIvbGliL3VkZXYvZ3BzZC5ob3RwbHVnLndyYXBwZXIiCi0jIFBTLTM2MCBPRU0gKE1pY3Jvc29mdCBHUFMgc29sZCB3aXRoIFN0cmVldCBhbmQgVHJpcHMgMjAwNSkKLUFUVFJ7aWRWZW5kb3J9PT0iMDY3YiIsIEFUVFJ7aWRQcm9kdWN0fT09ImFhYTAiLCBTWU1MSU5LKz0iZ3BzJW4iLCBSVU4rPSIvbGliL3VkZXYvZ3BzZC5ob3RwbHVnLndyYXBwZXIiCi0jIEdhcm1pbiBJbnRlcm5hdGlvbmFsIEdQU21hcCwgdmFyaW91cyBtb2RlbHMgKHRlc3RlZCB3aXRoIEdhcm1pbiBHUFMgMTggVVNCKQotQVRUUntpZFZlbmRvcn09PSIwOTFlIiwgQVRUUntpZFByb2R1Y3R9PT0iMDAwMyIsIFNZTUxJTksrPSJncHMlbiIsIFJVTis9Ii9saWIvdWRldi9ncHNkLmhvdHBsdWcud3JhcHBlciIKLSMgQ3lnbmFsIEludGVncmF0ZWQgUHJvZHVjdHMsIEluYy4gQ1AyMTB4IENvbXBvc2l0ZSBEZXZpY2UgKFVzZWQgYnkgSG9sdXggbTI0MSkKLUFUVFJ7aWRWZW5kb3J9PT0iMTBjNCIsIEFUVFJ7aWRQcm9kdWN0fT09ImVhNjAiLCBTWU1MSU5LKz0iZ3BzJW4iLCBSVU4rPSIvbGliL3VkZXYvZ3BzZC5ob3RwbHVnLndyYXBwZXIiCi0jIHUtYmxveCBBRywgdS1ibG94IDUgKHRlc3RlZCB3aXRoIE5hdmlsb2NrIE5MLTQwMlUpCi1BVFRSe2lkVmVuZG9yfT09IjE1NDYiLCBBVFRSe2lkUHJvZHVjdH09PSIwMWE1IiwgU1lNTElOSz0iZ3BzJW4iLCBSVU4rPSIvbGliL3VkZXYvZ3BzZC5ob3RwbHVnLndyYXBwZXIiCi0jIEZUREkgRlQyMzIKLUFUVFJ7aWRWZW5kb3J9PT0iMDQwMyIsIEFUVFJ7aWRQcm9kdWN0fT09IjYwMDEiLCBTWU1MSU5LPSJncHMlbiIsIFJVTis9Ii9saWIvdWRldi9ncHNkLmhvdHBsdWcud3JhcHBlciIKLSMgdS1ibG94IDQKLUFUVFJ7aWRWZW5kb3J9PT0iMTU0NiIsIEFUVFJ7aWRQcm9kdWN0fT09IjAxYTQiLCBTWU1MSU5LPSJncHMlbiIsIFJVTis9Ii9saWIvdWRldi9ncHNkLmhvdHBsdWcud3JhcHBlciIKLQotQUNUSU9OPT0icmVtb3ZlIiwgUlVOKz0iL2xpYi91ZGV2L2dwc2QuaG90cGx1Zy53cmFwcGVyIgotCi1MQUJFTD0iZ3BzZF9ydWxlc19lbmQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC9ncHNkIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QvZ3BzZApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYmE3M2RhZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC9ncHNkCisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLSMhL2Jpbi9zaAotIyMjIEJFR0lOIElOSVQgSU5GTwotIyBQcm92aWRlczogICAgICAgICAgZ3BzZAotIyBSZXF1aXJlZC1TdGFydDogICAgJHJlbW90ZV9mcyAkbmV0d29yawotIyBTaG91bGQtU3RhcnQ6ICAgICAgYmx1ZXRvb3RoIGRidXMgdWRldgotIyBSZXF1aXJlZC1TdG9wOiAgICAgJHJlbW90ZV9mcyAkbmV0d29yawotIyBEZWZhdWx0LVN0YXJ0OiAgICAgMiAzIDQgNQotIyBEZWZhdWx0LVN0b3A6ICAgICAgMCAxIDYKLSMgU2hvcnQtRGVzY3JpcHRpb246IEdQUyAoR2xvYmFsIFBvc2l0aW9uaW5nIFN5c3RlbSkgZGFlbW9uIHN0YXJ0L3N0b3Agc2NyaXB0Ci0jIERlc2NyaXB0aW9uOiAgICAgICBTdGFydC9TdG9wIHNjcmlwdCBmb3IgdGhlIGdwc2Qgc2VydmljZSBkYWVtb24sCi0jICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBhYmxlIHRvIG1vbml0b3Igb25lIG9yIG1vcmUgR1BTIGRldmljZXMKLSMgICAgICAgICAgICAgICAgICAgIGNvbm5lY3RlZCB0byBhIGhvc3QgY29tcHV0ZXIsIG1ha2luZyBhbGwgZGF0YSBvbgotIyAgICAgICAgICAgICAgICAgICAgdGhlIGxvY2F0aW9uIGFuZCBtb3ZlbWVudHMgb2YgdGhlIHNlbnNvcnMgYXZhaWxhYmxlCi0jICAgICAgICAgICAgICAgICAgICB0byBiZSBxdWVyaWVkIG9uIFRDUCBwb3J0IDI5NDcuCi0jIyMgRU5EIElOSVQgSU5GTwotCi0jIEF1dGhvcjogQmVybmQgWmVpbWV0eiA8YnplZEBkZWJpYW4ub3JnPgotIwotIyBQbGVhc2UgcmVtb3ZlIHRoZSAiQXV0aG9yIiBsaW5lcyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtCi0jIHdpdGggeW91ciBvd24gbmFtZSBpZiB5b3UgY29weSBhbmQgbW9kaWZ5IHRoaXMgc2NyaXB0LgotCi0jIERvIE5PVCAic2V0IC1lIgotCi0jIFBBVEggc2hvdWxkIG9ubHkgaW5jbHVkZSAvdXNyLyogaWYgaXQgcnVucyBhZnRlciB0aGUgbW91bnRuZnMuc2ggc2NyaXB0Ci1QQVRIPS9zYmluOi91c3Ivc2JpbjovYmluOi91c3IvYmluCi1ERVNDPSJHUFMgKEdsb2JhbCBQb3NpdGlvbmluZyBTeXN0ZW0pIGRhZW1vbiIKLU5BTUU9Z3BzZAotREFFTU9OPS91c3Ivc2Jpbi8kTkFNRQotUElERklMRT0vdmFyL3J1bi8kTkFNRS5waWQKLVNDUklQVE5BTUU9L2V0Yy9pbml0LmQvJE5BTUUKLQotIyBFeGl0IGlmIHRoZSBwYWNrYWdlIGlzIG5vdCBpbnN0YWxsZWQKLVsgLXggIiREQUVNT04iIF0gfHwgZXhpdCAwCi0KLSMgUmVhZCBjb25maWd1cmF0aW9uLCBpZiBwcmVzZW50Ci1bIC1yIC9ldGMvZGVmYXVsdC8kTkFNRSBdICYmIC4gL2V0Yy9kZWZhdWx0LyROQU1FCi0KLWlmIFsgLXogIiRHUFNEX1NPQ0tFVCIgXSAmJiBbIC16ICIkREVWSUNFUyIgXTsgdGhlbgotCUdQU0RfU09DS0VUPS92YXIvcnVuL2dwc2Quc29jawotZmkKLQotaWYgWyAtbiAiJEdQU0RfU09DS0VUIiBdOyB0aGVuCi0gICAgICAgIEdQU0RfT1BUSU9OUz0iJEdQU0RfT1BUSU9OUyAtRiAkR1BTRF9TT0NLRVQiCi1maQotCi0jCi0jIEZ1bmN0aW9uIHRoYXQgc3RhcnRzIHRoZSBkYWVtb24vc2VydmljZQotIwotZG9fc3RhcnQoKQotewotCSMgUmV0dXJuCi0JIyAgIDAgaWYgZGFlbW9uIGhhcyBiZWVuIHN0YXJ0ZWQKLQkjICAgMSBpZiBkYWVtb24gd2FzIGFscmVhZHkgcnVubmluZwotCSMgICAyIGlmIGRhZW1vbiBjb3VsZCBub3QgYmUgc3RhcnRlZAotCXN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1xdWlldCAtLXBpZGZpbGUgJFBJREZJTEUgLS1leGVjICREQUVNT04gLS10ZXN0IFwKLSAgICAgICAgLS0gJEdQU0RfT1BUSU9OUyAtUCAkUElERklMRSAkR1BTX0RFVklDRVMgPiAvZGV2L251bGwgXAotCQl8fCByZXR1cm4gMQotCXN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1xdWlldCAtLXBpZGZpbGUgJFBJREZJTEUgLS1leGVjICREQUVNT04gLS0gXAotCQkkR1BTRF9PUFRJT05TIC1QICRQSURGSUxFICRHUFNfREVWSUNFUyBcCi0JCXx8IHJldHVybiAyCi19Ci0KLSMKLSMgRnVuY3Rpb24gdGhhdCBzdG9wcyB0aGUgZGFlbW9uL3NlcnZpY2UKLSMKLWRvX3N0b3AoKQotewotCSMgUmV0dXJuCi0JIyAgIDAgaWYgZGFlbW9uIGhhcyBiZWVuIHN0b3BwZWQKLQkjICAgMSBpZiBkYWVtb24gd2FzIGFscmVhZHkgc3RvcHBlZAotCSMgICAyIGlmIGRhZW1vbiBjb3VsZCBub3QgYmUgc3RvcHBlZAotCSMgICBvdGhlciBpZiBhIGZhaWx1cmUgb2NjdXJyZWQKLQlzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLS1xdWlldCAtLXJldHJ5PVRFUk0vMzAvS0lMTC81IC0tcGlkZmlsZSAkUElERklMRSAtLW5hbWUgJE5BTUUKLQlSRVRWQUw9IiQ/IgotCVsgIiRSRVRWQUwiID0gMiBdICYmIHJldHVybiAyCi0JIyBNYW55IGRhZW1vbnMgZG9uJ3QgZGVsZXRlIHRoZWlyIHBpZGZpbGVzIHdoZW4gdGhleSBleGl0LgotCXJtIC1mICRQSURGSUxFCi0JcmV0dXJuICIkUkVUVkFMIgotfQotCi0jCi0jIEZ1bmN0aW9uIHRoYXQgc2VuZHMgYSBTSUdIVVAgdG8gdGhlIGRhZW1vbi9zZXJ2aWNlCi0jCi1kb19yZWxvYWQoKSB7Ci0JIwotCSMgSWYgdGhlIGRhZW1vbiBjYW4gcmVsb2FkIGl0cyBjb25maWd1cmF0aW9uIHdpdGhvdXQKLQkjIHJlc3RhcnRpbmcgKGZvciBleGFtcGxlLCB3aGVuIGl0IGlzIHNlbnQgYSBTSUdIVVApLAotCSMgdGhlbiBpbXBsZW1lbnQgdGhhdCBoZXJlLgotCSMKLQlzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLS1zaWduYWwgMSAtLXF1aWV0IC0tcGlkZmlsZSAkUElERklMRSAtLW5hbWUgJE5BTUUKLQlyZXR1cm4gMAotfQotCi1jYXNlICIkMSIgaW4KLSAgc3RhcnQpCi0JCWVjaG8gIlN0YXJ0aW5nICRERVNDIiAiJE5BTUUiCi0JCWRvX3N0YXJ0Ci0JCWV4aXQgJD8KLQk7OwotICBzdG9wKQotCWVjaG8gIlN0b3BwaW5nICRERVNDIiAiJE5BTUUiCi0JZG9fc3RvcAotCWV4aXQgJD8KLQk7OwotICBzdGF0dXMpCi0gICAgICAgOzsKLSAgcmVsb2FkfGZvcmNlLXJlbG9hZCkKLQllY2hvICJSZWxvYWRpbmcgJERFU0MiICIkTkFNRSIKLQlkb19yZWxvYWQKLQlleGl0ICQ/Ci0JOzsKLSAgcmVzdGFydCkKLQkjCi0JIyBJZiB0aGUgInJlbG9hZCIgb3B0aW9uIGlzIGltcGxlbWVudGVkIHRoZW4gcmVtb3ZlIHRoZQotCSMgJ2ZvcmNlLXJlbG9hZCcgYWxpYXMKLQkjCi0JZWNobyAiUmVzdGFydGluZyAkREVTQyIgIiROQU1FIgotCWRvX3N0b3AKLQljYXNlICIkPyIgaW4KLQkgIDB8MSkKLQkJZG9fc3RhcnQKLQkJZXhpdCAkPwotCQk7OwotCSAgKikKLQkgCSMgRmFpbGVkIHRvIHN0b3AKLQkJZXhpdCAxCi0JCTs7Ci0JZXNhYwotCTs7Ci0gICopCi0JZWNobyAiVXNhZ2U6ICRTQ1JJUFROQU1FIHtzdGFydHxzdG9wfHN0YXR1c3xyZXN0YXJ0fGZvcmNlLXJlbG9hZH0iID4mMgotCWV4aXQgMwotCTs7Ci1lc2FjCi0KLToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkL2dwc2QtZGVmYXVsdCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkL2dwc2QtZGVmYXVsdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNlZmYwMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC9ncHNkLWRlZmF1bHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLSMgSWYgeW91IG11c3Qgc3BlY2lmeSBhIG5vbi1OTUVBIGRyaXZlciwgdW5jb21tZW50IGFuZCBtb2RpZnkgdGhlIG5leHQgbGluZQotR1BTRF9TT0NLRVQ9Ii92YXIvcnVuL2dwc2Quc29jayIKLUdQU0RfT1BUSU9OUz0iIiAKLUdQU19ERVZJQ0VTPSIiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkL2dwc2Quc2VydmljZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkL2dwc2Quc2VydmljZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzEzMWE1OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC9ncHNkLnNlcnZpY2UKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1bVW5pdF0KLURlc2NyaXB0aW9uPUdQUyAoR2xvYmFsIFBvc2l0aW9uaW5nIFN5c3RlbSkgRGFlbW9uCi1SZXF1aXJlcz1ncHNkLnNvY2tldAotCi1bU2VydmljZV0KLUVudmlyb25tZW50RmlsZT0vZXRjL2RlZmF1bHQvZ3BzZAotRXhlY1N0YXJ0PS91c3Ivc2Jpbi9ncHNkIC1OICRHUFNfREVWSUNFUwotCi1bSW5zdGFsbF0KLUFsc289Z3BzZC5zb2NrZXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkXzMuMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZF8zLjE3LmJiCnNpbWlsYXJpdHkgaW5kZXggODclCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkXzMuMTYuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkXzMuMTcuYmIKaW5kZXggMjZkNzQ4Ni4uZDUyNmRiMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2RfMy4xNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZF8zLjE3LmJiCkBAIC0xMSwxMyArMTEsOSBAQAogICAgIGZpbGU6Ly8wMDAxLVNDb25zdHJ1Y3QtcHJlZml4LWluY2x1ZGVweS13aXRoLXN5c3Jvb3QtYW5kLWRyb3Atc3kucGF0Y2ggXAogICAgIGZpbGU6Ly8wMDA0LVNDb25zdHJ1Y3QtZGlzYWJsZS1odG1sLWFuZC1tYW4tZG9jcy1idWlsZGluZy1iZWNhdXMucGF0Y2ggXAogICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXR0eWRlZmF1bHRzLmgucGF0Y2ggXAotICAgIGZpbGU6Ly9ncHNkLWRlZmF1bHQgXAotICAgIGZpbGU6Ly9ncHNkIFwKLSAgICBmaWxlOi8vNjAtZ3BzZC5ydWxlcyBcCi0gICAgZmlsZTovL2dwc2Quc2VydmljZSBcCiAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNjg2OTFiNWRlNGM5NGY4MmVjNDA2MmIwNDJiNWViNjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDM1NzlhZjEzYTRkM2ZlMGM1Yjc5ZmE0NGI1Zjc1YzlmM2NhYzY3NDkzNTdmMWQ5OWNlNWQzOGMwOWJjMjAyOSIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMGNmYWRjZjRhNjVkZmJkZDJhZmIxMWM1OGY0ZTRhMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2OGUwZGJlY2ZiNTgzMTk5N2Y4YjNkNmJhNDhhZWQ4MTJlYjQ2NWQ4YzAwODk0MjBhYjY4ZjljZTRkODVlNzdhIgogCiBpbmhlcml0IHNjb25zIHVwZGF0ZS1yYy5kIHB5dGhvbi1kaXIgcHl0aG9ubmF0aXZlIHN5c3RlbWQgYmx1ZXRvb3RoIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKIApAQCAtNjcsMTMgKzYzLDEzIEBACiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2dwc2QgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC8KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9wYWNrYWdpbmcvZGViL2V0Y19pbml0LmRfZ3BzZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL2dwc2QKICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZ3BzZC1kZWZhdWx0ICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L2dwc2QuZGVmYXVsdAorICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3BhY2thZ2luZy9kZWIvZXRjX2RlZmF1bHRfZ3BzZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC9ncHNkLmRlZmF1bHQKIAogICAgICNzdXBwb3J0IGZvciB1ZGV2CiAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vNjAtZ3BzZC5ydWxlcyAke0R9LyR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZ3BzZC5ydWxlcyAke0R9LyR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLwogICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9saWJkaXJ9L3VkZXYvCiAgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vZ3BzZC5ob3RwbHVnICR7RH0ke2Jhc2VfbGliZGlyfS91ZGV2LwogCkBAIC04Myw3ICs3OSw4IEBACiAKICAgICAjc3VwcG9ydCBmb3Igc3lzdGVtZAogICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vJHtCUE59LnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJHtCUE59LnNlcnZpY2UKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zeXN0ZW1kLyR7QlBOfS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyR7QlBOfS5zZXJ2aWNlCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vc3lzdGVtZC8ke0JQTn1jdGxALnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJHtCUE59Y3RsQC5zZXJ2aWNlCiAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vc3lzdGVtZC8ke0JQTn0uc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyR7QlBOfS5zb2NrZXQKIH0KIApAQCAtMTMyLDcgKzEyOSw3IEBACiBSUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCiBSUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCiBSQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7UE59LnNvY2tldCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0JQTn0uc29ja2V0ICR7QlBOfWN0bEAuc2VydmljZSIKIAogCiBBTFRFUk5BVElWRV8ke1BOfSA9ICJncHNkLWRlZmF1bHRzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9vcnJlcnkvb3JyZXJ5XzIuNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vb3JyZXJ5L29ycmVyeV8yLjcuYmIKaW5kZXggMWEwMGIwOC4uMDEwZjY1ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9vcnJlcnkvb3JyZXJ5XzIuNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL29ycmVyeS9vcnJlcnlfMi43LmJiCkBAIC01LDcgKzUsOSBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vb3JyZXJ5LmM7ZW5kbGluZT0yNTttZDU9ZDc5MmJkZjJiNTkxOTcyZGExNzVhZWNjMzhkODhjZmUiCiBERVBFTkRTID0gImd0aysiCiAKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKIFNSQ19VUkkgPSAiaHR0cDovL3Byb2plY3RzLm9wZW5tb2tvLm9yZy9mcnMvZG93bmxvYWQucGhwLzkyMy9vcnJlcnlfMi43X2NsZWFuLnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9vcnJlcnkucG5nIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGFzc3dkcWMvcGFzc3dkcWMvbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zZWN1cml0eS9wYXNzd2RxYy9wYXNzd2RxYy9tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wYXNzd2RxYy9wYXNzd2RxYy9tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2VjdXJpdHkvcGFzc3dkcWMvcGFzc3dkcWMvbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGFzc3dkcWMvcGFzc3dkcWNfMS4zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zZWN1cml0eS9wYXNzd2RxYy9wYXNzd2RxY18xLjMuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bhc3N3ZHFjL3Bhc3N3ZHFjXzEuMy4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zZWN1cml0eS9wYXNzd2RxYy9wYXNzd2RxY18xLjMuMS5iYgppbmRleCAxOThkYjNjLi44ZmMwYjM1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bhc3N3ZHFjL3Bhc3N3ZHFjXzEuMy4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L3Bhc3N3ZHFjL3Bhc3N3ZHFjXzEuMy4xLmJiCkBAIC0yMSw2ICsyMSw5IEBACiAKIERFUEVORFMgKz0gImxpYnBhbSIKIAoraW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwYW0iCisKIExJQ0VOU0UgPSAiQlNEIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MWI0YWY2ZjNkNGVlMDc5YTM4MTA3MzY2ZTkzYjMzNGQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdG9tb3lvLXRvb2xzL3RvbW95by10b29sc18yLjUuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L3RvbW95by10b29scy90b21veW8tdG9vbHNfMi41LjAuYmIKc2ltaWxhcml0eSBpbmRleCA4MyUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90b21veW8tdG9vbHMvdG9tb3lvLXRvb2xzXzIuNS4wLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zZWN1cml0eS90b21veW8tdG9vbHMvdG9tb3lvLXRvb2xzXzIuNS4wLmJiCmluZGV4IDRhMWI0Y2UuLmYzNjI3NzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdG9tb3lvLXRvb2xzL3RvbW95by10b29sc18yLjUuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zZWN1cml0eS90b21veW8tdG9vbHMvdG9tb3lvLXRvb2xzXzIuNS4wLmJiCkBAIC01LDkgKzUsOSBAQAogSE9NRVBBR0UgPSAiaHR0cDovL3RvbW95by5zb3VyY2Vmb3JnZS5qcC8iCiBTRUNUSU9OID0gIlN5c3RlbSBFbnZpcm9ubWVudC9LZXJuZWwiCiAKLVNSQ19VUkkgPSAiaHR0cDovL2phaXN0LmRsLnNvdXJjZWZvcmdlLmpwL3RvbW95by81MzM1Ny8ke0JQfS0yMDE0MDYwMS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiODg4ODY5Yjc5MzEyN2YwMGQ2NDM5YTMyNDY1OThiODMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTE4ZWY2YmExZmJmN2MwYjgzMDE4YzNhMGQ0ZDU0ODVkZmI5YjViN2Y2NDdmMzdjZTlmNjM4NDFhMzEzM2MyYSIKK1NSQ19VUkkgPSAiaHR0cDovL2phaXN0LmRsLnNvdXJjZWZvcmdlLmpwL3RvbW95by81MzM1Ny8ke0JQfS0yMDE3MDEwMi50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiODg4ODA0ZDU4NzQyNDUyZmUyMTNhNjhmN2VhZGQwYWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDBmZWRmYWM1ZTUxNDMyMTI1MGJiZTY5ZWFjY2M3MzJjOGE4MTU4NTk2Zjc3YTc4NWMyZTNhZTlmOTk2ODI4MyIKIAogUyA9ICIke1dPUktESVJ9LyR7QlBOfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGFzaC9kYXNoLzAwMDEtRml4LXByaW50Zi1mb3JtYXQtZXJyb3JzLXdpdGgtY2xhbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvZGFzaC9kYXNoLzAwMDEtRml4LXByaW50Zi1mb3JtYXQtZXJyb3JzLXdpdGgtY2xhbmcucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Rhc2gvZGFzaC8wMDAxLUZpeC1wcmludGYtZm9ybWF0LWVycm9ycy13aXRoLWNsYW5nLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvZGFzaC9kYXNoLzAwMDEtRml4LXByaW50Zi1mb3JtYXQtZXJyb3JzLXdpdGgtY2xhbmcucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Rhc2gvZGFzaF8wLjUuOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy9kYXNoL2Rhc2hfMC41LjkuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDg1JQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kYXNoL2Rhc2hfMC41LjguYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy9kYXNoL2Rhc2hfMC41LjkuMS5iYgppbmRleCA3OGNhNjBkLi42ZGVlNjZmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kYXNoL2Rhc2hfMC41LjguYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL2Rhc2gvZGFzaF8wLjUuOS4xLmJiCkBAIC0xMCw4ICsxMCw4IEBACiBTUkNfVVJJID0gImh0dHA6Ly9nb25kb3IuYXBhbmEub3JnLmF1L35oZXJiZXJ0LyR7QlBOfS9maWxlcy8ke0JQfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtcHJpbnRmLWZvcm1hdC1lcnJvcnMtd2l0aC1jbGFuZy5wYXRjaCBcCiAgICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1YzE1MjIwOTY4MGRhYjNjMzE5ZTg5MjNmNmM1MTM3OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNmRiM2EyMzc3NDdiMDJkMjAzODJhNzYxMzk3NTYzZDgxM2IzMDZjMDIwYWUyOGNlMjVhMWMzOTE1ZmFjNjBmIgorU1JDX1VSSVttZDVzdW1dID0gIjY0NzI3MDJhOGQ5NzYwZDE2NmVmODMzM2RjYjUyN2E2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVlY2Q1YmVhNzJhOTNlZDEwZWIxNWExYmU5OTUxZGQ1MWI1MmU1ZGExZDRhN2FlMDIwZWZkOTgyNmI0OWU2NTkiCiAKIEVYVFJBX09FQ09ORiArPSAiLS1iaW5kaXI9JHtiYXNlX2JpbmRpcn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Rjc2gvdGNzaC8wMDAxLUVuYWJsZS1zeXN0ZW0tbWFsbG9jLW9uLWFsbC1saW51eC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy90Y3NoL3Rjc2gvMDAwMS1FbmFibGUtc3lzdGVtLW1hbGxvYy1vbi1hbGwtbGludXgucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Rjc2gvdGNzaC8wMDAxLUVuYWJsZS1zeXN0ZW0tbWFsbG9jLW9uLWFsbC1saW51eC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL3Rjc2gvdGNzaC8wMDAxLUVuYWJsZS1zeXN0ZW0tbWFsbG9jLW9uLWFsbC1saW51eC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGNzaC90Y3NoLzAwMDItQWRkLWRlYmlhbi1jc2gtc2NyaXB0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy90Y3NoL3Rjc2gvMDAwMi1BZGQtZGViaWFuLWNzaC1zY3JpcHRzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90Y3NoL3Rjc2gvMDAwMi1BZGQtZGViaWFuLWNzaC1zY3JpcHRzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvdGNzaC90Y3NoLzAwMDItQWRkLWRlYmlhbi1jc2gtc2NyaXB0cy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGNzaC90Y3NoXzYuMjAuMDAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvdGNzaC90Y3NoXzYuMjAuMDAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Rjc2gvdGNzaF82LjIwLjAwLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvdGNzaC90Y3NoXzYuMjAuMDAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3pzaC96c2hfNS4zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvenNoL3pzaF81LjQuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC96c2gvenNoXzUuMy4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvenNoL3pzaF81LjQuMi5iYgppbmRleCAxZjVlMzkwLi4xMDBjNDQ5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC96c2gvenNoXzUuMy4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy96c2gvenNoXzUuNC4yLmJiCkBAIC02LDEzICs2LDEzIEBACiBTRUNUSU9OID0gImJhc2Uvc2hlbGwiCiAKIExJQ0VOU0UgPSAienNoIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9YjdiYzg1Mzg5NDY2NGJlNDU1YTkyMmRiOTgwNTI4OGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT0xYTRjNGNkYTNlODA5NmQyZmQ0ODNmZjJmNDUxNGZlYyIKIAogREVQRU5EUyA9ICJuY3Vyc2VzIGJpc29uLW5hdGl2ZSBsaWJjYXAgbGlicGNyZSBnZGJtIGdyb2ZmLW5hdGl2ZSIKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkNTgzZmJjYTBjMjQxMGJmOTU0MmNlOGE2NTFjMjZjYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzZDk0YTU5MGZmM2M1NjJlY2YzODdkYTc4YWMzNTZkNmJlYTc5YjA1MGE5ZWY4MWUzZWNiOWY4ZWU1MTMwNDBlIgorU1JDX1VSSVttZDVzdW1dID0gImRmZTE1NmZkNjliMGQ4ZDE3NDVlY2Y2ZDZlMDJlMDQ3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk1N2JjZGIyYzU3ZjY0YzAyZjY3MzY5M2VhNWE3NTE4ZWYyNGI2NTU3YWViM2E0Y2UyMjJjZWZhNmQ3NGFjYzkiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdXBkYXRlLWFsdGVybmF0aXZlcwogCkBAIC0zMCw2ICszMCw5IEBACiAgICAgenNoX2N2X3NoYXJlZF9lbnZpcm9uPXllcyBcCiAiCiAKKyMgQ29uZmlndXJlIHJlc3BlY3RzIC0tYmluZGlyIGZyb20gRVhUUkFfT0VDT05GLCBidXQgdGhlbiBTcmMvTWFrZWZpbGUgd2lsbCByZWFkIGJpbmRpciBmcm9tIGVudmlyb25tZW50CitleHBvcnQgYmluZGlyPSIke2Jhc2VfYmluZGlyfSIKKwogRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCiAKIEFMVEVSTkFUSVZFXyR7UE59ID0gInNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hbnRoeS9hbnRoeS9uYXRpdmUtaGVscGVycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYW50aHkvYW50aHkvbmF0aXZlLWhlbHBlcnMucGF0Y2gKaW5kZXggMjkxYjY2Yi4uNDdjZTAwNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hbnRoeS9hbnRoeS9uYXRpdmUtaGVscGVycy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2FudGh5L2FudGh5L25hdGl2ZS1oZWxwZXJzLnBhdGNoCkBAIC0zLDIwICszLDI0IEBACiBjb21tZW50OiBTdGFnZSB0aGUgbmF0aXZlIGFudGh5IGhlbHBlcnMgbWtmaWxlZGljLCBta2RlcGdyYXBoLCBta3dvcmRkaWMsIAogY29tbWVudDogY2FsY3RyYW5zIGFuZCBwcm9jY29ycHVzLgogCi0tLS0gYW50aHktNzgxMS9ta2FudGh5ZGljL01ha2VmaWxlLmFtfgkyMDA2LTA1LTEzIDE4OjI4OjM1LjAwMDAwMDAwMCArMDkwMAotKysrIGFudGh5LTc4MTEvbWthbnRoeWRpYy9NYWtlZmlsZS5hbQkyMDA2LTA2LTE4IDEwOjU2OjI1Ljc3MDAwMDAwMCArMDkwMAotQEAgLTMsNyArMyw3IEBACitJbmRleDogYW50aHktOTEwMGgvbWthbnRoeWRpYy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFudGh5LTkxMDBoLm9yaWcvbWthbnRoeWRpYy9NYWtlZmlsZS5hbQorKysrIGFudGh5LTkxMDBoL21rYW50aHlkaWMvTWFrZWZpbGUuYW0KK0BAIC0zLDcgKzMsNyBAQCBub2luc3RfU0NSSVBUUyA9CiAgQ0xFQU5GSUxFUyA9IGFudGh5LmRpYwotIElOQ0xVREVTID0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUgLURTUkNESVI9XCIkKHNyY2RpcilcIgorIElOQ0xVREVTID0gLUkkKHRvcF9zcmNkaXIpLyAtRFNSQ0RJUj1cIiQoc3JjZGlyKVwiCiAgCiAtbm9pbnN0X1BST0dSQU1TID0gbWtmaWxlZGljCiArYmluX1BST0dSQU1TID0gbWtmaWxlZGljCiAgbWtmaWxlZGljX1NPVVJDRVMgPSBta2ZpbGVkaWMuYwogIG1rZmlsZWRpY19MREFERCA9IC4uL3NyYy1kaWNsaWIvbGliZGljbGliLmxhCiAgCi0tLS0gYW50aHktNzgxMS9kZXBncmFwaC9NYWtlZmlsZS5hbX4JMjAwNi0wNi0wMiAwMDoyMDo1NC4wMDAwMDAwMDAgKzA5MDAKLSsrKyBhbnRoeS03ODExL2RlcGdyYXBoL01ha2VmaWxlLmFtCTIwMDYtMDYtMTggMTA6NTc6MTkuNDIwMDAwMDAwICswOTAwCi1AQCAtOSw3ICs5LDcgQEAKK0luZGV4OiBhbnRoeS05MTAwaC9kZXBncmFwaC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFudGh5LTkxMDBoLm9yaWcvZGVwZ3JhcGgvTWFrZWZpbGUuYW0KKysrKyBhbnRoeS05MTAwaC9kZXBncmFwaC9NYWtlZmlsZS5hbQorQEAgLTksNyArOSw3IEBAIENMRUFORklMRVMgPSBhbnRoeS5kZXAKICBFWFRSQV9ESVNUID0gaW5kZXB3b3JkLnR4dCAkKERFUFdPUkRTKQogIAogICMgR2VuZXJhdGUgdGhlIGRpY3Rpb25hcnkKQEAgLTI1LDEwICsyOSwxMiBAQAogIG1rZGVwZ3JhcGhfU09VUkNFUyA9IG1rZGVwZ3JhcGguYwogIG1rZGVwZ3JhcGhfTERBREQgPSAgLi4vc3JjLW1haW4vbGliYW50aHkubGEgLi4vc3JjLXdvcmRkaWMvbGliYW50aHlkaWMubGEKICAKLS0tLSBhbnRoeS03ODExL21rd29yZGRpYy9NYWtlZmlsZS5hbX4JMjAwNi0wNS0xMyAxODoyOTowNy4wMDAwMDAwMDAgKzA5MDAKLSsrKyBhbnRoeS03ODExL21rd29yZGRpYy9NYWtlZmlsZS5hbQkyMDA2LTA2LTE4IDExOjIxOjU2LjMwMDAwMDAwMCArMDkwMAotQEAgLTE2LDcgKzE2LDggQEAKLSAgdWRpY3QgZGljdC5hcmdzLmluCitJbmRleDogYW50aHktOTEwMGgvbWt3b3JkZGljL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYW50aHktOTEwMGgub3JpZy9ta3dvcmRkaWMvTWFrZWZpbGUuYW0KKysrKyBhbnRoeS05MTAwaC9ta3dvcmRkaWMvTWFrZWZpbGUuYW0KK0BAIC0yNiw3ICsyNiw4IEBAIERJQ19GSUxFUyA9IEB0b3Bfc3JjZGlyQC9hbHQtY2FubmFkaWMvZ2MKKyAJICAgIEB0b3Bfc3JjZGlyQC9ta3dvcmRkaWMvdWRpY3QKICAKICAjIEdlbmVyYXRlIHRoZSBkaWN0aW9uYXJ5CiAtbm9pbnN0X1BST0dSQU1TID0gbWt3b3JkZGljCkBAIC0zNiwxMCArNDIsMTIgQEAKICtiaW5fUFJPR1JBTVMgPSBta3dvcmRkaWMKICBta3dvcmRkaWNfU09VUkNFUyA9IG1rZGljLmMgd3JpdGV3b3Jkcy5jIG1rdWRpYy5jIGNhbGNmcmVxLmMgbWtkaWMuaAogIG1rd29yZGRpY19MREFERCA9IC4uL3NyYy13b3JkZGljL2xpYmFudGh5ZGljLmxhCi0KLS0tLSBhbnRoeS05MTAwZS5vcmlnL2NhbGN0cmFucy9NYWtlZmlsZS5hbQkyMDA4LTA1LTA4IDE1OjA0OjEzLjAwMDAwMDAwMCArMDIwMAotKysrIGFudGh5LTkxMDBlL2NhbGN0cmFucy9NYWtlZmlsZS5hbQkyMDA4LTA1LTA4IDE1OjA0OjI0LjAwMDAwMDAwMCArMDIwMAotQEAgLTMsNyArMyw3IEBACisgCitJbmRleDogYW50aHktOTEwMGgvY2FsY3RyYW5zL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYW50aHktOTEwMGgub3JpZy9jYWxjdHJhbnMvTWFrZWZpbGUuYW0KKysrKyBhbnRoeS05MTAwaC9jYWxjdHJhbnMvTWFrZWZpbGUuYW0KK0BAIC0zLDcgKzMsNyBAQCBFWFRSQV9ESVNUID1cCiAgIGNvcnB1cy4zLnR4dCBjb3JwdXMuNC50eHQgY29ycHVzLjUudHh0XAogICBjb3JwdXNfaW5mbyB3ZWFrX3dvcmRzCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2FudGh5L2FudGh5L25vdF9idWlsZF9lbGMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2FudGh5L2FudGh5L25vdF9idWlsZF9lbGMucGF0Y2gKaW5kZXggYmY3NDhmMy4uMWM1YzQ5NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hbnRoeS9hbnRoeS9ub3RfYnVpbGRfZWxjLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYW50aHkvYW50aHkvbm90X2J1aWxkX2VsYy5wYXRjaApAQCAtMSwxMiArMSwxMyBAQAogdXBzdHJlYW06IG5vdCBhcHBsaWNhYmxlCiBzb3VyY2U6IHN0b2xlbiBmcm9tIGRlYmlhbgogCi1kaWZmIC1OYXVyIGFudGh5LTc4MTEvc3JjLXV0aWwub3JpZy9NYWtlZmlsZS5hbSBhbnRoeS03ODExL3NyYy11dGlsL01ha2VmaWxlLmFtCi0tLS0gYW50aHktNzgxMS9zcmMtdXRpbC5vcmlnL01ha2VmaWxlLmFtCTIwMDYtMDYtMTggMTA6NDc6NTUuNzkwMDAwMDAwICswOTAwCi0rKysgYW50aHktNzgxMS9zcmMtdXRpbC9NYWtlZmlsZS5hbQkyMDA2LTA2LTE4IDEwOjQ4OjIzLjg2MDAwMDAwMCArMDkwMAotQEAgLTYsNyArNiw4IEBACitJbmRleDogYW50aHktOTEwMGgvc3JjLXV0aWwvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhbnRoeS05MTAwaC5vcmlnL3NyYy11dGlsL01ha2VmaWxlLmFtCisrKysgYW50aHktOTEwMGgvc3JjLXV0aWwvTWFrZWZpbGUuYW0KK0BAIC04LDcgKzgsOCBAQCBFTElTUF9GSUxFUyA9IGFudGh5LmVsIGFudGh5LWRpYy5lbCBhbnRoCiAgIGFudGh5LWlzZWFyY2guZWwgYW50aHktYXppay5lbCBhbnRoeS1reXVyaS5lbAotIEVYVFJBX0RJU1QgPSAkKEVMSVNQX0ZJTEVTKSB0eXBldGFiIGRpYy10b29sLXVzYWdlLnR4dCByY3NpemUucmIKKyBFWFRSQV9ESVNUID0gJChFTElTUF9GSUxFUykgdHlwZXRhYiBkaWMtdG9vbC11c2FnZS50eHQgYW50aHkuaQogIGJpbl9QUk9HUkFNUyA9IGFudGh5LWRpYy10b29sIGFudGh5LWFnZW50IGFudGh5LW1vcnBob2xvZ2ljYWwtYW5hbHl6ZXIKIC1FTENGSUxFUyA9IGFudGh5LmVsYyBhbnRoeS1kaWMuZWxjIGFudGh5LWF6aWsuZWxjIGFudGh5LWNvbmYuZWxjIGFudGh5LWlzZWFyY2guZWxjIGFudGh5LWt5dXJpLmVsYyBsZWltLWxpc3QuZWxjCiArI0VMQ0ZJTEVTID0gYW50aHkuZWxjIGFudGh5LWRpYy5lbGMgYW50aHktYXppay5lbGMgYW50aHktY29uZi5lbGMgYW50aHktaXNlYXJjaC5lbGMgYW50aHkta3l1cmkuZWxjIGxlaW0tbGlzdC5lbGMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXVnZWFzL2F1Z2Vhcy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdWdlYXMvYXVnZWFzLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKaW5kZXggOWExOTg3Ni4uMGJhN2M3NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdWdlYXMvYXVnZWFzLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdWdlYXMvYXVnZWFzLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGI5NTY1ZGMyZmUwYzRmN2RhYWVjOTFiN2U4M2JjNzMxM2RlZTJmNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDMyYjE1MzMyZTIxMzBhNTRiMjVmNGZiZjZmNThiNDA3Yjg1MWRkOGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAxMyBBcHIgMjAxNSAxNzowMjoxMyAtMDcwMAogU3ViamVjdDogW1BBVENIXSBVbnNldCBuZWVkX2NoYXJzZXRfYWxpYXMgd2hlbiBidWlsZGluZyBmb3IgbXVzbApAQCAtMTEsMTQgKzExLDE1IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCi0gbGliL2dudWxpYi5tayB8IDIgKy0KKyBnbnVsaWIvbGliL01ha2VmaWxlLmFtIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1JbmRleDogYXVnZWFzLTEuMi4wL2dudWxpYi9saWIvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhdWdlYXMtMS4yLjAub3JpZy9nbnVsaWIvbGliL01ha2VmaWxlLmFtCi0rKysgYXVnZWFzLTEuMi4wL2dudWxpYi9saWIvTWFrZWZpbGUuYW0KK2RpZmYgLS1naXQgYS9nbnVsaWIvbGliL01ha2VmaWxlLmFtIGIvZ251bGliL2xpYi9NYWtlZmlsZS5hbQoraW5kZXggOTYzYjIyZC4uNzU3ODhkMiAxMDA2NDQKKy0tLSBhL2dudWxpYi9saWIvTWFrZWZpbGUuYW0KKysrKyBiL2dudWxpYi9saWIvTWFrZWZpbGUuYW0KIEBAIC00NjMsNyArNDYzLDcgQEAgaW5zdGFsbC1leGVjLWxvY2FsY2hhcnNldDogYWxsLWxvY2FsCiAgCSAgY2FzZSAnJChob3N0X29zKScgaW4gXAogIAkgICAgZGFyd2luWzU2XSopIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXVnZWFzL2F1Z2Vhcy9hZGQtbWlzc2luZy1hcmd6LWNvbmRpdGlvbmFsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdWdlYXMvYXVnZWFzL2FkZC1taXNzaW5nLWFyZ3otY29uZGl0aW9uYWwucGF0Y2gKaW5kZXggYWJiZGJhYS4uMzY4YmI0MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdWdlYXMvYXVnZWFzL2FkZC1taXNzaW5nLWFyZ3otY29uZGl0aW9uYWwucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdWdlYXMvYXVnZWFzL2FkZC1taXNzaW5nLWFyZ3otY29uZGl0aW9uYWwucGF0Y2gKQEAgLTEsMTQgKzEsMjEgQEAKLUFkZCBtaXNzaW5nIEdMX0dFTkVSQVRFX0FSR1pfSCBjb25kaXRpb25hbAorRnJvbSA5YTZlNjM3NGRhN2Q3MDU2ZGIwOTUwZjBmN2Q2YjhiOTA1MDA5Nzc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ29uc3RhbnRpbiBNdXNjYSA8Y29uc3RhbnRpbngubXVzY2FAaW50ZWwuY29tPgorRGF0ZTogRnJpLCAxNSBKdWwgMjAxNiAxMDowNDo0OCArMDMwMAorU3ViamVjdDogW1BBVENIXSBBZGQgbWlzc2luZyBHTF9HRU5FUkFURV9BUkdaX0ggY29uZGl0aW9uYWwKIAogLSBHTF9HRU5FUkFURV9BUkdaX0ggaXMgdXNlZCBpbiBnbnVsaWIvbGliL01ha2VmaWxlLmFtCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogQ29uc3RhbnRpbiBNdXNjYSA8Y29uc3RhbnRpbngubXVzY2FAaW50ZWwuY29tPgogCi1JbmRleDogYXVnZWFzLTEuMC4wL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGF1Z2Vhcy0xLjAuMC5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGF1Z2Vhcy0xLjAuMC9jb25maWd1cmUuYWMKKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDcyYjY5ODQuLmZiOTY1M2UgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYwogQEAgLTU1LDYgKzU1LDggQEAgQUNfQVJHX1dJVEgoW2ZhaWxtYWxsb2NdLAogIAogIEFNX0NPTkRJVElPTkFMKFtXSVRIX0ZBSUxNQUxMT0NdLCBbdGVzdCB4JHdpdGhfZmFpbG1hbGxvYyAhPSB4bm9dKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdWdlYXMvYXVnZWFzL3NlcGJ1aWxkZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdWdlYXMvYXVnZWFzL3NlcGJ1aWxkZml4LnBhdGNoCmluZGV4IGI4MmEzZWUuLjJiMTg2MTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXVnZWFzL2F1Z2Vhcy9zZXBidWlsZGZpeC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F1Z2Vhcy9hdWdlYXMvc2VwYnVpbGRmaXgucGF0Y2gKQEAgLTEsMTUgKzEsMjQgQEAKLUVuc3VyZSB0aGF0IGJ1aWxkcyBpbiBzZXBhcmF0ZSBidWlsZGRpcnMgKCR7Qn0gIT0gJHtTfSkgY29ycmVjdGx5IGluc3RhbGwgdGhlIAorRnJvbSA4YTI3Nzk1N2EyNTc5ZTcxNDljMTg1MDY3NTQ0MWIyODgxOTIwNzdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IEZyaSwgMTUgSnVsIDIwMTYgMTA6MDQ6NDggKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXVnZWFzOiBmaXggc2VwYXJhdGUgYnVpbGRkaXJzCisKK0Vuc3VyZSB0aGF0IGJ1aWxkcyBpbiBzZXBhcmF0ZSBidWlsZGRpcnMgKCR7Qn0gIT0gJHtTfSkgY29ycmVjdGx5IGluc3RhbGwgdGhlCiBsZW5zZXMgZmlsZXMuCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBSUCAyMDEzLzQvMTcKIAotSW5kZXg6IGF1Z2Vhcy0xLjAuMC9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGF1Z2Vhcy0xLjAuMC5vcmlnL01ha2VmaWxlLmFtCTIwMTItMTEtMDIgMTU6MjA6MTEuMDAwMDAwMDAwICswMDAwCi0rKysgYXVnZWFzLTEuMC4wL01ha2VmaWxlLmFtCTIwMTMtMDQtMTcgMTA6MzY6MjQuMDMzNDAwMTI1ICswMDAwCi1AQCAtNSw4ICs1LDggQEAKKy0tLQorIE1ha2VmaWxlLmFtIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IDg3ZDUxMWEuLjc3MTBiM2IgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC01LDggKzUsOCBAQCBBQ0xPQ0FMX0FNRkxBR1MgPSAtSSBnbnVsaWIvbTQKICBsZW5zZGlyPSQoZGF0YWRpcikvYXVnZWFzL2xlbnNlcy9kaXN0CiAgbGVuc3Rlc3RkaXI9JChkYXRhZGlyKS9hdWdlYXMvbGVuc2VzL2Rpc3QvdGVzdHMKICAKQEAgLTE4LDUgKzI3LDUgQEAKICtkaXN0X2xlbnNfREFUQT0kKHdpbGRjYXJkICQodG9wX3NyY2RpcikvbGVuc2VzLyouYXVnKQogK2Rpc3RfbGVuc3Rlc3RfREFUQT0kKHdpbGRjYXJkICQodG9wX3NyY2RpcilsZW5zZXMvdGVzdHMvKi5hdWcpCiAgCi0gRVhUUkFfRElTVD1hdWdlYXMuc3BlYyBidWlsZC9hdXgvbW92ZS1pZi1jaGFuZ2UgTWFrZWZpbGUuYW0gSEFDS0lORworIEVYVFJBX0RJU1Q9YXVnZWFzLnNwZWMgYnVpbGQvYWMtYXV4L21vdmUtaWYtY2hhbmdlIE1ha2VmaWxlLmFtIEhBQ0tJTkcubWQKICAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY2Fub25pY2FsLW11bHRpdG91Y2gvZ2Vpc18yLjIuMTcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Nhbm9uaWNhbC1tdWx0aXRvdWNoL2dlaXNfMi4yLjE3LmJiCmluZGV4IDk3NmFhZmIuLjMwZDQxYTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY2Fub25pY2FsLW11bHRpdG91Y2gvZ2Vpc18yLjIuMTcuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jYW5vbmljYWwtbXVsdGl0b3VjaC9nZWlzXzIuMi4xNy5iYgpAQCAtMzAsNyArMzAsNiBAQAogCiBGSUxFU18ke1BOfS1iaW4gPSAiJHtiaW5kaXJ9IgogUkRFUEVORFNfJHtQTn0tYmluID0gIiBcCi0gICAgcHl0aG9uMy1hcmdwYXJzZSBcCiAgICAgcHl0aG9uMy1jb21wcmVzc2lvbiBcCiAgICAgcHl0aG9uMy1jb3JlIFwKICAgICBweXRob24zLWNyeXB0IFwKQEAgLTQwLDggKzM5LDYgQEAKICAgICBweXRob24zLXBpY2tsZSBcCiAgICAgcHl0aG9uMy1zaGVsbCBcCiAgICAgcHl0aG9uMy1zdHJpbmdvbGQgXAotICAgIHB5dGhvbjMtc3VicHJvY2VzcyBcCi0gICAgcHl0aG9uMy10ZXh0dXRpbHMgXAogICAgIHB5dGhvbjMtdGhyZWFkaW5nIFwKICIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jZXJlcy1zb2x2ZXIvY2VyZXMtc29sdmVyXzEuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NlcmVzLXNvbHZlci9jZXJlcy1zb2x2ZXJfMS4xNC5iYgpzaW1pbGFyaXR5IGluZGV4IDkxJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NlcmVzLXNvbHZlci9jZXJlcy1zb2x2ZXJfMS4xMy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jZXJlcy1zb2x2ZXIvY2VyZXMtc29sdmVyXzEuMTQuYmIKaW5kZXggZTg4M2M3MC4uMjk5MTdjOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jZXJlcy1zb2x2ZXIvY2VyZXMtc29sdmVyXzEuMTMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jZXJlcy1zb2x2ZXIvY2VyZXMtc29sdmVyXzEuMTQuYmIKQEAgLTYsNyArNiw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zNWUwMGYwYzRjOTZhMDgyMGEwM2UwYjMxZTY0MTZiZSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2NlcmVzLXNvbHZlci9jZXJlcy1zb2x2ZXIuZ2l0IgotU1JDUkVWID0gIjE5MzMzYjBmNTVjODQ2MjM4MTAzOGU3MGQ0MmFmNDNiNTI5NDExMjgiCitTUkNSRVYgPSAiZmFjYjE5OWYzZWRhOTAyMzYwZjllMWQ1MjcxMzcyYjdlNTRmZWJlMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHByZXN0L2NwcHJlc3QtMi4xMC4yL2ZpeC1jbWFrZS1pbnN0YWxsLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHByZXN0L2NwcHJlc3QtMi4xMC4yL2ZpeC1jbWFrZS1pbnN0YWxsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmZWFmZWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdC0yLjEwLjIvZml4LWNtYWtlLWluc3RhbGwucGF0Y2gKQEAgLTAsMCArMSwxNyBAQAorRGVzY3JpcHRpb246IGluc3RhbGwgY21ha2UgZmlsZXMgaW50byAvdXNyL2xpYi9jbWFrZS9jcHByZXN0c2RrCitBdXRob3I6IEdpYW5mcmFuY28gQ29zdGFtYWduYSA8bG9jdXR1c29mYm9yZ0BkZWJpYW4ub3JnPgorVXBzdHJlYW0tU3RhdHVzOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L2NwcHJlc3RzZGsvcHVsbC83MzcKK0ZvcndhcmRlZDogaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9jcHByZXN0c2RrL3B1bGwvNzM3CitMYXN0LVVwZGF0ZTogMjAxOC0wNC0xOQorCistLS0gY3BwcmVzdC0yLjEwLjIub3JpZy9DTWFrZUxpc3RzLnR4dAorKysrIGNwcHJlc3QtMi4xMC4yL0NNYWtlTGlzdHMudHh0CitAQCAtMTgsNyArMTgsNyBAQCBlbmFibGVfdGVzdGluZygpCisgc2V0KFdFUlJPUiBPTiBDQUNIRSBCT09MICJUcmVhdCBXYXJuaW5ncyBhcyBFcnJvcnMuIikKKyBzZXQoQ1BQUkVTVF9FWENMVURFX1dFQlNPQ0tFVFMgT0ZGIENBQ0hFIEJPT0wgIkV4Y2x1ZGUgd2Vic29ja2V0cyBmdW5jdGlvbmFsaXR5LiIpCisgc2V0KENQUFJFU1RfRVhDTFVERV9DT01QUkVTU0lPTiBPRkYgQ0FDSEUgQk9PTCAiRXhjbHVkZSBjb21wcmVzc2lvbiBmdW5jdGlvbmFsaXR5LiIpCistc2V0KENQUFJFU1RfRVhQT1JUX0RJUiBsaWIvY3BwcmVzdHNkayBDQUNIRSBTVFJJTkcgIkRpcmVjdG9yeSB0byBpbnN0YWxsIENNYWtlIGNvbmZpZyBmaWxlcy4iKQorK3NldChDUFBSRVNUX0VYUE9SVF9ESVIgbGliL2NtYWtlL2NwcHJlc3RzZGsgQ0FDSEUgU1RSSU5HICJEaXJlY3RvcnkgdG8gaW5zdGFsbCBDTWFrZSBjb25maWcgZmlsZXMuIikKKyBzZXQoQ1BQUkVTVF9JTlNUQUxMX0hFQURFUlMgT04gQ0FDSEUgQk9PTCAiSW5zdGFsbCBoZWFkZXIgZmlsZXMuIikKKyBzZXQoQ1BQUkVTVF9JTlNUQUxMIE9OIENBQ0hFIEJPT0wgIkFkZCBpbnN0YWxsIGNvbW1hbmRzLiIpCisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdF8yLjEwLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdF8yLjEwLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJhNmZjNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3BwcmVzdC9jcHByZXN0XzIuMTAuMi5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIk1pY3Jvc29mdCBwcm9qZWN0IGZvciBjbG91ZC1iYXNlZCBjbGllbnQtc2VydmVyIGNvbW11bmljYXRpb24gaW4gbmF0aXZlIGNvZGUgdXNpbmcgYSBtb2Rlcm4gYXN5bmNocm9ub3VzIEMrKyBBUEkgZGVzaWduLiIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9jcHByZXN0c2RrLyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtTfS8uLi9saWNlbnNlLnR4dDttZDU9YTJlMTViOTU0NzY5MjE4ZmY5MTI0NjhlZWNkNmEwMmYiCitERVBFTkRTID0gIm9wZW5zc2wgd2Vic29ja2V0cHAgemxpYiBib29zdCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL01pY3Jvc29mdC9jcHByZXN0c2RrLmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9bWFzdGVyIgorCitTUkNfVVJJICs9ICJmaWxlOi8vZml4LWNtYWtlLWluc3RhbGwucGF0Y2giCisKKyMgdGFnIDIuMTAuMgorU1JDUkVWPSAiZmVhODQ4ZTJhNzc1NjNjZjJhNmYyOGY4ZWFiMzk2ZmQ2ZTc4N2ZiZiIKKworUyA9ICIke1dPUktESVJ9L2dpdC9SZWxlYXNlIgorCitpbmhlcml0IGNtYWtlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuMy40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kb3MydW5peC9kb3MydW5peF83LjQuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuMy40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4wLmJiCmluZGV4IGFiZjdkMWMuLjhkM2M1NzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZG9zMnVuaXgvZG9zMnVuaXhfNy4zLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kb3MydW5peC9kb3MydW5peF83LjQuMC5iYgpAQCAtMTAsOCArMTAsOCBAQAogCiBTUkNfVVJJID0gImdpdDovL2dpdC5jb2RlLnNmLm5ldC9wL2RvczJ1bml4L2RvczJ1bml4IgogCi0jIFJlbGVhc2UgNy4zLjQKLVNSQ1JFViA9ICI4MzgxYmE0ZTFjNGNkNWNlOThlYmQ5YzI0NzI2ZDUxY2IyMDNjZGUwIgorIyBSZWxlYXNlIDcuNC4wCitTUkNSRVYgPSAiMTE4MjUzM2JkZTNjMWZlNjViZTJlYWQ0NjVlODc2NzFmYWEyYzAyNyIKIAogUyA9ICIke1dPUktESVJ9L2dpdC9kb3MydW5peCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ldmVudGxvZy9ldmVudGxvZ18wLjIuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2V2ZW50bG9nL2V2ZW50bG9nXzAuMi4xMy5iYgppbmRleCA1OWIwMWI2Li4xM2ViNzk0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2V2ZW50bG9nL2V2ZW50bG9nXzAuMi4xMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2V2ZW50bG9nL2V2ZW50bG9nXzAuMi4xMy5iYgpAQCAtMTMsNyArMTMsNyBAQAogTElDRU5TRSA9ICJCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iOGJhOGU3N2JjZGE5YTUzZmFjMGZlMzlmZTk1Nzc2NyIKIAotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmJhbGFiaXQuY29tL2Rvd25sb2Fkcy9maWxlcy9zeXNsb2ctbmcvb3Blbi1zb3VyY2UtZWRpdGlvbi8zLjQuMi9zb3VyY2UvJHtCUE59XyR7UFZ9LnRhci5neiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cuYmFsYWJpdC5jb20vZG93bmxvYWRzL3N5c2xvZy1uZy9vcGVuLXNvdXJjZS1lZGl0aW9uLzMuNC4yL3NvdXJjZS8ke0JQTn1fJHtQVn0udGFyLmd6IgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mZnR3L2ZmdHdfMy4zLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZmdHcvZmZ0d18zLjMuNy5iYgpzaW1pbGFyaXR5IGluZGV4IDg3JQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZmdHcvZmZ0d18zLjMuNi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mZnR3L2ZmdHdfMy4zLjcuYmIKaW5kZXggZWQxNGUxNi4uYWFlNmVjOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mZnR3L2ZmdHdfMy4zLjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mZnR3L2ZmdHdfMy4zLjcuYmIKQEAgLTQsMTMgKzQsMTEgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgogCiBTUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL3d3dy5mZnR3Lm9yZy9mZnR3LSR7UFZ9LXBsMS50YXIuZ3ogXAorICAgIGh0dHA6Ly93d3cuZmZ0dy5vcmcvZmZ0dy0ke1BWfS50YXIuZ3ogXAogICAgIGZpbGU6Ly8wMDAxLU5FT04tYXV0b2RldGVjdGlvbi1zZWdmYXVsdHMtYXNzdW1lLW5lb24tcHJlc2VudC5wYXRjaCBcCiAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNjgyYTBlNzhkNjk2NmNhMzdjNzQ0NmQ0YWI0Y2MyYTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWVmNGFhODQyN2Q5Nzg1ODM5YmM3NjdmM2ViNmE4NGZjYjVlOWEzN2MzMWVkNzdhMDRlN2UwNDc1MTlhMTgzZCIKLQotUyA9ICIke1dPUktESVJ9L2ZmdHctJHtQVn0tcGwxIgorU1JDX1VSSVttZDVzdW1dID0gIjBkNTkxNWQ3ZDM5YjMyNTNjMWNjMDUwMzBkNzlhYzQ3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNiNjA5YjdmZWJhNTIzMGU4ZjZkZDhkMjQ1ZGRiZWZhYzMyNGM1YTZhZTQxODY5NDc2NzBkOWFjMmNkMjU1NzMiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwogCkBAIC03Niw2ICs3NCw3IEBACiBGSUxFU19mZnR3Zi13aXNkb20gPSAiJHtiaW5kaXJ9L2ZmdHdmLXdpc2RvbSIKIEZJTEVTX2ZmdHctd2lzZG9tLXRvLWNvbmYgPSAiJHtiaW5kaXJ9L2ZmdHctd2lzZG9tLXRvLWNvbmYiCiAKLVJERVBFTkRTXyR7UE59LWRldiA9ICIiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKK1JERVBFTkRTXyR7UE59LWRldiA9ICJsaWJmZnR3IGxpYmZmdHdsIGxpYmZmdHdmIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmxpdGUvZmxpdGUtYWxzYS0xLjMvZmxpdGUtMS4zLWFsc2Ffc3VwcG9ydC0xLjIuZGlmZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmxpdGUvZmxpdGUtYWxzYS0xLjMvZmxpdGUtMS4zLWFsc2Ffc3VwcG9ydC0xLjIuZGlmZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNlNGI3YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsaXRlL2ZsaXRlLWFsc2EtMS4zL2ZsaXRlLTEuMy1hbHNhX3N1cHBvcnQtMS4yLmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSw2NjE1ICswLDAgQEAKLUluZGV4OiBsYW5nL3VzZW5nbGlzaC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsaXRlLTEuMy1yZWxlYXNlL2xhbmcvdXNlbmdsaXNoL01ha2VmaWxlCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiA3KQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL2xhbmcvdXNlbmdsaXNoL01ha2VmaWxlCSguLi4vcmVsZWFzZS0xLjIpCShyZXZpc2lvbiA3KQotQEAgLTM4LDYgKzM4LDcgQEAKLSBESVJOQU1FPWxhbmcvdXNlbmdsaXNoCi0gQlVJTERfRElSUyA9IAotIEFMTF9ESVJTPSAKLStpbmNsdWRlICQoVE9QKS9jb25maWcvY29uZmlnCi0gSCA9IHVzZW5nbGlzaC5oIHVzX2ludF9hY2NlbnRfY2FydC5oIHVzX2ludF90b25lX2NhcnQuaCB1c19kdXJ6X2NhcnQuaCBcCi0gICAgIHVzX2ZmZWF0dXJlcy5oIHVzX3BocmFzaW5nX2NhcnQuaCB1c190ZXh0LmggdXNfZjAuaCB1c19udW1zX2NhcnQuaAotIFNSQ1MgPSB1c19pbnRfYWNjZW50X2NhcnQuYyB1c19pbnRfdG9uZV9jYXJ0LmMgdXNfZjBfbW9kZWwuYyBcCi1AQCAtNDUsNyArNDYsMTEgQEAKLSAgICAgICAgdXNfcGhvbmVzZXQuYyB1c19mZmVhdHVyZXMuYyB1c19waHJhc2luZ19jYXJ0LmMgXAotICAgICAgICB1c19ncG9zLmMgdXNfdGV4dC5jIHVzX2V4cGFuZC5jIHVzX3Bvc3RsZXguYyBcCi0gICAgICAgIHVzX251bXNfY2FydC5jIHVzX2Fzd2QuYyB1c2VuZ2xpc2guYyAKLS1PQkpTID0gJChTUkNTOi5jPS5vKQotK2lmZGVmIFNIRkxBR1MKLStPQkpTIDo9ICQoU1JDUzouYz0ub3MpCi0rZWxzZQotK09CSlMgOj0gJChTUkNTOi5jPS5vKQotK2VuZGlmCi0gU0NNPQotIEZJTEVTID0gTWFrZWZpbGUgJChTQ00pICQoU1JDUykgJChIKQotIExJQk5BTUUgPSBmbGl0ZV91c2VuZ2xpc2gKLUluZGV4OiBsYW5nL2NtdV91c19rYWwvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9sYW5nL2NtdV91c19rYWwvTWFrZWZpbGUJKC4uLi9mbGl0ZS0xLjMtb3JpZykJKHJldmlzaW9uIDcpCi0rKysgZmxpdGUtMS4zLXJlbGVhc2UvbGFuZy9jbXVfdXNfa2FsL01ha2VmaWxlCSguLi4vcmVsZWFzZS0xLjIpCShyZXZpc2lvbiA3KQotQEAgLTQzLDcgKzQzLDEyIEBACi0gICAgICAgIGNtdV91c19rYWxfbHBjLmMgXAotICAgICAgICBjbXVfdXNfa2FsX3Jlcy5jIFwKLSAgICAgICAgY211X3VzX2thbF9yZXNpZHguYwotLU9CSlMgPSAkKFNSQ1M6LmM9Lm8pCi0raW5jbHVkZSAkKFRPUCkvY29uZmlnL2NvbmZpZwotK2lmZGVmIFNIRkxBR1MKLStPQkpTIDo9ICQoU1JDUzouYz0ub3MpCi0rZWxzZQotK09CSlMgOj0gJChTUkNTOi5jPS5vKQotK2VuZGlmCi0gU0NNPQotIEZJTEVTID0gTWFrZWZpbGUgJChTQ00pICQoU1JDUykgJChIKQotIExJQk5BTUUgPSBmbGl0ZV9jbXVfdXNfa2FsCi1JbmRleDogbGFuZy9jbXVfdXNfa2FsMTYvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9sYW5nL2NtdV91c19rYWwxNi9NYWtlZmlsZQkoLi4uL2ZsaXRlLTEuMy1vcmlnKQkocmV2aXNpb24gNykKLSsrKyBmbGl0ZS0xLjMtcmVsZWFzZS9sYW5nL2NtdV91c19rYWwxNi9NYWtlZmlsZQkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC00NCw3ICs0NCwxMiBAQAotICAgICAgICBjbXVfdXNfa2FsMTZfbHBjLmMgXAotICAgICAgICBjbXVfdXNfa2FsMTZfcmVzLmMgXAotICAgICAgICBjbXVfdXNfa2FsMTZfcmVzaWR4LmMKLS1PQkpTID0gJChTUkNTOi5jPS5vKQotK2luY2x1ZGUgJChUT1ApL2NvbmZpZy9jb25maWcKLStpZmRlZiBTSEZMQUdTCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm9zKQotK2Vsc2UKLStPQkpTIDo9ICQoU1JDUzouYz0ubykKLStlbmRpZgotIFNDTT0KLSBGSUxFUyA9IE1ha2VmaWxlICQoU0NNKSAkKFNSQ1MpICQoSCkKLSBMSUJOQU1FID0gZmxpdGVfY211X3VzX2thbDE2Ci1JbmRleDogbGFuZy9jbXVfdGltZV9hd2IvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9sYW5nL2NtdV90aW1lX2F3Yi9NYWtlZmlsZQkoLi4uL2ZsaXRlLTEuMy1vcmlnKQkocmV2aXNpb24gNykKLSsrKyBmbGl0ZS0xLjMtcmVsZWFzZS9sYW5nL2NtdV90aW1lX2F3Yi9NYWtlZmlsZQkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC00NSw3ICs0NSwxMiBAQAotIAljbXVfdGltZV9hd2JfbWNlcC5jIFwKLSAJY211X3RpbWVfYXdiX2xwYy5jIFwKLSAJY211X3RpbWVfYXdiX2xleF9lbnRyeS5jCi0tT0JKUyA9ICQoU1JDUzouYz0ubykKLStpbmNsdWRlICQoVE9QKS9jb25maWcvY29uZmlnCi0raWZkZWYgU0hGTEFHUwotK09CSlMgOj0gJChTUkNTOi5jPS5vcykKLStlbHNlCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm8pCi0rZW5kaWYKLSBTQ009Ci0gRklMRVMgPSBNYWtlZmlsZSAkKFNDTSkgJChTUkNTKSAkKEgpCi0gTElCTkFNRSA9IGZsaXRlX2NtdV90aW1lX2F3YgotSW5kZXg6IGxhbmcvY211bGV4L01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxpdGUtMS4zLXJlbGVhc2UvbGFuZy9jbXVsZXgvTWFrZWZpbGUJKC4uLi9mbGl0ZS0xLjMtb3JpZykJKHJldmlzaW9uIDcpCi0rKysgZmxpdGUtMS4zLXJlbGVhc2UvbGFuZy9jbXVsZXgvTWFrZWZpbGUJKC4uLi9yZWxlYXNlLTEuMikJKHJldmlzaW9uIDcpCi1AQCAtMzgsMTMgKzM4LDIwIEBACi0gRElSTkFNRT1sYW5nL2NtdWxleAotIEJVSUxEX0RJUlMgPSAKLSBBTExfRElSUz0gCi0rCi0gSCA9IGNtdV9sdHNfbW9kZWwuaCBjbXVsZXguaAotIFNSQ1MgPSBjbXVfbHRzX3J1bGVzLmMgY211X2x0c19tb2RlbC5jIFwKLSAgICAgICAgY211X2xleC5jIGNtdV9sZXhfZW50cmllcy5jIGNtdV9sZXhfZGF0YS5jCi0gTEVYX0RBVEFfSU5DTFVERVMgPSBjbXVfbGV4X2RhdGFfcmF3LmMgY211X2xleF9udW1fYnl0ZXMuYyBcCi0gICAgICBjbXVfbGV4X3Bob25lc19odWZmX3RhYmxlLmMgY211X2xleF9lbnRyaWVzX2h1ZmZfdGFibGUuYwotIAotLU9CSlMgPSAkKFNSQ1M6LmM9Lm8pCi0raW5jbHVkZSAkKFRPUCkvY29uZmlnL2NvbmZpZwotK2lmZGVmIFNIRkxBR1MKLStPQkpTIDo9ICQoU1JDUzouYz0ub3MpCi0rZWxzZQotK09CSlMgOj0gJChTUkNTOi5jPS5vKQotK2VuZGlmCi0rCi0gU0NSSVBUUz1tYWtlX2NtdWxleCAgCi0gCi0gU0NNPQotSW5kZXg6IGNvbmZpZ3VyZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsaXRlLTEuMy1yZWxlYXNlL2NvbmZpZ3VyZQkoLi4uL2ZsaXRlLTEuMy1vcmlnKQkocmV2aXNpb24gNykKLSsrKyBmbGl0ZS0xLjMtcmVsZWFzZS9jb25maWd1cmUJKC4uLi9yZWxlYXNlLTEuMikJKHJldmlzaW9uIDcpCi1AQCAtMSwzMjQgKzEsMzggQEAKLSAjISAvYmluL3NoCi0rCi0gIyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLgotLSMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjU3LgotKyMgR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgdXNpbmcgYXV0b2NvbmYgdmVyc2lvbiAyLjEzIAotKyMgQ29weXJpZ2h0IChDKSAxOTkyLCA5MywgOTQsIDk1LCA5NiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAjCi0tIyBDb3B5cmlnaHQgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMgotLSMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gIyBUaGlzIGNvbmZpZ3VyZSBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LgotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIE00c2ggSW5pdGlhbGl6YXRpb24uICAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIAotLSMgQmUgQm91cm5lIGNvbXBhdGlibGUKLS1pZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLS0gIGVtdWxhdGUgc2gKLS0gIE5VTExDTUQ9OgotLSAgIyBac2ggMy54IGFuZCA0LnggcGVyZm9ybXMgd29yZCBzcGxpdHRpbmcgb24gJHsxKyIkQCJ9LCB3aGljaAotLSAgIyBpcyBjb250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVhdHVyZS4KLS0gIGFsaWFzIC1nICckezErIiRAIn0nPSciJEAiJwotLWVsaWYgdGVzdCAtbiAiJHtCQVNIX1ZFUlNJT04rc2V0fSIgJiYgKHNldCAtbyBwb3NpeCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0tICBzZXQgLW8gcG9zaXgKLS1maQotLQotLSMgU3VwcG9ydCB1bnNldCB3aGVuIHBvc3NpYmxlLgotLWlmIChGT089Rk9POyB1bnNldCBGT08pID4vZGV2L251bGwgMj4mMTsgdGhlbgotLSAgYXNfdW5zZXQ9dW5zZXQKLS1lbHNlCi0tICBhc191bnNldD1mYWxzZQotLWZpCi0tCi0tCi0tIyBXb3JrIGFyb3VuZCBidWdzIGluIHByZS0zLjAgVVdJTiBrc2guCi0tJGFzX3Vuc2V0IEVOViBNQUlMIE1BSUxQQVRICi0tUFMxPSckICcKLS1QUzI9Jz4gJwotLVBTND0nKyAnCi0tCi0tIyBOTFMgbnVpc2FuY2VzLgotLWZvciBhc192YXIgaW4gXAotLSAgTEFORyBMQU5HVUFHRSBMQ19BRERSRVNTIExDX0FMTCBMQ19DT0xMQVRFIExDX0NUWVBFIExDX0lERU5USUZJQ0FUSU9OIFwKLS0gIExDX01FQVNVUkVNRU5UIExDX01FU1NBR0VTIExDX01PTkVUQVJZIExDX05BTUUgTENfTlVNRVJJQyBMQ19QQVBFUiBcCi0tICBMQ19URUxFUEhPTkUgTENfVElNRQotLWRvCi0tICBpZiAoc2V0ICt4OyB0ZXN0IC1uICJgKGV2YWwgJGFzX3Zhcj1DOyBleHBvcnQgJGFzX3ZhcikgMj4mMWAiKTsgdGhlbgotLSAgICBldmFsICRhc192YXI9QzsgZXhwb3J0ICRhc192YXIKLS0gIGVsc2UKLS0gICAgJGFzX3Vuc2V0ICRhc192YXIKLS0gIGZpCi0tZG9uZQotLQotLSMgUmVxdWlyZWQgdG8gdXNlIGJhc2VuYW1lLgotLWlmIGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0tICBhc19leHByPWV4cHIKLS1lbHNlCi0tICBhc19leHByPWZhbHNlCi0tZmkKLS0KLS1pZiAoYmFzZW5hbWUgLykgPi9kZXYvbnVsbCAyPiYxICYmIHRlc3QgIlhgYmFzZW5hbWUgLyAyPiYxYCIgPSAiWC8iOyB0aGVuCi0tICBhc19iYXNlbmFtZT1iYXNlbmFtZQotLWVsc2UKLS0gIGFzX2Jhc2VuYW1lPWZhbHNlCi0tZmkKLS0KLS0KLS0jIE5hbWUgb2YgdGhlIGV4ZWN1dGFibGUuCi0tYXNfbWU9YCRhc19iYXNlbmFtZSAiJDAiIHx8Ci0tJGFzX2V4cHIgWC8iJDAiIDogJy4qL1woW14vXVteL10qXCkvKiQnIFx8IFwKLS0JIFgiJDAiIDogJ1hcKC8vXCkkJyBcfCBcCi0tCSBYIiQwIiA6ICdYXCgvXCkkJyBcfCBcCi0tCSAuICAgICA6ICdcKC5cKScgMj4vZGV2L251bGwgfHwKLS1lY2hvIFgvIiQwIiB8Ci0tICAgIHNlZCAnL14uKlwvXChbXi9dW14vXSpcKVwvKiQveyBzLy9cMS87IHE7IH0KLS0gIAkgIC9eWFwvXChcL1wvXCkkL3sgcy8vXDEvOyBxOyB9Ci0tICAJICAvXlhcL1woXC9cKS4qL3sgcy8vXDEvOyBxOyB9Ci0tICAJICBzLy4qLy4vOyBxJ2AKLS0KLS0KLS0jIFBBVEggbmVlZHMgQ1IsIGFuZCBMSU5FTk8gbmVlZHMgQ1IgYW5kIFBBVEguCi0tIyBBdm9pZCBkZXBlbmRpbmcgdXBvbiBDaGFyYWN0ZXIgUmFuZ2VzLgotLWFzX2NyX2xldHRlcnM9J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JwotLWFzX2NyX0xFVFRFUlM9J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJwotLWFzX2NyX0xldHRlcnM9JGFzX2NyX2xldHRlcnMkYXNfY3JfTEVUVEVSUwotLWFzX2NyX2RpZ2l0cz0nMDEyMzQ1Njc4OScKLS1hc19jcl9hbG51bT0kYXNfY3JfTGV0dGVycyRhc19jcl9kaWdpdHMKLS0KLS0jIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4KLS1pZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbgotLSAgZWNobyAiIyEgL2Jpbi9zaCIgPmNvbmYkJC5zaAotLSAgZWNobyAgImV4aXQgMCIgICA+PmNvbmYkJC5zaAotLSAgY2htb2QgK3ggY29uZiQkLnNoCi0tICBpZiAoUEFUSD0iL25vbmV4aXN0ZW50Oy4iOyBjb25mJCQuc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgotLSAgICBQQVRIX1NFUEFSQVRPUj0nOycKLS0gIGVsc2UKLS0gICAgUEFUSF9TRVBBUkFUT1I9OgotLSAgZmkKLS0gIHJtIC1mIGNvbmYkJC5zaAotLWZpCi0tCi0tCi0tICBhc19saW5lbm9fMT0kTElORU5PCi0tICBhc19saW5lbm9fMj0kTElORU5PCi0tICBhc19saW5lbm9fMz1gKGV4cHIgJGFzX2xpbmVub18xICsgMSkgMj4vZGV2L251bGxgCi0tICB0ZXN0ICJ4JGFzX2xpbmVub18xIiAhPSAieCRhc19saW5lbm9fMiIgJiYKLS0gIHRlc3QgIngkYXNfbGluZW5vXzMiICA9ICJ4JGFzX2xpbmVub18yIiAgfHwgewotLSAgIyBGaW5kIHdobyB3ZSBhcmUuICBMb29rIGluIHRoZSBwYXRoIGlmIHdlIGNvbnRhaW4gbm8gcGF0aCBhdCBhbGwKLS0gICMgcmVsYXRpdmUgb3Igbm90LgotLSAgY2FzZSAkMCBpbgotLSAgICAqW1xcL10qICkgYXNfbXlzZWxmPSQwIDs7Ci0tICAgICopIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLS1mb3IgYXNfZGlyIGluICRQQVRICi0tZG8KLS0gIElGUz0kYXNfc2F2ZV9JRlMKLS0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0tICB0ZXN0IC1yICIkYXNfZGlyLyQwIiAmJiBhc19teXNlbGY9JGFzX2Rpci8kMCAmJiBicmVhawotLWRvbmUKLS0KLS0gICAgICAgOzsKLS0gIGVzYWMKLS0gICMgV2UgZGlkIG5vdCBmaW5kIG91cnNlbHZlcywgbW9zdCBwcm9iYWJseSB3ZSB3ZXJlIHJ1biBhcyBgc2ggQ09NTUFORCcKLS0gICMgaW4gd2hpY2ggY2FzZSB3ZSBhcmUgbm90IHRvIGJlIGZvdW5kIGluIHRoZSBwYXRoLgotLSAgaWYgdGVzdCAieCRhc19teXNlbGYiID0geDsgdGhlbgotLSAgICBhc19teXNlbGY9JDAKLS0gIGZpCi0tICBpZiB0ZXN0ICEgLWYgIiRhc19teXNlbGYiOyB0aGVuCi0tICAgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGZpbmQgbXlzZWxmOyByZXJ1biB3aXRoIGFuIGFic29sdXRlIHBhdGgiID4mMgotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotLSAgZmkKLS0gIGNhc2UgJENPTkZJR19TSEVMTCBpbgotLSAgJycpCi0tICAgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLS1mb3IgYXNfZGlyIGluIC9iaW4kUEFUSF9TRVBBUkFUT1IvdXNyL2JpbiRQQVRIX1NFUEFSQVRPUiRQQVRICi0tZG8KLS0gIElGUz0kYXNfc2F2ZV9JRlMKLS0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0tICBmb3IgYXNfYmFzZSBpbiBzaCBiYXNoIGtzaCBzaDU7IGRvCi0tCSBjYXNlICRhc19kaXIgaW4KLS0JIC8qKQotLQkgICBpZiAoIiRhc19kaXIvJGFzX2Jhc2UiIC1jICcKLS0gIGFzX2xpbmVub18xPSRMSU5FTk8KLS0gIGFzX2xpbmVub18yPSRMSU5FTk8KLS0gIGFzX2xpbmVub18zPWAoZXhwciAkYXNfbGluZW5vXzEgKyAxKSAyPi9kZXYvbnVsbGAKLS0gIHRlc3QgIngkYXNfbGluZW5vXzEiICE9ICJ4JGFzX2xpbmVub18yIiAmJgotLSAgdGVzdCAieCRhc19saW5lbm9fMyIgID0gIngkYXNfbGluZW5vXzIiICcpIDI+L2Rldi9udWxsOyB0aGVuCi0tCSAgICAgJGFzX3Vuc2V0IEJBU0hfRU5WIHx8IHRlc3QgIiR7QkFTSF9FTlYrc2V0fSIgIT0gc2V0IHx8IHsgQkFTSF9FTlY9OyBleHBvcnQgQkFTSF9FTlY7IH0KLS0JICAgICAkYXNfdW5zZXQgRU5WIHx8IHRlc3QgIiR7RU5WK3NldH0iICE9IHNldCB8fCB7IEVOVj07IGV4cG9ydCBFTlY7IH0KLS0JICAgICBDT05GSUdfU0hFTEw9JGFzX2Rpci8kYXNfYmFzZQotLQkgICAgIGV4cG9ydCBDT05GSUdfU0hFTEwKLS0JICAgICBleGVjICIkQ09ORklHX1NIRUxMIiAiJDAiICR7MSsiJEAifQotLQkgICBmaTs7Ci0tCSBlc2FjCi0tICAgICAgIGRvbmUKLS1kb25lCi0tOzsKLS0gIGVzYWMKLS0KLS0gICMgQ3JlYXRlICRhc19tZS5saW5lbm8gYXMgYSBjb3B5IG9mICRhc19teXNlbGYsIGJ1dCB3aXRoICRMSU5FTk8KLS0gICMgdW5pZm9ybWx5IHJlcGxhY2VkIGJ5IHRoZSBsaW5lIG51bWJlci4gIFRoZSBmaXJzdCAnc2VkJyBpbnNlcnRzIGEKLS0gICMgbGluZS1udW1iZXIgbGluZSBiZWZvcmUgZWFjaCBsaW5lOyB0aGUgc2Vjb25kICdzZWQnIGRvZXMgdGhlIHJlYWwKLS0gICMgd29yay4gIFRoZSBzZWNvbmQgc2NyaXB0IHVzZXMgJ04nIHRvIHBhaXIgZWFjaCBsaW5lLW51bWJlciBsaW5lCi0tICAjIHdpdGggdGhlIG51bWJlcmVkIGxpbmUsIGFuZCBhcHBlbmRzIHRyYWlsaW5nICctJyBkdXJpbmcKLS0gICMgc3Vic3RpdHV0aW9uIHNvIHRoYXQgJExJTkVOTyBpcyBub3QgYSBzcGVjaWFsIGNhc2UgYXQgbGluZSBlbmQuCi0tICAjIChSYWphIFIgSGFyaW5hdGggc3VnZ2VzdGVkIHNlZCAnPScsIGFuZCBQYXVsIEVnZ2VydCB3cm90ZSB0aGUKLS0gICMgc2Vjb25kICdzZWQnIHNjcmlwdC4gIEJsYW1lIExlZSBFLiBNY01haG9uIGZvciBzZWQncyBzeW50YXguICA6LSkKLS0gIHNlZCAnPScgPCRhc19teXNlbGYgfAotLSAgICBzZWQgJwotLSAgICAgIE4KLS0gICAgICBzLCQsLSwKLS0gICAgICA6IGxvb3AKLS0gICAgICBzLF5cKFsnJGFzX2NyX2RpZ2l0cyddKlwpXCguKlwpWyRdTElORU5PXChbXickYXNfY3JfYWxudW0nX11cKSxcMVwyXDFcMywKLS0gICAgICB0IGxvb3AKLS0gICAgICBzLC0kLCwKLS0gICAgICBzLF5bJyRhc19jcl9kaWdpdHMnXSpcbiwsCi0tICAgICcgPiRhc19tZS5saW5lbm8gJiYKLS0gIGNobW9kICt4ICRhc19tZS5saW5lbm8gfHwKLS0gICAgeyBlY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgY3JlYXRlICRhc19tZS5saW5lbm87IHJlcnVuIHdpdGggYSBQT1NJWCBzaGVsbCIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tCi0tICAjIERvbid0IHRyeSB0byBleGVjIGFzIGl0IGNoYW5nZXMgJFswXSwgY2F1c2luZyBhbGwgc29ydCBvZiBwcm9ibGVtcwotLSAgIyAodGhlIGRpcm5hbWUgb2YgJFswXSBpcyBub3QgdGhlIHBsYWNlIHdoZXJlIHdlIG1pZ2h0IGZpbmQgdGhlCi0tICAjIG9yaWdpbmFsIGFuZCBzbyBvbi4gIEF1dG9jb25mIGlzIGVzcGVjaWFsbHkgc2Vuc2libGUgdG8gdGhpcykuCi0tICAuIC4vJGFzX21lLmxpbmVubwotLSAgIyBFeGl0IHN0YXR1cyBpcyB0aGF0IG9mIHRoZSBsYXN0IGNvbW1hbmQuCi0tICBleGl0Ci0tfQotLQotLQotLWNhc2UgYGVjaG8gInRlc3RpbmdcYyI7IGVjaG8gMSwyLDNgLGBlY2hvIC1uIHRlc3Rpbmc7IGVjaG8gMSwyLDNgIGluCi0tICAqYyosLW4qKSBFQ0hPX049IEVDSE9fQz0nCi0tJyBFQ0hPX1Q9JwknIDs7Ci0tICAqYyosKiAgKSBFQ0hPX049LW4gRUNIT19DPSBFQ0hPX1Q9IDs7Ci0tICAqKSAgICAgICBFQ0hPX049IEVDSE9fQz0nXGMnIEVDSE9fVD0gOzsKLS1lc2FjCi0tCi0taWYgZXhwciBhIDogJ1woYVwpJyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLS0gIGFzX2V4cHI9ZXhwcgotLWVsc2UKLS0gIGFzX2V4cHI9ZmFsc2UKLS1maQotLQotLXJtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxlCi0tZWNobyA+Y29uZiQkLmZpbGUKLS1pZiBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4KLS0gICMgV2UgY291bGQganVzdCBjaGVjayBmb3IgREpHUFA7IGJ1dCB0aGlzIHRlc3QgYSkgd29ya3MgYikgaXMgbW9yZSBnZW5lcmljCi0tICAjIGFuZCBjKSB3aWxsIHJlbWFpbiB2YWxpZCBvbmNlIERKR1BQIHN1cHBvcnRzIHN5bWxpbmtzIChESkdQUCAyLjA0KS4KLS0gIGlmIHRlc3QgLWYgY29uZiQkLmV4ZTsgdGhlbgotLSAgICAjIERvbid0IHVzZSBsbiBhdCBhbGw7IHdlIGRvbid0IGhhdmUgYW55IGxpbmtzCi0tICAgIGFzX2xuX3M9J2NwIC1wJwotLSAgZWxzZQotLSAgICBhc19sbl9zPSdsbiAtcycKLS0gIGZpCi0tZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4KLS0gIGFzX2xuX3M9bG4KLS1lbHNlCi0tICBhc19sbl9zPSdjcCAtcCcKLS1maQotLXJtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxlCi0tCi0taWYgbWtkaXIgLXAgLiAyPi9kZXYvbnVsbDsgdGhlbgotLSAgYXNfbWtkaXJfcD06Ci0tZWxzZQotLSAgYXNfbWtkaXJfcD1mYWxzZQotLWZpCi0tCi0tYXNfZXhlY3V0YWJsZV9wPSJ0ZXN0IC1mIgotLQotLSMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCBDUFAgbmFtZS4KLS1hc190cl9jcHA9InNlZCB5JSokYXNfY3JfbGV0dGVycyVQJGFzX2NyX0xFVFRFUlMlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWciCi0tCi0tIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIHZhcmlhYmxlIG5hbWUuCi0tYXNfdHJfc2g9InNlZCB5JSorJXBwJTtzJVteXyRhc19jcl9hbG51bV0lXyVnIgotLQotLQotLSMgSUZTCi0tIyBXZSBuZWVkIHNwYWNlLCB0YWIgYW5kIG5ldyBsaW5lLCBpbiBwcmVjaXNlbHkgdGhhdCBvcmRlci4KLS1hc19ubD0nCi0tJwotLUlGUz0iIAkkYXNfbmwiCi0tCi0tIyBDRFBBVEguCi0tJGFzX3Vuc2V0IENEUEFUSAotLQotLQotLSMgTmFtZSBvZiB0aGUgaG9zdC4KLS0jIGhvc3RuYW1lIG9uIHNvbWUgc3lzdGVtcyAoU1ZSMy4yLCBMaW51eCkgcmV0dXJucyBhIGJvZ3VzIGV4aXQgc3RhdHVzLAotLSMgc28gdW5hbWUgZ2V0cyBydW4gdG9vLgotLWFjX2hvc3RuYW1lPWAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYAotLQotLWV4ZWMgNj4mMQotLQotLSMKLS0jIEluaXRpYWxpemF0aW9ucy4KLS0jCi0rIyBEZWZhdWx0czoKLSthY19oZWxwPQotIGFjX2RlZmF1bHRfcHJlZml4PS91c3IvbG9jYWwKLS1hY19jb25maWdfbGlib2JqX2Rpcj0uCi0tY3Jvc3NfY29tcGlsaW5nPW5vCi0tc3ViZGlycz0KLS1NRkxBR1M9Ci0tTUFLRUZMQUdTPQotLVNIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9Ci0rIyBBbnkgYWRkaXRpb25zIGZyb20gY29uZmlndXJlLmluOgotK2FjX2hlbHA9IiRhY19oZWxwCi0rICAtLWRpc2FibGUtc2hhcmVkICAgICB3aXRob3V0IHNoYXJlZCBsaWJyYXJ5IHN1cHBvcnQiCi0rYWNfaGVscD0iJGFjX2hlbHAKLSsgIC0tZGlzYWJsZS1zb2NrZXRzICAgICB3aXRob3V0IHNvY2tldCBzdXBwb3J0IgotK2FjX2hlbHA9IiRhY19oZWxwCi0rICAtLXdpdGgtYXVkaW8gICAgICAgICAgd2l0aCBzcGVjaWZpYyBhdWRpbyBzdXBwb3J0IChub25lIGxpbnV4IGZyZWVic2QgZXRjKSAiCi0rYWNfaGVscD0iJGFjX2hlbHAKLSsgIC0td2l0aC1sYW5nICAgICAgICAgICB3aXRoIGxhbmd1YWdlICIKLSthY19oZWxwPSIkYWNfaGVscAotKyAgLS13aXRoLXZveCAgICAgICAgICAgIHdpdGggdm94ICIKLSthY19oZWxwPSIkYWNfaGVscAotKyAgLS13aXRoLWxleCAgICAgICAgICAgIHdpdGggbGV4aWNvbiAiCi0gCi0tIyBNYXhpbXVtIG51bWJlciBvZiBsaW5lcyB0byBwdXQgaW4gYSBzaGVsbCBoZXJlIGRvY3VtZW50LgotLSMgVGhpcyB2YXJpYWJsZSBzZWVtcyBvYnNvbGV0ZS4gIEl0IHNob3VsZCBwcm9iYWJseSBiZSByZW1vdmVkLCBhbmQKLS0jIG9ubHkgYWNfbWF4X3NlZF9saW5lcyBzaG91bGQgYmUgdXNlZC4KLS06ICR7YWNfbWF4X2hlcmVfbGluZXM9Mzh9Ci0tCi0tIyBJZGVudGl0eSBvZiB0aGlzIHBhY2thZ2UuCi0tUEFDS0FHRV9OQU1FPQotLVBBQ0tBR0VfVEFSTkFNRT0KLS1QQUNLQUdFX1ZFUlNJT049Ci0tUEFDS0FHRV9TVFJJTkc9Ci0tUEFDS0FHRV9CVUdSRVBPUlQ9Ci0tCi0tYWNfdW5pcXVlX2ZpbGU9ImluY2x1ZGUvZmxpdGUuaCIKLS0jIEZhY3RvcmluZyBkZWZhdWx0IGhlYWRlcnMgZm9yIG1vc3QgdGVzdHMuCi0tYWNfaW5jbHVkZXNfZGVmYXVsdD0iXAotLSNpbmNsdWRlIDxzdGRpby5oPgotLSNpZiBIQVZFX1NZU19UWVBFU19ICi0tIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0jZW5kaWYKLS0jaWYgSEFWRV9TWVNfU1RBVF9ICi0tIyBpbmNsdWRlIDxzeXMvc3RhdC5oPgotLSNlbmRpZgotLSNpZiBTVERDX0hFQURFUlMKLS0jIGluY2x1ZGUgPHN0ZGxpYi5oPgotLSMgaW5jbHVkZSA8c3RkZGVmLmg+Ci0tI2Vsc2UKLS0jIGlmIEhBVkVfU1RETElCX0gKLS0jICBpbmNsdWRlIDxzdGRsaWIuaD4KLS0jIGVuZGlmCi0tI2VuZGlmCi0tI2lmIEhBVkVfU1RSSU5HX0gKLS0jIGlmICFTVERDX0hFQURFUlMgJiYgSEFWRV9NRU1PUllfSAotLSMgIGluY2x1ZGUgPG1lbW9yeS5oPgotLSMgZW5kaWYKLS0jIGluY2x1ZGUgPHN0cmluZy5oPgotLSNlbmRpZgotLSNpZiBIQVZFX1NUUklOR1NfSAotLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgotLSNlbmRpZgotLSNpZiBIQVZFX0lOVFRZUEVTX0gKLS0jIGluY2x1ZGUgPGludHR5cGVzLmg+Ci0tI2Vsc2UKLS0jIGlmIEhBVkVfU1RESU5UX0gKLS0jICBpbmNsdWRlIDxzdGRpbnQuaD4KLS0jIGVuZGlmCi0tI2VuZGlmCi0tI2lmIEhBVkVfVU5JU1REX0gKLS0jIGluY2x1ZGUgPHVuaXN0ZC5oPgotLSNlbmRpZiIKLS0KLS1hY19zdWJzdF92YXJzPSdTSEVMTCBQQVRIX1NFUEFSQVRPUiBQQUNLQUdFX05BTUUgUEFDS0FHRV9UQVJOQU1FIFBBQ0tBR0VfVkVSU0lPTiBQQUNLQUdFX1NUUklORyBQQUNLQUdFX0JVR1JFUE9SVCBleGVjX3ByZWZpeCBwcmVmaXggcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSBiaW5kaXIgc2JpbmRpciBsaWJleGVjZGlyIGRhdGFkaXIgc3lzY29uZmRpciBzaGFyZWRzdGF0ZWRpciBsb2NhbHN0YXRlZGlyIGxpYmRpciBpbmNsdWRlZGlyIG9sZGluY2x1ZGVkaXIgaW5mb2RpciBtYW5kaXIgYnVpbGRfYWxpYXMgaG9zdF9hbGlhcyB0YXJnZXRfYWxpYXMgREVGUyBFQ0hPX0MgRUNIT19OIEVDSE9fVCBMSUJTIGJ1aWxkIGJ1aWxkX2NwdSBidWlsZF92ZW5kb3IgYnVpbGRfb3MgaG9zdCBob3N0X2NwdSBob3N0X3ZlbmRvciBob3N0X29zIHRhcmdldCB0YXJnZXRfY3B1IHRhcmdldF92ZW5kb3IgdGFyZ2V0X29zIENDIENGTEFHUyBMREZMQUdTIENQUEZMQUdTIGFjX2N0X0NDIEVYRUVYVCBPQkpFWFQgUkFOTElCIGFjX2N0X1JBTkxJQiBJTlNUQUxMX1BST0dSQU0gSU5TVEFMTF9TQ1JJUFQgSU5TVEFMTF9EQVRBIEFSIGFjX2N0X0FSIFRBUkdFVF9PUyBUQVJHRVRfQ1BVIE02OEtDQyBMRVhERUZTIFZPWERFRlMgSE9TVF9PUyBIT1NUX0NQVSBPVEhFUkxJQlMgU0hGTEFHUyBNTUFQVFlQRSBTVERJT1RZUEUgQ1BQIEVHUkVQIEFVRElPRFJJVkVSIEFVRElPREVGUyBBVURJT0xJQlMgRkxfTEFORyBGTF9WT1ggRkxfTEVYIExJQk9CSlMgTFRMSUJPQkpTJwotLWFjX3N1YnN0X2ZpbGVzPScnCi0tCi0gIyBJbml0aWFsaXplIHNvbWUgdmFyaWFibGVzIHNldCBieSBvcHRpb25zLgotLWFjX2luaXRfaGVscD0KLS1hY19pbml0X3ZlcnNpb249ZmFsc2UKLSAjIFRoZSB2YXJpYWJsZXMgaGF2ZSB0aGUgc2FtZSBuYW1lcyBhcyB0aGUgb3B0aW9ucywgd2l0aAotICMgZGFzaGVzIGNoYW5nZWQgdG8gdW5kZXJsaW5lcy4KLS1jYWNoZV9maWxlPS9kZXYvbnVsbAotK2J1aWxkPU5PTkUKLStjYWNoZV9maWxlPS4vY29uZmlnLmNhY2hlCi0gZXhlY19wcmVmaXg9Tk9ORQotK2hvc3Q9Tk9ORQotIG5vX2NyZWF0ZT0KLStub25vcHQ9Tk9ORQotIG5vX3JlY3Vyc2lvbj0KLSBwcmVmaXg9Tk9ORQotIHByb2dyYW1fcHJlZml4PU5PTkUKLUBAIC0zMjcsMTUgKzQxLDEwIEBACi0gc2lsZW50PQotIHNpdGU9Ci0gc3JjZGlyPQotK3RhcmdldD1OT05FCi0gdmVyYm9zZT0KLSB4X2luY2x1ZGVzPU5PTkUKLSB4X2xpYnJhcmllcz1OT05FCi0tCi0tIyBJbnN0YWxsYXRpb24gZGlyZWN0b3J5IG9wdGlvbnMuCi0tIyBUaGVzZSBhcmUgbGVmdCB1bmV4cGFuZGVkIHNvIHVzZXJzIGNhbiAibWFrZSBpbnN0YWxsIGV4ZWNfcHJlZml4PS9mb28iCi0tIyBhbmQgYWxsIHRoZSB2YXJpYWJsZXMgdGhhdCBhcmUgc3VwcG9zZWQgdG8gYmUgYmFzZWQgb24gZXhlY19wcmVmaXgKLS0jIGJ5IGRlZmF1bHQgd2lsbCBhY3R1YWxseSBjaGFuZ2UuCi0tIyBVc2UgYnJhY2VzIGluc3RlYWQgb2YgcGFyZW5zIGJlY2F1c2Ugc2gsIHBlcmwsIGV0Yy4gYWxzbyBhY2NlcHQgdGhlbS4KLSBiaW5kaXI9JyR7ZXhlY19wcmVmaXh9L2JpbicKLSBzYmluZGlyPScke2V4ZWNfcHJlZml4fS9zYmluJwotIGxpYmV4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMnCi1AQCAtMzQ5LDkgKzU4LDE3IEBACi0gaW5mb2Rpcj0nJHtwcmVmaXh9L2luZm8nCi0gbWFuZGlyPScke3ByZWZpeH0vbWFuJwotIAotKyMgSW5pdGlhbGl6ZSBzb21lIG90aGVyIHZhcmlhYmxlcy4KLStzdWJkaXJzPQotK01GTEFHUz0gTUFLRUZMQUdTPQotK1NIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9Ci0rIyBNYXhpbXVtIG51bWJlciBvZiBsaW5lcyB0byBwdXQgaW4gYSBzaGVsbCBoZXJlIGRvY3VtZW50LgotK2FjX21heF9oZXJlX2xpbmVzPTEyCi0rCi0gYWNfcHJldj0KLSBmb3IgYWNfb3B0aW9uCi0gZG8KLSsKLSAgICMgSWYgdGhlIHByZXZpb3VzIG9wdGlvbiBuZWVkcyBhbiBhcmd1bWVudCwgYXNzaWduIGl0LgotICAgaWYgdGVzdCAtbiAiJGFjX3ByZXYiOyB0aGVuCi0gICAgIGV2YWwgIiRhY19wcmV2PVwkYWNfb3B0aW9uIgotQEAgLTM1OSw1OSArNzYsNTkgQEAKLSAgICAgY29udGludWUKLSAgIGZpCi0gCi0tICBhY19vcHRhcmc9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4W149XSo9XCguKlwpJ2AKLSsgIGNhc2UgIiRhY19vcHRpb24iIGluCi0rICAtKj0qKSBhY19vcHRhcmc9YGVjaG8gIiRhY19vcHRpb24iIHwgc2VkICdzL1stX2EtekEtWjAtOV0qPS8vJ2AgOzsKLSsgICopIGFjX29wdGFyZz0gOzsKLSsgIGVzYWMKLSAKLSAgICMgQWNjZXB0IHRoZSBpbXBvcnRhbnQgQ3lnbnVzIGNvbmZpZ3VyZSBvcHRpb25zLCBzbyB3ZSBjYW4gZGlhZ25vc2UgdHlwb3MuCi0gCi0tICBjYXNlICRhY19vcHRpb24gaW4KLSsgIGNhc2UgIiRhY19vcHRpb24iIGluCi0gCi0gICAtYmluZGlyIHwgLS1iaW5kaXIgfCAtLWJpbmRpIHwgLS1iaW5kIHwgLS1iaW4gfCAtLWJpKQotICAgICBhY19wcmV2PWJpbmRpciA7OwotICAgLWJpbmRpcj0qIHwgLS1iaW5kaXI9KiB8IC0tYmluZGk9KiB8IC0tYmluZD0qIHwgLS1iaW49KiB8IC0tYmk9KikKLS0gICAgYmluZGlyPSRhY19vcHRhcmcgOzsKLSsgICAgYmluZGlyPSIkYWNfb3B0YXJnIiA7OwotIAotICAgLWJ1aWxkIHwgLS1idWlsZCB8IC0tYnVpbCB8IC0tYnVpIHwgLS1idSkKLS0gICAgYWNfcHJldj1idWlsZF9hbGlhcyA7OwotKyAgICBhY19wcmV2PWJ1aWxkIDs7Ci0gICAtYnVpbGQ9KiB8IC0tYnVpbGQ9KiB8IC0tYnVpbD0qIHwgLS1idWk9KiB8IC0tYnU9KikKLS0gICAgYnVpbGRfYWxpYXM9JGFjX29wdGFyZyA7OwotKyAgICBidWlsZD0iJGFjX29wdGFyZyIgOzsKLSAKLSAgIC1jYWNoZS1maWxlIHwgLS1jYWNoZS1maWxlIHwgLS1jYWNoZS1maWwgfCAtLWNhY2hlLWZpIFwKLSAgIHwgLS1jYWNoZS1mIHwgLS1jYWNoZS0gfCAtLWNhY2hlIHwgLS1jYWNoIHwgLS1jYWMgfCAtLWNhIHwgLS1jKQotICAgICBhY19wcmV2PWNhY2hlX2ZpbGUgOzsKLSAgIC1jYWNoZS1maWxlPSogfCAtLWNhY2hlLWZpbGU9KiB8IC0tY2FjaGUtZmlsPSogfCAtLWNhY2hlLWZpPSogXAotICAgfCAtLWNhY2hlLWY9KiB8IC0tY2FjaGUtPSogfCAtLWNhY2hlPSogfCAtLWNhY2g9KiB8IC0tY2FjPSogfCAtLWNhPSogfCAtLWM9KikKLS0gICAgY2FjaGVfZmlsZT0kYWNfb3B0YXJnIDs7Ci0rICAgIGNhY2hlX2ZpbGU9IiRhY19vcHRhcmciIDs7Ci0gCi0tICAtLWNvbmZpZy1jYWNoZSB8IC1DKQotLSAgICBjYWNoZV9maWxlPWNvbmZpZy5jYWNoZSA7OwotLQotICAgLWRhdGFkaXIgfCAtLWRhdGFkaXIgfCAtLWRhdGFkaSB8IC0tZGF0YWQgfCAtLWRhdGEgfCAtLWRhdCB8IC0tZGEpCi0gICAgIGFjX3ByZXY9ZGF0YWRpciA7OwotICAgLWRhdGFkaXI9KiB8IC0tZGF0YWRpcj0qIHwgLS1kYXRhZGk9KiB8IC0tZGF0YWQ9KiB8IC0tZGF0YT0qIHwgLS1kYXQ9KiBcCi0gICB8IC0tZGE9KikKLS0gICAgZGF0YWRpcj0kYWNfb3B0YXJnIDs7Ci0rICAgIGRhdGFkaXI9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtZGlzYWJsZS0qIHwgLS1kaXNhYmxlLSopCi0tICAgIGFjX2ZlYXR1cmU9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSpkaXNhYmxlLVwoLipcKSdgCi0rICAgIGFjX2ZlYXR1cmU9YGVjaG8gJGFjX29wdGlvbnxzZWQgLWUgJ3MvLSpkaXNhYmxlLS8vJ2AKLSAgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgotLSAgICBleHByICJ4JGFjX2ZlYXR1cmUiIDogIi4qW14tXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKLS0gICAgICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGludmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfZmVhdHVyZSIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tICAgIGFjX2ZlYXR1cmU9YGVjaG8gJGFjX2ZlYXR1cmUgfCBzZWQgJ3MvLS9fL2cnYAotLSAgICBldmFsICJlbmFibGVfJGFjX2ZlYXR1cmU9bm8iIDs7Ci0rICAgIGlmIHRlc3QgLW4gImBlY2hvICRhY19mZWF0dXJlfCBzZWQgJ3MvWy1hLXpBLVowLTlfXS8vZydgIjsgdGhlbgotKyAgICAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogJGFjX2ZlYXR1cmU6IGludmFsaWQgZmVhdHVyZSBuYW1lIiAxPiYyOyBleGl0IDE7IH0KLSsgICAgZmkKLSsgICAgYWNfZmVhdHVyZT1gZWNobyAkYWNfZmVhdHVyZXwgc2VkICdzLy0vXy9nJ2AKLSsgICAgZXZhbCAiZW5hYmxlXyR7YWNfZmVhdHVyZX09bm8iIDs7Ci0gCi0gICAtZW5hYmxlLSogfCAtLWVuYWJsZS0qKQotLSAgICBhY19mZWF0dXJlPWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qZW5hYmxlLVwoW149XSpcKSdgCi0rICAgIGFjX2ZlYXR1cmU9YGVjaG8gJGFjX29wdGlvbnxzZWQgLWUgJ3MvLSplbmFibGUtLy8nIC1lICdzLz0uKi8vJ2AKLSAgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgotLSAgICBleHByICJ4JGFjX2ZlYXR1cmUiIDogIi4qW14tXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKLS0gICAgICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGludmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfZmVhdHVyZSIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tICAgIGFjX2ZlYXR1cmU9YGVjaG8gJGFjX2ZlYXR1cmUgfCBzZWQgJ3MvLS9fL2cnYAotLSAgICBjYXNlICRhY19vcHRpb24gaW4KLS0gICAgICAqPSopIGFjX29wdGFyZz1gZWNobyAiJGFjX29wdGFyZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImA7OwotKyAgICBpZiB0ZXN0IC1uICJgZWNobyAkYWNfZmVhdHVyZXwgc2VkICdzL1stX2EtekEtWjAtOV0vL2cnYCI7IHRoZW4KLSsgICAgICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6ICRhY19mZWF0dXJlOiBpbnZhbGlkIGZlYXR1cmUgbmFtZSIgMT4mMjsgZXhpdCAxOyB9Ci0rICAgIGZpCi0rICAgIGFjX2ZlYXR1cmU9YGVjaG8gJGFjX2ZlYXR1cmV8IHNlZCAncy8tL18vZydgCi0rICAgIGNhc2UgIiRhY19vcHRpb24iIGluCi0rICAgICAgKj0qKSA7OwotICAgICAgICopIGFjX29wdGFyZz15ZXMgOzsKLSAgICAgZXNhYwotLSAgICBldmFsICJlbmFibGVfJGFjX2ZlYXR1cmU9JyRhY19vcHRhcmcnIiA7OwotKyAgICBldmFsICJlbmFibGVfJHthY19mZWF0dXJlfT0nJGFjX29wdGFyZyciIDs7Ci0gCi0gICAtZXhlYy1wcmVmaXggfCAtLWV4ZWNfcHJlZml4IHwgLS1leGVjLXByZWZpeCB8IC0tZXhlYy1wcmVmaSBcCi0gICB8IC0tZXhlYy1wcmVmIHwgLS1leGVjLXByZSB8IC0tZXhlYy1wciB8IC0tZXhlYy1wIHwgLS1leGVjLSBcCi1AQCAtNDIwLDQ3ICsxMzcsOTUgQEAKLSAgIC1leGVjLXByZWZpeD0qIHwgLS1leGVjX3ByZWZpeD0qIHwgLS1leGVjLXByZWZpeD0qIHwgLS1leGVjLXByZWZpPSogXAotICAgfCAtLWV4ZWMtcHJlZj0qIHwgLS1leGVjLXByZT0qIHwgLS1leGVjLXByPSogfCAtLWV4ZWMtcD0qIHwgLS1leGVjLT0qIFwKLSAgIHwgLS1leGVjPSogfCAtLWV4ZT0qIHwgLS1leD0qKQotLSAgICBleGVjX3ByZWZpeD0kYWNfb3B0YXJnIDs7Ci0rICAgIGV4ZWNfcHJlZml4PSIkYWNfb3B0YXJnIiA7OwotIAotICAgLWdhcyB8IC0tZ2FzIHwgLS1nYSB8IC0tZykKLSAgICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0aC1nYXMuCi0gICAgIHdpdGhfZ2FzPXllcyA7OwotIAotLSAgLWhlbHAgfCAtLWhlbHAgfCAtLWhlbCB8IC0taGUgfCAtaCkKLS0gICAgYWNfaW5pdF9oZWxwPWxvbmcgOzsKLS0gIC1oZWxwPXIqIHwgLS1oZWxwPXIqIHwgLS1oZWw9ciogfCAtLWhlPXIqIHwgLWhyKikKLS0gICAgYWNfaW5pdF9oZWxwPXJlY3Vyc2l2ZSA7OwotLSAgLWhlbHA9cyogfCAtLWhlbHA9cyogfCAtLWhlbD1zKiB8IC0taGU9cyogfCAtaHMqKQotLSAgICBhY19pbml0X2hlbHA9c2hvcnQgOzsKLSsgIC1oZWxwIHwgLS1oZWxwIHwgLS1oZWwgfCAtLWhlKQotKyAgICAjIE9taXQgc29tZSBpbnRlcm5hbCBvciBvYnNvbGV0ZSBvcHRpb25zIHRvIG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBvc2luZy4KLSsgICAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxvbmcgdG8gYmUgYSBzdHJpbmcgaW4gdGhlIEEvVVggMy4xIHNoLgotKyAgICBjYXQgPDwgRU9GCi0rVXNhZ2U6IGNvbmZpZ3VyZSBbb3B0aW9uc10gW2hvc3RdCi0rT3B0aW9uczogW2RlZmF1bHRzIGluIGJyYWNrZXRzIGFmdGVyIGRlc2NyaXB0aW9uc10KLStDb25maWd1cmF0aW9uOgotKyAgLS1jYWNoZS1maWxlPUZJTEUgICAgICAgY2FjaGUgdGVzdCByZXN1bHRzIGluIEZJTEUKLSsgIC0taGVscCAgICAgICAgICAgICAgICAgIHByaW50IHRoaXMgbWVzc2FnZQotKyAgLS1uby1jcmVhdGUgICAgICAgICAgICAgZG8gbm90IGNyZWF0ZSBvdXRwdXQgZmlsZXMKLSsgIC0tcXVpZXQsIC0tc2lsZW50ICAgICAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5nLi4uJyBtZXNzYWdlcwotKyAgLS12ZXJzaW9uICAgICAgICAgICAgICAgcHJpbnQgdGhlIHZlcnNpb24gb2YgYXV0b2NvbmYgdGhhdCBjcmVhdGVkIGNvbmZpZ3VyZQotK0RpcmVjdG9yeSBhbmQgZmlsZSBuYW1lczoKLSsgIC0tcHJlZml4PVBSRUZJWCAgICAgICAgIGluc3RhbGwgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGZpbGVzIGluIFBSRUZJWAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyRhY19kZWZhdWx0X3ByZWZpeF0KLSsgIC0tZXhlYy1wcmVmaXg9RVBSRUZJWCAgIGluc3RhbGwgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBmaWxlcyBpbiBFUFJFRklYCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBbc2FtZSBhcyBwcmVmaXhdCi0rICAtLWJpbmRpcj1ESVIgICAgICAgICAgICB1c2VyIGV4ZWN1dGFibGVzIGluIERJUiBbRVBSRUZJWC9iaW5dCi0rICAtLXNiaW5kaXI9RElSICAgICAgICAgICBzeXN0ZW0gYWRtaW4gZXhlY3V0YWJsZXMgaW4gRElSIFtFUFJFRklYL3NiaW5dCi0rICAtLWxpYmV4ZWNkaXI9RElSICAgICAgICBwcm9ncmFtIGV4ZWN1dGFibGVzIGluIERJUiBbRVBSRUZJWC9saWJleGVjXQotKyAgLS1kYXRhZGlyPURJUiAgICAgICAgICAgcmVhZC1vbmx5IGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIGluIERJUgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgW1BSRUZJWC9zaGFyZV0KLSsgIC0tc3lzY29uZmRpcj1ESVIgICAgICAgIHJlYWQtb25seSBzaW5nbGUtbWFjaGluZSBkYXRhIGluIERJUiBbUFJFRklYL2V0Y10KLSsgIC0tc2hhcmVkc3RhdGVkaXI9RElSICAgIG1vZGlmaWFibGUgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEgaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBbUFJFRklYL2NvbV0KLSsgIC0tbG9jYWxzdGF0ZWRpcj1ESVIgICAgIG1vZGlmaWFibGUgc2luZ2xlLW1hY2hpbmUgZGF0YSBpbiBESVIgW1BSRUZJWC92YXJdCi0rICAtLWxpYmRpcj1ESVIgICAgICAgICAgICBvYmplY3QgY29kZSBsaWJyYXJpZXMgaW4gRElSIFtFUFJFRklYL2xpYl0KLSsgIC0taW5jbHVkZWRpcj1ESVIgICAgICAgIEMgaGVhZGVyIGZpbGVzIGluIERJUiBbUFJFRklYL2luY2x1ZGVdCi0rICAtLW9sZGluY2x1ZGVkaXI9RElSICAgICBDIGhlYWRlciBmaWxlcyBmb3Igbm9uLWdjYyBpbiBESVIgWy91c3IvaW5jbHVkZV0KLSsgIC0taW5mb2Rpcj1ESVIgICAgICAgICAgIGluZm8gZG9jdW1lbnRhdGlvbiBpbiBESVIgW1BSRUZJWC9pbmZvXQotKyAgLS1tYW5kaXI9RElSICAgICAgICAgICAgbWFuIGRvY3VtZW50YXRpb24gaW4gRElSIFtQUkVGSVgvbWFuXQotKyAgLS1zcmNkaXI9RElSICAgICAgICAgICAgZmluZCB0aGUgc291cmNlcyBpbiBESVIgW2NvbmZpZ3VyZSBkaXIgb3IgLi5dCi0rICAtLXByb2dyYW0tcHJlZml4PVBSRUZJWCBwcmVwZW5kIFBSRUZJWCB0byBpbnN0YWxsZWQgcHJvZ3JhbSBuYW1lcwotKyAgLS1wcm9ncmFtLXN1ZmZpeD1TVUZGSVggYXBwZW5kIFNVRkZJWCB0byBpbnN0YWxsZWQgcHJvZ3JhbSBuYW1lcwotKyAgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lPVBST0dSQU0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1biBzZWQgUFJPR1JBTSBvbiBpbnN0YWxsZWQgcHJvZ3JhbSBuYW1lcwotK0VPRgotKyAgICBjYXQgPDwgRU9GCi0rSG9zdCB0eXBlOgotKyAgLS1idWlsZD1CVUlMRCAgICAgICAgICAgY29uZmlndXJlIGZvciBidWlsZGluZyBvbiBCVUlMRCBbQlVJTEQ9SE9TVF0KLSsgIC0taG9zdD1IT1NUICAgICAgICAgICAgIGNvbmZpZ3VyZSBmb3IgSE9TVCBbZ3Vlc3NlZF0KLSsgIC0tdGFyZ2V0PVRBUkdFVCAgICAgICAgIGNvbmZpZ3VyZSBmb3IgVEFSR0VUIFtUQVJHRVQ9SE9TVF0KLStGZWF0dXJlcyBhbmQgcGFja2FnZXM6Ci0rICAtLWRpc2FibGUtRkVBVFVSRSAgICAgICBkbyBub3QgaW5jbHVkZSBGRUFUVVJFIChzYW1lIGFzIC0tZW5hYmxlLUZFQVRVUkU9bm8pCi0rICAtLWVuYWJsZS1GRUFUVVJFWz1BUkddICBpbmNsdWRlIEZFQVRVUkUgW0FSRz15ZXNdCi0rICAtLXdpdGgtUEFDS0FHRVs9QVJHXSAgICB1c2UgUEFDS0FHRSBbQVJHPXllc10KLSsgIC0td2l0aG91dC1QQUNLQUdFICAgICAgIGRvIG5vdCB1c2UgUEFDS0FHRSAoc2FtZSBhcyAtLXdpdGgtUEFDS0FHRT1ubykKLSsgIC0teC1pbmNsdWRlcz1ESVIgICAgICAgIFggaW5jbHVkZSBmaWxlcyBhcmUgaW4gRElSCi0rICAtLXgtbGlicmFyaWVzPURJUiAgICAgICBYIGxpYnJhcnkgZmlsZXMgYXJlIGluIERJUgotK0VPRgotKyAgICBpZiB0ZXN0IC1uICIkYWNfaGVscCI7IHRoZW4KLSsgICAgICBlY2hvICItLWVuYWJsZSBhbmQgLS13aXRoIG9wdGlvbnMgcmVjb2duaXplZDokYWNfaGVscCIKLSsgICAgZmkKLSsgICAgZXhpdCAwIDs7Ci0gCi0gICAtaG9zdCB8IC0taG9zdCB8IC0taG9zIHwgLS1obykKLS0gICAgYWNfcHJldj1ob3N0X2FsaWFzIDs7Ci0rICAgIGFjX3ByZXY9aG9zdCA7OwotICAgLWhvc3Q9KiB8IC0taG9zdD0qIHwgLS1ob3M9KiB8IC0taG89KikKLS0gICAgaG9zdF9hbGlhcz0kYWNfb3B0YXJnIDs7Ci0rICAgIGhvc3Q9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtaW5jbHVkZWRpciB8IC0taW5jbHVkZWRpciB8IC0taW5jbHVkZWRpIHwgLS1pbmNsdWRlZCB8IC0taW5jbHVkZSBcCi0gICB8IC0taW5jbHVkIHwgLS1pbmNsdSB8IC0taW5jbCB8IC0taW5jKQotICAgICBhY19wcmV2PWluY2x1ZGVkaXIgOzsKLSAgIC1pbmNsdWRlZGlyPSogfCAtLWluY2x1ZGVkaXI9KiB8IC0taW5jbHVkZWRpPSogfCAtLWluY2x1ZGVkPSogfCAtLWluY2x1ZGU9KiBcCi0gICB8IC0taW5jbHVkPSogfCAtLWluY2x1PSogfCAtLWluY2w9KiB8IC0taW5jPSopCi0tICAgIGluY2x1ZGVkaXI9JGFjX29wdGFyZyA7OwotKyAgICBpbmNsdWRlZGlyPSIkYWNfb3B0YXJnIiA7OwotIAotICAgLWluZm9kaXIgfCAtLWluZm9kaXIgfCAtLWluZm9kaSB8IC0taW5mb2QgfCAtLWluZm8gfCAtLWluZikKLSAgICAgYWNfcHJldj1pbmZvZGlyIDs7Ci0gICAtaW5mb2Rpcj0qIHwgLS1pbmZvZGlyPSogfCAtLWluZm9kaT0qIHwgLS1pbmZvZD0qIHwgLS1pbmZvPSogfCAtLWluZj0qKQotLSAgICBpbmZvZGlyPSRhY19vcHRhcmcgOzsKLSsgICAgaW5mb2Rpcj0iJGFjX29wdGFyZyIgOzsKLSAKLSAgIC1saWJkaXIgfCAtLWxpYmRpciB8IC0tbGliZGkgfCAtLWxpYmQpCi0gICAgIGFjX3ByZXY9bGliZGlyIDs7Ci0gICAtbGliZGlyPSogfCAtLWxpYmRpcj0qIHwgLS1saWJkaT0qIHwgLS1saWJkPSopCi0tICAgIGxpYmRpcj0kYWNfb3B0YXJnIDs7Ci0rICAgIGxpYmRpcj0iJGFjX29wdGFyZyIgOzsKLSAKLSAgIC1saWJleGVjZGlyIHwgLS1saWJleGVjZGlyIHwgLS1saWJleGVjZGkgfCAtLWxpYmV4ZWNkIHwgLS1saWJleGVjIFwKLSAgIHwgLS1saWJleGUgfCAtLWxpYmV4IHwgLS1saWJlKQotICAgICBhY19wcmV2PWxpYmV4ZWNkaXIgOzsKLSAgIC1saWJleGVjZGlyPSogfCAtLWxpYmV4ZWNkaXI9KiB8IC0tbGliZXhlY2RpPSogfCAtLWxpYmV4ZWNkPSogfCAtLWxpYmV4ZWM9KiBcCi0gICB8IC0tbGliZXhlPSogfCAtLWxpYmV4PSogfCAtLWxpYmU9KikKLS0gICAgbGliZXhlY2Rpcj0kYWNfb3B0YXJnIDs7Ci0rICAgIGxpYmV4ZWNkaXI9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtbG9jYWxzdGF0ZWRpciB8IC0tbG9jYWxzdGF0ZWRpciB8IC0tbG9jYWxzdGF0ZWRpIHwgLS1sb2NhbHN0YXRlZCBcCi0gICB8IC0tbG9jYWxzdGF0ZSB8IC0tbG9jYWxzdGF0IHwgLS1sb2NhbHN0YSB8IC0tbG9jYWxzdCBcCi1AQCAtNDY5LDE5ICsyMzQsMTkgQEAKLSAgIC1sb2NhbHN0YXRlZGlyPSogfCAtLWxvY2Fsc3RhdGVkaXI9KiB8IC0tbG9jYWxzdGF0ZWRpPSogfCAtLWxvY2Fsc3RhdGVkPSogXAotICAgfCAtLWxvY2Fsc3RhdGU9KiB8IC0tbG9jYWxzdGF0PSogfCAtLWxvY2Fsc3RhPSogfCAtLWxvY2Fsc3Q9KiBcCi0gICB8IC0tbG9jYWxzPSogfCAtLWxvY2FsPSogfCAtLWxvY2E9KiB8IC0tbG9jPSogfCAtLWxvPSopCi0tICAgIGxvY2Fsc3RhdGVkaXI9JGFjX29wdGFyZyA7OwotKyAgICBsb2NhbHN0YXRlZGlyPSIkYWNfb3B0YXJnIiA7OwotIAotICAgLW1hbmRpciB8IC0tbWFuZGlyIHwgLS1tYW5kaSB8IC0tbWFuZCB8IC0tbWFuIHwgLS1tYSB8IC0tbSkKLSAgICAgYWNfcHJldj1tYW5kaXIgOzsKLSAgIC1tYW5kaXI9KiB8IC0tbWFuZGlyPSogfCAtLW1hbmRpPSogfCAtLW1hbmQ9KiB8IC0tbWFuPSogfCAtLW1hPSogfCAtLW09KikKLS0gICAgbWFuZGlyPSRhY19vcHRhcmcgOzsKLSsgICAgbWFuZGlyPSIkYWNfb3B0YXJnIiA7OwotIAotICAgLW5mcCB8IC0tbmZwIHwgLS1uZikKLSAgICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0aG91dC1mcC4KLSAgICAgd2l0aF9mcD1ubyA7OwotIAotICAgLW5vLWNyZWF0ZSB8IC0tbm8tY3JlYXRlIHwgLS1uby1jcmVhdCB8IC0tbm8tY3JlYSB8IC0tbm8tY3JlIFwKLS0gIHwgLS1uby1jciB8IC0tbm8tYyB8IC1uKQotKyAgfCAtLW5vLWNyIHwgLS1uby1jKQotICAgICBub19jcmVhdGU9eWVzIDs7Ci0gCi0gICAtbm8tcmVjdXJzaW9uIHwgLS1uby1yZWN1cnNpb24gfCAtLW5vLXJlY3Vyc2lvIHwgLS1uby1yZWN1cnNpIFwKLUBAIC00OTUsMjYgKzI2MCwyNiBAQAotICAgLW9sZGluY2x1ZGVkaXI9KiB8IC0tb2xkaW5jbHVkZWRpcj0qIHwgLS1vbGRpbmNsdWRlZGk9KiB8IC0tb2xkaW5jbHVkZWQ9KiBcCi0gICB8IC0tb2xkaW5jbHVkZT0qIHwgLS1vbGRpbmNsdWQ9KiB8IC0tb2xkaW5jbHU9KiB8IC0tb2xkaW5jbD0qIHwgLS1vbGRpbmM9KiBcCi0gICB8IC0tb2xkaW49KiB8IC0tb2xkaT0qIHwgLS1vbGQ9KiB8IC0tb2w9KiB8IC0tbz0qKQotLSAgICBvbGRpbmNsdWRlZGlyPSRhY19vcHRhcmcgOzsKLSsgICAgb2xkaW5jbHVkZWRpcj0iJGFjX29wdGFyZyIgOzsKLSAKLSAgIC1wcmVmaXggfCAtLXByZWZpeCB8IC0tcHJlZmkgfCAtLXByZWYgfCAtLXByZSB8IC0tcHIgfCAtLXApCi0gICAgIGFjX3ByZXY9cHJlZml4IDs7Ci0gICAtcHJlZml4PSogfCAtLXByZWZpeD0qIHwgLS1wcmVmaT0qIHwgLS1wcmVmPSogfCAtLXByZT0qIHwgLS1wcj0qIHwgLS1wPSopCi0tICAgIHByZWZpeD0kYWNfb3B0YXJnIDs7Ci0rICAgIHByZWZpeD0iJGFjX29wdGFyZyIgOzsKLSAKLSAgIC1wcm9ncmFtLXByZWZpeCB8IC0tcHJvZ3JhbS1wcmVmaXggfCAtLXByb2dyYW0tcHJlZmkgfCAtLXByb2dyYW0tcHJlZiBcCi0gICB8IC0tcHJvZ3JhbS1wcmUgfCAtLXByb2dyYW0tcHIgfCAtLXByb2dyYW0tcCkKLSAgICAgYWNfcHJldj1wcm9ncmFtX3ByZWZpeCA7OwotICAgLXByb2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZmk9KiBcCi0gICB8IC0tcHJvZ3JhbS1wcmVmPSogfCAtLXByb2dyYW0tcHJlPSogfCAtLXByb2dyYW0tcHI9KiB8IC0tcHJvZ3JhbS1wPSopCi0tICAgIHByb2dyYW1fcHJlZml4PSRhY19vcHRhcmcgOzsKLSsgICAgcHJvZ3JhbV9wcmVmaXg9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtcHJvZ3JhbS1zdWZmaXggfCAtLXByb2dyYW0tc3VmZml4IHwgLS1wcm9ncmFtLXN1ZmZpIHwgLS1wcm9ncmFtLXN1ZmYgXAotICAgfCAtLXByb2dyYW0tc3VmIHwgLS1wcm9ncmFtLXN1IHwgLS1wcm9ncmFtLXMpCi0gICAgIGFjX3ByZXY9cHJvZ3JhbV9zdWZmaXggOzsKLSAgIC1wcm9ncmFtLXN1ZmZpeD0qIHwgLS1wcm9ncmFtLXN1ZmZpeD0qIHwgLS1wcm9ncmFtLXN1ZmZpPSogXAotICAgfCAtLXByb2dyYW0tc3VmZj0qIHwgLS1wcm9ncmFtLXN1Zj0qIHwgLS1wcm9ncmFtLXN1PSogfCAtLXByb2dyYW0tcz0qKQotLSAgICBwcm9ncmFtX3N1ZmZpeD0kYWNfb3B0YXJnIDs7Ci0rICAgIHByb2dyYW1fc3VmZml4PSIkYWNfb3B0YXJnIiA7OwotIAotICAgLXByb2dyYW0tdHJhbnNmb3JtLW5hbWUgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbWUgXAotICAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbSB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmEgXAotQEAgLTUzMSw3ICsyOTYsNyBAQAotICAgfCAtLXByb2dyYW0tdHJhbnNmbz0qIHwgLS1wcm9ncmFtLXRyYW5zZj0qIFwKLSAgIHwgLS1wcm9ncmFtLXRyYW5zPSogfCAtLXByb2dyYW0tdHJhbj0qIFwKLSAgIHwgLS1wcm9nci10cmE9KiB8IC0tcHJvZ3JhbS10cj0qIHwgLS1wcm9ncmFtLXQ9KikKLS0gICAgcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT0kYWNfb3B0YXJnIDs7Ci0rICAgIHByb2dyYW1fdHJhbnNmb3JtX25hbWU9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtcSB8IC1xdWlldCB8IC0tcXVpZXQgfCAtLXF1aWUgfCAtLXF1aSB8IC0tcXUgfCAtLXEgXAotICAgfCAtc2lsZW50IHwgLS1zaWxlbnQgfCAtLXNpbGVuIHwgLS1zaWxlIHwgLS1zaWwpCi1AQCAtNTQxLDcgKzMwNiw3IEBACi0gICAgIGFjX3ByZXY9c2JpbmRpciA7OwotICAgLXNiaW5kaXI9KiB8IC0tc2JpbmRpcj0qIHwgLS1zYmluZGk9KiB8IC0tc2JpbmQ9KiB8IC0tc2Jpbj0qIFwKLSAgIHwgLS1zYmk9KiB8IC0tc2I9KikKLS0gICAgc2JpbmRpcj0kYWNfb3B0YXJnIDs7Ci0rICAgIHNiaW5kaXI9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtc2hhcmVkc3RhdGVkaXIgfCAtLXNoYXJlZHN0YXRlZGlyIHwgLS1zaGFyZWRzdGF0ZWRpIFwKLSAgIHwgLS1zaGFyZWRzdGF0ZWQgfCAtLXNoYXJlZHN0YXRlIHwgLS1zaGFyZWRzdGF0IHwgLS1zaGFyZWRzdGEgXAotQEAgLTU1Miw1NyArMzE3LDU4IEBACi0gICB8IC0tc2hhcmVkc3RhdGVkPSogfCAtLXNoYXJlZHN0YXRlPSogfCAtLXNoYXJlZHN0YXQ9KiB8IC0tc2hhcmVkc3RhPSogXAotICAgfCAtLXNoYXJlZHN0PSogfCAtLXNoYXJlZHM9KiB8IC0tc2hhcmVkPSogfCAtLXNoYXJlPSogfCAtLXNoYXI9KiBcCi0gICB8IC0tc2hhPSogfCAtLXNoPSopCi0tICAgIHNoYXJlZHN0YXRlZGlyPSRhY19vcHRhcmcgOzsKLSsgICAgc2hhcmVkc3RhdGVkaXI9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtc2l0ZSB8IC0tc2l0ZSB8IC0tc2l0KQotICAgICBhY19wcmV2PXNpdGUgOzsKLSAgIC1zaXRlPSogfCAtLXNpdGU9KiB8IC0tc2l0PSopCi0tICAgIHNpdGU9JGFjX29wdGFyZyA7OwotKyAgICBzaXRlPSIkYWNfb3B0YXJnIiA7OwotIAotICAgLXNyY2RpciB8IC0tc3JjZGlyIHwgLS1zcmNkaSB8IC0tc3JjZCB8IC0tc3JjIHwgLS1zcikKLSAgICAgYWNfcHJldj1zcmNkaXIgOzsKLSAgIC1zcmNkaXI9KiB8IC0tc3JjZGlyPSogfCAtLXNyY2RpPSogfCAtLXNyY2Q9KiB8IC0tc3JjPSogfCAtLXNyPSopCi0tICAgIHNyY2Rpcj0kYWNfb3B0YXJnIDs7Ci0rICAgIHNyY2Rpcj0iJGFjX29wdGFyZyIgOzsKLSAKLSAgIC1zeXNjb25mZGlyIHwgLS1zeXNjb25mZGlyIHwgLS1zeXNjb25mZGkgfCAtLXN5c2NvbmZkIHwgLS1zeXNjb25mIFwKLSAgIHwgLS1zeXNjb24gfCAtLXN5c2NvIHwgLS1zeXNjIHwgLS1zeXMgfCAtLXN5KQotICAgICBhY19wcmV2PXN5c2NvbmZkaXIgOzsKLSAgIC1zeXNjb25mZGlyPSogfCAtLXN5c2NvbmZkaXI9KiB8IC0tc3lzY29uZmRpPSogfCAtLXN5c2NvbmZkPSogfCAtLXN5c2NvbmY9KiBcCi0gICB8IC0tc3lzY29uPSogfCAtLXN5c2NvPSogfCAtLXN5c2M9KiB8IC0tc3lzPSogfCAtLXN5PSopCi0tICAgIHN5c2NvbmZkaXI9JGFjX29wdGFyZyA7OwotKyAgICBzeXNjb25mZGlyPSIkYWNfb3B0YXJnIiA7OwotIAotICAgLXRhcmdldCB8IC0tdGFyZ2V0IHwgLS10YXJnZSB8IC0tdGFyZyB8IC0tdGFyIHwgLS10YSB8IC0tdCkKLS0gICAgYWNfcHJldj10YXJnZXRfYWxpYXMgOzsKLSsgICAgYWNfcHJldj10YXJnZXQgOzsKLSAgIC10YXJnZXQ9KiB8IC0tdGFyZ2V0PSogfCAtLXRhcmdlPSogfCAtLXRhcmc9KiB8IC0tdGFyPSogfCAtLXRhPSogfCAtLXQ9KikKLS0gICAgdGFyZ2V0X2FsaWFzPSRhY19vcHRhcmcgOzsKLSsgICAgdGFyZ2V0PSIkYWNfb3B0YXJnIiA7OwotIAotICAgLXYgfCAtdmVyYm9zZSB8IC0tdmVyYm9zZSB8IC0tdmVyYm9zIHwgLS12ZXJibyB8IC0tdmVyYikKLSAgICAgdmVyYm9zZT15ZXMgOzsKLSAKLS0gIC12ZXJzaW9uIHwgLS12ZXJzaW9uIHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwgLS12ZXJzIHwgLVYpCi0tICAgIGFjX2luaXRfdmVyc2lvbj06IDs7Ci0rICAtdmVyc2lvbiB8IC0tdmVyc2lvbiB8IC0tdmVyc2lvIHwgLS12ZXJzaSB8IC0tdmVycykKLSsgICAgZWNobyAiY29uZmlndXJlIGdlbmVyYXRlZCBieSBhdXRvY29uZiB2ZXJzaW9uIDIuMTMiCi0rICAgIGV4aXQgMCA7OwotIAotICAgLXdpdGgtKiB8IC0td2l0aC0qKQotLSAgICBhY19wYWNrYWdlPWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qd2l0aC1cKFtePV0qXCknYAotKyAgICBhY19wYWNrYWdlPWBlY2hvICRhY19vcHRpb258c2VkIC1lICdzLy0qd2l0aC0vLycgLWUgJ3MvPS4qLy8nYAotICAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCi0tICAgIGV4cHIgIngkYWNfcGFja2FnZSIgOiAiLipbXi1fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgotLSAgICAgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY19wYWNrYWdlIiA+JjIKLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSsgICAgaWYgdGVzdCAtbiAiYGVjaG8gJGFjX3BhY2thZ2V8IHNlZCAncy9bLV9hLXpBLVowLTldLy9nJ2AiOyB0aGVuCi0rICAgICAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiAkYWNfcGFja2FnZTogaW52YWxpZCBwYWNrYWdlIG5hbWUiIDE+JjI7IGV4aXQgMTsgfQotKyAgICBmaQotICAgICBhY19wYWNrYWdlPWBlY2hvICRhY19wYWNrYWdlfCBzZWQgJ3MvLS9fL2cnYAotLSAgICBjYXNlICRhY19vcHRpb24gaW4KLS0gICAgICAqPSopIGFjX29wdGFyZz1gZWNobyAiJGFjX29wdGFyZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImA7OwotKyAgICBjYXNlICIkYWNfb3B0aW9uIiBpbgotKyAgICAgICo9KikgOzsKLSAgICAgICAqKSBhY19vcHRhcmc9eWVzIDs7Ci0gICAgIGVzYWMKLS0gICAgZXZhbCAid2l0aF8kYWNfcGFja2FnZT0nJGFjX29wdGFyZyciIDs7Ci0rICAgIGV2YWwgIndpdGhfJHthY19wYWNrYWdlfT0nJGFjX29wdGFyZyciIDs7Ci0gCi0gICAtd2l0aG91dC0qIHwgLS13aXRob3V0LSopCi0tICAgIGFjX3BhY2thZ2U9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSp3aXRob3V0LVwoLipcKSdgCi0rICAgIGFjX3BhY2thZ2U9YGVjaG8gJGFjX29wdGlvbnxzZWQgLWUgJ3MvLSp3aXRob3V0LS8vJ2AKLSAgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgotLSAgICBleHByICJ4JGFjX3BhY2thZ2UiIDogIi4qW14tXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKLS0gICAgICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGludmFsaWQgcGFja2FnZSBuYW1lOiAkYWNfcGFja2FnZSIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tICAgIGFjX3BhY2thZ2U9YGVjaG8gJGFjX3BhY2thZ2UgfCBzZWQgJ3MvLS9fL2cnYAotLSAgICBldmFsICJ3aXRoXyRhY19wYWNrYWdlPW5vIiA7OwotKyAgICBpZiB0ZXN0IC1uICJgZWNobyAkYWNfcGFja2FnZXwgc2VkICdzL1stYS16QS1aMC05X10vL2cnYCI7IHRoZW4KLSsgICAgICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6ICRhY19wYWNrYWdlOiBpbnZhbGlkIHBhY2thZ2UgbmFtZSIgMT4mMjsgZXhpdCAxOyB9Ci0rICAgIGZpCi0rICAgIGFjX3BhY2thZ2U9YGVjaG8gJGFjX3BhY2thZ2V8IHNlZCAncy8tL18vZydgCi0rICAgIGV2YWwgIndpdGhfJHthY19wYWNrYWdlfT1ubyIgOzsKLSAKLSAgIC0teCkKLSAgICAgIyBPYnNvbGV0ZTsgdXNlIC0td2l0aC14LgotQEAgLTYxMywxMTAgKzM3OSw5OSBAQAotICAgICBhY19wcmV2PXhfaW5jbHVkZXMgOzsKLSAgIC14LWluY2x1ZGVzPSogfCAtLXgtaW5jbHVkZXM9KiB8IC0teC1pbmNsdWRlPSogfCAtLXgtaW5jbHVkPSogfCAtLXgtaW5jbHU9KiBcCi0gICB8IC0teC1pbmNsPSogfCAtLXgtaW5jPSogfCAtLXgtaW49KiB8IC0teC1pPSopCi0tICAgIHhfaW5jbHVkZXM9JGFjX29wdGFyZyA7OwotKyAgICB4X2luY2x1ZGVzPSIkYWNfb3B0YXJnIiA7OwotIAotICAgLXgtbGlicmFyaWVzIHwgLS14LWxpYnJhcmllcyB8IC0teC1saWJyYXJpZSB8IC0teC1saWJyYXJpIFwKLSAgIHwgLS14LWxpYnJhciB8IC0teC1saWJyYSB8IC0teC1saWJyIHwgLS14LWxpYiB8IC0teC1saSB8IC0teC1sKQotICAgICBhY19wcmV2PXhfbGlicmFyaWVzIDs7Ci0gICAteC1saWJyYXJpZXM9KiB8IC0teC1saWJyYXJpZXM9KiB8IC0teC1saWJyYXJpZT0qIHwgLS14LWxpYnJhcmk9KiBcCi0gICB8IC0teC1saWJyYXI9KiB8IC0teC1saWJyYT0qIHwgLS14LWxpYnI9KiB8IC0teC1saWI9KiB8IC0teC1saT0qIHwgLS14LWw9KikKLS0gICAgeF9saWJyYXJpZXM9JGFjX29wdGFyZyA7OwotKyAgICB4X2xpYnJhcmllcz0iJGFjX29wdGFyZyIgOzsKLSAKLS0gIC0qKSB7IGVjaG8gIiRhc19tZTogZXJyb3I6IHVucmVjb2duaXplZCBvcHRpb246ICRhY19vcHRpb24KLS1UcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0rICAtKikgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiAkYWNfb3B0aW9uOiBpbnZhbGlkIG9wdGlvbjsgdXNlIC0taGVscCB0byBzaG93IHVzYWdlIiAxPiYyOyBleGl0IDE7IH0KLSAgICAgOzsKLSAKLS0gICo9KikKLS0gICAgYWNfZW52dmFyPWBleHByICJ4JGFjX29wdGlvbiIgOiAneFwoW149XSpcKT0nYAotLSAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCi0tICAgIGV4cHIgIngkYWNfZW52dmFyIiA6ICIuKlteXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKLS0gICAgICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGludmFsaWQgdmFyaWFibGUgbmFtZTogJGFjX2VudnZhciIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tICAgIGFjX29wdGFyZz1gZWNobyAiJGFjX29wdGFyZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImAKLS0gICAgZXZhbCAiJGFjX2VudnZhcj0nJGFjX29wdGFyZyciCi0tICAgIGV4cG9ydCAkYWNfZW52dmFyIDs7Ci0tCi0gICAqKQotLSAgICAjIEZJWE1FOiBzaG91bGQgYmUgcmVtb3ZlZCBpbiBhdXRvY29uZiAzLjAuCi0tICAgIGVjaG8gIiRhc19tZTogV0FSTklORzogeW91IHNob3VsZCB1c2UgLS1idWlsZCwgLS1ob3N0LCAtLXRhcmdldCIgPiYyCi0tICAgIGV4cHIgIngkYWNfb3B0aW9uIiA6ICIuKlteLS5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgotLSAgICAgIGVjaG8gIiRhc19tZTogV0FSTklORzogaW52YWxpZCBob3N0IHR5cGU6ICRhY19vcHRpb24iID4mMgotLSAgICA6ICR7YnVpbGRfYWxpYXM9JGFjX29wdGlvbn0gJHtob3N0X2FsaWFzPSRhY19vcHRpb259ICR7dGFyZ2V0X2FsaWFzPSRhY19vcHRpb259Ci0rICAgIGlmIHRlc3QgLW4gImBlY2hvICRhY19vcHRpb258IHNlZCAncy9bLWEtejAtOS5dLy9nJ2AiOyB0aGVuCi0rICAgICAgZWNobyAiY29uZmlndXJlOiB3YXJuaW5nOiAkYWNfb3B0aW9uOiBpbnZhbGlkIGhvc3QgdHlwZSIgMT4mMgotKyAgICBmaQotKyAgICBpZiB0ZXN0ICJ4JG5vbm9wdCIgIT0geE5PTkU7IHRoZW4KLSsgICAgICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IGNhbiBvbmx5IGNvbmZpZ3VyZSBmb3Igb25lIGhvc3QgYW5kIG9uZSB0YXJnZXQgYXQgYSB0aW1lIiAxPiYyOyBleGl0IDE7IH0KLSsgICAgZmkKLSsgICAgbm9ub3B0PSIkYWNfb3B0aW9uIgotICAgICA7OwotIAotICAgZXNhYwotIGRvbmUKLSAKLSBpZiB0ZXN0IC1uICIkYWNfcHJldiI7IHRoZW4KLS0gIGFjX29wdGlvbj0tLWBlY2hvICRhY19wcmV2IHwgc2VkICdzL18vLS9nJ2AKLS0gIHsgZWNobyAiJGFzX21lOiBlcnJvcjogbWlzc2luZyBhcmd1bWVudCB0byAkYWNfb3B0aW9uIiA+JjIKLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSsgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogbWlzc2luZyBhcmd1bWVudCB0byAtLWBlY2hvICRhY19wcmV2IHwgc2VkICdzL18vLS9nJ2AiIDE+JjI7IGV4aXQgMTsgfQotIGZpCi0gCi0tIyBCZSBzdXJlIHRvIGhhdmUgYWJzb2x1dGUgcGF0aHMuCi0tZm9yIGFjX3ZhciBpbiBleGVjX3ByZWZpeCBwcmVmaXgKLS1kbwotLSAgZXZhbCBhY192YWw9JGBlY2hvICRhY192YXJgCi0tICBjYXNlICRhY192YWwgaW4KLS0gICAgW1xcLyRdKiB8ID86W1xcL10qIHwgTk9ORSB8ICcnICkgOzsKLS0gICAgKikgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogZXhwZWN0ZWQgYW4gYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgZm9yIC0tJGFjX3ZhcjogJGFjX3ZhbCIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9OzsKLS0gIGVzYWMKLS1kb25lCi0rdHJhcCAncm0gLWZyIGNvbmZ0ZXN0KiBjb25mZGVmcyogY29yZSBjb3JlLiogKi5jb3JlICRhY19jbGVhbl9maWxlczsgZXhpdCAxJyAxIDIgMTUKLSAKLS0jIEJlIHN1cmUgdG8gaGF2ZSBhYnNvbHV0ZSBwYXRocy4KLS1mb3IgYWNfdmFyIGluIGJpbmRpciBzYmluZGlyIGxpYmV4ZWNkaXIgZGF0YWRpciBzeXNjb25mZGlyIHNoYXJlZHN0YXRlZGlyIFwKLS0gICAgICAgICAgICAgIGxvY2Fsc3RhdGVkaXIgbGliZGlyIGluY2x1ZGVkaXIgb2xkaW5jbHVkZWRpciBpbmZvZGlyIG1hbmRpcgotKyMgRmlsZSBkZXNjcmlwdG9yIHVzYWdlOgotKyMgMCBzdGFuZGFyZCBpbnB1dAotKyMgMSBmaWxlIGNyZWF0aW9uCi0rIyAyIGVycm9ycyBhbmQgd2FybmluZ3MKLSsjIDMgc29tZSBzeXN0ZW1zIG1heSBvcGVuIGl0IHRvIC9kZXYvdHR5Ci0rIyA0IHVzZWQgb24gdGhlIEt1Ym90YSBUaXRhbgotKyMgNiBjaGVja2luZyBmb3IuLi4gbWVzc2FnZXMgYW5kIHJlc3VsdHMKLSsjIDUgY29tcGlsZXIgbWVzc2FnZXMgc2F2ZWQgaW4gY29uZmlnLmxvZwotK2lmIHRlc3QgIiRzaWxlbnQiID0geWVzOyB0aGVuCi0rICBleGVjIDY+L2Rldi9udWxsCi0rZWxzZQotKyAgZXhlYyA2PiYxCi0rZmkKLStleGVjIDU+Li9jb25maWcubG9nCi0rCi0rZWNobyAiXAotK1RoaXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlCi0rcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KLSsiIDE+JjUKLSsKLSsjIFN0cmlwIG91dCAtLW5vLWNyZWF0ZSBhbmQgLS1uby1yZWN1cnNpb24gc28gdGhleSBkbyBub3QgcGlsZSB1cC4KLSsjIEFsc28gcXVvdGUgYW55IGFyZ3MgY29udGFpbmluZyBzaGVsbCBtZXRhY2hhcmFjdGVycy4KLSthY19jb25maWd1cmVfYXJncz0KLStmb3IgYWNfYXJnCi0gZG8KLS0gIGV2YWwgYWNfdmFsPSRgZWNobyAkYWNfdmFyYAotLSAgY2FzZSAkYWNfdmFsIGluCi0tICAgIFtcXC8kXSogfCA/OltcXC9dKiApIDs7Ci0tICAgICopICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGV4cGVjdGVkIGFuIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIGZvciAtLSRhY192YXI6ICRhY192YWwiID4mMgotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfTs7Ci0rICBjYXNlICIkYWNfYXJnIiBpbgotKyAgLW5vLWNyZWF0ZSB8IC0tbm8tY3JlYXRlIHwgLS1uby1jcmVhdCB8IC0tbm8tY3JlYSB8IC0tbm8tY3JlIFwKLSsgIHwgLS1uby1jciB8IC0tbm8tYykgOzsKLSsgIC1uby1yZWN1cnNpb24gfCAtLW5vLXJlY3Vyc2lvbiB8IC0tbm8tcmVjdXJzaW8gfCAtLW5vLXJlY3Vyc2kgXAotKyAgfCAtLW5vLXJlY3VycyB8IC0tbm8tcmVjdXIgfCAtLW5vLXJlY3UgfCAtLW5vLXJlYyB8IC0tbm8tcmUgfCAtLW5vLXIpIDs7Ci0rICAqIiAiKnwqIgkiKnwqW1xbXF1cflwjXCRcXlwmXCpcKFwpXHtcfVxcXHxcO1w8XD5cP10qKQotKyAgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyAnJGFjX2FyZyciIDs7Ci0rICAqKSBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzICRhY19hcmciIDs7Ci0gICBlc2FjCi0gZG9uZQotIAotLSMgVGhlcmUgbWlnaHQgYmUgcGVvcGxlIHdobyBkZXBlbmQgb24gdGhlIG9sZCBicm9rZW4gYmVoYXZpb3I6IGAkaG9zdCcKLS0jIHVzZWQgdG8gaG9sZCB0aGUgYXJndW1lbnQgb2YgLS1ob3N0IGV0Yy4KLS0jIEZJWE1FOiBUbyByZW1vdmUgc29tZSBkYXkuCi0tYnVpbGQ9JGJ1aWxkX2FsaWFzCi0taG9zdD0kaG9zdF9hbGlhcwotLXRhcmdldD0kdGFyZ2V0X2FsaWFzCi0rIyBOTFMgbnVpc2FuY2VzLgotKyMgT25seSBzZXQgdGhlc2UgdG8gQyBpZiBhbHJlYWR5IHNldC4gIFRoZXNlIG11c3Qgbm90IGJlIHNldCB1bmNvbmRpdGlvbmFsbHkKLSsjIGJlY2F1c2Ugbm90IGFsbCBzeXN0ZW1zIHVuZGVyc3RhbmQgZS5nLiBMQU5HPUMgKG5vdGFibHkgU0NPKS4KLSsjIEZpeGluZyBMQ19NRVNTQUdFUyBwcmV2ZW50cyBTb2xhcmlzIHNoIGZyb20gdHJhbnNsYXRpbmcgdmFyIHZhbHVlcyBpbiBgc2V0JyEKLSsjIE5vbi1DIExDX0NUWVBFIHZhbHVlcyBicmVhayB0aGUgY3R5cGUgY2hlY2suCi0raWYgdGVzdCAiJHtMQU5HK3NldH0iICAgPSBzZXQ7IHRoZW4gTEFORz1DOyAgIGV4cG9ydCBMQU5HOyAgIGZpCi0raWYgdGVzdCAiJHtMQ19BTEwrc2V0fSIgPSBzZXQ7IHRoZW4gTENfQUxMPUM7IGV4cG9ydCBMQ19BTEw7IGZpCi0raWYgdGVzdCAiJHtMQ19NRVNTQUdFUytzZXR9IiA9IHNldDsgdGhlbiBMQ19NRVNTQUdFUz1DOyBleHBvcnQgTENfTUVTU0FHRVM7IGZpCi0raWYgdGVzdCAiJHtMQ19DVFlQRStzZXR9IiAgICA9IHNldDsgdGhlbiBMQ19DVFlQRT1DOyAgICBleHBvcnQgTENfQ1RZUEU7ICAgIGZpCi0gCi0tIyBGSVhNRTogVG8gcmVtb3ZlIHNvbWUgZGF5LgotLWlmIHRlc3QgIngkaG9zdF9hbGlhcyIgIT0geDsgdGhlbgotLSAgaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgPSB4OyB0aGVuCi0tICAgIGNyb3NzX2NvbXBpbGluZz1tYXliZQotLSAgICBlY2hvICIkYXNfbWU6IFdBUk5JTkc6IElmIHlvdSB3YW50ZWQgdG8gc2V0IHRoZSAtLWJ1aWxkIHR5cGUsIGRvbid0IHVzZSAtLWhvc3QuCi0tICAgIElmIGEgY3Jvc3MgY29tcGlsZXIgaXMgZGV0ZWN0ZWQgdGhlbiBjcm9zcyBjb21waWxlIG1vZGUgd2lsbCBiZSB1c2VkLiIgPiYyCi0tICBlbGlmIHRlc3QgIngkYnVpbGRfYWxpYXMiICE9ICJ4JGhvc3RfYWxpYXMiOyB0aGVuCi0tICAgIGNyb3NzX2NvbXBpbGluZz15ZXMKLS0gIGZpCi0tZmkKLSsjIGNvbmZkZWZzLmggYXZvaWRzIE9TIGNvbW1hbmQgbGluZSBsZW5ndGggbGltaXRzIHRoYXQgREVGUyBjYW4gZXhjZWVkLgotK3JtIC1yZiBjb25mdGVzdCogY29uZmRlZnMuaAotKyMgQUlYIGNwcCBsb3NlcyBvbiBhbiBlbXB0eSBmaWxlLCBzbyBtYWtlIHN1cmUgaXQgY29udGFpbnMgYXQgbGVhc3QgYSBuZXdsaW5lLgotK2VjaG8gPiBjb25mZGVmcy5oCi0gCi0tYWNfdG9vbF9wcmVmaXg9Ci0tdGVzdCAtbiAiJGhvc3RfYWxpYXMiICYmIGFjX3Rvb2xfcHJlZml4PSRob3N0X2FsaWFzLQotKyMgQSBmaWxlbmFtZSB1bmlxdWUgdG8gdGhpcyBwYWNrYWdlLCByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5IHRoYXQKLSsjIGNvbmZpZ3VyZSBpcyBpbiwgd2hpY2ggd2UgY2FuIGxvb2sgZm9yIHRvIGZpbmQgb3V0IGlmIHNyY2RpciBpcyBjb3JyZWN0LgotK2FjX3VuaXF1ZV9maWxlPWluY2x1ZGUvZmxpdGUuaAotIAotLXRlc3QgIiRzaWxlbnQiID0geWVzICYmIGV4ZWMgNj4vZGV2L251bGwKLS0KLS0KLSAjIEZpbmQgdGhlIHNvdXJjZSBmaWxlcywgaWYgbG9jYXRpb24gd2FzIG5vdCBzcGVjaWZpZWQuCi0gaWYgdGVzdCAteiAiJHNyY2RpciI7IHRoZW4KLSAgIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9eWVzCi0gICAjIFRyeSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhpcyBzY3JpcHQsIHRoZW4gaXRzIHBhcmVudC4KLS0gIGFjX2NvbmZkaXI9YChkaXJuYW1lICIkMCIpIDI+L2Rldi9udWxsIHx8Ci0tJGFzX2V4cHIgWCIkMCIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKLS0gICAgICAgICBYIiQwIiA6ICdYXCgvL1wpW14vXScgXHwgXAotLSAgICAgICAgIFgiJDAiIDogJ1hcKC8vXCkkJyBcfCBcCi0tICAgICAgICAgWCIkMCIgOiAnWFwoL1wpJyBcfCBcCi0tICAgICAgICAgLiAgICAgOiAnXCguXCknIDI+L2Rldi9udWxsIHx8Ci0tZWNobyBYIiQwIiB8Ci0tICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97IHMvL1wxLzsgcTsgfQotLSAgCSAgL15YXChcL1wvXClbXi9dLioveyBzLy9cMS87IHE7IH0KLS0gIAkgIC9eWFwoXC9cL1wpJC97IHMvL1wxLzsgcTsgfQotLSAgCSAgL15YXChcL1wpLioveyBzLy9cMS87IHE7IH0KLS0gIAkgIHMvLiovLi87IHEnYAotKyAgYWNfcHJvZz0kMAotKyAgYWNfY29uZmRpcj1gZWNobyAkYWNfcHJvZ3xzZWQgJ3MlL1teL11bXi9dKiQlJSdgCi0rICB0ZXN0ICJ4JGFjX2NvbmZkaXIiID0gIngkYWNfcHJvZyIgJiYgYWNfY29uZmRpcj0uCi0gICBzcmNkaXI9JGFjX2NvbmZkaXIKLSAgIGlmIHRlc3QgISAtciAkc3JjZGlyLyRhY191bmlxdWVfZmlsZTsgdGhlbgotICAgICBzcmNkaXI9Li4KLUBAIC03MjYsNDQxICs0ODEsMTMgQEAKLSBmaQotIGlmIHRlc3QgISAtciAkc3JjZGlyLyRhY191bmlxdWVfZmlsZTsgdGhlbgotICAgaWYgdGVzdCAiJGFjX3NyY2Rpcl9kZWZhdWx0ZWQiID0geWVzOyB0aGVuCi0tICAgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGZpbmQgc291cmNlcyAoJGFjX3VuaXF1ZV9maWxlKSBpbiAkYWNfY29uZmRpciBvciAuLiIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0rICAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogY2FuIG5vdCBmaW5kIHNvdXJjZXMgaW4gJGFjX2NvbmZkaXIgb3IgLi4iIDE+JjI7IGV4aXQgMTsgfQotICAgZWxzZQotLSAgICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBmaW5kIHNvdXJjZXMgKCRhY191bmlxdWVfZmlsZSkgaW4gJHNyY2RpciIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0rICAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogY2FuIG5vdCBmaW5kIHNvdXJjZXMgaW4gJHNyY2RpciIgMT4mMjsgZXhpdCAxOyB9Ci0gICBmaQotIGZpCi0tKGNkICRzcmNkaXIgJiYgdGVzdCAtciAuLyRhY191bmlxdWVfZmlsZSkgMj4vZGV2L251bGwgfHwKLS0gIHsgZWNobyAiJGFzX21lOiBlcnJvcjogc291cmNlcyBhcmUgaW4gJHNyY2RpciwgYnV0IFxgY2QgJHNyY2RpcicgZG9lcyBub3Qgd29yayIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tc3JjZGlyPWBlY2hvICIkc3JjZGlyIiB8IHNlZCAncyVcKFteXFwvXVwpW1xcL10qJCVcMSUnYAotLWFjX2Vudl9idWlsZF9hbGlhc19zZXQ9JHtidWlsZF9hbGlhcytzZXR9Ci0tYWNfZW52X2J1aWxkX2FsaWFzX3ZhbHVlPSRidWlsZF9hbGlhcwotLWFjX2N2X2Vudl9idWlsZF9hbGlhc19zZXQ9JHtidWlsZF9hbGlhcytzZXR9Ci0tYWNfY3ZfZW52X2J1aWxkX2FsaWFzX3ZhbHVlPSRidWlsZF9hbGlhcwotLWFjX2Vudl9ob3N0X2FsaWFzX3NldD0ke2hvc3RfYWxpYXMrc2V0fQotLWFjX2Vudl9ob3N0X2FsaWFzX3ZhbHVlPSRob3N0X2FsaWFzCi0tYWNfY3ZfZW52X2hvc3RfYWxpYXNfc2V0PSR7aG9zdF9hbGlhcytzZXR9Ci0tYWNfY3ZfZW52X2hvc3RfYWxpYXNfdmFsdWU9JGhvc3RfYWxpYXMKLS1hY19lbnZfdGFyZ2V0X2FsaWFzX3NldD0ke3RhcmdldF9hbGlhcytzZXR9Ci0tYWNfZW52X3RhcmdldF9hbGlhc192YWx1ZT0kdGFyZ2V0X2FsaWFzCi0tYWNfY3ZfZW52X3RhcmdldF9hbGlhc19zZXQ9JHt0YXJnZXRfYWxpYXMrc2V0fQotLWFjX2N2X2Vudl90YXJnZXRfYWxpYXNfdmFsdWU9JHRhcmdldF9hbGlhcwotLWFjX2Vudl9DQ19zZXQ9JHtDQytzZXR9Ci0tYWNfZW52X0NDX3ZhbHVlPSRDQwotLWFjX2N2X2Vudl9DQ19zZXQ9JHtDQytzZXR9Ci0tYWNfY3ZfZW52X0NDX3ZhbHVlPSRDQwotLWFjX2Vudl9DRkxBR1Nfc2V0PSR7Q0ZMQUdTK3NldH0KLS1hY19lbnZfQ0ZMQUdTX3ZhbHVlPSRDRkxBR1MKLS1hY19jdl9lbnZfQ0ZMQUdTX3NldD0ke0NGTEFHUytzZXR9Ci0tYWNfY3ZfZW52X0NGTEFHU192YWx1ZT0kQ0ZMQUdTCi0tYWNfZW52X0xERkxBR1Nfc2V0PSR7TERGTEFHUytzZXR9Ci0tYWNfZW52X0xERkxBR1NfdmFsdWU9JExERkxBR1MKLS1hY19jdl9lbnZfTERGTEFHU19zZXQ9JHtMREZMQUdTK3NldH0KLS1hY19jdl9lbnZfTERGTEFHU192YWx1ZT0kTERGTEFHUwotLWFjX2Vudl9DUFBGTEFHU19zZXQ9JHtDUFBGTEFHUytzZXR9Ci0tYWNfZW52X0NQUEZMQUdTX3ZhbHVlPSRDUFBGTEFHUwotLWFjX2N2X2Vudl9DUFBGTEFHU19zZXQ9JHtDUFBGTEFHUytzZXR9Ci0tYWNfY3ZfZW52X0NQUEZMQUdTX3ZhbHVlPSRDUFBGTEFHUwotLWFjX2Vudl9DUFBfc2V0PSR7Q1BQK3NldH0KLS1hY19lbnZfQ1BQX3ZhbHVlPSRDUFAKLS1hY19jdl9lbnZfQ1BQX3NldD0ke0NQUCtzZXR9Ci0tYWNfY3ZfZW52X0NQUF92YWx1ZT0kQ1BQCi0rc3JjZGlyPWBlY2hvICIke3NyY2Rpcn0iIHwgc2VkICdzJVwoW14vXVwpLyokJVwxJSdgCi0gCi0tIwotLSMgUmVwb3J0IHRoZSAtLWhlbHAgbWVzc2FnZS4KLS0jCi0taWYgdGVzdCAiJGFjX2luaXRfaGVscCIgPSAibG9uZyI7IHRoZW4KLS0gICMgT21pdCBzb21lIGludGVybmFsIG9yIG9ic29sZXRlIG9wdGlvbnMgdG8gbWFrZSB0aGUgbGlzdCBsZXNzIGltcG9zaW5nLgotLSAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxvbmcgdG8gYmUgYSBzdHJpbmcgaW4gdGhlIEEvVVggMy4xIHNoLgotLSAgY2F0IDw8X0FDRU9GCi0tXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgdGhpcyBwYWNrYWdlIHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KLS0KLS1Vc2FnZTogJDAgW09QVElPTl0uLi4gW1ZBUj1WQUxVRV0uLi4KLS0KLS1UbyBhc3NpZ24gZW52aXJvbm1lbnQgdmFyaWFibGVzIChlLmcuLCBDQywgQ0ZMQUdTLi4uKSwgc3BlY2lmeSB0aGVtIGFzCi0tVkFSPVZBTFVFLiAgU2VlIGJlbG93IGZvciBkZXNjcmlwdGlvbnMgb2Ygc29tZSBvZiB0aGUgdXNlZnVsIHZhcmlhYmxlcy4KLS0KLS1EZWZhdWx0cyBmb3IgdGhlIG9wdGlvbnMgYXJlIHNwZWNpZmllZCBpbiBicmFja2V0cy4KLS0KLS1Db25maWd1cmF0aW9uOgotLSAgLWgsIC0taGVscCAgICAgICAgICAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXQKLS0gICAgICAtLWhlbHA9c2hvcnQgICAgICAgIGRpc3BsYXkgb3B0aW9ucyBzcGVjaWZpYyB0byB0aGlzIHBhY2thZ2UKLS0gICAgICAtLWhlbHA9cmVjdXJzaXZlICAgIGRpc3BsYXkgdGhlIHNob3J0IGhlbHAgb2YgYWxsIHRoZSBpbmNsdWRlZCBwYWNrYWdlcwotLSAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAgZGlzcGxheSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0Ci0tICAtcSwgLS1xdWlldCwgLS1zaWxlbnQgICBkbyBub3QgcHJpbnQgXGBjaGVja2luZy4uLicgbWVzc2FnZXMKLS0gICAgICAtLWNhY2hlLWZpbGU9RklMRSAgIGNhY2hlIHRlc3QgcmVzdWx0cyBpbiBGSUxFIFtkaXNhYmxlZF0KLS0gIC1DLCAtLWNvbmZpZy1jYWNoZSAgICAgIGFsaWFzIGZvciBcYC0tY2FjaGUtZmlsZT1jb25maWcuY2FjaGUnCi0tICAtbiwgLS1uby1jcmVhdGUgICAgICAgICBkbyBub3QgY3JlYXRlIG91dHB1dCBmaWxlcwotLSAgICAgIC0tc3JjZGlyPURJUiAgICAgICAgZmluZCB0aGUgc291cmNlcyBpbiBESVIgW2NvbmZpZ3VyZSBkaXIgb3IgXGAuLiddCi0tCi0tX0FDRU9GCi0tCi0tICBjYXQgPDxfQUNFT0YKLS1JbnN0YWxsYXRpb24gZGlyZWN0b3JpZXM6Ci0tICAtLXByZWZpeD1QUkVGSVggICAgICAgICBpbnN0YWxsIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBpbiBQUkVGSVgKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIFskYWNfZGVmYXVsdF9wcmVmaXhdCi0tICAtLWV4ZWMtcHJlZml4PUVQUkVGSVggICBpbnN0YWxsIGFyY2hpdGVjdHVyZS1kZXBlbmRlbnQgZmlsZXMgaW4gRVBSRUZJWAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgW1BSRUZJWF0KLS0KLS1CeSBkZWZhdWx0LCBcYG1ha2UgaW5zdGFsbCcgd2lsbCBpbnN0YWxsIGFsbCB0aGUgZmlsZXMgaW4KLS1cYCRhY19kZWZhdWx0X3ByZWZpeC9iaW4nLCBcYCRhY19kZWZhdWx0X3ByZWZpeC9saWInIGV0Yy4gIFlvdSBjYW4gc3BlY2lmeQotLWFuIGluc3RhbGxhdGlvbiBwcmVmaXggb3RoZXIgdGhhbiBcYCRhY19kZWZhdWx0X3ByZWZpeCcgdXNpbmcgXGAtLXByZWZpeCcsCi0tZm9yIGluc3RhbmNlIFxgLS1wcmVmaXg9XCRIT01FJy4KLS0KLS1Gb3IgYmV0dGVyIGNvbnRyb2wsIHVzZSB0aGUgb3B0aW9ucyBiZWxvdy4KLS0KLS1GaW5lIHR1bmluZyBvZiB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOgotLSAgLS1iaW5kaXI9RElSICAgICAgICAgICB1c2VyIGV4ZWN1dGFibGVzIFtFUFJFRklYL2Jpbl0KLS0gIC0tc2JpbmRpcj1ESVIgICAgICAgICAgc3lzdGVtIGFkbWluIGV4ZWN1dGFibGVzIFtFUFJFRklYL3NiaW5dCi0tICAtLWxpYmV4ZWNkaXI9RElSICAgICAgIHByb2dyYW0gZXhlY3V0YWJsZXMgW0VQUkVGSVgvbGliZXhlY10KLS0gIC0tZGF0YWRpcj1ESVIgICAgICAgICAgcmVhZC1vbmx5IGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIFtQUkVGSVgvc2hhcmVdCi0tICAtLXN5c2NvbmZkaXI9RElSICAgICAgIHJlYWQtb25seSBzaW5nbGUtbWFjaGluZSBkYXRhIFtQUkVGSVgvZXRjXQotLSAgLS1zaGFyZWRzdGF0ZWRpcj1ESVIgICBtb2RpZmlhYmxlIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIFtQUkVGSVgvY29tXQotLSAgLS1sb2NhbHN0YXRlZGlyPURJUiAgICBtb2RpZmlhYmxlIHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC92YXJdCi0tICAtLWxpYmRpcj1ESVIgICAgICAgICAgIG9iamVjdCBjb2RlIGxpYnJhcmllcyBbRVBSRUZJWC9saWJdCi0tICAtLWluY2x1ZGVkaXI9RElSICAgICAgIEMgaGVhZGVyIGZpbGVzIFtQUkVGSVgvaW5jbHVkZV0KLS0gIC0tb2xkaW5jbHVkZWRpcj1ESVIgICAgQyBoZWFkZXIgZmlsZXMgZm9yIG5vbi1nY2MgWy91c3IvaW5jbHVkZV0KLS0gIC0taW5mb2Rpcj1ESVIgICAgICAgICAgaW5mbyBkb2N1bWVudGF0aW9uIFtQUkVGSVgvaW5mb10KLS0gIC0tbWFuZGlyPURJUiAgICAgICAgICAgbWFuIGRvY3VtZW50YXRpb24gW1BSRUZJWC9tYW5dCi0tX0FDRU9GCi0tCi0tICBjYXQgPDxcX0FDRU9GCi0tCi0tU3lzdGVtIHR5cGVzOgotLSAgLS1idWlsZD1CVUlMRCAgICAgY29uZmlndXJlIGZvciBidWlsZGluZyBvbiBCVUlMRCBbZ3Vlc3NlZF0KLS0gIC0taG9zdD1IT1NUICAgICAgIGNyb3NzLWNvbXBpbGUgdG8gYnVpbGQgcHJvZ3JhbXMgdG8gcnVuIG9uIEhPU1QgW0JVSUxEXQotLSAgLS10YXJnZXQ9VEFSR0VUICAgY29uZmlndXJlIGZvciBidWlsZGluZyBjb21waWxlcnMgZm9yIFRBUkdFVCBbSE9TVF0KLS1fQUNFT0YKLS1maQotLQotLWlmIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiOyB0aGVuCi0tCi0tICBjYXQgPDxcX0FDRU9GCi0tCi0tT3B0aW9uYWwgRmVhdHVyZXM6Ci0tICAtLWRpc2FibGUtRkVBVFVSRSAgICAgICBkbyBub3QgaW5jbHVkZSBGRUFUVVJFIChzYW1lIGFzIC0tZW5hYmxlLUZFQVRVUkU9bm8pCi0tICAtLWVuYWJsZS1GRUFUVVJFWz1BUkddICBpbmNsdWRlIEZFQVRVUkUgW0FSRz15ZXNdCi0tICAtLWRpc2FibGUtc2hhcmVkICAgICB3aXRob3V0IHNoYXJlZCBsaWJyYXJ5IHN1cHBvcnQKLS0gIC0tZGlzYWJsZS1zb2NrZXRzICAgICB3aXRob3V0IHNvY2tldCBzdXBwb3J0Ci0tCi0tT3B0aW9uYWwgUGFja2FnZXM6Ci0tICAtLXdpdGgtUEFDS0FHRVs9QVJHXSAgICB1c2UgUEFDS0FHRSBbQVJHPXllc10KLS0gIC0td2l0aG91dC1QQUNLQUdFICAgICAgIGRvIG5vdCB1c2UgUEFDS0FHRSAoc2FtZSBhcyAtLXdpdGgtUEFDS0FHRT1ubykKLS0gIC0td2l0aC1hdWRpbyAgICAgICAgICB3aXRoIHNwZWNpZmljIGF1ZGlvIHN1cHBvcnQgKG5vbmUgbGludXggZnJlZWJzZCBldGMpCi0tICAtLXdpdGgtbGFuZyAgICAgICAgICAgd2l0aCBsYW5ndWFnZQotLSAgLS13aXRoLXZveCAgICAgICAgICAgIHdpdGggdm94Ci0tICAtLXdpdGgtbGV4ICAgICAgICAgICAgd2l0aCBsZXhpY29uCi0tCi0tU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6Ci0tICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKLS0gIENGTEFHUyAgICAgIEMgY29tcGlsZXIgZmxhZ3MKLS0gIExERkxBR1MgICAgIGxpbmtlciBmbGFncywgZS5nLiAtTDxsaWIgZGlyPiBpZiB5b3UgaGF2ZSBsaWJyYXJpZXMgaW4gYQotLSAgICAgICAgICAgICAgbm9uc3RhbmRhcmQgZGlyZWN0b3J5IDxsaWIgZGlyPgotLSAgQ1BQRkxBR1MgICAgQy9DKysgcHJlcHJvY2Vzc29yIGZsYWdzLCBlLmcuIC1JPGluY2x1ZGUgZGlyPiBpZiB5b3UgaGF2ZQotLSAgICAgICAgICAgICAgaGVhZGVycyBpbiBhIG5vbnN0YW5kYXJkIGRpcmVjdG9yeSA8aW5jbHVkZSBkaXI+Ci0tICBDUFAgICAgICAgICBDIHByZXByb2Nlc3NvcgotLQotLVVzZSB0aGVzZSB2YXJpYWJsZXMgdG8gb3ZlcnJpZGUgdGhlIGNob2ljZXMgbWFkZSBieSBgY29uZmlndXJlJyBvciB0byBoZWxwCi0taXQgdG8gZmluZCBsaWJyYXJpZXMgYW5kIHByb2dyYW1zIHdpdGggbm9uc3RhbmRhcmQgbmFtZXMvbG9jYXRpb25zLgotLQotLV9BQ0VPRgotLWZpCi0tCi0taWYgdGVzdCAiJGFjX2luaXRfaGVscCIgPSAicmVjdXJzaXZlIjsgdGhlbgotLSAgIyBJZiB0aGVyZSBhcmUgc3ViZGlycywgcmVwb3J0IHRoZWlyIHNwZWNpZmljIC0taGVscC4KLS0gIGFjX3BvcGRpcj1gcHdkYAotLSAgZm9yIGFjX2RpciBpbiA6ICRhY19zdWJkaXJzX2FsbDsgZG8gdGVzdCAieCRhY19kaXIiID0geDogJiYgY29udGludWUKLS0gICAgdGVzdCAtZCAkYWNfZGlyIHx8IGNvbnRpbnVlCi0tICAgIGFjX2J1aWxkZGlyPS4KLS0KLS1pZiB0ZXN0ICIkYWNfZGlyIiAhPSAuOyB0aGVuCi0tICBhY19kaXJfc3VmZml4PS9gZWNobyAiJGFjX2RpciIgfCBzZWQgJ3MsXlwuW1xcL10sLCdgCi0tICAjIEEgIi4uLyIgZm9yIGVhY2ggZGlyZWN0b3J5IGluICRhY19kaXJfc3VmZml4LgotLSAgYWNfdG9wX2J1aWxkZGlyPWBlY2hvICIkYWNfZGlyX3N1ZmZpeCIgfCBzZWQgJ3MsL1teXFwvXSosLi4vLGcnYAotLWVsc2UKLS0gIGFjX2Rpcl9zdWZmaXg9IGFjX3RvcF9idWlsZGRpcj0KLS1maQotLQotLWNhc2UgJHNyY2RpciBpbgotLSAgLikgICMgTm8gLS1zcmNkaXIgb3B0aW9uLiAgV2UgYXJlIGJ1aWxkaW5nIGluIHBsYWNlLgotLSAgICBhY19zcmNkaXI9LgotLSAgICBpZiB0ZXN0IC16ICIkYWNfdG9wX2J1aWxkZGlyIjsgdGhlbgotLSAgICAgICBhY190b3Bfc3JjZGlyPS4KLS0gICAgZWxzZQotLSAgICAgICBhY190b3Bfc3JjZGlyPWBlY2hvICRhY190b3BfYnVpbGRkaXIgfCBzZWQgJ3MsLyQsLCdgCi0tICAgIGZpIDs7Ci0tICBbXFwvXSogfCA/OltcXC9dKiApICAjIEFic29sdXRlIHBhdGguCi0tICAgIGFjX3NyY2Rpcj0kc3JjZGlyJGFjX2Rpcl9zdWZmaXg7Ci0tICAgIGFjX3RvcF9zcmNkaXI9JHNyY2RpciA7OwotLSAgKikgIyBSZWxhdGl2ZSBwYXRoLgotLSAgICBhY19zcmNkaXI9JGFjX3RvcF9idWlsZGRpciRzcmNkaXIkYWNfZGlyX3N1ZmZpeAotLSAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRkaXIkc3JjZGlyIDs7Ci0tZXNhYwotLSMgRG9uJ3QgYmxpbmRseSBwZXJmb3JtIGEgYGNkICIkYWNfZGlyIi8kYWNfZm9vICYmIHB3ZGAgc2luY2UgJGFjX2ZvbyBjYW4gYmUKLS0jIGFic29sdXRlLgotLWFjX2Fic19idWlsZGRpcj1gY2QgIiRhY19kaXIiICYmIGNkICRhY19idWlsZGRpciAmJiBwd2RgCi0tYWNfYWJzX3RvcF9idWlsZGRpcj1gY2QgIiRhY19kaXIiICYmIGNkICR7YWNfdG9wX2J1aWxkZGlyfS4gJiYgcHdkYAotLWFjX2Fic19zcmNkaXI9YGNkICIkYWNfZGlyIiAmJiBjZCAkYWNfc3JjZGlyICYmIHB3ZGAKLS1hY19hYnNfdG9wX3NyY2Rpcj1gY2QgIiRhY19kaXIiICYmIGNkICRhY190b3Bfc3JjZGlyICYmIHB3ZGAKLS0KLS0gICAgY2QgJGFjX2RpcgotLSAgICAjIENoZWNrIGZvciBndWVzdGVkIGNvbmZpZ3VyZTsgb3RoZXJ3aXNlIGdldCBDeWdudXMgc3R5bGUgY29uZmlndXJlLgotLSAgICBpZiB0ZXN0IC1mICRhY19zcmNkaXIvY29uZmlndXJlLmdudTsgdGhlbgotLSAgICAgIGVjaG8KLS0gICAgICAkU0hFTEwgJGFjX3NyY2Rpci9jb25maWd1cmUuZ251ICAtLWhlbHA9cmVjdXJzaXZlCi0tICAgIGVsaWYgdGVzdCAtZiAkYWNfc3JjZGlyL2NvbmZpZ3VyZTsgdGhlbgotLSAgICAgIGVjaG8KLS0gICAgICAkU0hFTEwgJGFjX3NyY2Rpci9jb25maWd1cmUgIC0taGVscD1yZWN1cnNpdmUKLS0gICAgZWxpZiB0ZXN0IC1mICRhY19zcmNkaXIvY29uZmlndXJlLmFjIHx8Ci0tICAgICAgICAgICB0ZXN0IC1mICRhY19zcmNkaXIvY29uZmlndXJlLmluOyB0aGVuCi0tICAgICAgZWNobwotLSAgICAgICRhY19jb25maWd1cmUgLS1oZWxwCi0tICAgIGVsc2UKLS0gICAgICBlY2hvICIkYXNfbWU6IFdBUk5JTkc6IG5vIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gaXMgaW4gJGFjX2RpciIgPiYyCi0tICAgIGZpCi0tICAgIGNkICRhY19wb3BkaXIKLS0gIGRvbmUKLS1maQotLQotLXRlc3QgLW4gIiRhY19pbml0X2hlbHAiICYmIGV4aXQgMAotLWlmICRhY19pbml0X3ZlcnNpb247IHRoZW4KLS0gIGNhdCA8PFxfQUNFT0YKLS0KLS1Db3B5cmlnaHQgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMgotLUZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLVRoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0tZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LgotLV9BQ0VPRgotLSAgZXhpdCAwCi0tZmkKLS1leGVjIDU+Y29uZmlnLmxvZwotLWNhdCA+JjUgPDxfQUNFT0YKLS1UaGlzIGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2VzIHByb2R1Y2VkIGJ5IGNvbXBpbGVycyB3aGlsZQotLXJ1bm5pbmcgY29uZmlndXJlLCB0byBhaWQgZGVidWdnaW5nIGlmIGNvbmZpZ3VyZSBtYWtlcyBhIG1pc3Rha2UuCi0tCi0tSXQgd2FzIGNyZWF0ZWQgYnkgJGFzX21lLCB3aGljaCB3YXMKLS1nZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNTcuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKLS0KLS0gICQgJDAgJEAKLS0KLS1fQUNFT0YKLS17Ci0tY2F0IDw8X0FTVU5BTUUKLS0jIyAtLS0tLS0tLS0gIyMKLS0jIyBQbGF0Zm9ybS4gIyMKLS0jIyAtLS0tLS0tLS0gIyMKLS0KLS1ob3N0bmFtZSA9IGAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYAotLXVuYW1lIC1tID0gYCh1bmFtZSAtbSkgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAotLXVuYW1lIC1yID0gYCh1bmFtZSAtcikgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAotLXVuYW1lIC1zID0gYCh1bmFtZSAtcykgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAotLXVuYW1lIC12ID0gYCh1bmFtZSAtdikgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAotLQotLS91c3IvYmluL3VuYW1lIC1wID0gYCgvdXNyL2Jpbi91bmFtZSAtcCkgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAotLS9iaW4vdW5hbWUgLVggICAgID0gYCgvYmluL3VuYW1lIC1YKSAyPi9kZXYvbnVsbCAgICAgfHwgZWNobyB1bmtub3duYAotLQotLS9iaW4vYXJjaCAgICAgICAgICAgICAgPSBgKC9iaW4vYXJjaCkgMj4vZGV2L251bGwgICAgICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKLS0vdXNyL2Jpbi9hcmNoIC1rICAgICAgID0gYCgvdXNyL2Jpbi9hcmNoIC1rKSAyPi9kZXYvbnVsbCAgICAgICB8fCBlY2hvIHVua25vd25gCi0tL3Vzci9jb252ZXgvZ2V0c3lzaW5mbyA9IGAoL3Vzci9jb252ZXgvZ2V0c3lzaW5mbykgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAotLWhvc3RpbmZvICAgICAgICAgICAgICAgPSBgKGhvc3RpbmZvKSAyPi9kZXYvbnVsbCAgICAgICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKLS0vYmluL21hY2hpbmUgICAgICAgICAgID0gYCgvYmluL21hY2hpbmUpIDI+L2Rldi9udWxsICAgICAgICAgICB8fCBlY2hvIHVua25vd25gCi0tL3Vzci9iaW4vb3NsZXZlbCAgICAgICA9IGAoL3Vzci9iaW4vb3NsZXZlbCkgMj4vZGV2L251bGwgICAgICAgfHwgZWNobyB1bmtub3duYAotLS9iaW4vdW5pdmVyc2UgICAgICAgICAgPSBgKC9iaW4vdW5pdmVyc2UpIDI+L2Rldi9udWxsICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKLS0KLS1fQVNVTkFNRQotLQotLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLS1mb3IgYXNfZGlyIGluICRQQVRICi0tZG8KLS0gIElGUz0kYXNfc2F2ZV9JRlMKLS0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0tICBlY2hvICJQQVRIOiAkYXNfZGlyIgotLWRvbmUKLS0KLS19ID4mNQotLQotLWNhdCA+JjUgPDxfQUNFT0YKLS0KLS0KLS0jIyAtLS0tLS0tLS0tLSAjIwotLSMjIENvcmUgdGVzdHMuICMjCi0tIyMgLS0tLS0tLS0tLS0gIyMKLS0KLS1fQUNFT0YKLS0KLS0KLS0jIEtlZXAgYSB0cmFjZSBvZiB0aGUgY29tbWFuZCBsaW5lLgotLSMgU3RyaXAgb3V0IC0tbm8tY3JlYXRlIGFuZCAtLW5vLXJlY3Vyc2lvbiBzbyB0aGV5IGRvIG5vdCBwaWxlIHVwLgotLSMgU3RyaXAgb3V0IC0tc2lsZW50IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byByZWNvcmQgaXQgZm9yIGZ1dHVyZSBydW5zLgotLSMgQWxzbyBxdW90ZSBhbnkgYXJncyBjb250YWluaW5nIHNoZWxsIG1ldGEtY2hhcmFjdGVycy4KLS0jIE1ha2UgdHdvIHBhc3NlcyB0byBhbGxvdyBmb3IgcHJvcGVyIGR1cGxpY2F0ZS1hcmd1bWVudCBzdXBwcmVzc2lvbi4KLS1hY19jb25maWd1cmVfYXJncz0KLS1hY19jb25maWd1cmVfYXJnczA9Ci0tYWNfY29uZmlndXJlX2FyZ3MxPQotLWFjX3NlcD0KLS1hY19tdXN0X2tlZXBfbmV4dD1mYWxzZQotLWZvciBhY19wYXNzIGluIDEgMgotLWRvCi0tICBmb3IgYWNfYXJnCi0tICBkbwotLSAgICBjYXNlICRhY19hcmcgaW4KLS0gICAgLW5vLWNyZWF0ZSB8IC0tbm8tYyogfCAtbiB8IC1uby1yZWN1cnNpb24gfCAtLW5vLXIqKSBjb250aW51ZSA7OwotLSAgICAtcSB8IC1xdWlldCB8IC0tcXVpZXQgfCAtLXF1aWUgfCAtLXF1aSB8IC0tcXUgfCAtLXEgXAotLSAgICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCkKLS0gICAgICBjb250aW51ZSA7OwotLSAgICAqIiAiKnwqIgkiKnwqW1xbXF1cflwjXCRcXlwmXCpcKFwpXHtcfVxcXHxcO1w8XD5cP1wiXCddKikKLS0gICAgICBhY19hcmc9YGVjaG8gIiRhY19hcmciIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7Ci0tICAgIGVzYWMKLS0gICAgY2FzZSAkYWNfcGFzcyBpbgotLSAgICAxKSBhY19jb25maWd1cmVfYXJnczA9IiRhY19jb25maWd1cmVfYXJnczAgJyRhY19hcmcnIiA7OwotLSAgICAyKQotLSAgICAgIGFjX2NvbmZpZ3VyZV9hcmdzMT0iJGFjX2NvbmZpZ3VyZV9hcmdzMSAnJGFjX2FyZyciCi0tICAgICAgaWYgdGVzdCAkYWNfbXVzdF9rZWVwX25leHQgPSB0cnVlOyB0aGVuCi0tICAgICAgICBhY19tdXN0X2tlZXBfbmV4dD1mYWxzZSAjIEdvdCB2YWx1ZSwgYmFjayB0byBub3JtYWwuCi0tICAgICAgZWxzZQotLSAgICAgICAgY2FzZSAkYWNfYXJnIGluCi0tICAgICAgICAgICo9KiB8IC0tY29uZmlnLWNhY2hlIHwgLUMgfCAtZGlzYWJsZS0qIHwgLS1kaXNhYmxlLSogXAotLSAgICAgICAgICB8IC1lbmFibGUtKiB8IC0tZW5hYmxlLSogfCAtZ2FzIHwgLS1nKiB8IC1uZnAgfCAtLW5mKiBcCi0tICAgICAgICAgIHwgLXEgfCAtcXVpZXQgfCAtLXEqIHwgLXNpbGVudCB8IC0tc2lsKiB8IC12IHwgLXZlcmIqIFwKLS0gICAgICAgICAgfCAtd2l0aC0qIHwgLS13aXRoLSogfCAtd2l0aG91dC0qIHwgLS13aXRob3V0LSogfCAtLXgpCi0tICAgICAgICAgICAgY2FzZSAiJGFjX2NvbmZpZ3VyZV9hcmdzMCAiIGluCi0tICAgICAgICAgICAgICAiJGFjX2NvbmZpZ3VyZV9hcmdzMSIqIiAnJGFjX2FyZycgIiogKSBjb250aW51ZSA7OwotLSAgICAgICAgICAgIGVzYWMKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgICAtKiApIGFjX211c3Rfa2VlcF9uZXh0PXRydWUgOzsKLS0gICAgICAgIGVzYWMKLS0gICAgICBmaQotLSAgICAgIGFjX2NvbmZpZ3VyZV9hcmdzPSIkYWNfY29uZmlndXJlX2FyZ3MkYWNfc2VwJyRhY19hcmcnIgotLSAgICAgICMgR2V0IHJpZCBvZiB0aGUgbGVhZGluZyBzcGFjZS4KLS0gICAgICBhY19zZXA9IiAiCi0tICAgICAgOzsKLS0gICAgZXNhYwotLSAgZG9uZQotLWRvbmUKLS0kYXNfdW5zZXQgYWNfY29uZmlndXJlX2FyZ3MwIHx8IHRlc3QgIiR7YWNfY29uZmlndXJlX2FyZ3MwK3NldH0iICE9IHNldCB8fCB7IGFjX2NvbmZpZ3VyZV9hcmdzMD07IGV4cG9ydCBhY19jb25maWd1cmVfYXJnczA7IH0KLS0kYXNfdW5zZXQgYWNfY29uZmlndXJlX2FyZ3MxIHx8IHRlc3QgIiR7YWNfY29uZmlndXJlX2FyZ3MxK3NldH0iICE9IHNldCB8fCB7IGFjX2NvbmZpZ3VyZV9hcmdzMT07IGV4cG9ydCBhY19jb25maWd1cmVfYXJnczE7IH0KLS0KLS0jIFdoZW4gaW50ZXJydXB0ZWQgb3IgZXhpdCdkLCBjbGVhbnVwIHRlbXBvcmFyeSBmaWxlcywgYW5kIGNvbXBsZXRlCi0tIyBjb25maWcubG9nLiAgV2UgcmVtb3ZlIGNvbW1lbnRzIGJlY2F1c2UgYW55d2F5IHRoZSBxdW90ZXMgaW4gdGhlcmUKLS0jIHdvdWxkIGNhdXNlIHByb2JsZW1zIG9yIGxvb2sgdWdseS4KLS0jIFdBUk5JTkc6IEJlIHN1cmUgbm90IHRvIHVzZSBzaW5nbGUgcXVvdGVzIGluIHRoZXJlLCBhcyBzb21lIHNoZWxscywKLS0jIHN1Y2ggYXMgb3VyIERVIDUuMCBmcmllbmQsIHdpbGwgdGhlbiBgY2xvc2UnIHRoZSB0cmFwLgotLXRyYXAgJ2V4aXRfc3RhdHVzPSQ/Ci0tICAjIFNhdmUgaW50byBjb25maWcubG9nIHNvbWUgaW5mb3JtYXRpb24gdGhhdCBtaWdodCBoZWxwIGluIGRlYnVnZ2luZy4KLS0gIHsKLS0gICAgZWNobwotLQotLSAgICBjYXQgPDxcX0FTQk9YCi0tIyMgLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIENhY2hlIHZhcmlhYmxlcy4gIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tICMjCi0tX0FTQk9YCi0tICAgIGVjaG8KLS0gICAgIyBUaGUgZm9sbG93aW5nIHdheSBvZiB3cml0aW5nIHRoZSBjYWNoZSBtaXNoYW5kbGVzIG5ld2xpbmVzIGluIHZhbHVlcywKLS17Ci0tICAoc2V0KSAyPiYxIHwKLS0gICAgY2FzZSBgKGFjX3NwYWNlPSciJyInICciJyInOyBzZXQgfCBncmVwIGFjX3NwYWNlKSAyPiYxYCBpbgotLSAgICAqYWNfc3BhY2U9XCAqKQotLSAgICAgIHNlZCAtbiBcCi0tICAgICAgICAicy8nIiciJy8nIiciJ1xcXFwnIiciJyciJyInL2c7Ci0tICAgIAkgIHMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKlxcKT1cXCguKlxcKS9cXDE9JyInIidcXDInIiciJy9wIgotLSAgICAgIDs7Ci0tICAgICopCi0tICAgICAgc2VkIC1uIFwKLS0gICAgICAgICJzL15cXChbXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSpcXCk9XFwoLipcXCkvXFwxPVxcMi9wIgotLSAgICAgIDs7Ci0tICAgIGVzYWM7Ci0tfQotLSAgICBlY2hvCi0tCi0tICAgIGNhdCA8PFxfQVNCT1gKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIE91dHB1dCB2YXJpYWJsZXMuICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS1fQVNCT1gKLS0gICAgZWNobwotLSAgICBmb3IgYWNfdmFyIGluICRhY19zdWJzdF92YXJzCi0tICAgIGRvCi0tICAgICAgZXZhbCBhY192YWw9JGBlY2hvICRhY192YXJgCi0tICAgICAgZWNobyAiJGFjX3Zhcj0nIiciJyRhY192YWwnIiciJyIKLS0gICAgZG9uZSB8IHNvcnQKLS0gICAgZWNobwotLQotLSAgICBpZiB0ZXN0IC1uICIkYWNfc3Vic3RfZmlsZXMiOyB0aGVuCi0tICAgICAgY2F0IDw8XF9BU0JPWAotLSMjIC0tLS0tLS0tLS0tLS0gIyMKLS0jIyBPdXRwdXQgZmlsZXMuICMjCi0tIyMgLS0tLS0tLS0tLS0tLSAjIwotLV9BU0JPWAotLSAgICAgIGVjaG8KLS0gICAgICBmb3IgYWNfdmFyIGluICRhY19zdWJzdF9maWxlcwotLSAgICAgIGRvCi0tCWV2YWwgYWNfdmFsPSRgZWNobyAkYWNfdmFyYAotLSAgICAgICAgZWNobyAiJGFjX3Zhcj0nIiciJyRhY192YWwnIiciJyIKLS0gICAgICBkb25lIHwgc29ydAotLSAgICAgIGVjaG8KLS0gICAgZmkKLS0KLS0gICAgaWYgdGVzdCAtcyBjb25mZGVmcy5oOyB0aGVuCi0tICAgICAgY2F0IDw8XF9BU0JPWAotLSMjIC0tLS0tLS0tLS0tICMjCi0tIyMgY29uZmRlZnMuaC4gIyMKLS0jIyAtLS0tLS0tLS0tLSAjIwotLV9BU0JPWAotLSAgICAgIGVjaG8KLS0gICAgICBzZWQgIi9eJC9kIiBjb25mZGVmcy5oIHwgc29ydAotLSAgICAgIGVjaG8KLS0gICAgZmkKLS0gICAgdGVzdCAiJGFjX3NpZ25hbCIgIT0gMCAmJgotLSAgICAgIGVjaG8gIiRhc19tZTogY2F1Z2h0IHNpZ25hbCAkYWNfc2lnbmFsIgotLSAgICBlY2hvICIkYXNfbWU6IGV4aXQgJGV4aXRfc3RhdHVzIgotLSAgfSA+JjUKLS0gIHJtIC1mIGNvcmUgY29yZS4qICouY29yZSAmJgotLSAgcm0gLXJmIGNvbmZ0ZXN0KiBjb25mZGVmcyogY29uZiQkKiAkYWNfY2xlYW5fZmlsZXMgJiYKLS0gICAgZXhpdCAkZXhpdF9zdGF0dXMKLS0gICAgICcgMAotLWZvciBhY19zaWduYWwgaW4gMSAyIDEzIDE1OyBkbwotLSAgdHJhcCAnYWNfc2lnbmFsPSckYWNfc2lnbmFsJzsgeyAoZXhpdCAxKTsgZXhpdCAxOyB9JyAkYWNfc2lnbmFsCi0tZG9uZQotLWFjX3NpZ25hbD0wCi0tCi0tIyBjb25mZGVmcy5oIGF2b2lkcyBPUyBjb21tYW5kIGxpbmUgbGVuZ3RoIGxpbWl0cyB0aGF0IERFRlMgY2FuIGV4Y2VlZC4KLS1ybSAtcmYgY29uZnRlc3QqIGNvbmZkZWZzLmgKLS0jIEFJWCBjcHAgbG9zZXMgb24gYW4gZW1wdHkgZmlsZSwgc28gbWFrZSBzdXJlIGl0IGNvbnRhaW5zIGF0IGxlYXN0IGEgbmV3bGluZS4KLS1lY2hvID5jb25mZGVmcy5oCi0tCi0tIyBQcmVkZWZpbmVkIHByZXByb2Nlc3NvciB2YXJpYWJsZXMuCi0tCi0tY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotLSNkZWZpbmUgUEFDS0FHRV9OQU1FICIkUEFDS0FHRV9OQU1FIgotLV9BQ0VPRgotLQotLQotLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLS0jZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAiJFBBQ0tBR0VfVEFSTkFNRSIKLS1fQUNFT0YKLS0KLS0KLS1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0tI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gIiRQQUNLQUdFX1ZFUlNJT04iCi0tX0FDRU9GCi0tCi0tCi0tY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotLSNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgIiRQQUNLQUdFX1NUUklORyIKLS1fQUNFT0YKLS0KLS0KLS1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0tI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAiJFBBQ0tBR0VfQlVHUkVQT1JUIgotLV9BQ0VPRgotLQotLQotLSMgTGV0IHRoZSBzaXRlIGZpbGUgc2VsZWN0IGFuIGFsdGVybmF0ZSBjYWNoZSBmaWxlIGlmIGl0IHdhbnRzIHRvLgotICMgUHJlZmVyIGV4cGxpY2l0bHkgc2VsZWN0ZWQgZmlsZSB0byBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIG9uZXMuCi0gaWYgdGVzdCAteiAiJENPTkZJR19TSVRFIjsgdGhlbgotICAgaWYgdGVzdCAieCRwcmVmaXgiICE9IHhOT05FOyB0aGVuCi1AQCAtMTE3MSwxMDYgKzQ5OCw0MiBAQAotIGZpCi0gZm9yIGFjX3NpdGVfZmlsZSBpbiAkQ09ORklHX1NJVEU7IGRvCi0gICBpZiB0ZXN0IC1yICIkYWNfc2l0ZV9maWxlIjsgdGhlbgotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUiID4mNQotLWVjaG8gIiRhc19tZTogbG9hZGluZyBzaXRlIHNjcmlwdCAkYWNfc2l0ZV9maWxlIiA+JjY7fQotLSAgICBzZWQgJ3MvXi98IC8nICIkYWNfc2l0ZV9maWxlIiA+JjUKLSsgICAgZWNobyAibG9hZGluZyBzaXRlIHNjcmlwdCAkYWNfc2l0ZV9maWxlIgotICAgICAuICIkYWNfc2l0ZV9maWxlIgotICAgZmkKLSBkb25lCi0gCi0gaWYgdGVzdCAtciAiJGNhY2hlX2ZpbGUiOyB0aGVuCi0tICAjIFNvbWUgdmVyc2lvbnMgb2YgYmFzaCB3aWxsIGZhaWwgdG8gc291cmNlIC9kZXYvbnVsbCAoc3BlY2lhbAotLSAgIyBmaWxlcyBhY3R1YWxseSksIHNvIHdlIGF2b2lkIGRvaW5nIHRoYXQuCi0tICBpZiB0ZXN0IC1mICIkY2FjaGVfZmlsZSI7IHRoZW4KLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogbG9hZGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1Ci0tZWNobyAiJGFzX21lOiBsb2FkaW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQotLSAgICBjYXNlICRjYWNoZV9maWxlIGluCi0tICAgICAgW1xcL10qIHwgPzpbXFwvXSogKSAuICRjYWNoZV9maWxlOzsKLS0gICAgICAqKSAgICAgICAgICAgICAgICAgICAgICAuIC4vJGNhY2hlX2ZpbGU7OwotLSAgICBlc2FjCi0tICBmaQotKyAgZWNobyAibG9hZGluZyBjYWNoZSAkY2FjaGVfZmlsZSIKLSsgIC4gJGNhY2hlX2ZpbGUKLSBlbHNlCi0tICB7IGVjaG8gIiRhc19tZTokTElORU5POiBjcmVhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1Ci0tZWNobyAiJGFzX21lOiBjcmVhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30KLS0gID4kY2FjaGVfZmlsZQotKyAgZWNobyAiY3JlYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiCi0rICA+ICRjYWNoZV9maWxlCi0gZmkKLSAKLS0jIENoZWNrIHRoYXQgdGhlIHByZWNpb3VzIHZhcmlhYmxlcyBzYXZlZCBpbiB0aGUgY2FjaGUgaGF2ZSBrZXB0IHRoZSBzYW1lCi0tIyB2YWx1ZS4KLS1hY19jYWNoZV9jb3JydXB0ZWQ9ZmFsc2UKLS1mb3IgYWNfdmFyIGluIGAoc2V0KSAyPiYxIHwKLS0gICAgICAgICAgICAgICBzZWQgLW4gJ3MvXmFjX2Vudl9cKFthLXpBLVpfMC05XSpcKV9zZXQ9LiovXDEvcCdgOyBkbwotLSAgZXZhbCBhY19vbGRfc2V0PVwkYWNfY3ZfZW52XyR7YWNfdmFyfV9zZXQKLS0gIGV2YWwgYWNfbmV3X3NldD1cJGFjX2Vudl8ke2FjX3Zhcn1fc2V0Ci0tICBldmFsIGFjX29sZF92YWw9IlwkYWNfY3ZfZW52XyR7YWNfdmFyfV92YWx1ZSIKLS0gIGV2YWwgYWNfbmV3X3ZhbD0iXCRhY19lbnZfJHthY192YXJ9X3ZhbHVlIgotLSAgY2FzZSAkYWNfb2xkX3NldCwkYWNfbmV3X3NldCBpbgotLSAgICBzZXQsKQotLSAgICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBcYCRhY192YXInIHdhcyBzZXQgdG8gXGAkYWNfb2xkX3ZhbCcgaW4gdGhlIHByZXZpb3VzIHJ1biIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgc2V0IHRvIFxgJGFjX29sZF92YWwnIGluIHRoZSBwcmV2aW91cyBydW4iID4mMjt9Ci0tICAgICAgYWNfY2FjaGVfY29ycnVwdGVkPTogOzsKLS0gICAgLHNldCkKLS0gICAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgbm90IHNldCBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBcYCRhY192YXInIHdhcyBub3Qgc2V0IGluIHRoZSBwcmV2aW91cyBydW4iID4mMjt9Ci0tICAgICAgYWNfY2FjaGVfY29ycnVwdGVkPTogOzsKLS0gICAgLCk7OwotLSAgICAqKQotLSAgICAgIGlmIHRlc3QgIngkYWNfb2xkX3ZhbCIgIT0gIngkYWNfbmV3X3ZhbCI7IHRoZW4KLS0gICAgICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBcYCRhY192YXInIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBcYCRhY192YXInIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjI7fQotLSAgICAgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogICBmb3JtZXIgdmFsdWU6ICAkYWNfb2xkX3ZhbCIgPiY1Ci0tZWNobyAiJGFzX21lOiAgIGZvcm1lciB2YWx1ZTogICRhY19vbGRfdmFsIiA+JjI7fQotLSAgICAgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogICBjdXJyZW50IHZhbHVlOiAkYWNfbmV3X3ZhbCIgPiY1Ci0tZWNobyAiJGFzX21lOiAgIGN1cnJlbnQgdmFsdWU6ICRhY19uZXdfdmFsIiA+JjI7fQotLSAgICAgICAgYWNfY2FjaGVfY29ycnVwdGVkPToKLS0gICAgICBmaTs7Ci0tICBlc2FjCi0tICAjIFBhc3MgcHJlY2lvdXMgdmFyaWFibGVzIHRvIGNvbmZpZy5zdGF0dXMuCi0tICBpZiB0ZXN0ICIkYWNfbmV3X3NldCIgPSBzZXQ7IHRoZW4KLS0gICAgY2FzZSAkYWNfbmV3X3ZhbCBpbgotLSAgICAqIiAiKnwqIgkiKnwqW1xbXF1cflwjXCRcXlwmXCpcKFwpXHtcfVxcXHxcO1w8XD5cP1wiXCddKikKLS0gICAgICBhY19hcmc9JGFjX3Zhcj1gZWNobyAiJGFjX25ld192YWwiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7Ci0tICAgICopIGFjX2FyZz0kYWNfdmFyPSRhY19uZXdfdmFsIDs7Ci0tICAgIGVzYWMKLS0gICAgY2FzZSAiICRhY19jb25maWd1cmVfYXJncyAiIGluCi0tICAgICAgKiIgJyRhY19hcmcnICIqKSA7OyAjIEF2b2lkIGR1cHMuICBVc2Ugb2YgcXVvdGVzIGVuc3VyZXMgYWNjdXJhY3kuCi0tICAgICAgKikgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyAnJGFjX2FyZyciIDs7Ci0tICAgIGVzYWMKLS0gIGZpCi0tZG9uZQotLWlmICRhY19jYWNoZV9jb3JydXB0ZWQ7IHRoZW4KLS0gIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBjaGFuZ2VzIGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVpbGQiID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IGNoYW5nZXMgaW4gdGhlIGVudmlyb25tZW50IGNhbiBjb21wcm9taXNlIHRoZSBidWlsZCIgPiYyO30KLS0gIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IHJ1biBcYG1ha2UgZGlzdGNsZWFuJyBhbmQvb3IgXGBybSAkY2FjaGVfZmlsZScgYW5kIHN0YXJ0IG92ZXIiID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IHJ1biBcYG1ha2UgZGlzdGNsZWFuJyBhbmQvb3IgXGBybSAkY2FjaGVfZmlsZScgYW5kIHN0YXJ0IG92ZXIiID4mMjt9Ci0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tZmkKLS0KLSBhY19leHQ9YwotKyMgQ0ZMQUdTIGlzIG5vdCBpbiBhY19jcHAgYmVjYXVzZSAtZywgLU8sIGV0Yy4gYXJlIG5vdCB2YWxpZCBjcHAgb3B0aW9ucy4KLSBhY19jcHA9JyRDUFAgJENQUEZMQUdTJwotLWFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKLS1hY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotLWFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKLSthY19jb21waWxlPScke0NDLWNjfSAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0IDE+JjUnCi0rYWNfbGluaz0nJHtDQy1jY30gLW8gY29uZnRlc3Qke2FjX2V4ZWV4dH0gJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyAxPiY1JwotK2Nyb3NzX2NvbXBpbGluZz0kYWNfY3ZfcHJvZ19jY19jcm9zcwotIAotK2FjX2V4ZWV4dD0KLSthY19vYmpleHQ9bwotK2lmIChlY2hvICJ0ZXN0aW5nXGMiOyBlY2hvIDEsMiwzKSB8IGdyZXAgYyA+L2Rldi9udWxsOyB0aGVuCi0rICAjIFN0YXJkZW50IFZpc3RyYSBTVlI0IGdyZXAgbGFja3MgLWUsIHNheXMgZ2hhemlAY2FpcC5ydXRnZXJzLmVkdS4KLSsgIGlmIChlY2hvIC1uIHRlc3Rpbmc7IGVjaG8gMSwyLDMpIHwgc2VkIHMvLW4veG4vIHwgZ3JlcCB4biA+L2Rldi9udWxsOyB0aGVuCi0rICAgIGFjX249IGFjX2M9JwotKycgYWNfdD0nCScKLSsgIGVsc2UKLSsgICAgYWNfbj0tbiBhY19jPSBhY190PQotKyAgZmkKLStlbHNlCi0rICBhY19uPSBhY19jPSdcYycgYWNfdD0KLStmaQotIAotIAotIAotLQotLQotLQotLQotLQotLQotLQotLQotLQotLQotLQotLQotLQotLQotLQotLQotIGFjX2F1eF9kaXI9Ci0gZm9yIGFjX2RpciBpbiAkc3JjZGlyICRzcmNkaXIvLi4gJHNyY2Rpci8uLi8uLjsgZG8KLSAgIGlmIHRlc3QgLWYgJGFjX2Rpci9pbnN0YWxsLXNoOyB0aGVuCi1AQCAtMTI4MSw3NDAgKzU0NCwzMTIgQEAKLSAgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCi0gICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwuc2ggLWMiCi0gICAgIGJyZWFrCi0tICBlbGlmIHRlc3QgLWYgJGFjX2Rpci9zaHRvb2w7IHRoZW4KLS0gICAgYWNfYXV4X2Rpcj0kYWNfZGlyCi0tICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL3NodG9vbCBpbnN0YWxsIC1jIgotLSAgICBicmVhawotICAgZmkKLSBkb25lCi0gaWYgdGVzdCAteiAiJGFjX2F1eF9kaXIiOyB0aGVuCi0tICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBjYW5ub3QgZmluZCBpbnN0YWxsLXNoIG9yIGluc3RhbGwuc2ggaW4gJHNyY2RpciAkc3JjZGlyLy4uICRzcmNkaXIvLi4vLi4iID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBmaW5kIGluc3RhbGwtc2ggb3IgaW5zdGFsbC5zaCBpbiAkc3JjZGlyICRzcmNkaXIvLi4gJHNyY2Rpci8uLi8uLiIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSsgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogY2FuIG5vdCBmaW5kIGluc3RhbGwtc2ggb3IgaW5zdGFsbC5zaCBpbiAkc3JjZGlyICRzcmNkaXIvLi4gJHNyY2Rpci8uLi8uLiIgMT4mMjsgZXhpdCAxOyB9Ci0gZmkKLS1hY19jb25maWdfZ3Vlc3M9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiCi0tYWNfY29uZmlnX3N1Yj0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIiCi0tYWNfY29uZmlndXJlPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlndXJlIiAjIFRoaXMgc2hvdWxkIGJlIEN5Z251cyBjb25maWd1cmUuCi0rYWNfY29uZmlnX2d1ZXNzPSRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcwotK2FjX2NvbmZpZ19zdWI9JGFjX2F1eF9kaXIvY29uZmlnLnN1YgotK2FjX2NvbmZpZ3VyZT0kYWNfYXV4X2Rpci9jb25maWd1cmUgIyBUaGlzIHNob3VsZCBiZSBDeWdudXMgY29uZmlndXJlLgotIAotLSMgTWFrZSBzdXJlIHdlIGNhbiBydW4gY29uZmlnLnN1Yi4KLS0kYWNfY29uZmlnX3N1YiBzdW40ID4vZGV2L251bGwgMj4mMSB8fAotLSAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogY2Fubm90IHJ1biAkYWNfY29uZmlnX3N1YiIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IHJ1biAkYWNfY29uZmlnX3N1YiIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSAKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9idWlsZCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0tICBhY19jdl9idWlsZF9hbGlhcz0kYnVpbGRfYWxpYXMKLS10ZXN0IC16ICIkYWNfY3ZfYnVpbGRfYWxpYXMiICYmCi0tICBhY19jdl9idWlsZF9hbGlhcz1gJGFjX2NvbmZpZ19ndWVzc2AKLS10ZXN0IC16ICIkYWNfY3ZfYnVpbGRfYWxpYXMiICYmCi0tICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBjYW5ub3QgZ3Vlc3MgYnVpbGQgdHlwZTsgeW91IG11c3Qgc3BlY2lmeSBvbmUiID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBndWVzcyBidWlsZCB0eXBlOyB5b3UgbXVzdCBzcGVjaWZ5IG9uZSIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLS1hY19jdl9idWlsZD1gJGFjX2NvbmZpZ19zdWIgJGFjX2N2X2J1aWxkX2FsaWFzYCB8fAotLSAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogJGFjX2NvbmZpZ19zdWIgJGFjX2N2X2J1aWxkX2FsaWFzIGZhaWxlZCIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogJGFjX2NvbmZpZ19zdWIgJGFjX2N2X2J1aWxkX2FsaWFzIGZhaWxlZCIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSsjIERvIHNvbWUgZXJyb3IgY2hlY2tpbmcgYW5kIGRlZmF1bHRpbmcgZm9yIHRoZSBob3N0IGFuZCB0YXJnZXQgdHlwZS4KLSsjIFRoZSBpbnB1dHMgYXJlOgotKyMgICAgY29uZmlndXJlIC0taG9zdD1IT1NUIC0tdGFyZ2V0PVRBUkdFVCAtLWJ1aWxkPUJVSUxEIE5PTk9QVAotKyMKLSsjIFRoZSBydWxlcyBhcmU6Ci0rIyAxLiBZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIHNwZWNpZnkgLS1ob3N0LCAtLXRhcmdldCwgYW5kIG5vbm9wdCBhdCB0aGUKLSsjICAgIHNhbWUgdGltZS4KLSsjIDIuIEhvc3QgZGVmYXVsdHMgdG8gbm9ub3B0LgotKyMgMy4gSWYgbm9ub3B0IGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gaG9zdCBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBob3N0LAotKyMgICAgYXMgZGV0ZXJtaW5lZCBieSBjb25maWcuZ3Vlc3MuCi0rIyA0LiBUYXJnZXQgYW5kIGJ1aWxkIGRlZmF1bHQgdG8gbm9ub3B0LgotKyMgNS4gSWYgbm9ub3B0IGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gdGFyZ2V0IGFuZCBidWlsZCBkZWZhdWx0IHRvIGhvc3QuCi0gCi0rIyBUaGUgYWxpYXNlcyBzYXZlIHRoZSBuYW1lcyB0aGUgdXNlciBzdXBwbGllZCwgd2hpbGUgJGhvc3QgZXRjLgotKyMgd2lsbCBnZXQgY2Fub25pY2FsaXplZC4KLStjYXNlICRob3N0LS0tJHRhcmdldC0tLSRub25vcHQgaW4KLStOT05FLS0tKi0tLSogfCAqLS0tTk9ORS0tLSogfCAqLS0tKi0tLU5PTkUpIDs7Ci0rKikgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBjYW4gb25seSBjb25maWd1cmUgZm9yIG9uZSBob3N0IGFuZCBvbmUgdGFyZ2V0IGF0IGEgdGltZSIgMT4mMjsgZXhpdCAxOyB9IDs7Ci0rZXNhYwotKwotKwotKyMgTWFrZSBzdXJlIHdlIGNhbiBydW4gY29uZmlnLnN1Yi4KLStpZiAke0NPTkZJR19TSEVMTC0vYmluL3NofSAkYWNfY29uZmlnX3N1YiBzdW40ID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rZWxzZSB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IGNhbiBub3QgcnVuICRhY19jb25maWdfc3ViIiAxPiYyOyBleGl0IDE7IH0KLSBmaQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9idWlsZCIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2J1aWxkIiA+JjYKLS1idWlsZD0kYWNfY3ZfYnVpbGQKLS1idWlsZF9jcHU9YGVjaG8gJGFjX2N2X2J1aWxkIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AKLS1idWlsZF92ZW5kb3I9YGVjaG8gJGFjX2N2X2J1aWxkIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDIvJ2AKLS1idWlsZF9vcz1gZWNobyAkYWNfY3ZfYnVpbGQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAotIAotK2VjaG8gJGFjX24gImNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZTo1ODU6IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiID4mNQotIAotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9ob3N0K3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWVsc2UKLS0gIGFjX2N2X2hvc3RfYWxpYXM9JGhvc3RfYWxpYXMKLS10ZXN0IC16ICIkYWNfY3ZfaG9zdF9hbGlhcyIgJiYKLS0gIGFjX2N2X2hvc3RfYWxpYXM9JGFjX2N2X2J1aWxkX2FsaWFzCi0tYWNfY3ZfaG9zdD1gJGFjX2NvbmZpZ19zdWIgJGFjX2N2X2hvc3RfYWxpYXNgIHx8Ci0tICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiAkYWNfY29uZmlnX3N1YiAkYWNfY3ZfaG9zdF9hbGlhcyBmYWlsZWQiID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6ICRhY19jb25maWdfc3ViICRhY19jdl9ob3N0X2FsaWFzIGZhaWxlZCIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLStob3N0X2FsaWFzPSRob3N0Ci0rY2FzZSAiJGhvc3RfYWxpYXMiIGluCi0rTk9ORSkKLSsgIGNhc2UgJG5vbm9wdCBpbgotKyAgTk9ORSkKLSsgICAgaWYgaG9zdF9hbGlhcz1gJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0gJGFjX2NvbmZpZ19ndWVzc2A7IHRoZW4gOgotKyAgICBlbHNlIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogY2FuIG5vdCBndWVzcyBob3N0IHR5cGU7IHlvdSBtdXN0IHNwZWNpZnkgb25lIiAxPiYyOyBleGl0IDE7IH0KLSsgICAgZmkgOzsKLSsgICopIGhvc3RfYWxpYXM9JG5vbm9wdCA7OwotKyAgZXNhYyA7OwotK2VzYWMKLSAKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9ob3N0IiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfaG9zdCIgPiY2Ci0taG9zdD0kYWNfY3ZfaG9zdAotLWhvc3RfY3B1PWBlY2hvICRhY19jdl9ob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AKLS1ob3N0X3ZlbmRvcj1gZWNobyAkYWNfY3ZfaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wyLydgCi0taG9zdF9vcz1gZWNobyAkYWNfY3ZfaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgCi0raG9zdD1gJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0gJGFjX2NvbmZpZ19zdWIgJGhvc3RfYWxpYXNgCi0raG9zdF9jcHU9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYAotK2hvc3RfdmVuZG9yPWBlY2hvICRob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDIvJ2AKLStob3N0X29zPWBlY2hvICRob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKLStlY2hvICIkYWNfdCIiJGhvc3QiIDE+JjYKLSAKLStlY2hvICRhY19uICJjaGVja2luZyB0YXJnZXQgc3lzdGVtIHR5cGUiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZTo2MDY6IGNoZWNraW5nIHRhcmdldCBzeXN0ZW0gdHlwZSIgPiY1Ci0gCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIHRhcmdldCBzeXN0ZW0gdHlwZSIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyB0YXJnZXQgc3lzdGVtIHR5cGUuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl90YXJnZXQrc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0tZWxzZQotLSAgYWNfY3ZfdGFyZ2V0X2FsaWFzPSR0YXJnZXRfYWxpYXMKLS10ZXN0ICJ4JGFjX2N2X3RhcmdldF9hbGlhcyIgPSAieCIgJiYKLS0gIGFjX2N2X3RhcmdldF9hbGlhcz0kYWNfY3ZfaG9zdF9hbGlhcwotLWFjX2N2X3RhcmdldD1gJGFjX2NvbmZpZ19zdWIgJGFjX2N2X3RhcmdldF9hbGlhc2AgfHwKLS0gIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6ICRhY19jb25maWdfc3ViICRhY19jdl90YXJnZXRfYWxpYXMgZmFpbGVkIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiAkYWNfY29uZmlnX3N1YiAkYWNfY3ZfdGFyZ2V0X2FsaWFzIGZhaWxlZCIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSt0YXJnZXRfYWxpYXM9JHRhcmdldAotK2Nhc2UgIiR0YXJnZXRfYWxpYXMiIGluCi0rTk9ORSkKLSsgIGNhc2UgJG5vbm9wdCBpbgotKyAgTk9ORSkgdGFyZ2V0X2FsaWFzPSRob3N0X2FsaWFzIDs7Ci0rICAqKSB0YXJnZXRfYWxpYXM9JG5vbm9wdCA7OwotKyAgZXNhYyA7OwotK2VzYWMKLSAKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl90YXJnZXQiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl90YXJnZXQiID4mNgotLXRhcmdldD0kYWNfY3ZfdGFyZ2V0Ci0tdGFyZ2V0X2NwdT1gZWNobyAkYWNfY3ZfdGFyZ2V0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AKLS10YXJnZXRfdmVuZG9yPWBlY2hvICRhY19jdl90YXJnZXQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYAotLXRhcmdldF9vcz1gZWNobyAkYWNfY3ZfdGFyZ2V0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKLSt0YXJnZXQ9YCR7Q09ORklHX1NIRUxMLS9iaW4vc2h9ICRhY19jb25maWdfc3ViICR0YXJnZXRfYWxpYXNgCi0rdGFyZ2V0X2NwdT1gZWNobyAkdGFyZ2V0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AKLSt0YXJnZXRfdmVuZG9yPWBlY2hvICR0YXJnZXQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYAotK3RhcmdldF9vcz1gZWNobyAkdGFyZ2V0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKLStlY2hvICIkYWNfdCIiJHRhcmdldCIgMT4mNgotIAotK2VjaG8gJGFjX24gImNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiIuLi4gJGFjX2MiIDE+JjYKLStlY2hvICJjb25maWd1cmU6NjI0OiBjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZSIgPiY1Ci0gCi0tIyBUaGUgYWxpYXNlcyBzYXZlIHRoZSBuYW1lcyB0aGUgdXNlciBzdXBwbGllZCwgd2hpbGUgJGhvc3QgZXRjLgotLSMgd2lsbCBnZXQgY2Fub25pY2FsaXplZC4KLS10ZXN0IC1uICIkdGFyZ2V0X2FsaWFzIiAmJgotK2J1aWxkX2FsaWFzPSRidWlsZAotK2Nhc2UgIiRidWlsZF9hbGlhcyIgaW4KLStOT05FKQotKyAgY2FzZSAkbm9ub3B0IGluCi0rICBOT05FKSBidWlsZF9hbGlhcz0kaG9zdF9hbGlhcyA7OwotKyAgKikgYnVpbGRfYWxpYXM9JG5vbm9wdCA7OwotKyAgZXNhYyA7OwotK2VzYWMKLSsKLStidWlsZD1gJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0gJGFjX2NvbmZpZ19zdWIgJGJ1aWxkX2FsaWFzYAotK2J1aWxkX2NwdT1gZWNobyAkYnVpbGQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYAotK2J1aWxkX3ZlbmRvcj1gZWNobyAkYnVpbGQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYAotK2J1aWxkX29zPWBlY2hvICRidWlsZCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgCi0rZWNobyAiJGFjX3QiIiRidWlsZCIgMT4mNgotKwotK3Rlc3QgIiRob3N0X2FsaWFzIiAhPSAiJHRhcmdldF9hbGlhcyIgJiYKLSAgIHRlc3QgIiRwcm9ncmFtX3ByZWZpeCRwcm9ncmFtX3N1ZmZpeCRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lIiA9IFwKLSAgICAgTk9ORU5PTkVzLHgseCwgJiYKLSAgIHByb2dyYW1fcHJlZml4PSR7dGFyZ2V0X2FsaWFzfS0KLS1hY19leHQ9YwotLWFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCi0tYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotLWFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi0tYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQotLWlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1nY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWdjYzsgYWNfd29yZD0kMgotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19DQytzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0tICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCi0tICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotLWVsc2UKLS1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX0NDPSIke2FjX3Rvb2xfcHJlZml4fWdjYyIKLS0gICAgZWNobyAiJGFzX21lOiRMSU5FTk86IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotLSAgICBicmVhayAyCi0tICBmaQotLWRvbmUKLS1kb25lCi0gCi0tZmkKLS1maQotLUNDPSRhY19jdl9wcm9nX0NDCi0taWYgdGVzdCAtbiAiJENDIjsgdGhlbgotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJENDIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kQ0MiID4mNgotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IG5vIiA+JjUKLS1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci0tZmkKLS0KLS1maQotLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0NDIjsgdGhlbgotLSAgYWNfY3RfQ0M9JENDCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotIHNldCBkdW1teSBnY2M7IGFjX3dvcmQ9JDIKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0rZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLStlY2hvICJjb25maWd1cmU6NjQ5OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0NDJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSsgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotLSAgaWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgotLSAgYWNfY3ZfcHJvZ19hY19jdF9DQz0iJGFjX2N0X0NDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLS1lbHNlCi0tYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotLWZvciBhc19kaXIgaW4gJFBBVEgKLS1kbwotLSAgSUZTPSRhc19zYXZlX0lGUwotLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLS0gIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotLSAgaWYgJGFzX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19hY19jdF9DQz0iZ2NjIgotLSAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0tICAgIGJyZWFrIDIKLS0gIGZpCi0tZG9uZQotLWRvbmUKLS0KLS1maQotLWZpCi0tYWNfY3RfQ0M9JGFjX2N2X3Byb2dfYWNfY3RfQ0MKLS1pZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3RfQ0MiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdF9DQyIgPiY2Ci0tZWxzZQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogbm8iID4mNQotLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLS1maQotLQotLSAgQ0M9JGFjX2N0X0NDCi0tZWxzZQotLSAgQ0M9IiRhY19jdl9wcm9nX0NDIgotLWZpCi0tCi0taWYgdGVzdCAteiAiJENDIjsgdGhlbgotLSAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWNjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1jYzsgYWNfd29yZD0kMgotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19DQytzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0gICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCi0gICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotIGVsc2UKLS1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX0NDPSIke2FjX3Rvb2xfcHJlZml4fWNjIgotLSAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0tICAgIGJyZWFrIDIKLS0gIGZpCi0tZG9uZQotLWRvbmUKLS0KLSsgIElGUz0iJHtJRlM9IAl9IjsgYWNfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IjoiCi0rICBhY19kdW1teT0iJFBBVEgiCi0rICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KLSsgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSsgICAgaWYgdGVzdCAtZiAkYWNfZGlyLyRhY193b3JkOyB0aGVuCi0rICAgICAgYWNfY3ZfcHJvZ19DQz0iZ2NjIgotKyAgICAgIGJyZWFrCi0rICAgIGZpCi0rICBkb25lCi0rICBJRlM9IiRhY19zYXZlX2lmcyIKLSBmaQotIGZpCi0tQ0M9JGFjX2N2X3Byb2dfQ0MKLStDQz0iJGFjX2N2X3Byb2dfQ0MiCi0gaWYgdGVzdCAtbiAiJENDIjsgdGhlbgotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJENDIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kQ0MiID4mNgotKyAgZWNobyAiJGFjX3QiIiRDQyIgMT4mNgotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IG5vIiA+JjUKLS1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci0rICBlY2hvICIkYWNfdCIibm8iIDE+JjYKLSBmaQotIAotLWZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQ0MiOyB0aGVuCi0tICBhY19jdF9DQz0kQ0MKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBjYzsgYWNfd29yZD0kMgotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9DQytzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0tICBpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCi0tICBhY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNfY3RfQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotLWVsc2UKLS1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0NDPSJjYyIKLS0gICAgZWNobyAiJGFzX21lOiRMSU5FTk86IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotLSAgICBicmVhayAyCi0tICBmaQotLWRvbmUKLS1kb25lCi0tCi0tZmkKLS1maQotLWFjX2N0X0NDPSRhY19jdl9wcm9nX2FjX2N0X0NDCi0taWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N0X0NDIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3RfQ0MiID4mNgotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IG5vIiA+JjUKLS1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci0tZmkKLS0KLS0gIENDPSRhY19jdF9DQwotLWVsc2UKLS0gIENDPSIkYWNfY3ZfcHJvZ19DQyIKLS1maQotLQotLWZpCi0gaWYgdGVzdCAteiAiJENDIjsgdGhlbgotICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0gc2V0IGR1bW15IGNjOyBhY193b3JkPSQyCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotK2VjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci0rZWNobyAiY29uZmlndXJlOjY3OTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19DQycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0rICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KLSAgIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0gZWxzZQotKyAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iOiIKLSAgIGFjX3Byb2dfcmVqZWN0ZWQ9bm8KLS1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBpZiB0ZXN0ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA9ICIvdXNyL3VjYi9jYyI7IHRoZW4KLS0gICAgICAgYWNfcHJvZ19yZWplY3RlZD15ZXMKLS0gICAgICAgY29udGludWUKLS0gICAgIGZpCi0tICAgIGFjX2N2X3Byb2dfQ0M9ImNjIgotLSAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0tICAgIGJyZWFrIDIKLS0gIGZpCi0tZG9uZQotLWRvbmUKLS0KLSsgIGFjX2R1bW15PSIkUEFUSCIKLSsgIGZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwotKyAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgotKyAgICBpZiB0ZXN0IC1mICRhY19kaXIvJGFjX3dvcmQ7IHRoZW4KLSsgICAgICBpZiB0ZXN0ICIkYWNfZGlyLyRhY193b3JkIiA9ICIvdXNyL3VjYi9jYyI7IHRoZW4KLSsgICAgICAgIGFjX3Byb2dfcmVqZWN0ZWQ9eWVzCi0rCWNvbnRpbnVlCi0rICAgICAgZmkKLSsgICAgICBhY19jdl9wcm9nX0NDPSJjYyIKLSsgICAgICBicmVhawotKyAgICBmaQotKyAgZG9uZQotKyAgSUZTPSIkYWNfc2F2ZV9pZnMiCi0gaWYgdGVzdCAkYWNfcHJvZ19yZWplY3RlZCA9IHllczsgdGhlbgotICAgIyBXZSBmb3VuZCBhIGJvZ29uIGluIHRoZSBwYXRoLCBzbyBtYWtlIHN1cmUgd2UgbmV2ZXIgdXNlIGl0LgotICAgc2V0IGR1bW15ICRhY19jdl9wcm9nX0NDCi0gICBzaGlmdAotLSAgaWYgdGVzdCAkIyAhPSAwOyB0aGVuCi0rICBpZiB0ZXN0ICQjIC1ndCAwOyB0aGVuCi0gICAgICMgV2UgY2hvc2UgYSBkaWZmZXJlbnQgY29tcGlsZXIgZnJvbSB0aGUgYm9ndXMgb25lLgotICAgICAjIEhvd2V2ZXIsIGl0IGhhcyB0aGUgc2FtZSBiYXNlbmFtZSwgc28gdGhlIGJvZ29uIHdpbGwgYmUgY2hvc2VuCi0gICAgICMgZmlyc3QgaWYgd2Ugc2V0IENDIHRvIGp1c3QgdGhlIGJhc2VuYW1lOyB1c2UgdGhlIGZ1bGwgZmlsZSBuYW1lLgotICAgICBzaGlmdAotLSAgICBhY19jdl9wcm9nX0NDPSIkYXNfZGlyLyRhY193b3JkJHsxKycgJ30kQCIKLSsgICAgc2V0IGR1bW15ICIkYWNfZGlyLyRhY193b3JkIiAiJEAiCi0rICAgIHNoaWZ0Ci0rICAgIGFjX2N2X3Byb2dfQ0M9IiRAIgotICAgZmkKLSBmaQotIGZpCi0gZmkKLS1DQz0kYWNfY3ZfcHJvZ19DQwotK0NDPSIkYWNfY3ZfcHJvZ19DQyIKLSBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkQ0MiID4mNQotLWVjaG8gIiR7RUNIT19UfSRDQyIgPiY2Ci0rICBlY2hvICIkYWNfdCIiJENDIiAxPiY2Ci0gZWxzZQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogbm8iID4mNQotLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLSsgIGVjaG8gIiRhY190IiJubyIgMT4mNgotIGZpCi0gCi0tZmkKLS1pZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCi0tICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0tICBmb3IgYWNfcHJvZyBpbiBjbAotLSAgZG8KLS0gICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotKyAgaWYgdGVzdCAteiAiJENDIjsgdGhlbgotKyAgICBjYXNlICJgdW5hbWUgLXNgIiBpbgotKyAgICAqd2luMzIqIHwgKldJTjMyKikKLSsgICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImNsIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgY2w7IGFjX3dvcmQ9JDIKLStlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZTo3MzA6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0raWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfQ0MnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotKyAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCi0gICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotIGVsc2UKLS1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX0NDPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKLS0gICAgZWNobyAiJGFzX21lOiRMSU5FTk86IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotLSAgICBicmVhayAyCi0tICBmaQotLWRvbmUKLS1kb25lCi0tCi0rICBJRlM9IiR7SUZTPSAJfSI7IGFjX3NhdmVfaWZzPSIkSUZTIjsgSUZTPSI6IgotKyAgYWNfZHVtbXk9IiRQQVRIIgotKyAgZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCi0rICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0rICAgIGlmIHRlc3QgLWYgJGFjX2Rpci8kYWNfd29yZDsgdGhlbgotKyAgICAgIGFjX2N2X3Byb2dfQ0M9ImNsIgotKyAgICAgIGJyZWFrCi0rICAgIGZpCi0rICBkb25lCi0rICBJRlM9IiRhY19zYXZlX2lmcyIKLSBmaQotIGZpCi0tQ0M9JGFjX2N2X3Byb2dfQ0MKLStDQz0iJGFjX2N2X3Byb2dfQ0MiCi0gaWYgdGVzdCAtbiAiJENDIjsgdGhlbgotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJENDIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kQ0MiID4mNgotKyAgZWNobyAiJGFjX3QiIiRDQyIgMT4mNgotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IG5vIiA+JjUKLS1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci0rICBlY2hvICIkYWNfdCIibm8iIDE+JjYKLSBmaQotLQotLSAgICB0ZXN0IC1uICIkQ0MiICYmIGJyZWFrCi0tICBkb25lCi0tZmkKLS1pZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCi0tICBhY19jdF9DQz0kQ0MKLS0gIGZvciBhY19wcm9nIGluIGNsCi0tZG8KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9DQytzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0tICBpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCi0tICBhY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNfY3RfQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotLWVsc2UKLS1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNfcHJvZyIKLS0gICAgZWNobyAiJGFzX21lOiRMSU5FTk86IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotLSAgICBicmVhayAyCi0rIDs7Ci0rICAgIGVzYWMKLSAgIGZpCi0tZG9uZQotLWRvbmUKLS0KLSsgIHRlc3QgLXogIiRDQyIgJiYgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBubyBhY2NlcHRhYmxlIGNjIGZvdW5kIGluIFwkUEFUSCIgMT4mMjsgZXhpdCAxOyB9Ci0gZmkKLS1maQotLWFjX2N0X0NDPSRhY19jdl9wcm9nX2FjX2N0X0NDCi0taWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N0X0NDIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3RfQ0MiID4mNgotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IG5vIiA+JjUKLS1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci0tZmkKLSAKLS0gIHRlc3QgLW4gIiRhY19jdF9DQyIgJiYgYnJlYWsKLS1kb25lCi0rZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciAoJENDICRDRkxBR1MgJExERkxBR1MpIHdvcmtzIiIuLi4gJGFjX2MiIDE+JjYKLStlY2hvICJjb25maWd1cmU6NzYyOiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyICgkQ0MgJENGTEFHUyAkTERGTEFHUykgd29ya3MiID4mNQotIAotLSAgQ0M9JGFjX2N0X0NDCi0tZmkKLSthY19leHQ9YwotKyMgQ0ZMQUdTIGlzIG5vdCBpbiBhY19jcHAgYmVjYXVzZSAtZywgLU8sIGV0Yy4gYXJlIG5vdCB2YWxpZCBjcHAgb3B0aW9ucy4KLSthY19jcHA9JyRDUFAgJENQUEZMQUdTJwotK2FjX2NvbXBpbGU9JyR7Q0MtY2N9IC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgMT4mNScKLSthY19saW5rPScke0NDLWNjfSAtbyBjb25mdGVzdCR7YWNfZXhlZXh0fSAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTIDE+JjUnCi0rY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2NjX2Nyb3NzCi0gCi0tZmkKLStjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8IEVPRgotIAotKyNsaW5lIDc3MyAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotLXRlc3QgLXogIiRDQyIgJiYgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogbm8gYWNjZXB0YWJsZSBDIGNvbXBpbGVyIGZvdW5kIGluIFwkUEFUSAotLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBubyBhY2NlcHRhYmxlIEMgY29tcGlsZXIgZm91bmQgaW4gXCRQQVRICi0tU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iID4mMjt9Ci0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tCi0tIyBQcm92aWRlIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXBpbGVyLgotLWVjaG8gIiRhc19tZTokTElORU5POiIgXAotLSAgICAgImNoZWNraW5nIGZvciBDIGNvbXBpbGVyIHZlcnNpb24iID4mNQotLWFjX2NvbXBpbGVyPWBzZXQgWCAkYWNfY29tcGlsZTsgZWNobyAkMmAKLS17IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlciAtLXZlcnNpb24gPC9kZXYvbnVsbCA+JjVcIiIpID4mNQotLSAgKGV2YWwgJGFjX2NvbXBpbGVyIC0tdmVyc2lvbiA8L2Rldi9udWxsID4mNSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfQotLXsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVyIC12IDwvZGV2L251bGwgPiY1XCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlciAtdiA8L2Rldi9udWxsID4mNSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfQotLXsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVyIC1WIDwvZGV2L251bGwgPiY1XCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlciAtViA8L2Rldi9udWxsID4mNSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfQotLQotLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLQotLWludAotLW1haW4gKCkKLS17Ci0tCi0tICA7Ci0tICByZXR1cm4gMDsKLS19Ci0tX0FDRU9GCi0tYWNfY2xlYW5fZmlsZXNfc2F2ZT0kYWNfY2xlYW5fZmlsZXMKLS1hY19jbGVhbl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVzIGEub3V0IGEuZXhlIGIub3V0IgotLSMgVHJ5IHRvIGNyZWF0ZSBhbiBleGVjdXRhYmxlIHdpdGhvdXQgLW8gZmlyc3QsIGRpc3JlZ2FyZCBhLm91dC4KLS0jIEl0IHdpbGwgaGVscCB1cyBkaWFnbm9zZSBicm9rZW4gY29tcGlsZXJzLCBhbmQgZmluZGluZyBvdXQgYW4gaW50dWl0aW9uCi0tIyBvZiBleGVleHQuCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBDIGNvbXBpbGVyIGRlZmF1bHQgb3V0cHV0IiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBDIGNvbXBpbGVyIGRlZmF1bHQgb3V0cHV0Li4uICRFQ0hPX0MiID4mNgotLWFjX2xpbmtfZGVmYXVsdD1gZWNobyAiJGFjX2xpbmsiIHwgc2VkICdzLyAtbyAqY29uZnRlc3RbXiBdKi8vJ2AKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19saW5rX2RlZmF1bHRcIiIpID4mNQotLSAgKGV2YWwgJGFjX2xpbmtfZGVmYXVsdCkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgdGhlbgotLSAgIyBGaW5kIHRoZSBvdXRwdXQsIHN0YXJ0aW5nIGZyb20gdGhlIG1vc3QgbGlrZWx5LiAgVGhpcyBzY2hlbWUgaXMKLS0jIG5vdCByb2J1c3QgdG8ganVuayBpbiBgLicsIGhlbmNlIGdvIHRvIHdpbGRjYXJkcyAoYS4qKSBvbmx5IGFzIGEgbGFzdAotLSMgcmVzb3J0LgotLQotLSMgQmUgY2FyZWZ1bCB0byBpbml0aWFsaXplIHRoaXMgdmFyaWFibGUsIHNpbmNlIGl0IHVzZWQgdG8gYmUgY2FjaGVkLgotLSMgT3RoZXJ3aXNlIGFuIG9sZCBjYWNoZSB2YWx1ZSBvZiBgbm8nIGxlZCB0byBgRVhFRVhUID0gbm8nIGluIGEgTWFrZWZpbGUuCi0tYWNfY3ZfZXhlZXh0PQotLSMgYi5vdXQgaXMgY3JlYXRlZCBieSBpOTYwIGNvbXBpbGVycy4KLS1mb3IgYWNfZmlsZSBpbiBhX291dC5leGUgYS5leGUgY29uZnRlc3QuZXhlIGEub3V0IGNvbmZ0ZXN0IGEuKiBjb25mdGVzdC4qIGIub3V0Ci0tZG8KLS0gIHRlc3QgLWYgIiRhY19maWxlIiB8fCBjb250aW51ZQotLSAgY2FzZSAkYWNfZmlsZSBpbgotLSAgICAqLiRhY19leHQgfCAqLnhjb2ZmIHwgKi50ZHMgfCAqLmQgfCAqLnBkYiB8ICoueFNZTSB8ICouYmIgfCAqLmJiZyB8ICoubyB8ICoub2JqICkKLS0gICAgICAgIDs7Ci0tICAgIGNvbmZ0ZXN0LiRhY19leHQgKQotLSAgICAgICAgIyBUaGlzIGlzIHRoZSBzb3VyY2UgZmlsZS4KLS0gICAgICAgIDs7Ci0tICAgIFthYl0ub3V0ICkKLS0gICAgICAgICMgV2UgZm91bmQgdGhlIGRlZmF1bHQgZXhlY3V0YWJsZSwgYnV0IGV4ZWV4dD0nJyBpcyBtb3N0Ci0tICAgICAgICAjIGNlcnRhaW5seSByaWdodC4KLS0gICAgICAgIGJyZWFrOzsKLS0gICAgKi4qICkKLS0gICAgICAgIGFjX2N2X2V4ZWV4dD1gZXhwciAiJGFjX2ZpbGUiIDogJ1teLl0qXChcLi4qXCknYAotLSAgICAgICAgIyBGSVhNRTogSSBiZWxpZXZlIHdlIGV4cG9ydCBhY19jdl9leGVleHQgZm9yIExpYnRvb2wsCi0tICAgICAgICAjIGJ1dCBpdCB3b3VsZCBiZSBjb29sIHRvIGZpbmQgb3V0IGlmIGl0J3MgdHJ1ZS4gIERvZXMgYW55Ym9keQotLSAgICAgICAgIyBtYWludGFpbiBMaWJ0b29sPyAtLWFraW0uCi0tICAgICAgICBleHBvcnQgYWNfY3ZfZXhlZXh0Ci0tICAgICAgICBicmVhazs7Ci0tICAgICogKQotLSAgICAgICAgYnJlYWs7OwotLSAgZXNhYwotLWRvbmUKLS1lbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS17IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBDIGNvbXBpbGVyIGNhbm5vdCBjcmVhdGUgZXhlY3V0YWJsZXMKLS1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogQyBjb21waWxlciBjYW5ub3QgY3JlYXRlIGV4ZWN1dGFibGVzCi0tU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iID4mMjt9Ci0tICAgeyAoZXhpdCA3Nyk7IGV4aXQgNzc7IH07IH0KLS1maQotLQotLWFjX2V4ZWV4dD0kYWNfY3ZfZXhlZXh0Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2ZpbGUiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19maWxlIiA+JjYKLS0KLS0jIENoZWNrIHRoZSBjb21waWxlciBwcm9kdWNlcyBleGVjdXRhYmxlcyB3ZSBjYW4gcnVuLiAgSWYgbm90LCBlaXRoZXIKLS0jIHRoZSBjb21waWxlciBpcyBicm9rZW4sIG9yIHdlIGNyb3NzIGNvbXBpbGUuCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgd29ya3MiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciB3b3Jrcy4uLiAkRUNIT19DIiA+JjYKLS0jIEZJWE1FOiBUaGVzZSBjcm9zcyBjb21waWxlciBoYWNrcyBzaG91bGQgYmUgcmVtb3ZlZCBmb3IgQXV0b2NvbmYgMy4wCi0tIyBJZiBub3QgY3Jvc3MgY29tcGlsaW5nLCBjaGVjayB0aGF0IHdlIGNhbiBydW4gYSBzaW1wbGUgcHJvZ3JhbS4KLS1pZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiAhPSB5ZXM7IHRoZW4KLS0gIGlmIHsgYWNfdHJ5PScuLyRhY19maWxlJwotLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLS0gICAgY3Jvc3NfY29tcGlsaW5nPW5vCi0rbWFpbigpe3JldHVybigwKTt9Ci0rRU9GCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3Nzg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotKyAgYWNfY3ZfcHJvZ19jY193b3Jrcz15ZXMKLSsgICMgSWYgd2UgY2FuJ3QgcnVuIGEgdHJpdmlhbCBwcm9ncmFtLCB3ZSBhcmUgcHJvYmFibHkgdXNpbmcgYSBjcm9zcyBjb21waWxlci4KLSsgIGlmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbDsgdGhlbgotKyAgICBhY19jdl9wcm9nX2NjX2Nyb3NzPW5vCi0gICBlbHNlCi0tICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0gbWF5YmU7IHRoZW4KLS0JY3Jvc3NfY29tcGlsaW5nPXllcwotLSAgICBlbHNlCi0tCXsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBydW4gQyBjb21waWxlZCBwcm9ncmFtcy4KLS1JZiB5b3UgbWVhbnQgdG8gY3Jvc3MgY29tcGlsZSwgdXNlIFxgLS1ob3N0Jy4KLS1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IHJ1biBDIGNvbXBpbGVkIHByb2dyYW1zLgotLUlmIHlvdSBtZWFudCB0byBjcm9zcyBjb21waWxlLCB1c2UgXGAtLWhvc3QnLgotLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjI7fQotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotLSAgICBmaQotKyAgICBhY19jdl9wcm9nX2NjX2Nyb3NzPXllcwotICAgZmkKLStlbHNlCi0rICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0rICBhY19jdl9wcm9nX2NjX3dvcmtzPW5vCi0gZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiB5ZXMiID4mNQotLWVjaG8gIiR7RUNIT19UfXllcyIgPiY2Ci0rcm0gLWZyIGNvbmZ0ZXN0KgotK2FjX2V4dD1jCi0rIyBDRkxBR1MgaXMgbm90IGluIGFjX2NwcCBiZWNhdXNlIC1nLCAtTywgZXRjLiBhcmUgbm90IHZhbGlkIGNwcCBvcHRpb25zLgotK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCi0rYWNfY29tcGlsZT0nJHtDQy1jY30gLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCAxPiY1JwotK2FjX2xpbms9JyR7Q0MtY2N9IC1vIGNvbmZ0ZXN0JHthY19leGVleHR9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgMT4mNScKLStjcm9zc19jb21waWxpbmc9JGFjX2N2X3Byb2dfY2NfY3Jvc3MKLSAKLS1ybSAtZiBhLm91dCBhLmV4ZSBjb25mdGVzdCRhY19jdl9leGVleHQgYi5vdXQKLS1hY19jbGVhbl9maWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQotLSMgQ2hlY2sgdGhlIGNvbXBpbGVyIHByb2R1Y2VzIGV4ZWN1dGFibGVzIHdlIGNhbiBydW4uICBJZiBub3QsIGVpdGhlcgotLSMgdGhlIGNvbXBpbGVyIGlzIGJyb2tlbiwgb3Igd2UgY3Jvc3MgY29tcGlsZS4KLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIGNyb3NzIGNvbXBpbGluZy4uLiAkRUNIT19DIiA+JjYKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkY3Jvc3NfY29tcGlsaW5nIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kY3Jvc3NfY29tcGlsaW5nIiA+JjYKLS0KLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBleGVjdXRhYmxlcyIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igc3VmZml4IG9mIGV4ZWN1dGFibGVzLi4uICRFQ0hPX0MiID4mNgotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2xpbmtcIiIpID4mNQotLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IHRoZW4KLS0gICMgSWYgYm90aCBgY29uZnRlc3QuZXhlJyBhbmQgYGNvbmZ0ZXN0JyBhcmUgYHByZXNlbnQnICh3ZWxsLCBvYnNlcnZhYmxlKQotLSMgY2F0Y2ggYGNvbmZ0ZXN0LmV4ZScuICBGb3IgaW5zdGFuY2Ugd2l0aCBDeWd3aW4sIGBscyBjb25mdGVzdCcgd2lsbAotLSMgd29yayBwcm9wZXJseSAoaS5lLiwgcmVmZXIgdG8gYGNvbmZ0ZXN0LmV4ZScpLCB3aGlsZSBpdCB3b24ndCB3aXRoCi0tIyBgcm0nLgotLWZvciBhY19maWxlIGluIGNvbmZ0ZXN0LmV4ZSBjb25mdGVzdCBjb25mdGVzdC4qOyBkbwotLSAgdGVzdCAtZiAiJGFjX2ZpbGUiIHx8IGNvbnRpbnVlCi0tICBjYXNlICRhY19maWxlIGluCi0tICAgICouJGFjX2V4dCB8ICoueGNvZmYgfCAqLnRkcyB8ICouZCB8ICoucGRiIHwgKi54U1lNIHwgKi5iYiB8ICouYmJnIHwgKi5vIHwgKi5vYmogKSA7OwotLSAgICAqLiogKSBhY19jdl9leGVleHQ9YGV4cHIgIiRhY19maWxlIiA6ICdbXi5dKlwoXC4uKlwpJ2AKLS0gICAgICAgICAgZXhwb3J0IGFjX2N2X2V4ZWV4dAotLSAgICAgICAgICBicmVhazs7Ci0tICAgICogKSBicmVhazs7Ci0tICBlc2FjCi0tZG9uZQotLWVsc2UKLS0gIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBjb21wdXRlIHN1ZmZpeCBvZiBleGVjdXRhYmxlczogY2Fubm90IGNvbXBpbGUgYW5kIGxpbmsKLS1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNvbXB1dGUgc3VmZml4IG9mIGV4ZWN1dGFibGVzOiBjYW5ub3QgY29tcGlsZSBhbmQgbGluawotLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjI7fQotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotK2VjaG8gIiRhY190IiIkYWNfY3ZfcHJvZ19jY193b3JrcyIgMT4mNgotK2lmIHRlc3QgJGFjX2N2X3Byb2dfY2Nfd29ya3MgPSBubzsgdGhlbgotKyAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBpbnN0YWxsYXRpb24gb3IgY29uZmlndXJhdGlvbiBwcm9ibGVtOiBDIGNvbXBpbGVyIGNhbm5vdCBjcmVhdGUgZXhlY3V0YWJsZXMuIiAxPiYyOyBleGl0IDE7IH0KLSBmaQotK2VjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgKCRDQyAkQ0ZMQUdTICRMREZMQUdTKSBpcyBhIGNyb3NzLWNvbXBpbGVyIiIuLi4gJGFjX2MiIDE+JjYKLStlY2hvICJjb25maWd1cmU6ODA0OiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyICgkQ0MgJENGTEFHUyAkTERGTEFHUykgaXMgYSBjcm9zcy1jb21waWxlciIgPiY1Ci0rZWNobyAiJGFjX3QiIiRhY19jdl9wcm9nX2NjX2Nyb3NzIiAxPiY2Ci0rY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2NjX2Nyb3NzCi0gCi0tcm0gLWYgY29uZnRlc3QkYWNfY3ZfZXhlZXh0Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2V4ZWV4dCIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2V4ZWV4dCIgPiY2Ci0tCi0tcm0gLWYgY29uZnRlc3QuJGFjX2V4dAotLUVYRUVYVD0kYWNfY3ZfZXhlZXh0Ci0tYWNfZXhlZXh0PSRFWEVFWFQKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBvYmplY3QgZmlsZXMiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBvYmplY3QgZmlsZXMuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9vYmpleHQrc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0rZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgR05VIEMiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZTo4MDk6IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIEdOVSBDIiA+JjUKLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19nY2MnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotKyAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0KLS1pbnQKLS1tYWluICgpCi0tewotLQotLSAgOwotLSAgcmV0dXJuIDA7Ci0tfQotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0Lm8gY29uZnRlc3Qub2JqCi0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgdGhlbgotLSAgZm9yIGFjX2ZpbGUgaW4gYChscyBjb25mdGVzdC5vIGNvbmZ0ZXN0Lm9iajsgbHMgY29uZnRlc3QuKikgMj4vZGV2L251bGxgOyBkbwotLSAgY2FzZSAkYWNfZmlsZSBpbgotLSAgICAqLiRhY19leHQgfCAqLnhjb2ZmIHwgKi50ZHMgfCAqLmQgfCAqLnBkYiB8ICoueFNZTSB8ICouYmIgfCAqLmJiZyApIDs7Ci0tICAgICopIGFjX2N2X29iamV4dD1gZXhwciAiJGFjX2ZpbGUiIDogJy4qXC5cKC4qXCknYAotLSAgICAgICBicmVhazs7Ci0tICBlc2FjCi0tZG9uZQotKyAgY2F0ID4gY29uZnRlc3QuYyA8PEVPRgotKyNpZmRlZiBfX0dOVUNfXwotKyAgeWVzOwotKyNlbmRpZgotK0VPRgotK2lmIHsgYWNfdHJ5PScke0NDLWNjfSAtRSBjb25mdGVzdC5jJzsgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4MTg6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9OyB9IHwgZWdyZXAgeWVzID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgYWNfY3ZfcHJvZ19nY2M9eWVzCi0gZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0teyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogY2Fubm90IGNvbXB1dGUgc3VmZml4IG9mIG9iamVjdCBmaWxlczogY2Fubm90IGNvbXBpbGUKLS1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNvbXB1dGUgc3VmZml4IG9mIG9iamVjdCBmaWxlczogY2Fubm90IGNvbXBpbGUKLS1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSsgIGFjX2N2X3Byb2dfZ2NjPW5vCi0gZmkKLS0KLS1ybSAtZiBjb25mdGVzdC4kYWNfY3Zfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSBmaQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9vYmpleHQiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl9vYmpleHQiID4mNgotLU9CSkVYVD0kYWNfY3Zfb2JqZXh0Ci0tYWNfb2JqZXh0PSRPQkpFWFQKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIGNvbXBpbGVyIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxlci4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X2NfY29tcGlsZXJfZ251K3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWVsc2UKLS0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotLWludAotLW1haW4gKCkKLS17Ci0tI2lmbmRlZiBfX0dOVUNfXwotLSAgICAgICBjaG9rZSBtZQotLSNlbmRpZgotK2VjaG8gIiRhY190IiIkYWNfY3ZfcHJvZ19nY2MiIDE+JjYKLSAKLS0gIDsKLS0gIHJldHVybiAwOwotLX0KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotLSAgYWNfY29tcGlsZXJfZ251PXllcwotK2lmIHRlc3QgJGFjX2N2X3Byb2dfZ2NjID0geWVzOyB0aGVuCi0rICBHQ0M9eWVzCi0gZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tYWNfY29tcGlsZXJfZ251PW5vCi0rICBHQ0M9Ci0gZmkKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1hY19jdl9jX2NvbXBpbGVyX2dudT0kYWNfY29tcGlsZXJfZ251Ci0gCi0tZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfY19jb21waWxlcl9nbnUiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl9jX2NvbXBpbGVyX2dudSIgPiY2Ci0tR0NDPWB0ZXN0ICRhY19jb21waWxlcl9nbnUgPSB5ZXMgJiYgZWNobyB5ZXNgCi0tYWNfdGVzdF9DRkxBR1M9JHtDRkxBR1Mrc2V0fQotLWFjX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLS1DRkxBR1M9Ii1nIgotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIHdoZXRoZXIgJENDIGFjY2VwdHMgLWcuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9wcm9nX2NjX2crc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0rYWNfdGVzdF9DRkxBR1M9IiR7Q0ZMQUdTK3NldH0iCi0rYWNfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rQ0ZMQUdTPQotK2VjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgJHtDQy1jY30gYWNjZXB0cyAtZyIiLi4uICRhY19jIiAxPiY2Ci0rZWNobyAiY29uZmlndXJlOjgzNzogY2hlY2tpbmcgd2hldGhlciAke0NDLWNjfSBhY2NlcHRzIC1nIiA+JjUKLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19jY19nJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSsgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0tCi0taW50Ci0tbWFpbiAoKQotLXsKLS0KLS0gIDsKLS0gIHJldHVybiAwOwotLX0KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotKyAgZWNobyAndm9pZCBmKCl7fScgPiBjb25mdGVzdC5jCi0raWYgdGVzdCAteiAiYCR7Q0MtY2N9IC1nIC1jIGNvbmZ0ZXN0LmMgMj4mMWAiOyB0aGVuCi0gICBhY19jdl9wcm9nX2NjX2c9eWVzCi0gZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0rICBhY19jdl9wcm9nX2NjX2c9bm8KLStmaQotK3JtIC1mIGNvbmZ0ZXN0KgotIAotLWFjX2N2X3Byb2dfY2NfZz1ubwotIGZpCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfcHJvZ19jY19nIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfcHJvZ19jY19nIiA+JjYKLSsKLStlY2hvICIkYWNfdCIiJGFjX2N2X3Byb2dfY2NfZyIgMT4mNgotIGlmIHRlc3QgIiRhY190ZXN0X0NGTEFHUyIgPSBzZXQ7IHRoZW4KLS0gIENGTEFHUz0kYWNfc2F2ZV9DRkxBR1MKLSsgIENGTEFHUz0iJGFjX3NhdmVfQ0ZMQUdTIgotIGVsaWYgdGVzdCAkYWNfY3ZfcHJvZ19jY19nID0geWVzOyB0aGVuCi0gICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICBDRkxBR1M9Ii1nIC1PMiIKLUBAIC0yMDI4LDMwNCArODYzLDM3IEBACi0gICAgIENGTEFHUz0KLSAgIGZpCi0gZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRDQyBvcHRpb24gdG8gYWNjZXB0IEFOU0kgQyIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJENDIG9wdGlvbiB0byBhY2NlcHQgQU5TSSBDLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19jY19zdGRjK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWVsc2UKLS0gIGFjX2N2X3Byb2dfY2Nfc3RkYz1ubwotLWFjX3NhdmVfQ0M9JENDCi0tY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0tI2luY2x1ZGUgPHN0ZGFyZy5oPgotLSNpbmNsdWRlIDxzdGRpby5oPgotLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLS0vKiBNb3N0IG9mIHRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIHN0b2xlbiBmcm9tIFJDUyA1LjcncyBzcmMvY29uZi5zaC4gICovCi0tc3RydWN0IGJ1ZiB7IGludCB4OyB9OwotLUZJTEUgKiAoKnJjc29wZW4pIChzdHJ1Y3QgYnVmICosIHN0cnVjdCBzdGF0ICosIGludCk7Ci0tc3RhdGljIGNoYXIgKmUgKHAsIGkpCi0tICAgICBjaGFyICoqcDsKLS0gICAgIGludCBpOwotLXsKLS0gIHJldHVybiBwW2ldOwotLX0KLS1zdGF0aWMgY2hhciAqZiAoY2hhciAqICgqZykgKGNoYXIgKiosIGludCksIGNoYXIgKipwLCAuLi4pCi0tewotLSAgY2hhciAqczsKLS0gIHZhX2xpc3QgdjsKLS0gIHZhX3N0YXJ0ICh2LHApOwotLSAgcyA9IGcgKHAsIHZhX2FyZyAodixpbnQpKTsKLS0gIHZhX2VuZCAodik7Ci0tICByZXR1cm4gczsKLS19Ci0taW50IHRlc3QgKGludCBpLCBkb3VibGUgeCk7Ci0tc3RydWN0IHMxIHtpbnQgKCpmKSAoaW50IGEpO307Ci0tc3RydWN0IHMyIHtpbnQgKCpmKSAoZG91YmxlIGEpO307Ci0taW50IHBhaXJuYW1lcyAoaW50LCBjaGFyICoqLCBGSUxFICooKikoc3RydWN0IGJ1ZiAqLCBzdHJ1Y3Qgc3RhdCAqLCBpbnQpLCBpbnQsIGludCk7Ci0taW50IGFyZ2M7Ci0tY2hhciAqKmFyZ3Y7Ci0taW50Ci0tbWFpbiAoKQotLXsKLS1yZXR1cm4gZiAoZSwgYXJndiwgMCkgIT0gYXJndlswXSAgfHwgIGYgKGUsIGFyZ3YsIDEpICE9IGFyZ3ZbMV07Ci0tICA7Ci0tICByZXR1cm4gMDsKLS19Ci0tX0FDRU9GCi0tIyBEb24ndCB0cnkgZ2NjIC1hbnNpOyB0aGF0IHR1cm5zIG9mZiB1c2VmdWwgZXh0ZW5zaW9ucyBhbmQKLS0jIGJyZWFrcyBzb21lIHN5c3RlbXMnIGhlYWRlciBmaWxlcy4KLS0jIEFJWAkJCS1xbGFuZ2x2bD1hbnNpCi0tIyBVbHRyaXggYW5kIE9TRi8xCS1zdGQxCi0tIyBIUC1VWCAxMC4yMCBhbmQgbGF0ZXIJLUFlCi0tIyBIUC1VWCBvbGRlciB2ZXJzaW9ucwktQWEgLURfSFBVWF9TT1VSQ0UKLS0jIFNWUjQJCQktWGMgLURfX0VYVEVOU0lPTlNfXwotLWZvciBhY19hcmcgaW4gIiIgLXFsYW5nbHZsPWFuc2kgLXN0ZDEgLUFlICItQWEgLURfSFBVWF9TT1VSQ0UiICItWGMgLURfX0VYVEVOU0lPTlNfXyIKLS1kbwotLSAgQ0M9IiRhY19zYXZlX0NDICRhY19hcmciCi0tICBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotLSAgYWNfY3ZfcHJvZ19jY19zdGRjPSRhY19hcmcKLS1icmVhawotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotIAotLWZpCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotLWRvbmUKLS1ybSAtZiBjb25mdGVzdC4kYWNfZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1DQz0kYWNfc2F2ZV9DQwotLQotLWZpCi0tCi0tY2FzZSAieCRhY19jdl9wcm9nX2NjX3N0ZGMiIGluCi0tICB4fHhubykKLS0gICAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogbm9uZSBuZWVkZWQiID4mNQotLWVjaG8gIiR7RUNIT19UfW5vbmUgbmVlZGVkIiA+JjYgOzsKLS0gICopCi0tICAgIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9wcm9nX2NjX3N0ZGMiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl9wcm9nX2NjX3N0ZGMiID4mNgotLSAgICBDQz0iJENDICRhY19jdl9wcm9nX2NjX3N0ZGMiIDs7Ci0tZXNhYwotLQotLSMgU29tZSBwZW9wbGUgdXNlIGEgQysrIGNvbXBpbGVyIHRvIGNvbXBpbGUgQy4gIFNpbmNlIHdlIHVzZSBgZXhpdCcsCi0tIyBpbiBDKysgd2UgbmVlZCB0byBkZWNsYXJlIGl0LiAgSW4gY2FzZSBzb21lb25lIHVzZXMgdGhlIHNhbWUgY29tcGlsZXIKLS0jIGZvciBib3RoIGNvbXBpbGluZyBDIGFuZCBDKysgd2UgbmVlZCB0byBoYXZlIHRoZSBDKysgY29tcGlsZXIgZGVjaWRlCi0tIyB0aGUgZGVjbGFyYXRpb24gb2YgZXhpdCwgc2luY2UgaXQncyB0aGUgbW9zdCBkZW1hbmRpbmcgZW52aXJvbm1lbnQuCi0tY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2lmbmRlZiBfX2NwbHVzcGx1cwotLSAgY2hva2UgbWUKLS0jZW5kaWYKLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotLSAgZm9yIGFjX2RlY2xhcmF0aW9uIGluIFwKLS0gICAnJ1wKLS0gICAnI2luY2x1ZGUgPHN0ZGxpYi5oPicgXAotLSAgICdleHRlcm4gIkMiIHZvaWQgc3RkOjpleGl0IChpbnQpIHRocm93ICgpOyB1c2luZyBzdGQ6OmV4aXQ7JyBcCi0tICAgJ2V4dGVybiAiQyIgdm9pZCBzdGQ6OmV4aXQgKGludCk7IHVzaW5nIHN0ZDo6ZXhpdDsnIFwKLS0gICAnZXh0ZXJuICJDIiB2b2lkIGV4aXQgKGludCkgdGhyb3cgKCk7JyBcCi0tICAgJ2V4dGVybiAiQyIgdm9pZCBleGl0IChpbnQpOycgXAotLSAgICd2b2lkIGV4aXQgKGludCk7JwotLWRvCi0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0jaW5jbHVkZSA8c3RkbGliLmg+Ci0tJGFjX2RlY2xhcmF0aW9uCi0taW50Ci0tbWFpbiAoKQotLXsKLS1leGl0ICg0Mik7Ci0tICA7Ci0tICByZXR1cm4gMDsKLS19Ci0tX0FDRU9GCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLS0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLS0gIDoKLSsjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInJhbmxpYiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IHJhbmxpYjsgYWNfd29yZD0kMgotK2VjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci0rZWNobyAiY29uZmlndXJlOjg3MTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19SQU5MSUInK3NldH0nYFwiID0gc2V0IjsgdGhlbgotKyAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS1jb250aW51ZQotLWZpCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0kYWNfZGVjbGFyYXRpb24KLS1pbnQKLS1tYWluICgpCi0tewotLWV4aXQgKDQyKTsKLS0gIDsKLS0gIHJldHVybiAwOwotLX0KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotLSAgYnJlYWsKLS1lbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS1maQotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotLWRvbmUKLS1ybSAtZiBjb25mdGVzdCoKLS1pZiB0ZXN0IC1uICIkYWNfZGVjbGFyYXRpb24iOyB0aGVuCi0tICBlY2hvICcjaWZkZWYgX19jcGx1c3BsdXMnID4+Y29uZmRlZnMuaAotLSAgZWNobyAkYWNfZGVjbGFyYXRpb24gICAgICA+PmNvbmZkZWZzLmgKLS0gIGVjaG8gJyNlbmRpZicgICAgICAgICAgICAgPj5jb25mZGVmcy5oCi0tZmkKLS0KLS1lbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS1maQotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotLWFjX2V4dD1jCi0tYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKLS1hY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi0tYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLS1hY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251Ci0tCi0taWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXJhbmxpYiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9cmFubGliOyBhY193b3JkPSQyCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9wcm9nX1JBTkxJQitzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0gICBpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgotICAgYWNfY3ZfcHJvZ19SQU5MSUI9IiRSQU5MSUIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotIGVsc2UKLS1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX1JBTkxJQj0iJHthY190b29sX3ByZWZpeH1yYW5saWIiCi0tICAgIGVjaG8gIiRhc19tZTokTElORU5POiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLS0gICAgYnJlYWsgMgotLSAgZmkKLS1kb25lCi0tZG9uZQotLQotKyAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iOiIKLSsgIGFjX2R1bW15PSIkUEFUSCIKLSsgIGZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwotKyAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgotKyAgICBpZiB0ZXN0IC1mICRhY19kaXIvJGFjX3dvcmQ7IHRoZW4KLSsgICAgICBhY19jdl9wcm9nX1JBTkxJQj0icmFubGliIgotKyAgICAgIGJyZWFrCi0rICAgIGZpCi0rICBkb25lCi0rICBJRlM9IiRhY19zYXZlX2lmcyIKLSsgIHRlc3QgLXogIiRhY19jdl9wcm9nX1JBTkxJQiIgJiYgYWNfY3ZfcHJvZ19SQU5MSUI9IjoiCi0gZmkKLSBmaQotLVJBTkxJQj0kYWNfY3ZfcHJvZ19SQU5MSUIKLStSQU5MSUI9IiRhY19jdl9wcm9nX1JBTkxJQiIKLSBpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJFJBTkxJQiIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JFJBTkxJQiIgPiY2Ci0rICBlY2hvICIkYWNfdCIiJFJBTkxJQiIgMT4mNgotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IG5vIiA+JjUKLS1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci0rICBlY2hvICIkYWNfdCIibm8iIDE+JjYKLSBmaQotIAotLWZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfUkFOTElCIjsgdGhlbgotLSAgYWNfY3RfUkFOTElCPSRSQU5MSUIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicmFubGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgcmFubGliOyBhY193b3JkPSQyCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X1JBTkxJQitzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0tICBpZiB0ZXN0IC1uICIkYWNfY3RfUkFOTElCIjsgdGhlbgotLSAgYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUI9IiRhY19jdF9SQU5MSUIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotLWVsc2UKLS1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X1JBTkxJQj0icmFubGliIgotLSAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0tICAgIGJyZWFrIDIKLS0gIGZpCi0tZG9uZQotLWRvbmUKLS0KLS0gIHRlc3QgLXogIiRhY19jdl9wcm9nX2FjX2N0X1JBTkxJQiIgJiYgYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUI9IjoiCi0tZmkKLS1maQotLWFjX2N0X1JBTkxJQj0kYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUIKLS1pZiB0ZXN0IC1uICIkYWNfY3RfUkFOTElCIjsgdGhlbgotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N0X1JBTkxJQiIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N0X1JBTkxJQiIgPiY2Ci0tZWxzZQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogbm8iID4mNQotLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLS1maQotLQotLSAgUkFOTElCPSRhY19jdF9SQU5MSUIKLS1lbHNlCi0tICBSQU5MSUI9IiRhY19jdl9wcm9nX1JBTkxJQiIKLS1maQotLQotICMgRmluZCBhIGdvb2QgaW5zdGFsbCBwcm9ncmFtLiAgV2UgcHJlZmVyIGEgQyBwcm9ncmFtIChmYXN0ZXIpLAotICMgc28gb25lIHNjcmlwdCBpcyBhcyBnb29kIGFzIGFub3RoZXIuICBCdXQgYXZvaWQgdGhlIGJyb2tlbiBvcgotICMgaW5jb21wYXRpYmxlIHZlcnNpb25zOgotQEAgLTIzMzMsMzA2ICs5MDEsMTU4IEBACi0gIyBTdW5PUyAvdXNyL2V0Yy9pbnN0YWxsCi0gIyBJUklYIC9zYmluL2luc3RhbGwKLSAjIEFJWCAvYmluL2luc3RhbGwKLS0jIEFtaWdhT1MgL0MvaW5zdGFsbCwgd2hpY2ggaW5zdGFsbHMgYm9vdGJsb2NrcyBvbiBmbG9wcHkgZGlzY3MKLSAjIEFJWCA0IC91c3IvYmluL2luc3RhbGxic2QsIHdoaWNoIGRvZXNuJ3Qgd29yayB3aXRob3V0IGEgLWcgZmxhZwotICMgQUZTIC91c3IvYWZzd3MvYmluL2luc3RhbGwsIHdoaWNoIG1pc2hhbmRsZXMgbm9uZXhpc3RlbnQgYXJncwotICMgU1ZSNCAvdXNyL3VjYi9pbnN0YWxsLCB3aGljaCB0cmllcyB0byB1c2UgdGhlIG5vbmV4aXN0ZW50IGdyb3VwICJzdGFmZiIKLSAjIC4vaW5zdGFsbCwgd2hpY2ggY2FuIGJlIGVycm9uZW91c2x5IGNyZWF0ZWQgYnkgbWFrZSBmcm9tIC4vaW5zdGFsbC5zaC4KLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgYSBCU0QtY29tcGF0aWJsZSBpbnN0YWxsLi4uICRFQ0hPX0MiID4mNgotK2VjaG8gJGFjX24gImNoZWNraW5nIGZvciBhIEJTRCBjb21wYXRpYmxlIGluc3RhbGwiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZTo5MTA6IGNoZWNraW5nIGZvciBhIEJTRCBjb21wYXRpYmxlIGluc3RhbGwiID4mNQotIGlmIHRlc3QgLXogIiRJTlNUQUxMIjsgdGhlbgotLWlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9pbnN0YWxsK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wYXRoX2luc3RhbGwnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotKyAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0tICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgIyBBY2NvdW50IGZvciBwZW9wbGUgd2hvIHB1dCB0cmFpbGluZyBzbGFzaGVzIGluIFBBVEggZWxlbWVudHMuCi0tY2FzZSAkYXNfZGlyLyBpbgotLSAgLi8gfCAuLy8gfCAvY0MvKiB8IFwKLS0gIC9ldGMvKiB8IC91c3Ivc2Jpbi8qIHwgL3Vzci9ldGMvKiB8IC9zYmluLyogfCAvdXNyL2Fmc3dzL2Jpbi8qIHwgXAotLSAgL3Vzci91Y2IvKiApIDs7Ci0tICAqKQotLSAgICAjIE9TRjEgYW5kIFNDTyBPRFQgMy4wIGhhdmUgdGhlaXIgb3duIG5hbWVzIGZvciBpbnN0YWxsLgotLSAgICAjIERvbid0IHVzZSBpbnN0YWxsYnNkIGZyb20gT1NGIHNpbmNlIGl0IGluc3RhbGxzIHN0dWZmIGFzIHJvb3QKLS0gICAgIyBieSBkZWZhdWx0LgotLSAgICBmb3IgYWNfcHJvZyBpbiBnaW5zdGFsbCBzY29pbnN0IGluc3RhbGw7IGRvCi0tICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICAgICAgICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICAgICAgICBpZiB0ZXN0ICRhY19wcm9nID0gaW5zdGFsbCAmJgotLSAgICAgICAgICAgIGdyZXAgZHNwbXNnICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLS0gICAgICAgICAgICAjIEFJWCBpbnN0YWxsLiAgSXQgaGFzIGFuIGluY29tcGF0aWJsZSBjYWxsaW5nIGNvbnZlbnRpb24uCi0tICAgICAgICAgICAgOgotLSAgICAgICAgICBlbGlmIHRlc3QgJGFjX3Byb2cgPSBpbnN0YWxsICYmCi0tICAgICAgICAgICAgZ3JlcCBwd3BsdXMgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiID4vZGV2L251bGwgMj4mMTsgdGhlbgotLSAgICAgICAgICAgICMgcHJvZ3JhbS1zcGVjaWZpYyBpbnN0YWxsIHNjcmlwdCB1c2VkIGJ5IEhQIHB3cGx1cy0tZG9uJ3QgdXNlLgotLSAgICAgICAgICAgIDoKLS0gICAgICAgICAgZWxzZQotLSAgICAgICAgICAgIGFjX2N2X3BhdGhfaW5zdGFsbD0iJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCAtYyIKLS0gICAgICAgICAgICBicmVhayAzCi0tICAgICAgICAgIGZpCi0tICAgICAgICBmaQotKyAgICBJRlM9IiR7SUZTPSAJfSI7IGFjX3NhdmVfSUZTPSIkSUZTIjsgSUZTPSI6IgotKyAgZm9yIGFjX2RpciBpbiAkUEFUSDsgZG8KLSsgICAgIyBBY2NvdW50IGZvciBwZW9wbGUgd2hvIHB1dCB0cmFpbGluZyBzbGFzaGVzIGluIFBBVEggZWxlbWVudHMuCi0rICAgIGNhc2UgIiRhY19kaXIvIiBpbgotKyAgICAvfC4vfC4vL3wvZXRjLyp8L3Vzci9zYmluLyp8L3Vzci9ldGMvKnwvc2Jpbi8qfC91c3IvYWZzd3MvYmluLyp8L3Vzci91Y2IvKikgOzsKLSsgICAgKikKLSsgICAgICAjIE9TRjEgYW5kIFNDTyBPRFQgMy4wIGhhdmUgdGhlaXIgb3duIG5hbWVzIGZvciBpbnN0YWxsLgotKyAgICAgICMgRG9uJ3QgdXNlIGluc3RhbGxic2QgZnJvbSBPU0Ygc2luY2UgaXQgaW5zdGFsbHMgc3R1ZmYgYXMgcm9vdAotKyAgICAgICMgYnkgZGVmYXVsdC4KLSsgICAgICBmb3IgYWNfcHJvZyBpbiBnaW5zdGFsbCBzY29pbnN0IGluc3RhbGw7IGRvCi0rICAgICAgICBpZiB0ZXN0IC1mICRhY19kaXIvJGFjX3Byb2c7IHRoZW4KLSsJICBpZiB0ZXN0ICRhY19wcm9nID0gaW5zdGFsbCAmJgotKyAgICAgICAgICAgIGdyZXAgZHNwbXNnICRhY19kaXIvJGFjX3Byb2cgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rCSAgICAjIEFJWCBpbnN0YWxsLiAgSXQgaGFzIGFuIGluY29tcGF0aWJsZSBjYWxsaW5nIGNvbnZlbnRpb24uCi0rCSAgICA6Ci0rCSAgZWxzZQotKwkgICAgYWNfY3ZfcGF0aF9pbnN0YWxsPSIkYWNfZGlyLyRhY19wcm9nIC1jIgotKwkgICAgYnJlYWsgMgotKwkgIGZpCi0rCWZpCi0gICAgICAgZG9uZQotLSAgICBkb25lCi0tICAgIDs7Ci0tZXNhYwotLWRvbmUKLSsgICAgICA7OwotKyAgICBlc2FjCi0rICBkb25lCi0rICBJRlM9IiRhY19zYXZlX0lGUyIKLSAKLS0KLSBmaQotICAgaWYgdGVzdCAiJHthY19jdl9wYXRoX2luc3RhbGwrc2V0fSIgPSBzZXQ7IHRoZW4KLS0gICAgSU5TVEFMTD0kYWNfY3ZfcGF0aF9pbnN0YWxsCi0rICAgIElOU1RBTEw9IiRhY19jdl9wYXRoX2luc3RhbGwiCi0gICBlbHNlCi0gICAgICMgQXMgYSBsYXN0IHJlc29ydCwgdXNlIHRoZSBzbG93IHNoZWxsIHNjcmlwdC4gIFdlIGRvbid0IGNhY2hlIGEKLSAgICAgIyBwYXRoIGZvciBJTlNUQUxMIHdpdGhpbiBhIHNvdXJjZSBkaXJlY3RvcnksIGJlY2F1c2UgdGhhdCB3aWxsCi0gICAgICMgYnJlYWsgb3RoZXIgcGFja2FnZXMgdXNpbmcgdGhlIGNhY2hlIGlmIHRoYXQgZGlyZWN0b3J5IGlzCi0gICAgICMgcmVtb3ZlZCwgb3IgaWYgdGhlIHBhdGggaXMgcmVsYXRpdmUuCi0tICAgIElOU1RBTEw9JGFjX2luc3RhbGxfc2gKLSsgICAgSU5TVEFMTD0iJGFjX2luc3RhbGxfc2giCi0gICBmaQotIGZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJElOU1RBTEwiID4mNQotLWVjaG8gIiR7RUNIT19UfSRJTlNUQUxMIiA+JjYKLStlY2hvICIkYWNfdCIiJElOU1RBTEwiIDE+JjYKLSAKLSAjIFVzZSB0ZXN0IC16IGJlY2F1c2UgU3VuT1M0IHNoIG1pc2hhbmRsZXMgYnJhY2VzIGluICR7dmFyLXZhbH0uCi0gIyBJdCB0aGlua3MgdGhlIGZpcnN0IGNsb3NlIGJyYWNlIGVuZHMgdGhlIHZhcmlhYmxlIHN1YnN0aXR1dGlvbi4KLSB0ZXN0IC16ICIkSU5TVEFMTF9QUk9HUkFNIiAmJiBJTlNUQUxMX1BST0dSQU09JyR7SU5TVEFMTH0nCi0gCi0tdGVzdCAteiAiJElOU1RBTExfU0NSSVBUIiAmJiBJTlNUQUxMX1NDUklQVD0nJHtJTlNUQUxMfScKLSt0ZXN0IC16ICIkSU5TVEFMTF9TQ1JJUFQiICYmIElOU1RBTExfU0NSSVBUPScke0lOU1RBTExfUFJPR1JBTX0nCi0gCi0gdGVzdCAteiAiJElOU1RBTExfREFUQSIgJiYgSU5TVEFMTF9EQVRBPScke0lOU1RBTEx9IC1tIDY0NCcKLSAKLS1pZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK2lmIHRlc3QgJGhvc3QgIT0gJGJ1aWxkOyB0aGVuCi0rICBhY190b29sX3ByZWZpeD0ke2hvc3RfYWxpYXN9LQotK2Vsc2UKLSsgIGFjX3Rvb2xfcHJlZml4PQotK2ZpCi0rCi0rIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLSBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLStlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZTo5NzE6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0raWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfQVInK3NldH0nYFwiID0gc2V0IjsgdGhlbgotKyAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICBpZiB0ZXN0IC1uICIkQVIiOyB0aGVuCi0gICBhY19jdl9wcm9nX0FSPSIkQVIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotIGVsc2UKLS1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgotLSAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0tICAgIGJyZWFrIDIKLS0gIGZpCi0tZG9uZQotLWRvbmUKLS0KLSsgIElGUz0iJHtJRlM9IAl9IjsgYWNfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IjoiCi0rICBhY19kdW1teT0iJFBBVEgiCi0rICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KLSsgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSsgICAgaWYgdGVzdCAtZiAkYWNfZGlyLyRhY193b3JkOyB0aGVuCi0rICAgICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKLSsgICAgICBicmVhawotKyAgICBmaQotKyAgZG9uZQotKyAgSUZTPSIkYWNfc2F2ZV9pZnMiCi0rICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiIgJiYgYWNfY3ZfcHJvZ19BUj0iYXIiCi0gZmkKLSBmaQotLUFSPSRhY19jdl9wcm9nX0FSCi0rQVI9IiRhY19jdl9wcm9nX0FSIgotIGlmIHRlc3QgLW4gIiRBUiI7IHRoZW4KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRBUiIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JEFSIiA+JjYKLSsgIGVjaG8gIiRhY190IiIkQVIiIDE+JjYKLSBlbHNlCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBubyIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9bm8iID4mNgotKyAgZWNobyAiJGFjX3QiIm5vIiAxPiY2Ci0gZmkKLSAKLS1maQotLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgotLSAgYWNfY3RfQVI9JEFSCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0tZWxzZQotLSAgaWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsgdGhlbgotLSAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX2N0X0FSIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLS1lbHNlCi0tYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotLWZvciBhc19kaXIgaW4gJFBBVEgKLS1kbwotLSAgSUZTPSRhc19zYXZlX0lGUwotLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLS0gIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotLSAgaWYgJGFzX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCi0tICAgIGVjaG8gIiRhc19tZTokTElORU5POiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLS0gICAgYnJlYWsgMgotLSAgZmkKLS1kb25lCi0tZG9uZQotIAotLWZpCi0tZmkKLS1hY19jdF9BUj0kYWNfY3ZfcHJvZ19hY19jdF9BUgotLWlmIHRlc3QgLW4gIiRhY19jdF9BUiI7IHRoZW4KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdF9BUiIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N0X0FSIiA+JjYKLS1lbHNlCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBubyIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9bm8iID4mNgotLWZpCi0gCi0tICBBUj0kYWNfY3RfQVIKLStlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIGJ5dGUgb3JkZXJpbmcgaXMgYmlnZW5kaWFuIiIuLi4gJGFjX2MiIDE+JjYKLStlY2hvICJjb25maWd1cmU6MTAwMTogY2hlY2tpbmcgd2hldGhlciBieXRlIG9yZGVyaW5nIGlzIGJpZ2VuZGlhbiIgPiY1Ci0raWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2NfYmlnZW5kaWFuJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSsgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotLWZpCi0tCi0tCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIHdoZXRoZXIgYnl0ZSBvcmRlcmluZyBpcyBiaWdlbmRpYW4iID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciBieXRlIG9yZGVyaW5nIGlzIGJpZ2VuZGlhbi4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X2NfYmlnZW5kaWFuK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWVsc2UKLS0gICMgU2VlIGlmIHN5cy9wYXJhbS5oIGRlZmluZXMgdGhlIEJZVEVfT1JERVIgbWFjcm8uCi0tY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0rICBhY19jdl9jX2JpZ2VuZGlhbj11bmtub3duCi0rIyBTZWUgaWYgc3lzL3BhcmFtLmggZGVmaW5lcyB0aGUgQllURV9PUkRFUiBtYWNyby4KLStjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTAwOCAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0raW50IG1haW4oKSB7Ci0gCi0taW50Ci0tbWFpbiAoKQotLXsKLSAjaWYgIUJZVEVfT1JERVIgfHwgIUJJR19FTkRJQU4gfHwgIUxJVFRMRV9FTkRJQU4KLSAgYm9ndXMgZW5kaWFuIG1hY3JvcwotICNlbmRpZgotLQotLSAgOwotLSAgcmV0dXJuIDA7Ci0tfQotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0tICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0rOyByZXR1cm4gMDsgfQotK0VPRgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTAxOTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotKyAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgIyBJdCBkb2VzOyBub3cgc2VlIHdoZXRoZXIgaXQgZGVmaW5lZCB0byBCSUdfRU5ESUFOIG9yIG5vdC4KLS1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLStjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTAyMyAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0raW50IG1haW4oKSB7Ci0gCi0taW50Ci0tbWFpbiAoKQotLXsKLSAjaWYgQllURV9PUkRFUiAhPSBCSUdfRU5ESUFOCi0gIG5vdCBiaWcgZW5kaWFuCi0gI2VuZGlmCi0tCi0tICA7Ci0tICByZXR1cm4gMDsKLS19Ci0tX0FDRU9GCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLS0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSs7IHJldHVybiAwOyB9Ci0rRU9GCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMDM0OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0rICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jdl9jX2JpZ2VuZGlhbj15ZXMKLSBlbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS1hY19jdl9jX2JpZ2VuZGlhbj1ubwotKyAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLSsgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotKyAgcm0gLXJmIGNvbmZ0ZXN0KgotKyAgYWNfY3ZfY19iaWdlbmRpYW49bm8KLSBmaQotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotK3JtIC1mIGNvbmZ0ZXN0KgotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLSMgSXQgZG9lcyBub3Q7IGNvbXBpbGUgYSB0ZXN0IHByb2dyYW0uCi0taWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KLS0gICMgdHJ5IHRvIGd1ZXNzIHRoZSBlbmRpYW5uZXNzIGJ5IGdyZXBwaW5nIHZhbHVlcyBpbnRvIGFuIG9iamVjdCBmaWxlCi0tICBhY19jdl9jX2JpZ2VuZGlhbj11bmtub3duCi0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS1zaG9ydCBhc2NpaV9tbVtdID0geyAweDQyNDksIDB4NDc2NSwgMHg2RTQ0LCAweDY5NjEsIDB4NkU1MywgMHg3OTUzLCAwIH07Ci0tc2hvcnQgYXNjaWlfaWlbXSA9IHsgMHg2OTRDLCAweDU0NTQsIDB4NjU2QywgMHg2RTQ1LCAweDY5NDQsIDB4NkU2MSwgMCB9OwotLXZvaWQgX2FzY2lpICgpIHsgY2hhciAqcyA9IChjaGFyICopIGFzY2lpX21tOyBzID0gKGNoYXIgKikgYXNjaWlfaWk7IH0KLS1zaG9ydCBlYmNkaWNfaWlbXSA9IHsgMHg4OUQzLCAweEUzRTMsIDB4ODU5MywgMHg5NUM1LCAweDg5QzQsIDB4OTU4MSwgMCB9OwotLXNob3J0IGViY2RpY19tbVtdID0geyAweEMyQzksIDB4Qzc4NSwgMHg5NUM0LCAweDg5ODEsIDB4OTVFMiwgMHhBOEUyLCAwIH07Ci0tdm9pZCBfZWJjZGljICgpIHsgY2hhciAqcyA9IChjaGFyICopIGViY2RpY19tbTsgcyA9IChjaGFyICopIGViY2RpY19paTsgfQotLWludAotLW1haW4gKCkKLS17Ci0tIF9hc2NpaSAoKTsgX2ViY2RpYyAoKTsKLS0gIDsKLS0gIHJldHVybiAwOwotLX0KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotLSAgaWYgZ3JlcCBCSUdlbkRpYW5TeVMgY29uZnRlc3QuJGFjX29iamV4dCA+L2Rldi9udWxsIDsgdGhlbgotLSAgYWNfY3ZfY19iaWdlbmRpYW49eWVzCi0rICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0gZmkKLS1pZiBncmVwIExpVFRsZUVuRGlhbiBjb25mdGVzdC4kYWNfb2JqZXh0ID4vZGV2L251bGwgOyB0aGVuCi0tICBpZiB0ZXN0ICIkYWNfY3ZfY19iaWdlbmRpYW4iID0gdW5rbm93bjsgdGhlbgotLSAgICBhY19jdl9jX2JpZ2VuZGlhbj1ubwotLSAgZWxzZQotLSAgICAjIGZpbmRpbmcgYm90aCBzdHJpbmdzIGlzIHVubGlrZWx5IHRvIGhhcHBlbiwgYnV0IHdobyBrbm93cz8KLS0gICAgYWNfY3ZfY19iaWdlbmRpYW49dW5rbm93bgotLSAgZmkKLS1maQotK3JtIC1mIGNvbmZ0ZXN0KgotK2lmIHRlc3QgJGFjX2N2X2NfYmlnZW5kaWFuID0gdW5rbm93bjsgdGhlbgotK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCi0rICAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogY2FuIG5vdCBydW4gdGVzdCBwcm9ncmFtIHdoaWxlIGNyb3NzIGNvbXBpbGluZyIgMT4mMjsgZXhpdCAxOyB9Ci0gZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tZmkKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1lbHNlCi0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS1pbnQKLS1tYWluICgpCi0tewotKyAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotKyNsaW5lIDEwNTQgImNvbmZpZ3VyZSIKLSsjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSttYWluICgpIHsKLSAgIC8qIEFyZSB3ZSBsaXR0bGUgb3IgYmlnIGVuZGlhbj8gIEZyb20gSGFyYmlzb24mU3RlZWxlLiAgKi8KLSAgIHVuaW9uCi0gICB7Ci1AQCAtMjY0Miw1MiArMTA2MiwzMSBAQAotICAgdS5sID0gMTsKLSAgIGV4aXQgKHUuY1tzaXplb2YgKGxvbmcpIC0gMV0gPT0gMSk7Ci0gfQotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0JGFjX2V4ZWV4dAotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2xpbmtcIiIpID4mNQotLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfZXhlZXh0JwotLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLStFT0YKLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwNjc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKLSt0aGVuCi0gICBhY19jdl9jX2JpZ2VuZGlhbj1ubwotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTogcHJvZ3JhbSBleGl0ZWQgd2l0aCBzdGF0dXMgJGFjX3N0YXR1cyIgPiY1Ci0tZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tKCBleGl0ICRhY19zdGF0dXMgKQotLWFjX2N2X2NfYmlnZW5kaWFuPXllcwotKyAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLSsgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotKyAgcm0gLWZyIGNvbmZ0ZXN0KgotKyAgYWNfY3ZfY19iaWdlbmRpYW49eWVzCi0gZmkKLS1ybSAtZiBjb3JlIGNvcmUuKiAqLmNvcmUgZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLStybSAtZnIgY29uZnRlc3QqCi0gZmkKLSsKLSBmaQotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotIGZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2NfYmlnZW5kaWFuIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfY19iaWdlbmRpYW4iID4mNgotLWNhc2UgJGFjX2N2X2NfYmlnZW5kaWFuIGluCi0tICB5ZXMpCi0gCi0tY2F0ID4+Y29uZmRlZnMuaCA8PFxfQUNFT0YKLStlY2hvICIkYWNfdCIiJGFjX2N2X2NfYmlnZW5kaWFuIiAxPiY2Ci0raWYgdGVzdCAkYWNfY3ZfY19iaWdlbmRpYW4gPSB5ZXM7IHRoZW4KLSsgIGNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRgotICNkZWZpbmUgV09SRFNfQklHRU5ESUFOIDEKLS1fQUNFT0YKLS0gOzsKLS0gIG5vKQotLSAgICAgOzsKLS0gICopCi0tICAgIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IHVua25vd24gZW5kaWFubmVzcwotLXByZXNldHRpbmcgYWNfY3ZfY19iaWdlbmRpYW49bm8gKG9yIHllcykgd2lsbCBoZWxwIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiB1bmtub3duIGVuZGlhbm5lc3MKLS1wcmVzZXR0aW5nIGFjX2N2X2NfYmlnZW5kaWFuPW5vIChvciB5ZXMpIHdpbGwgaGVscCIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0gOzsKLS1lc2FjCi0rRU9GCi0gCi0rZmkKLSAKLSsKLSBpZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KLSAJQ0ZMQUdTPSIkQ0ZMQUdTIC1XYWxsIgotIGZpCi1AQCAtMjY5NywxNCArMTA5NiwxMyBAQAotICAgY2FzZSAiJHtlbmFibGV2YWx9IiBpbgotICAgICAgICAgICAgICAgICAgeWVzKSBzaGFyZWQ9dHJ1ZSA7OwotICAgICAgICAgICAgICAgICAgbm8pIHNoYXJlZD1mYWxzZSA7OwotLSAgICAgICAgICAgICAgICAgKikgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3Igc2hhcmVkIG9wdGlvbnMiID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IGJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIHNoYXJlZCBvcHRpb25zIiA+JjI7fQotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfSA7OwotKyAgICAgICAgICAgICAgICAgKikgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciBzaGFyZWQgb3B0aW9ucyIgMT4mMjsgZXhpdCAxOyB9IDs7Ci0gICAgICAgICAgICAgICAgICBlc2FjCi0gZWxzZQotICAgc2hhcmVkPWZhbHNlCi0tZmk7Ci0rZmkKLSAKLSsKLSBjYXNlICIkdGFyZ2V0X2NwdSIgaW4KLSAgICAgIGkzODZ8aTQ4NnxpNTg2fGk2ODYpCi0gCVRBUkdFVF9DUFU9aTM4NgotQEAgLTI3MTIsNyArMTExMCw3IEBACi0gICAgICAqKQotICAgICAgICAgVEFSR0VUX0NQVT0kdGFyZ2V0X2NwdQotICAgICAgOzsKLS1lc2FjCi0rZXNhYyAgICAgCi0gVEFSR0VUX09TPSR0YXJnZXRfb3MKLSAKLSBNNjhLQ0M9Ci1AQCAtMjcyNiw3ICsxMTI0LDcgQEAKLSAJCU02OEtDQz0vdXNyL202OGstcGFsbW9zL2Jpbi9nY2MKLSAJCSMgR2VuZXJpYyBidWlsZCBpcyBBUk0gb3IgTTY4SyAocHJvYmFibHkgQVJNIHRob3VnaCkKLSAgICAgICAgICAgICAgICAgQ0M9Ii91c3IvJFRBUkdFVF9DUFUtcGFsbW9zL2Jpbi9nY2MiCi0tCQlpZiB0ZXN0ICIkdGFyZ2V0X2NwdSIgPSAiYXJtIgotKwkJaWYgdGVzdCAiJHRhcmdldF9jcHUiID0gImFybSIgCi0gICAgICAgICAgICAgICAgIHRoZW4KLSAgICAgICAgICAgICAgICAgICAgQ0M9IiRDQyAtZlBJQyAtbWFyY2g9YXJtdjR0IgotICAgICAgICAgICAgICAgICBmaQotQEAgLTI3NjIsNyArMTE2MCw3IEBACi0gICAgICAqKQotICAgICAgICAgSE9TVF9DUFU9JGhvc3RfY3B1Ci0gICAgICA7OwotLWVzYWMKLStlc2FjICAgICAKLSBIT1NUX09TPSRob3N0X29zCi0gCi0gCi1AQCAtMjgwMCwxMzggKzExOTgsOTEgQEAKLSAgIGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KLSAgICAgICAgICAgICAgICAgIHllcykgc29ja2V0cz10cnVlIDs7Ci0gICAgICAgICAgICAgICAgICBubykgc29ja2V0cz1mYWxzZSA7OwotLSAgICAgICAgICAgICAgICAgKikgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3Igc29ja2V0cyBvcHRpb25zIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciBzb2NrZXRzIG9wdGlvbnMiID4mMjt9Ci0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9IDs7Ci0rICAgICAgICAgICAgICAgICAqKSB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IGJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIHNvY2tldHMgb3B0aW9ucyIgMT4mMjsgZXhpdCAxOyB9IDs7Ci0gICAgICAgICAgICAgICAgICBlc2FjCi0gZWxzZQotICAgc29ja2V0cz10cnVlCi0tZmk7Ci0rZmkKLSsKLSBpZiB0ZXN0ICIkc29ja2V0cyIgPSBmYWxzZTsgdGhlbgotLSAgIGNhdCA+PmNvbmZkZWZzLmggPDxcX0FDRU9GCi0rICAgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCi0gI2RlZmluZSBDU1RfTk9fU09DS0VUUyAxCi0tX0FDRU9GCi0rRU9GCi0gCi0gZmkKLSAKLS1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLStjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTIxNiAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotICNpbmNsdWRlIDxzdGRpby5oPgotLWludAotLW1haW4gKCkKLS17Ci0raW50IG1haW4oKSB7Ci0gIHN0cnVjdCBhIHsgdW5pb24geyBmbG9hdCBiOyBpbnQgYzsgfSBkOyB9OwotLSAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGEgZSA9IHsgLmQ9eyAuYj0zLjE0IH0gfTsKLS0gIDsKLS0gIHJldHVybiAwOwotLX0KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotKyAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGEgZSA9IHsgLmQ9eyAuYj0zLjE0IH0gfTsgCi0rOyByZXR1cm4gMDsgfQotK0VPRgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTIyNDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotKyAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgdW5pb25pbml0PXllcwotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLXVuaW9uaW5pdD1ubwotKyAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLSsgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotKyAgcm0gLXJmIGNvbmZ0ZXN0KgotKyAgdW5pb25pbml0PW5vCi0gZmkKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLStybSAtZiBjb25mdGVzdCoKLSBpZiB0ZXN0ICIkdW5pb25pbml0IiA9IG5vOyB0aGVuCi0tICAgY2F0ID4+Y29uZmRlZnMuaCA8PFxfQUNFT0YKLSsgICBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKLSAjZGVmaW5lIE5PX1VOSU9OX0lOSVRJQUxJWkFUSU9OIDEKLS1fQUNFT0YKLStFT0YKLSAKLSBmaQotIAotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgbW1hcCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbW1hcC4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X2Z1bmNfbW1hcCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLStlY2hvICRhY19uICJjaGVja2luZyBmb3IgbW1hcCIiLi4uICRhY19jIiAxPiY2Ci0rZWNobyAiY29uZmlndXJlOjEyNDI6IGNoZWNraW5nIGZvciBtbWFwIiA+JjUKLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfZnVuY19tbWFwJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSsgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0rICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTI0NyAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKLS0gICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBtbWFwICgpOyBiZWxvdy4KLS0gICAgUHJlZmVyIDxsaW1pdHMuaD4gdG8gPGFzc2VydC5oPiBpZiBfX1NURENfXyBpcyBkZWZpbmVkLCBzaW5jZQotLSAgICA8bGltaXRzLmg+IGV4aXN0cyBldmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMuICAqLwotLSNpZmRlZiBfX1NURENfXwotLSMgaW5jbHVkZSA8bGltaXRzLmg+Ci0tI2Vsc2UKLS0jIGluY2x1ZGUgPGFzc2VydC5oPgotLSNlbmRpZgotKyAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIG1tYXAoKTsgYmVsb3cuICAqLwotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSAvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwotLSNpZmRlZiBfX2NwbHVzcGx1cwotLWV4dGVybiAiQyIKLS17Ci0tI2VuZGlmCi0gLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgotLSAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCi0tY2hhciBtbWFwICgpOwotKyAgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwotK2NoYXIgbW1hcCgpOwotKwotK2ludCBtYWluKCkgewotKwotIC8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKLSAgICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKLSAgICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3JtYWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCi0gI2lmIGRlZmluZWQgKF9fc3R1Yl9tbWFwKSB8fCBkZWZpbmVkIChfX3N0dWJfX19tbWFwKQotIGNob2tlIG1lCi0gI2Vsc2UKLS1jaGFyICgqZikgKCkgPSBtbWFwOwotK21tYXAoKTsKLSAjZW5kaWYKLS0jaWZkZWYgX19jcGx1c3BsdXMKLS19Ci0tI2VuZGlmCi0gCi0taW50Ci0tbWFpbiAoKQotLXsKLS1yZXR1cm4gZiAhPSBtbWFwOwotLSAgOwotLSAgcmV0dXJuIDA7Ci0tfQotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlua1wiIikgPiY1Ci0tICAoZXZhbCAkYWNfbGluaykgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0tICBhY19jdl9mdW5jX21tYXA9eWVzCi0rOyByZXR1cm4gMDsgfQotK0VPRgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTI3MDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0rICBybSAtcmYgY29uZnRlc3QqCi0rICBldmFsICJhY19jdl9mdW5jX21tYXA9eWVzIgotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLWFjX2N2X2Z1bmNfbW1hcD1ubwotKyAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLSsgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotKyAgcm0gLXJmIGNvbmZ0ZXN0KgotKyAgZXZhbCAiYWNfY3ZfZnVuY19tbWFwPW5vIgotIGZpCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotK3JtIC1mIGNvbmZ0ZXN0KgotIGZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2Z1bmNfbW1hcCIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2Z1bmNfbW1hcCIgPiY2Ci0taWYgdGVzdCAkYWNfY3ZfZnVuY19tbWFwID0geWVzOyB0aGVuCi0rCi0raWYgZXZhbCAidGVzdCBcImBlY2hvICckYWNfY3ZfZnVuY18nbW1hcGBcIiA9IHllcyI7IHRoZW4KLSsgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjYKLSAgIE1NQVBUWVBFPXBvc2l4Ci0rZWxzZQotKyAgZWNobyAiJGFjX3QiIm5vIiAxPiY2Ci0gZmkKLSAKLSAKLUBAIC0yOTU2LDEwMjggKzEzMDcsMjY2IEBACi0gCi0gCi0gQVVESU9EUklWRVI9bm9uZQotLWFjX2V4dD1jCi0tYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKLS1hY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi0tYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLS1hY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yLi4uICRFQ0hPX0MiID4mNgotK2VjaG8gJGFjX24gImNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yIiIuLi4gJGFjX2MiIDE+JjYKLStlY2hvICJjb25maWd1cmU6MTMxMjogY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IiID4mNQotICMgT24gU3Vucywgc29tZXRpbWVzICRDUFAgbmFtZXMgYSBkaXJlY3RvcnkuCi0gaWYgdGVzdCAtbiAiJENQUCIgJiYgdGVzdCAtZCAiJENQUCI7IHRoZW4KLSAgIENQUD0KLSBmaQotIGlmIHRlc3QgLXogIiRDUFAiOyB0aGVuCi0tICBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ1BQK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0NQUCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0rICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLS0gICAgICAjIERvdWJsZSBxdW90ZXMgYmVjYXVzZSBDUFAgbmVlZHMgdG8gYmUgZXhwYW5kZWQKLS0gICAgZm9yIENQUCBpbiAiJENDIC1FIiAiJENDIC1FIC10cmFkaXRpb25hbC1jcHAiICIvbGliL2NwcCIKLS0gICAgZG8KLS0gICAgICBhY19wcmVwcm9jX29rPWZhbHNlCi0tZm9yIGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gJycgeWVzCi0tZG8KLS0gICMgVXNlIGEgaGVhZGVyIGZpbGUgdGhhdCBjb21lcyB3aXRoIGdjYywgc28gY29uZmlndXJpbmcgZ2xpYmMKLS0gICMgd2l0aCBhIGZyZXNoIGNyb3NzLWNvbXBpbGVyIHdvcmtzLgotLSAgIyBQcmVmZXIgPGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRlZmluZWQsIHNpbmNlCi0tICAjIDxsaW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4KLSsgICAgIyBUaGlzIG11c3QgYmUgaW4gZG91YmxlIHF1b3Rlcywgbm90IHNpbmdsZSBxdW90ZXMsIGJlY2F1c2UgQ1BQIG1heSBnZXQKLSsgICMgc3Vic3RpdHV0ZWQgaW50byB0aGUgTWFrZWZpbGUgYW5kICIke0NDLWNjfSIgd2lsbCBjb25mdXNlIG1ha2UuCi0rICBDUFA9IiR7Q0MtY2N9IC1FIgotICAgIyBPbiB0aGUgTmVYVCwgY2MgLUUgcnVucyB0aGUgY29kZSB0aHJvdWdoIHRoZSBjb21waWxlcidzIHBhcnNlciwKLS0gICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50YXggZXJyb3IiIGlzIGhlcmUgdG8gY2F0Y2ggdGhpcyBjYXNlLgotLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0tI2lmZGVmIF9fU1REQ19fCi0tIyBpbmNsdWRlIDxsaW1pdHMuaD4KLS0jZWxzZQotLSMgaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2VuZGlmCi0tICAgICAgICAgICAgICAgICAgICAgU3ludGF4IGVycm9yCi0tX0FDRU9GCi0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQotLSAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgotLSAgcm0gLWYgY29uZnRlc3QuZXIxCi0tICBjYXQgY29uZnRlc3QuZXJyID4mNQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgotLSAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KLS0gICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZwotLSAgZWxzZQotLSAgICBhY19jcHBfZXJyPQotLSAgZmkKLS1lbHNlCi0tICBhY19jcHBfZXJyPXllcwotLWZpCi0taWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCi0rICAjIG5vdCBqdXN0IHRocm91Z2ggY3BwLgotKyAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotKyNsaW5lIDEzMjcgImNvbmZpZ3VyZSIKLSsjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSsjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0rU3ludGF4IEVycm9yCi0rRU9GCi0rYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLSt7IChldmFsIGVjaG8gY29uZmlndXJlOjEzMzM6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Ci0rYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAotK2lmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCi0gICA6Ci0gZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tICAjIEJyb2tlbjogZmFpbHMgb24gdmFsaWQgaW5wdXQuCi0tY29udGludWUKLS1maQotLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0Ci0tCi0tICAjIE9LLCB3b3JrcyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uLWV4aXN0ZW50IGhlYWRlcnMKLS0gICMgY2FuIGJlIGRldGVjdGVkIGFuZCBob3cuCi0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0jaW5jbHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KLS1fQUNFT0YKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCi0tICBhY19zdGF0dXM9JD8KLS0gIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCi0tICBybSAtZiBjb25mdGVzdC5lcjEKLS0gIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCi0tICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotLSAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCi0tICBlbHNlCi0tICAgIGFjX2NwcF9lcnI9Ci0tICBmaQotLWVsc2UKLS0gIGFjX2NwcF9lcnI9eWVzCi0tZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KLS0gICMgQnJva2VuOiBzdWNjZXNzIG9uIGludmFsaWQgaW5wdXQuCi0tY29udGludWUKLS1lbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS0gICMgUGFzc2VzIGJvdGggdGVzdHMuCi0tYWNfcHJlcHJvY19vaz06Ci0tYnJlYWsKLS1maQotLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0Ci0tCi0tZG9uZQotLSMgQmVjYXVzZSBvZiBgYnJlYWsnLCBfQUNfUFJFUFJPQ19JRkVMU0UncyBjbGVhbmluZyBjb2RlIHdhcyBza2lwcGVkLgotLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0Ci0taWYgJGFjX3ByZXByb2Nfb2s7IHRoZW4KLS0gIGJyZWFrCi0tZmkKLS0KLS0gICAgZG9uZQotLSAgICBhY19jdl9wcm9nX0NQUD0kQ1BQCi0tCi0tZmkKLS0gIENQUD0kYWNfY3ZfcHJvZ19DUFAKLS1lbHNlCi0tICBhY19jdl9wcm9nX0NQUD0kQ1BQCi0tZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkQ1BQIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kQ1BQIiA+JjYKLS1hY19wcmVwcm9jX29rPWZhbHNlCi0tZm9yIGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gJycgeWVzCi0tZG8KLS0gICMgVXNlIGEgaGVhZGVyIGZpbGUgdGhhdCBjb21lcyB3aXRoIGdjYywgc28gY29uZmlndXJpbmcgZ2xpYmMKLS0gICMgd2l0aCBhIGZyZXNoIGNyb3NzLWNvbXBpbGVyIHdvcmtzLgotLSAgIyBQcmVmZXIgPGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRlZmluZWQsIHNpbmNlCi0tICAjIDxsaW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4KLS0gICMgT24gdGhlIE5lWFQsIGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGlsZXIncyBwYXJzZXIsCi0tICAjIG5vdCBqdXN0IHRocm91Z2ggY3BwLiAiU3ludGF4IGVycm9yIiBpcyBoZXJlIHRvIGNhdGNoIHRoaXMgY2FzZS4KLS0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSNpZmRlZiBfX1NURENfXwotLSMgaW5jbHVkZSA8bGltaXRzLmg+Ci0tI2Vsc2UKLS0jIGluY2x1ZGUgPGFzc2VydC5oPgotLSNlbmRpZgotLSAgICAgICAgICAgICAgICAgICAgIFN5bnRheCBlcnJvcgotLV9BQ0VPRgotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKLS0gIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKLS0gIGFjX3N0YXR1cz0kPwotLSAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLS0gIHJtIC1mIGNvbmZ0ZXN0LmVyMQotLSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KLS0gIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCi0tICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKLS0gIGVsc2UKLS0gICAgYWNfY3BwX2Vycj0KLS0gIGZpCi0tZWxzZQotLSAgYWNfY3BwX2Vycj15ZXMKLS1maQotLWlmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgotKyAgZWNobyAiJGFjX2VyciIgPiY1Ci0rICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0rICBybSAtcmYgY29uZnRlc3QqCi0rICBDUFA9IiR7Q0MtY2N9IC1FIC10cmFkaXRpb25hbC1jcHAiCi0rICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTM0NCAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLStTeW50YXggRXJyb3IKLStFT0YKLSthY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgotK3sgKGV2YWwgZWNobyBjb25maWd1cmU6MTM1MDogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KLSthY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCi0raWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KLSAgIDoKLSBlbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS0gICMgQnJva2VuOiBmYWlscyBvbiB2YWxpZCBpbnB1dC4KLS1jb250aW51ZQotLWZpCi0tcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLS0KLS0gICMgT0ssIHdvcmtzIG9uIHNhbmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub24tZXhpc3RlbnQgaGVhZGVycwotLSAgIyBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGhvdy4KLS0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSNpbmNsdWRlIDxhY19ub25leGlzdGVudC5oPgotLV9BQ0VPRgotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKLS0gIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKLS0gIGFjX3N0YXR1cz0kPwotLSAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLS0gIHJtIC1mIGNvbmZ0ZXN0LmVyMQotLSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KLS0gIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCi0tICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKLS0gIGVsc2UKLS0gICAgYWNfY3BwX2Vycj0KLS0gIGZpCi0tZWxzZQotLSAgYWNfY3BwX2Vycj15ZXMKLS1maQotLWlmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgotLSAgIyBCcm9rZW46IHN1Y2Nlc3Mgb24gaW52YWxpZCBpbnB1dC4KLS1jb250aW51ZQotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLSAgIyBQYXNzZXMgYm90aCB0ZXN0cy4KLS1hY19wcmVwcm9jX29rPToKLS1icmVhawotLWZpCi0tcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLS0KLS1kb25lCi0tIyBCZWNhdXNlIG9mIGBicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUgd2FzIHNraXBwZWQuCi0tcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLS1pZiAkYWNfcHJlcHJvY19vazsgdGhlbgotKyAgZWNobyAiJGFjX2VyciIgPiY1Ci0rICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0rICBybSAtcmYgY29uZnRlc3QqCi0rICBDUFA9IiR7Q0MtY2N9IC1ub2xvZ28gLUUiCi0rICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTM2MSAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLStTeW50YXggRXJyb3IKLStFT0YKLSthY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgotK3sgKGV2YWwgZWNobyBjb25maWd1cmU6MTM2NzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KLSthY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCi0raWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KLSAgIDoKLSBlbHNlCi0tICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBDIHByZXByb2Nlc3NvciBcIiRDUFBcIiBmYWlscyBzYW5pdHkgY2hlY2sKLS1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogQyBwcmVwcm9jZXNzb3IgXCIkQ1BQXCIgZmFpbHMgc2FuaXR5IGNoZWNrCi0tU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iID4mMjt9Ci0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0rICBlY2hvICIkYWNfZXJyIiA+JjUKLSsgIGVjaG8gImNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0rICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLSsgIHJtIC1yZiBjb25mdGVzdCoKLSsgIENQUD0vbGliL2NwcAotIGZpCi0tCi0tYWNfZXh0PWMKLS1hY19jcHA9JyRDUFAgJENQUEZMQUdTJwotLWFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKLS1hY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotLWFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKLS0KLS0KLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIGVncmVwIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBlZ3JlcC4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfZWdyZXArc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0tZWxzZQotLSAgaWYgZWNobyBhIHwgKGdyZXAgLUUgJyhhfGIpJykgPi9kZXYvbnVsbCAyPiYxCi0tICAgIHRoZW4gYWNfY3ZfcHJvZ19lZ3JlcD0nZ3JlcCAtRScKLS0gICAgZWxzZSBhY19jdl9wcm9nX2VncmVwPSdlZ3JlcCcKLS0gICAgZmkKLStybSAtZiBjb25mdGVzdCoKLSBmaQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9wcm9nX2VncmVwIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfcHJvZ19lZ3JlcCIgPiY2Ci0tIEVHUkVQPSRhY19jdl9wcm9nX2VncmVwCi0tCi0tCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX3N0ZGMrc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0tZWxzZQotLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0tI2luY2x1ZGUgPHN0ZGxpYi5oPgotLSNpbmNsdWRlIDxzdGRhcmcuaD4KLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPGZsb2F0Lmg+Ci0tCi0taW50Ci0tbWFpbiAoKQotLXsKLS0KLS0gIDsKLS0gIHJldHVybiAwOwotLX0KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotLSAgYWNfY3ZfaGVhZGVyX3N0ZGM9eWVzCi0tZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KLS1maQotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotLQotLWlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCi0tICAjIFN1bk9TIDQueCBzdHJpbmcuaCBkb2VzIG5vdCBkZWNsYXJlIG1lbSosIGNvbnRyYXJ5IHRvIEFOU0kuCi0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0tCi0tX0FDRU9GCi0taWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJtZW1jaHIiID4vZGV2L251bGwgMj4mMTsgdGhlbgotLSAgOgotLWVsc2UKLS0gIGFjX2N2X2hlYWRlcl9zdGRjPW5vCi0tZmkKLSBybSAtZiBjb25mdGVzdCoKLS0KLSBmaQotLQotLWlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCi0tICAjIElTQyAyLjAuMiBzdGRsaWIuaCBkb2VzIG5vdCBkZWNsYXJlIGZyZWUsIGNvbnRyYXJ5IHRvIEFOU0kuCi0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0jaW5jbHVkZSA8c3RkbGliLmg+Ci0tCi0tX0FDRU9GCi0taWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJmcmVlIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLS0gIDoKLS1lbHNlCi0tICBhY19jdl9oZWFkZXJfc3RkYz1ubwotLWZpCi0gcm0gLWYgY29uZnRlc3QqCi0tCi0rICBhY19jdl9wcm9nX0NQUD0iJENQUCIKLSBmaQotLQotLWlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCi0tICAjIC9iaW4vY2MgaW4gSXJpeC00LjAuNSBnZXRzIG5vbi1BTlNJIGN0eXBlIG1hY3JvcyB1bmxlc3MgdXNpbmcgLWFuc2kuCi0tICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgotLSAgOgotKyAgQ1BQPSIkYWNfY3ZfcHJvZ19DUFAiCi0gZWxzZQotLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0tI2luY2x1ZGUgPGN0eXBlLmg+Ci0tI2lmICgoJyAnICYgMHgwRkYpID09IDB4MDIwKQotLSMgZGVmaW5lIElTTE9XRVIoYykgKCdhJyA8PSAoYykgJiYgKGMpIDw9ICd6JykKLS0jIGRlZmluZSBUT1VQUEVSKGMpIChJU0xPV0VSKGMpID8gJ0EnICsgKChjKSAtICdhJykgOiAoYykpCi0tI2Vsc2UKLS0jIGRlZmluZSBJU0xPV0VSKGMpIFwKLS0gICAgICAgICAgICAgICAgICAgKCgnYScgPD0gKGMpICYmIChjKSA8PSAnaScpIFwKLS0gICAgICAgICAgICAgICAgICAgICB8fCAoJ2onIDw9IChjKSAmJiAoYykgPD0gJ3InKSBcCi0tICAgICAgICAgICAgICAgICAgICAgfHwgKCdzJyA8PSAoYykgJiYgKGMpIDw9ICd6JykpCi0tIyBkZWZpbmUgVE9VUFBFUihjKSAoSVNMT1dFUihjKSA/ICgoYykgfCAweDQwKSA6IChjKSkKLS0jZW5kaWYKLS0KLS0jZGVmaW5lIFhPUihlLCBmKSAoKChlKSAmJiAhKGYpKSB8fCAoIShlKSAmJiAoZikpKQotLWludAotLW1haW4gKCkKLS17Ci0tICBpbnQgaTsKLS0gIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKLS0gICAgaWYgKFhPUiAoaXNsb3dlciAoaSksIElTTE9XRVIgKGkpKQotLSAgICAgICAgfHwgdG91cHBlciAoaSkgIT0gVE9VUFBFUiAoaSkpCi0tICAgICAgZXhpdCgyKTsKLS0gIGV4aXQgKDApOwotLX0KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdCRhY19leGVleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19saW5rXCIiKSA+JjUKLS0gIChldmFsICRhY19saW5rKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmIHsgYWNfdHJ5PScuL2NvbmZ0ZXN0JGFjX2V4ZWV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0tICA6Ci0tZWxzZQotLSAgZWNobyAiJGFzX21lOiBwcm9ncmFtIGV4aXRlZCB3aXRoIHN0YXR1cyAkYWNfc3RhdHVzIiA+JjUKLS1lY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS0oIGV4aXQgJGFjX3N0YXR1cyApCi0tYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KLSsgIGFjX2N2X3Byb2dfQ1BQPSIkQ1BQIgotIGZpCi0tcm0gLWYgY29yZSBjb3JlLiogKi5jb3JlIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tZmkKLS1maQotLWZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9zdGRjIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfaGVhZGVyX3N0ZGMiID4mNgotLWlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCi0rZWNobyAiJGFjX3QiIiRDUFAiIDE+JjYKLSAKLS1jYXQgPj5jb25mZGVmcy5oIDw8XF9BQ0VPRgotLSNkZWZpbmUgU1REQ19IRUFERVJTIDEKLS1fQUNFT0YKLS0KLS1maQotLQotLSMgT24gSVJJWCA1LjMsIHN5cy90eXBlcyBhbmQgaW50dHlwZXMuaCBhcmUgY29uZmxpY3RpbmcuCi0tCi0tCi0tCi0tCi0tCi0tCi0tCi0tCi0tCi0tZm9yIGFjX2hlYWRlciBpbiBzeXMvdHlwZXMuaCBzeXMvc3RhdC5oIHN0ZGxpYi5oIHN0cmluZy5oIG1lbW9yeS5oIHN0cmluZ3MuaCBcCi0tICAgICAgICAgICAgICAgICAgaW50dHlwZXMuaCBzdGRpbnQuaCB1bmlzdGQuaAotLWRvCi0tYXNfYWNfSGVhZGVyPWBlY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfaGVhZGVyIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfaGVhZGVyLi4uICRFQ0hPX0MiID4mNgotLWlmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9IHNldCI7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0rYWNfc2FmZT1gZWNobyAic3lzL3NvdW5kY2FyZC5oIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKLStlY2hvICRhY19uICJjaGVja2luZyBmb3Igc3lzL3NvdW5kY2FyZC5oIiIuLi4gJGFjX2MiIDE+JjYKLStlY2hvICJjb25maWd1cmU6MTM5MzogY2hlY2tpbmcgZm9yIHN5cy9zb3VuZGNhcmQuaCIgPiY1Ci0raWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0rICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLS0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSRhY19pbmNsdWRlc19kZWZhdWx0Ci0tCi0tI2luY2x1ZGUgPCRhY19oZWFkZXI+Ci0tX0FDRU9GCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLS0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLS0gIGV2YWwgIiRhc19hY19IZWFkZXI9eWVzIgotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLWV2YWwgIiRhc19hY19IZWFkZXI9bm8iCi0tZmkKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjUKLS1lY2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY2Ci0taWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCA9IHllczsgdGhlbgotLSAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotLSNkZWZpbmUgYGVjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCi0tX0FDRU9GCi0tCi0tZmkKLS0KLS1kb25lCi0tCi0tCi0taWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3lzX3NvdW5kY2FyZF9oK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIHN5cy9zb3VuZGNhcmQuaCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igc3lzL3NvdW5kY2FyZC5oLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX3N5c19zb3VuZGNhcmRfaCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfc3lzX3NvdW5kY2FyZF9oIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfaGVhZGVyX3N5c19zb3VuZGNhcmRfaCIgPiY2Ci0tZWxzZQotLSAgIyBJcyB0aGUgaGVhZGVyIGNvbXBpbGFibGU/Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIHN5cy9zb3VuZGNhcmQuaCB1c2FiaWxpdHkiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgc3lzL3NvdW5kY2FyZC5oIHVzYWJpbGl0eS4uLiAkRUNIT19DIiA+JjYKLS1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0kYWNfaW5jbHVkZXNfZGVmYXVsdAotKyAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotKyNsaW5lIDEzOTggImNvbmZpZ3VyZSIKLSsjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAjaW5jbHVkZSA8c3lzL3NvdW5kY2FyZC5oPgotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0tICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0tICBhY19oZWFkZXJfY29tcGlsZXI9eWVzCi0rRU9GCi0rYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLSt7IChldmFsIGVjaG8gY29uZmlndXJlOjE0MDM6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Ci0rYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAotK2lmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCi0rICBybSAtcmYgY29uZnRlc3QqCi0rICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9eWVzIgotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLWFjX2hlYWRlcl9jb21waWxlcj1ubwotKyAgZWNobyAiJGFjX2VyciIgPiY1Ci0rICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0rICBybSAtcmYgY29uZnRlc3QqCi0rICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9bm8iCi0gZmkKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjYKLS0KLS0jIElzIHRoZSBoZWFkZXIgcHJlc2VudD8KLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgc3lzL3NvdW5kY2FyZC5oIHByZXNlbmNlIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIHN5cy9zb3VuZGNhcmQuaCBwcmVzZW5jZS4uLiAkRUNIT19DIiA+JjYKLS1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0jaW5jbHVkZSA8c3lzL3NvdW5kY2FyZC5oPgotLV9BQ0VPRgotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKLS0gIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKLS0gIGFjX3N0YXR1cz0kPwotLSAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLS0gIHJtIC1mIGNvbmZ0ZXN0LmVyMQotLSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KLS0gIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCi0tICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKLS0gIGVsc2UKLS0gICAgYWNfY3BwX2Vycj0KLS0gIGZpCi0tZWxzZQotLSAgYWNfY3BwX2Vycj15ZXMKLStybSAtZiBjb25mdGVzdCoKLSBmaQotLWlmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgotLSAgYWNfaGVhZGVyX3ByZXByb2M9eWVzCi0tZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tICBhY19oZWFkZXJfcHJlcHJvYz1ubwotLWZpCi0tcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfaGVhZGVyX3ByZXByb2MiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19oZWFkZXJfcHJlcHJvYyIgPiY2Ci0tCi0tIyBTbz8gIFdoYXQgYWJvdXQgdGhpcyBoZWFkZXI/Ci0tY2FzZSAkYWNfaGVhZGVyX2NvbXBpbGVyOiRhY19oZWFkZXJfcHJlcHJvYyBpbgotLSAgeWVzOm5vICkKLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogc3lzL3NvdW5kY2FyZC5oOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIsIHJlamVjdGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IhIiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHN5cy9zb3VuZGNhcmQuaDogYWNjZXB0ZWQgYnkgdGhlIGNvbXBpbGVyLCByZWplY3RlZCBieSB0aGUgcHJlcHJvY2Vzc29yISIgPiYyO30KLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogc3lzL3NvdW5kY2FyZC5oOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBzeXMvc291bmRjYXJkLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjI7fQotLSAgICAoCi0tICAgICAgY2F0IDw8XF9BU0JPWAotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIFJlcG9ydCB0aGlzIHRvIGJ1Zy1hdXRvY29uZkBnbnUub3JnLiAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLV9BU0JPWAotLSAgICApIHwKLS0gICAgICBzZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAgICAvIiA+JjIKLS0gICAgOzsKLS0gIG5vOnllcyApCi0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IHN5cy9zb3VuZGNhcmQuaDogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHN5cy9zb3VuZGNhcmQuaDogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjI7fQotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBzeXMvc291bmRjYXJkLmg6IGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBzeXMvc291bmRjYXJkLmg6IGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiYyO30KLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogc3lzL3NvdW5kY2FyZC5oOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBzeXMvc291bmRjYXJkLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjI7fQotLSAgICAoCi0tICAgICAgY2F0IDw8XF9BU0JPWAotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIFJlcG9ydCB0aGlzIHRvIGJ1Zy1hdXRvY29uZkBnbnUub3JnLiAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLV9BU0JPWAotLSAgICApIHwKLS0gICAgICBzZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAgICAvIiA+JjIKLS0gICAgOzsKLS1lc2FjCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBzeXMvc291bmRjYXJkLmgiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHN5cy9zb3VuZGNhcmQuaC4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9zeXNfc291bmRjYXJkX2grc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0tZWxzZQotLSAgYWNfY3ZfaGVhZGVyX3N5c19zb3VuZGNhcmRfaD0kYWNfaGVhZGVyX3ByZXByb2MKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfc3lzX3NvdW5kY2FyZF9oIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfaGVhZGVyX3N5c19zb3VuZGNhcmRfaCIgPiY2Ci0tCi0tZmkKLS1pZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3lzX3NvdW5kY2FyZF9oID0geWVzOyB0aGVuCi0raWYgZXZhbCAidGVzdCBcImBlY2hvICckYWNfY3ZfaGVhZGVyXyckYWNfc2FmZWBcIiA9IHllcyI7IHRoZW4KLSsgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjYKLSAgIEFVRElPRFJJVkVSPSJvc3MiCi0gICAgICAgICAgICAgICAgQVVESU9ERUZTPS1EQ1NUX0FVRElPX0xJTlVYCi0rZWxzZQotKyAgZWNobyAiJGFjX3QiIm5vIiAxPiY2Ci0gZmkKLSAKLS0KLS1pZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9tYWNoaW5lX3NvdW5kY2FyZF9oK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIG1hY2hpbmUvc291bmRjYXJkLmgiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG1hY2hpbmUvc291bmRjYXJkLmguLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9oZWFkZXJfbWFjaGluZV9zb3VuZGNhcmRfaCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfbWFjaGluZV9zb3VuZGNhcmRfaCIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2hlYWRlcl9tYWNoaW5lX3NvdW5kY2FyZF9oIiA+JjYKLSthY19zYWZlPWBlY2hvICJtYWNoaW5lL3NvdW5kY2FyZC5oIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKLStlY2hvICRhY19uICJjaGVja2luZyBmb3IgbWFjaGluZS9zb3VuZGNhcmQuaCIiLi4uICRhY19jIiAxPiY2Ci0rZWNobyAiY29uZmlndXJlOjE0Mjc6IGNoZWNraW5nIGZvciBtYWNoaW5lL3NvdW5kY2FyZC5oIiA+JjUKLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSsgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotLSAgIyBJcyB0aGUgaGVhZGVyIGNvbXBpbGFibGU/Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIG1hY2hpbmUvc291bmRjYXJkLmggdXNhYmlsaXR5IiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIG1hY2hpbmUvc291bmRjYXJkLmggdXNhYmlsaXR5Li4uICRFQ0hPX0MiID4mNgotLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSRhY19pbmNsdWRlc19kZWZhdWx0Ci0rICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTQzMiAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotICNpbmNsdWRlIDxtYWNoaW5lL3NvdW5kY2FyZC5oPgotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0tICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0tICBhY19oZWFkZXJfY29tcGlsZXI9eWVzCi0rRU9GCi0rYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLSt7IChldmFsIGVjaG8gY29uZmlndXJlOjE0Mzc6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Ci0rYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAotK2lmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCi0rICBybSAtcmYgY29uZnRlc3QqCi0rICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9eWVzIgotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLWFjX2hlYWRlcl9jb21waWxlcj1ubwotKyAgZWNobyAiJGFjX2VyciIgPiY1Ci0rICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0rICBybSAtcmYgY29uZnRlc3QqCi0rICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9bm8iCi0gZmkKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjYKLS0KLS0jIElzIHRoZSBoZWFkZXIgcHJlc2VudD8KLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgbWFjaGluZS9zb3VuZGNhcmQuaCBwcmVzZW5jZSIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBtYWNoaW5lL3NvdW5kY2FyZC5oIHByZXNlbmNlLi4uICRFQ0hPX0MiID4mNgotLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSNpbmNsdWRlIDxtYWNoaW5lL3NvdW5kY2FyZC5oPgotLV9BQ0VPRgotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKLS0gIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKLS0gIGFjX3N0YXR1cz0kPwotLSAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLS0gIHJtIC1mIGNvbmZ0ZXN0LmVyMQotLSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KLS0gIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCi0tICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKLS0gIGVsc2UKLS0gICAgYWNfY3BwX2Vycj0KLS0gIGZpCi0tZWxzZQotLSAgYWNfY3BwX2Vycj15ZXMKLStybSAtZiBjb25mdGVzdCoKLSBmaQotLWlmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgotLSAgYWNfaGVhZGVyX3ByZXByb2M9eWVzCi0tZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tICBhY19oZWFkZXJfcHJlcHJvYz1ubwotLWZpCi0tcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfaGVhZGVyX3ByZXByb2MiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19oZWFkZXJfcHJlcHJvYyIgPiY2Ci0tCi0tIyBTbz8gIFdoYXQgYWJvdXQgdGhpcyBoZWFkZXI/Ci0tY2FzZSAkYWNfaGVhZGVyX2NvbXBpbGVyOiRhY19oZWFkZXJfcHJlcHJvYyBpbgotLSAgeWVzOm5vICkKLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogbWFjaGluZS9zb3VuZGNhcmQuaDogYWNjZXB0ZWQgYnkgdGhlIGNvbXBpbGVyLCByZWplY3RlZCBieSB0aGUgcHJlcHJvY2Vzc29yISIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBtYWNoaW5lL3NvdW5kY2FyZC5oOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIsIHJlamVjdGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IhIiA+JjI7fQotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBtYWNoaW5lL3NvdW5kY2FyZC5oOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBtYWNoaW5lL3NvdW5kY2FyZC5oOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiYyO30KLS0gICAgKAotLSAgICAgIGNhdCA8PFxfQVNCT1gKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyBSZXBvcnQgdGhpcyB0byBidWctYXV0b2NvbmZAZ251Lm9yZy4gIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS1fQVNCT1gKLS0gICAgKSB8Ci0tICAgICAgc2VkICJzL14vJGFzX21lOiBXQVJOSU5HOiAgICAgLyIgPiYyCi0tICAgIDs7Ci0tICBubzp5ZXMgKQotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBtYWNoaW5lL3NvdW5kY2FyZC5oOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGlsZWQiID4mNQotLWVjaG8gIiRhc19tZTogV0FSTklORzogbWFjaGluZS9zb3VuZGNhcmQuaDogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjI7fQotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBtYWNoaW5lL3NvdW5kY2FyZC5oOiBjaGVjayBmb3IgbWlzc2luZyBwcmVyZXF1aXNpdGUgaGVhZGVycz8iID4mNQotLWVjaG8gIiRhc19tZTogV0FSTklORzogbWFjaGluZS9zb3VuZGNhcmQuaDogY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjI7fQotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBtYWNoaW5lL3NvdW5kY2FyZC5oOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBtYWNoaW5lL3NvdW5kY2FyZC5oOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiYyO30KLS0gICAgKAotLSAgICAgIGNhdCA8PFxfQVNCT1gKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyBSZXBvcnQgdGhpcyB0byBidWctYXV0b2NvbmZAZ251Lm9yZy4gIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS1fQVNCT1gKLS0gICAgKSB8Ci0tICAgICAgc2VkICJzL14vJGFzX21lOiBXQVJOSU5HOiAgICAgLyIgPiYyCi0tICAgIDs7Ci0tZXNhYwotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgbWFjaGluZS9zb3VuZGNhcmQuaCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbWFjaGluZS9zb3VuZGNhcmQuaC4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9tYWNoaW5lX3NvdW5kY2FyZF9oK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWVsc2UKLS0gIGFjX2N2X2hlYWRlcl9tYWNoaW5lX3NvdW5kY2FyZF9oPSRhY19oZWFkZXJfcHJlcHJvYwotLWZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9tYWNoaW5lX3NvdW5kY2FyZF9oIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfaGVhZGVyX21hY2hpbmVfc291bmRjYXJkX2giID4mNgotLQotLWZpCi0taWYgdGVzdCAkYWNfY3ZfaGVhZGVyX21hY2hpbmVfc291bmRjYXJkX2ggPSB5ZXM7IHRoZW4KLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyRhY19jdl9oZWFkZXJfJyRhY19zYWZlYFwiID0geWVzIjsgdGhlbgotKyAgZWNobyAiJGFjX3QiInllcyIgMT4mNgotICAgQVVESU9EUklWRVI9Im9zcyIKLSAgICAgICAgICAgICAgICBBVURJT0RFRlM9LURDU1RfQVVESU9fRlJFRUJTRAotK2Vsc2UKLSsgIGVjaG8gIiRhY190IiJubyIgMT4mNgotIGZpCi0gCi0tCi0taWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3lzX2F1ZGlvaW9faCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBzeXMvYXVkaW9pby5oIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBzeXMvYXVkaW9pby5oLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX3N5c19hdWRpb2lvX2grc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0tZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX3N5c19hdWRpb2lvX2giID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl9oZWFkZXJfc3lzX2F1ZGlvaW9faCIgPiY2Ci0rYWNfc2FmZT1gZWNobyAic3lzL2F1ZGlvaW8uaCIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCi0rZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHN5cy9hdWRpb2lvLmgiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZToxNDYxOiBjaGVja2luZyBmb3Igc3lzL2F1ZGlvaW8uaCIgPiY1Ci0raWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0rICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLS0gICMgSXMgdGhlIGhlYWRlciBjb21waWxhYmxlPwotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBzeXMvYXVkaW9pby5oIHVzYWJpbGl0eSIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBzeXMvYXVkaW9pby5oIHVzYWJpbGl0eS4uLiAkRUNIT19DIiA+JjYKLS1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0kYWNfaW5jbHVkZXNfZGVmYXVsdAotKyAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotKyNsaW5lIDE0NjYgImNvbmZpZ3VyZSIKLSsjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAjaW5jbHVkZSA8c3lzL2F1ZGlvaW8uaD4KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotLSAgYWNfaGVhZGVyX2NvbXBpbGVyPXllcwotK0VPRgotK2FjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi0reyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNDcxOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQotK2FjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKLStpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgotKyAgcm0gLXJmIGNvbmZ0ZXN0KgotKyAgZXZhbCAiYWNfY3ZfaGVhZGVyXyRhY19zYWZlPXllcyIKLSBlbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS1hY19oZWFkZXJfY29tcGlsZXI9bm8KLSsgIGVjaG8gIiRhY19lcnIiID4mNQotKyAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLSsgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotKyAgcm0gLXJmIGNvbmZ0ZXN0KgotKyAgZXZhbCAiYWNfY3ZfaGVhZGVyXyRhY19zYWZlPW5vIgotIGZpCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2hlYWRlcl9jb21waWxlciIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRlcl9jb21waWxlciIgPiY2Ci0tCi0tIyBJcyB0aGUgaGVhZGVyIHByZXNlbnQ/Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIHN5cy9hdWRpb2lvLmggcHJlc2VuY2UiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgc3lzL2F1ZGlvaW8uaCBwcmVzZW5jZS4uLiAkRUNIT19DIiA+JjYKLS1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0jaW5jbHVkZSA8c3lzL2F1ZGlvaW8uaD4KLS1fQUNFT0YKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCi0tICBhY19zdGF0dXM9JD8KLS0gIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCi0tICBybSAtZiBjb25mdGVzdC5lcjEKLS0gIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCi0tICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotLSAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCi0tICBlbHNlCi0tICAgIGFjX2NwcF9lcnI9Ci0tICBmaQotLWVsc2UKLS0gIGFjX2NwcF9lcnI9eWVzCi0rcm0gLWYgY29uZnRlc3QqCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KLS0gIGFjX2hlYWRlcl9wcmVwcm9jPXllcwotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLSAgYWNfaGVhZGVyX3ByZXByb2M9bm8KLS1maQotLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2hlYWRlcl9wcmVwcm9jIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfaGVhZGVyX3ByZXByb2MiID4mNgotLQotLSMgU28/ICBXaGF0IGFib3V0IHRoaXMgaGVhZGVyPwotLWNhc2UgJGFjX2hlYWRlcl9jb21waWxlcjokYWNfaGVhZGVyX3ByZXByb2MgaW4KLS0gIHllczpubyApCi0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IHN5cy9hdWRpb2lvLmg6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mNQotLWVjaG8gIiRhc19tZTogV0FSTklORzogc3lzL2F1ZGlvaW8uaDogYWNjZXB0ZWQgYnkgdGhlIGNvbXBpbGVyLCByZWplY3RlZCBieSB0aGUgcHJlcHJvY2Vzc29yISIgPiYyO30KLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogc3lzL2F1ZGlvaW8uaDogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mNQotLWVjaG8gIiRhc19tZTogV0FSTklORzogc3lzL2F1ZGlvaW8uaDogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mMjt9Ci0tICAgICgKLS0gICAgICBjYXQgPDxcX0FTQk9YCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgUmVwb3J0IHRoaXMgdG8gYnVnLWF1dG9jb25mQGdudS5vcmcuICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tX0FTQk9YCi0tICAgICkgfAotLSAgICAgIHNlZCAicy9eLyRhc19tZTogV0FSTklORzogICAgIC8iID4mMgotLSAgICA7OwotLSAgbm86eWVzICkKLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogc3lzL2F1ZGlvaW8uaDogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHN5cy9hdWRpb2lvLmg6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21waWxlZCIgPiYyO30KLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogc3lzL2F1ZGlvaW8uaDogY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHN5cy9hdWRpb2lvLmg6IGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiYyO30KLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogc3lzL2F1ZGlvaW8uaDogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mNQotLWVjaG8gIiRhc19tZTogV0FSTklORzogc3lzL2F1ZGlvaW8uaDogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mMjt9Ci0tICAgICgKLS0gICAgICBjYXQgPDxcX0FTQk9YCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgUmVwb3J0IHRoaXMgdG8gYnVnLWF1dG9jb25mQGdudS5vcmcuICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tX0FTQk9YCi0tICAgICkgfAotLSAgICAgIHNlZCAicy9eLyRhc19tZTogV0FSTklORzogICAgIC8iID4mMgotLSAgICA7OwotLWVzYWMKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIHN5cy9hdWRpb2lvLmgiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHN5cy9hdWRpb2lvLmguLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3lzX2F1ZGlvaW9faCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0tICBhY19jdl9oZWFkZXJfc3lzX2F1ZGlvaW9faD0kYWNfaGVhZGVyX3ByZXByb2MKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfc3lzX2F1ZGlvaW9faCIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2hlYWRlcl9zeXNfYXVkaW9pb19oIiA+JjYKLS0KLS1maQotLWlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zeXNfYXVkaW9pb19oID0geWVzOyB0aGVuCi0raWYgZXZhbCAidGVzdCBcImBlY2hvICckYWNfY3ZfaGVhZGVyXyckYWNfc2FmZWBcIiA9IHllcyI7IHRoZW4KLSsgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjYKLSAgIEFVRElPRFJJVkVSPSJzdW4iCi0gICAgICAgICAgICAgICAgQVVESU9ERUZTPS1EQ1NUX0FVRElPX1NVTk9TCi0rZWxzZQotKyAgZWNobyAiJGFjX3QiIm5vIiAxPiY2Ci0gZmkKLSAKLS0KLS1pZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9tbXN5c3RlbV9oK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIG1tc3lzdGVtLmgiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG1tc3lzdGVtLmguLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9oZWFkZXJfbW1zeXN0ZW1faCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfbW1zeXN0ZW1faCIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2hlYWRlcl9tbXN5c3RlbV9oIiA+JjYKLSsgYWNfc2FmZT1gZWNobyAiYWxzYS9hc291bmRsaWIuaCIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCi0rZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGFsc2EvYXNvdW5kbGliLmgiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZToxNDk1OiBjaGVja2luZyBmb3IgYWxzYS9hc291bmRsaWIuaCIgPiY1Ci0raWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0rICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLS0gICMgSXMgdGhlIGhlYWRlciBjb21waWxhYmxlPwotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBtbXN5c3RlbS5oIHVzYWJpbGl0eSIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBtbXN5c3RlbS5oIHVzYWJpbGl0eS4uLiAkRUNIT19DIiA+JjYKLS1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0kYWNfaW5jbHVkZXNfZGVmYXVsdAotLSNpbmNsdWRlIDxtbXN5c3RlbS5oPgotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0tICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0tICBhY19oZWFkZXJfY29tcGlsZXI9eWVzCi0rICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTUwMCAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotKyNpbmNsdWRlIDxhbHNhL2Fzb3VuZGxpYi5oPgotK0VPRgotK2FjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi0reyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNTA1OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQotK2FjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKLStpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgotKyAgcm0gLXJmIGNvbmZ0ZXN0KgotKyAgZXZhbCAiYWNfY3ZfaGVhZGVyXyRhY19zYWZlPXllcyIKLSBlbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS1hY19oZWFkZXJfY29tcGlsZXI9bm8KLSsgIGVjaG8gIiRhY19lcnIiID4mNQotKyAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLSsgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotKyAgcm0gLXJmIGNvbmZ0ZXN0KgotKyAgZXZhbCAiYWNfY3ZfaGVhZGVyXyRhY19zYWZlPW5vIgotIGZpCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2hlYWRlcl9jb21waWxlciIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRlcl9jb21waWxlciIgPiY2Ci0tCi0tIyBJcyB0aGUgaGVhZGVyIHByZXNlbnQ/Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIG1tc3lzdGVtLmggcHJlc2VuY2UiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgbW1zeXN0ZW0uaCBwcmVzZW5jZS4uLiAkRUNIT19DIiA+JjYKLS1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0jaW5jbHVkZSA8bW1zeXN0ZW0uaD4KLS1fQUNFT0YKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCi0tICBhY19zdGF0dXM9JD8KLS0gIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCi0tICBybSAtZiBjb25mdGVzdC5lcjEKLS0gIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCi0tICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotLSAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCi0tICBlbHNlCi0tICAgIGFjX2NwcF9lcnI9Ci0tICBmaQotLWVsc2UKLS0gIGFjX2NwcF9lcnI9eWVzCi0rcm0gLWYgY29uZnRlc3QqCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KLS0gIGFjX2hlYWRlcl9wcmVwcm9jPXllcwotK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJGFjX2N2X2hlYWRlcl8nJGFjX3NhZmVgXCIgPSB5ZXMiOyB0aGVuCi0rICBlY2hvICIkYWNfdCIieWVzIiAxPiY2Ci0rICBBVURJT0RSSVZFUj0iYWxzYSIKLSsJICAgICAgIEFVRElPREVGUz0tRENTVF9BVURJT19BTFNBCi0rICAgICAgICAgICAgICAgQVVESU9MSUJTPS1sYXNvdW5kCi0gZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tICBhY19oZWFkZXJfcHJlcHJvYz1ubwotKyAgZWNobyAiJGFjX3QiIm5vIiAxPiY2Ci0gZmkKLS1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19oZWFkZXJfcHJlcHJvYyIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRlcl9wcmVwcm9jIiA+JjYKLSAKLS0jIFNvPyAgV2hhdCBhYm91dCB0aGlzIGhlYWRlcj8KLS1jYXNlICRhY19oZWFkZXJfY29tcGlsZXI6JGFjX2hlYWRlcl9wcmVwcm9jIGluCi0tICB5ZXM6bm8gKQotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBtbXN5c3RlbS5oOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIsIHJlamVjdGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IhIiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IG1tc3lzdGVtLmg6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mMjt9Ci0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IG1tc3lzdGVtLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IG1tc3lzdGVtLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjI7fQotLSAgICAoCi0tICAgICAgY2F0IDw8XF9BU0JPWAotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIFJlcG9ydCB0aGlzIHRvIGJ1Zy1hdXRvY29uZkBnbnUub3JnLiAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLV9BU0JPWAotLSAgICApIHwKLS0gICAgICBzZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAgICAvIiA+JjIKLS0gICAgOzsKLS0gIG5vOnllcyApCi0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IG1tc3lzdGVtLmg6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21waWxlZCIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBtbXN5c3RlbS5oOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGlsZWQiID4mMjt9Ci0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IG1tc3lzdGVtLmg6IGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBtbXN5c3RlbS5oOiBjaGVjayBmb3IgbWlzc2luZyBwcmVyZXF1aXNpdGUgaGVhZGVycz8iID4mMjt9Ci0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IG1tc3lzdGVtLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IG1tc3lzdGVtLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjI7fQotLSAgICAoCi0tICAgICAgY2F0IDw8XF9BU0JPWAotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIFJlcG9ydCB0aGlzIHRvIGJ1Zy1hdXRvY29uZkBnbnUub3JnLiAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLV9BU0JPWAotLSAgICApIHwKLS0gICAgICBzZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAgICAvIiA+JjIKLS0gICAgOzsKLS1lc2FjCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBtbXN5c3RlbS5oIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBtbXN5c3RlbS5oLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX21tc3lzdGVtX2grc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0rYWNfc2FmZT1gZWNobyAibW1zeXN0ZW0uaCIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCi0rZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIG1tc3lzdGVtLmgiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZToxNTMwOiBjaGVja2luZyBmb3IgbW1zeXN0ZW0uaCIgPiY1Ci0raWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0rICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLS0gIGFjX2N2X2hlYWRlcl9tbXN5c3RlbV9oPSRhY19oZWFkZXJfcHJlcHJvYwotKyAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotKyNsaW5lIDE1MzUgImNvbmZpZ3VyZSIKLSsjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSsjaW5jbHVkZSA8bW1zeXN0ZW0uaD4KLStFT0YKLSthY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgotK3sgKGV2YWwgZWNobyBjb25maWd1cmU6MTU0MDogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KLSthY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCi0raWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KLSsgIHJtIC1yZiBjb25mdGVzdCoKLSsgIGV2YWwgImFjX2N2X2hlYWRlcl8kYWNfc2FmZT15ZXMiCi0rZWxzZQotKyAgZWNobyAiJGFjX2VyciIgPiY1Ci0rICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0rICBybSAtcmYgY29uZnRlc3QqCi0rICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9bm8iCi0gZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX21tc3lzdGVtX2giID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl9oZWFkZXJfbW1zeXN0ZW1faCIgPiY2Ci0tCi0rcm0gLWYgY29uZnRlc3QqCi0gZmkKLS1pZiB0ZXN0ICRhY19jdl9oZWFkZXJfbW1zeXN0ZW1faCA9IHllczsgdGhlbgotK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJGFjX2N2X2hlYWRlcl8nJGFjX3NhZmVgXCIgPSB5ZXMiOyB0aGVuCi0rICBlY2hvICIkYWNfdCIieWVzIiAxPiY2Ci0gICBBVURJT0RSSVZFUj0id2luY2UiCi0gCSAgICAgICBBVURJT0RFRlM9LURDU1RfQVVESU9fV0lOQ0UKLSAJICAgICAgIEFVRElPTElCUz0tbHdpbm1tCi0rZWxzZQotKyAgZWNobyAiJGFjX3QiIm5vIiAxPiY2Ci0gZmkKLSAKLSAKLS0KLS0KLSAjIENoZWNrIHdoZXRoZXIgLS13aXRoLWF1ZGlvIG9yIC0td2l0aG91dC1hdWRpbyB3YXMgZ2l2ZW4uCi0gaWYgdGVzdCAiJHt3aXRoX2F1ZGlvK3NldH0iID0gc2V0OyB0aGVuCi0gICB3aXRodmFsPSIkd2l0aF9hdWRpbyIKLS0gIEFVRElPRFJJVkVSPSR3aXRoX2F1ZGlvCi0tZmk7Ci0rICBBVURJT0RSSVZFUj0kd2l0aF9hdWRpbyAKLStmaQotIAotKwotIGlmIHRlc3QgIngkQVVESU9ERUZTIiA9IHg7IHRoZW4KLSAgICAgY2FzZSAiJEFVRElPRFJJVkVSIiBpbgotIAlsaW51eHxvc3MpCi1AQCAtNDAwNiwzNCArMTU5NSwzNCBAQAotIAotIAotIAotLQotICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGFuZyBvciAtLXdpdGhvdXQtbGFuZyB3YXMgZ2l2ZW4uCi0gaWYgdGVzdCAiJHt3aXRoX2xhbmcrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgIHdpdGh2YWw9IiR3aXRoX2xhbmciCi0tICBGTF9MQU5HPSR3aXRoX2xhbmcKLS1maTsKLSsgIEZMX0xBTkc9JHdpdGhfbGFuZyAKLStmaQotKwotIGlmIHRlc3QgIngkd2l0aF9sYW5nIiA9ICJ4IjsgdGhlbgotICAgICAgICAgRkxfTEFORz0idXNlbmdsaXNoIgotIGZpCi0gCi0gCi0tCi0gIyBDaGVjayB3aGV0aGVyIC0td2l0aC12b3ggb3IgLS13aXRob3V0LXZveCB3YXMgZ2l2ZW4uCi0gaWYgdGVzdCAiJHt3aXRoX3ZveCtzZXR9IiA9IHNldDsgdGhlbgotICAgd2l0aHZhbD0iJHdpdGhfdm94IgotLSAgRkxfVk9YPSR3aXRoX3ZveAotLWZpOwotKyAgRkxfVk9YPSR3aXRoX3ZveCAKLStmaQotKwotIGlmIHRlc3QgIngkd2l0aF92b3giID0gIngiOyB0aGVuCi0gICAgICAgICBGTF9WT1g9ImNtdV91c19rYWwiCi0gZmkKLSAKLSAKLS0KLSAjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxleCBvciAtLXdpdGhvdXQtbGV4IHdhcyBnaXZlbi4KLSBpZiB0ZXN0ICIke3dpdGhfbGV4K3NldH0iID0gc2V0OyB0aGVuCi0gICB3aXRodmFsPSIkd2l0aF9sZXgiCi0tICBGTF9MRVg9JHdpdGhfbGV4Ci0tZmk7Ci0rICBGTF9MRVg9JHdpdGhfbGV4IAotK2ZpCi0rCi0gaWYgdGVzdCAieCR3aXRoX2xleCIgPSAieCI7IHRoZW4KLSAgICAgICAgIEZMX0xFWD0iY211bGV4IgotIGZpCi1AQCAtNDA0MSw5MjEgKzE2MzAsMzAwIEBACi0gCi0gCi0gCi0tICAgICAgICAgICAgICAgICAgICBhY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgY29uZmlnL2NvbmZpZyBjb25maWcvc3lzdGVtLm1hayIKLS1jYXQgPmNvbmZjYWNoZSA8PFxfQUNFT0YKLSt0cmFwICcnIDEgMiAxNQotK2NhdCA+IGNvbmZjYWNoZSA8PFxFT0YKLSAjIFRoaXMgZmlsZSBpcyBhIHNoZWxsIHNjcmlwdCB0aGF0IGNhY2hlcyB0aGUgcmVzdWx0cyBvZiBjb25maWd1cmUKLSAjIHRlc3RzIHJ1biBvbiB0aGlzIHN5c3RlbSBzbyB0aGV5IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBjb25maWd1cmUKLS0jIHNjcmlwdHMgYW5kIGNvbmZpZ3VyZSBydW5zLCBzZWUgY29uZmlndXJlJ3Mgb3B0aW9uIC0tY29uZmlnLWNhY2hlLgotLSMgSXQgaXMgbm90IHVzZWZ1bCBvbiBvdGhlciBzeXN0ZW1zLiAgSWYgaXQgY29udGFpbnMgcmVzdWx0cyB5b3UgZG9uJ3QKLS0jIHdhbnQgdG8ga2VlcCwgeW91IG1heSByZW1vdmUgb3IgZWRpdCBpdC4KLSsjIHNjcmlwdHMgYW5kIGNvbmZpZ3VyZSBydW5zLiAgSXQgaXMgbm90IHVzZWZ1bCBvbiBvdGhlciBzeXN0ZW1zLgotKyMgSWYgaXQgY29udGFpbnMgcmVzdWx0cyB5b3UgZG9uJ3Qgd2FudCB0byBrZWVwLCB5b3UgbWF5IHJlbW92ZSBvciBlZGl0IGl0LgotICMKLS0jIGNvbmZpZy5zdGF0dXMgb25seSBwYXlzIGF0dGVudGlvbiB0byB0aGUgY2FjaGUgZmlsZSBpZiB5b3UgZ2l2ZSBpdAotLSMgdGhlIC0tcmVjaGVjayBvcHRpb24gdG8gcmVydW4gY29uZmlndXJlLgotKyMgQnkgZGVmYXVsdCwgY29uZmlndXJlIHVzZXMgLi9jb25maWcuY2FjaGUgYXMgdGhlIGNhY2hlIGZpbGUsCi0rIyBjcmVhdGluZyBpdCBpZiBpdCBkb2VzIG5vdCBleGlzdCBhbHJlYWR5LiAgWW91IGNhbiBnaXZlIGNvbmZpZ3VyZQotKyMgdGhlIC0tY2FjaGUtZmlsZT1GSUxFIG9wdGlvbiB0byB1c2UgYSBkaWZmZXJlbnQgY2FjaGUgZmlsZTsgdGhhdCBpcwotKyMgd2hhdCBjb25maWd1cmUgZG9lcyB3aGVuIGl0IGNhbGxzIGNvbmZpZ3VyZSBzY3JpcHRzIGluCi0rIyBzdWJkaXJlY3Rvcmllcywgc28gdGhleSBzaGFyZSB0aGUgY2FjaGUuCi0rIyBHaXZpbmcgLS1jYWNoZS1maWxlPS9kZXYvbnVsbCBkaXNhYmxlcyBjYWNoaW5nLCBmb3IgZGVidWdnaW5nIGNvbmZpZ3VyZS4KLSsjIGNvbmZpZy5zdGF0dXMgb25seSBwYXlzIGF0dGVudGlvbiB0byB0aGUgY2FjaGUgZmlsZSBpZiB5b3UgZ2l2ZSBpdCB0aGUKLSsjIC0tcmVjaGVjayBvcHRpb24gdG8gcmVydW4gY29uZmlndXJlLgotICMKLS0jIGBhY19jdl9lbnZfZm9vJyB2YXJpYWJsZXMgKHNldCBvciB1bnNldCkgd2lsbCBiZSBvdmVycmlkZGVuIHdoZW4KLS0jIGxvYWRpbmcgdGhpcyBmaWxlLCBvdGhlciAqdW5zZXQqIGBhY19jdl9mb28nIHdpbGwgYmUgYXNzaWduZWQgdGhlCi0tIyBmb2xsb3dpbmcgdmFsdWVzLgotLQotLV9BQ0VPRgotLQotK0VPRgotICMgVGhlIGZvbGxvd2luZyB3YXkgb2Ygd3JpdGluZyB0aGUgY2FjaGUgbWlzaGFuZGxlcyBuZXdsaW5lcyBpbiB2YWx1ZXMsCi0gIyBidXQgd2Uga25vdyBvZiBubyB3b3JrYXJvdW5kIHRoYXQgaXMgc2ltcGxlLCBwb3J0YWJsZSwgYW5kIGVmZmljaWVudC4KLSAjIFNvLCBkb24ndCBwdXQgbmV3bGluZXMgaW4gY2FjaGUgdmFyaWFibGVzJyB2YWx1ZXMuCi0gIyBVbHRyaXggc2ggc2V0IHdyaXRlcyB0byBzdGRlcnIgYW5kIGNhbid0IGJlIHJlZGlyZWN0ZWQgZGlyZWN0bHksCi0gIyBhbmQgc2V0cyB0aGUgaGlnaCBiaXQgaW4gdGhlIGNhY2hlIGZpbGUgdW5sZXNzIHdlIGFzc2lnbiB0byB0aGUgdmFycy4KLS17Ci0tICAoc2V0KSAyPiYxIHwKLS0gICAgY2FzZSBgKGFjX3NwYWNlPScgJzsgc2V0IHwgZ3JlcCBhY19zcGFjZSkgMj4mMWAgaW4KLS0gICAgKmFjX3NwYWNlPVwgKikKLS0gICAgICAjIGBzZXQnIGRvZXMgbm90IHF1b3RlIGNvcnJlY3RseSwgc28gYWRkIHF1b3RlcyAoZG91YmxlLXF1b3RlCi0tICAgICAgIyBzdWJzdGl0dXRpb24gdHVybnMgXFxcXCBpbnRvIFxcLCBhbmQgc2VkIHR1cm5zIFxcIGludG8gXCkuCi0tICAgICAgc2VkIC1uIFwKLS0gICAgICAgICJzLycvJ1xcXFwnJy9nOwotLSAgICAJICBzL15cXChbXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSpcXCk9XFwoLipcXCkvXFwxPSdcXDInL3AiCi0tICAgICAgOzsKLS0gICAgKikKLS0gICAgICAjIGBzZXQnIHF1b3RlcyBjb3JyZWN0bHkgYXMgcmVxdWlyZWQgYnkgUE9TSVgsIHNvIGRvIG5vdCBhZGQgcXVvdGVzLgotLSAgICAgIHNlZCAtbiBcCi0tICAgICAgICAicy9eXFwoW18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9hbG51bV0qXFwpPVxcKC4qXFwpL1xcMT1cXDIvcCIKLS0gICAgICA7OwotLSAgICBlc2FjOwotLX0gfAotLSAgc2VkICcKLS0gICAgIHQgY2xlYXIKLS0gICAgIDogY2xlYXIKLS0gICAgIHMvXlwoW149XSpcKT1cKC4qW3t9XS4qXCkkL3Rlc3QgIiR7XDErc2V0fSIgPSBzZXQgfHwgJi8KLS0gICAgIHQgZW5kCi0tICAgICAvXmFjX2N2X2Vudi8hcy9eXChbXj1dKlwpPVwoLipcKSQvXDE9JHtcMT1cMn0vCi0tICAgICA6IGVuZCcgPj5jb25mY2FjaGUKLS1pZiBkaWZmICRjYWNoZV9maWxlIGNvbmZjYWNoZSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOjsgZWxzZQotKyhzZXQpIDI+JjEgfAotKyAgY2FzZSBgKGFjX3NwYWNlPScgJzsgc2V0IHwgZ3JlcCBhY19zcGFjZSkgMj4mMWAgaW4KLSsgICphY19zcGFjZT1cICopCi0rICAgICMgYHNldCcgZG9lcyBub3QgcXVvdGUgY29ycmVjdGx5LCBzbyBhZGQgcXVvdGVzIChkb3VibGUtcXVvdGUgc3Vic3RpdHV0aW9uCi0rICAgICMgdHVybnMgXFxcXCBpbnRvIFxcLCBhbmQgc2VkIHR1cm5zIFxcIGludG8gXCkuCi0rICAgIHNlZCAtbiBcCi0rICAgICAgLWUgInMvJy8nXFxcXCcnL2ciIFwKLSsgICAgICAtZSAicy9eXFwoW2EtekEtWjAtOV9dKl9jdl9bYS16QS1aMC05X10qXFwpPVxcKC4qXFwpL1xcMT1cJHtcXDE9J1xcMid9L3AiCi0rICAgIDs7Ci0rICAqKQotKyAgICAjIGBzZXQnIHF1b3RlcyBjb3JyZWN0bHkgYXMgcmVxdWlyZWQgYnkgUE9TSVgsIHNvIGRvIG5vdCBhZGQgcXVvdGVzLgotKyAgICBzZWQgLW4gLWUgJ3MvXlwoW2EtekEtWjAtOV9dKl9jdl9bYS16QS1aMC05X10qXCk9XCguKlwpL1wxPSR7XDE9XDJ9L3AnCi0rICAgIDs7Ci0rICBlc2FjID4+IGNvbmZjYWNoZQotK2lmIGNtcCAtcyAkY2FjaGVfZmlsZSBjb25mY2FjaGU7IHRoZW4KLSsgIDoKLStlbHNlCi0gICBpZiB0ZXN0IC13ICRjYWNoZV9maWxlOyB0aGVuCi0tICAgIHRlc3QgIngkY2FjaGVfZmlsZSIgIT0gIngvZGV2L251bGwiICYmIGVjaG8gInVwZGF0aW5nIGNhY2hlICRjYWNoZV9maWxlIgotLSAgICBjYXQgY29uZmNhY2hlID4kY2FjaGVfZmlsZQotKyAgICBlY2hvICJ1cGRhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIKLSsgICAgY2F0IGNvbmZjYWNoZSA+ICRjYWNoZV9maWxlCi0gICBlbHNlCi0gICAgIGVjaG8gIm5vdCB1cGRhdGluZyB1bndyaXRhYmxlIGNhY2hlICRjYWNoZV9maWxlIgotICAgZmkKLSBmaQotIHJtIC1mIGNvbmZjYWNoZQotIAotK3RyYXAgJ3JtIC1mciBjb25mdGVzdCogY29uZmRlZnMqIGNvcmUgY29yZS4qICouY29yZSAkYWNfY2xlYW5fZmlsZXM7IGV4aXQgMScgMSAyIDE1Ci0rCi0gdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSRhY19kZWZhdWx0X3ByZWZpeAotICMgTGV0IG1ha2UgZXhwYW5kIGV4ZWNfcHJlZml4LgotIHRlc3QgIngkZXhlY19wcmVmaXgiID0geE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScKLSAKLS0jIFZQQVRIIG1heSBjYXVzZSB0cm91YmxlIHdpdGggc29tZSBtYWtlcywgc28gd2UgcmVtb3ZlICQoc3JjZGlyKSwKLS0jICR7c3JjZGlyfSBhbmQgQHNyY2RpckAgZnJvbSBWUEFUSCBpZiBzcmNkaXIgaXMgIi4iLCBzdHJpcCBsZWFkaW5nIGFuZAotLSMgdHJhaWxpbmcgY29sb25zIGFuZCB0aGVuIHJlbW92ZSB0aGUgd2hvbGUgbGluZSBpZiBWUEFUSCBiZWNvbWVzIGVtcHR5Ci0tIyAoYWN0dWFsbHkgd2UgbGVhdmUgYW4gZW1wdHkgbGluZSB0byBwcmVzZXJ2ZSBsaW5lIG51bWJlcnMpLgotKyMgQW55IGFzc2lnbm1lbnQgdG8gVlBBVEggY2F1c2VzIFN1biBtYWtlIHRvIG9ubHkgZXhlY3V0ZQotKyMgdGhlIGZpcnN0IHNldCBvZiBkb3VibGUtY29sb24gcnVsZXMsIHNvIHJlbW92ZSBpdCBpZiBub3QgbmVlZGVkLgotKyMgSWYgdGhlcmUgaXMgYSBjb2xvbiBpbiB0aGUgcGF0aCwgd2UgbmVlZCB0byBrZWVwIGl0LgotIGlmIHRlc3QgIngkc3JjZGlyIiA9IHguOyB0aGVuCi0tICBhY192cHN1Yj0nL15bIAldKlZQQVRIWyAJXSo9L3sKLS1zLzoqXCQoc3JjZGlyKToqLzovOwotLXMvOipcJHtzcmNkaXJ9OiovOi87Ci0tcy86KkBzcmNkaXJAOiovOi87Ci0tcy9eXChbXj1dKj1bIAldKlwpOiovXDEvOwotLXMvOiokLy87Ci0tcy9eW149XSo9WyAJXSokLy87Ci0tfScKLSsgIGFjX3Zwc3ViPScvXlsgCV0qVlBBVEhbIAldKj1bXjpdKiQvZCcKLSBmaQotIAotK3RyYXAgJ3JtIC1mICRDT05GSUdfU1RBVFVTIGNvbmZ0ZXN0KjsgZXhpdCAxJyAxIDIgMTUKLSsKLSAjIFRyYW5zZm9ybSBjb25mZGVmcy5oIGludG8gREVGUy4KLSAjIFByb3RlY3QgYWdhaW5zdCBzaGVsbCBleHBhbnNpb24gd2hpbGUgZXhlY3V0aW5nIE1ha2VmaWxlIHJ1bGVzLgotICMgUHJvdGVjdCBhZ2FpbnN0IE1ha2VmaWxlIG1hY3JvIGV4cGFuc2lvbi4KLS0jCi0tIyBJZiB0aGUgZmlyc3Qgc2VkIHN1YnN0aXR1dGlvbiBpcyBleGVjdXRlZCAod2hpY2ggbG9va3MgZm9yIG1hY3JvcyB0aGF0Ci0tIyB0YWtlIGFyZ3VtZW50cyksIHRoZW4gd2UgYnJhbmNoIHRvIHRoZSBxdW90ZSBzZWN0aW9uLiAgT3RoZXJ3aXNlLAotLSMgbG9vayBmb3IgYSBtYWNybyB0aGF0IGRvZXNuJ3QgdGFrZSBhcmd1bWVudHMuCi0tY2F0ID5jb25mZGVmMm9wdC5zZWQgPDxcX0FDRU9GCi0tdCBjbGVhcgotLTogY2xlYXIKLS1zLF5bIAldKiNbIAldKmRlZmluZVsgCV1bIAldKlwoW14gCShdW14gCShdKihbXildKilcKVsgCV0qXCguKlwpLC1EXDE9XDIsZwotLXQgcXVvdGUKLS1zLF5bIAldKiNbIAldKmRlZmluZVsgCV1bIAldKlwoW14gCV1bXiAJXSpcKVsgCV0qXCguKlwpLC1EXDE9XDIsZwotLXQgcXVvdGUKLS1kCi0tOiBxdW90ZQotLXMsWyAJYH4jJF4mKigpe31cXHw7JyI8Pj9dLFxcJixnCi0tcyxcWyxcXCYsZwotLXMsXF0sXFwmLGcKLS1zLFwkLCQkLGcKLS1wCi0tX0FDRU9GCi0tIyBXZSB1c2UgZWNobyB0byBhdm9pZCBhc3N1bWluZyBhIHBhcnRpY3VsYXIgbGluZS1icmVha2luZyBjaGFyYWN0ZXIuCi0tIyBUaGUgZXh0cmEgZG90IGlzIHRvIHByZXZlbnQgdGhlIHNoZWxsIGZyb20gY29uc3VtaW5nIHRyYWlsaW5nCi0tIyBsaW5lLWJyZWFrcyBmcm9tIHRoZSBzdWItY29tbWFuZCBvdXRwdXQuICBBIGxpbmUtYnJlYWsgd2l0aGluCi0tIyBzaW5nbGUtcXVvdGVzIGRvZXNuJ3Qgd29yayBiZWNhdXNlLCBpZiB0aGlzIHNjcmlwdCBpcyBjcmVhdGVkIGluIGEKLS0jIHBsYXRmb3JtIHRoYXQgdXNlcyB0d28gY2hhcmFjdGVycyBmb3IgbGluZS1icmVha3MgKGUuZy4sIERPUyksIHRyCi0tIyB3b3VsZCBicmVhay4KLS1hY19MRl9hbmRfRE9UPWBlY2hvOyBlY2hvIC5gCi0tREVGUz1gc2VkIC1uIC1mIGNvbmZkZWYyb3B0LnNlZCBjb25mZGVmcy5oIHwgdHIgIiRhY19MRl9hbmRfRE9UIiAnIC4nYAotLXJtIC1mIGNvbmZkZWYyb3B0LnNlZAotK2NhdCA+IGNvbmZ0ZXN0LmRlZnMgPDxcRU9GCi0rcyUjZGVmaW5lIFwoW0EtWmEtel9dW0EtWmEtejAtOV9dKlwpICpcKC4qXCklLURcMT1cMiVnCi0rcyVbIAlgfiMkXiYqKCl7fVxcfDsnIjw+P10lXFwmJWcKLStzJVxbJVxcJiVnCi0rcyVcXSVcXCYlZwotK3MlXCQlJCQlZwotK0VPRgotK0RFRlM9YHNlZCAtZiBjb25mdGVzdC5kZWZzIGNvbmZkZWZzLmggfCB0ciAnXDAxMicgJyAnYAotK3JtIC1mIGNvbmZ0ZXN0LmRlZnMKLSAKLSAKLS1hY19saWJvYmpzPQotLWFjX2x0bGlib2Jqcz0KLS1mb3IgYWNfaSBpbiA6ICRMSUJPQkpTOyBkbyB0ZXN0ICJ4JGFjX2kiID0geDogJiYgY29udGludWUKLS0gICMgMS4gUmVtb3ZlIHRoZSBleHRlbnNpb24sIGFuZCAkVSBpZiBhbHJlYWR5IGluc3RhbGxlZC4KLS0gIGFjX2k9YGVjaG8gIiRhY19pIiB8Ci0tICAgICAgICAgc2VkICdzL1wkVVwuLy4vO3MvXC5vJC8vO3MvXC5vYmokLy8nYAotLSAgIyAyLiBBZGQgdGhlbS4KLS0gIGFjX2xpYm9ianM9IiRhY19saWJvYmpzICRhY19pXCRVLiRhY19vYmpleHQiCi0tICBhY19sdGxpYm9ianM9IiRhY19sdGxpYm9ianMgJGFjX2kiJyRVLmxvJwotLWRvbmUKLS1MSUJPQkpTPSRhY19saWJvYmpzCi0tCi0tTFRMSUJPQkpTPSRhY19sdGxpYm9ianMKLS0KLS0KLS0KLSsjIFdpdGhvdXQgdGhlICIuLyIsIHNvbWUgc2hlbGxzIGxvb2sgaW4gUEFUSCBmb3IgY29uZmlnLnN0YXR1cy4KLSA6ICR7Q09ORklHX1NUQVRVUz0uL2NvbmZpZy5zdGF0dXN9Ci0tYWNfY2xlYW5fZmlsZXNfc2F2ZT0kYWNfY2xlYW5fZmlsZXMKLS1hY19jbGVhbl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVzICRDT05GSUdfU1RBVFVTIgotLXsgZWNobyAiJGFzX21lOiRMSU5FTk86IGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiA+JjUKLS1lY2hvICIkYXNfbWU6IGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiA+JjY7fQotLWNhdCA+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YKLS0jISAkU0hFTEwKLS0jIEdlbmVyYXRlZCBieSAkYXNfbWUuCi0rCi0rZWNobyBjcmVhdGluZyAkQ09ORklHX1NUQVRVUwotK3JtIC1mICRDT05GSUdfU1RBVFVTCi0rY2F0ID4gJENPTkZJR19TVEFUVVMgPDxFT0YKLSsjISAvYmluL3NoCi0rIyBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBjb25maWd1cmUuCi0gIyBSdW4gdGhpcyBmaWxlIHRvIHJlY3JlYXRlIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCi0rIyBUaGlzIGRpcmVjdG9yeSB3YXMgY29uZmlndXJlZCBhcyBmb2xsb3dzLAotKyMgb24gaG9zdCBgKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWA6Ci0rIwotKyMgJDAgJGFjX2NvbmZpZ3VyZV9hcmdzCi0rIwotICMgQ29tcGlsZXIgb3V0cHV0IHByb2R1Y2VkIGJ5IGNvbmZpZ3VyZSwgdXNlZnVsIGZvciBkZWJ1Z2dpbmcKLS0jIGNvbmZpZ3VyZSwgaXMgaW4gY29uZmlnLmxvZyBpZiBpdCBleGlzdHMuCi0rIyBjb25maWd1cmUsIGlzIGluIC4vY29uZmlnLmxvZyBpZiBpdCBleGlzdHMuCi0gCi0tZGVidWc9ZmFsc2UKLS1hY19jc19yZWNoZWNrPWZhbHNlCi0tYWNfY3Nfc2lsZW50PWZhbHNlCi0tU0hFTEw9XCR7Q09ORklHX1NIRUxMLSRTSEVMTH0KLS1fQUNFT0YKLS0KLS1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyBNNHNoIEluaXRpYWxpemF0aW9uLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0jIEJlIEJvdXJuZSBjb21wYXRpYmxlCi0taWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0tICBlbXVsYXRlIHNoCi0tICBOVUxMQ01EPToKLS0gICMgWnNoIDMueCBhbmQgNC54IHBlcmZvcm1zIHdvcmQgc3BsaXR0aW5nIG9uICR7MSsiJEAifSwgd2hpY2gKLS0gICMgaXMgY29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuCi0tICBhbGlhcyAtZyAnJHsxKyIkQCJ9Jz0nIiRAIicKLS1lbGlmIHRlc3QgLW4gIiR7QkFTSF9WRVJTSU9OK3NldH0iICYmIChzZXQgLW8gcG9zaXgpID4vZGV2L251bGwgMj4mMTsgdGhlbgotLSAgc2V0IC1vIHBvc2l4Ci0tZmkKLS0KLS0jIFN1cHBvcnQgdW5zZXQgd2hlbiBwb3NzaWJsZS4KLS1pZiAoRk9PPUZPTzsgdW5zZXQgRk9PKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLS0gIGFzX3Vuc2V0PXVuc2V0Ci0tZWxzZQotLSAgYXNfdW5zZXQ9ZmFsc2UKLS1maQotLQotLQotLSMgV29yayBhcm91bmQgYnVncyBpbiBwcmUtMy4wIFVXSU4ga3NoLgotLSRhc191bnNldCBFTlYgTUFJTCBNQUlMUEFUSAotLVBTMT0nJCAnCi0tUFMyPSc+ICcKLS1QUzQ9JysgJwotLQotLSMgTkxTIG51aXNhbmNlcy4KLS1mb3IgYXNfdmFyIGluIFwKLS0gIExBTkcgTEFOR1VBR0UgTENfQUREUkVTUyBMQ19BTEwgTENfQ09MTEFURSBMQ19DVFlQRSBMQ19JREVOVElGSUNBVElPTiBcCi0tICBMQ19NRUFTVVJFTUVOVCBMQ19NRVNTQUdFUyBMQ19NT05FVEFSWSBMQ19OQU1FIExDX05VTUVSSUMgTENfUEFQRVIgXAotLSAgTENfVEVMRVBIT05FIExDX1RJTUUKLSthY19jc191c2FnZT0iVXNhZ2U6ICRDT05GSUdfU1RBVFVTIFstLXJlY2hlY2tdIFstLXZlcnNpb25dIFstLWhlbHBdIgotK2ZvciBhY19vcHRpb24KLSBkbwotLSAgaWYgKHNldCAreDsgdGVzdCAtbiAiYChldmFsICRhc192YXI9QzsgZXhwb3J0ICRhc192YXIpIDI+JjFgIik7IHRoZW4KLS0gICAgZXZhbCAkYXNfdmFyPUM7IGV4cG9ydCAkYXNfdmFyCi0tICBlbHNlCi0tICAgICRhc191bnNldCAkYXNfdmFyCi0tICBmaQotKyAgY2FzZSAiXCRhY19vcHRpb24iIGluCi0rICAtcmVjaGVjayB8IC0tcmVjaGVjayB8IC0tcmVjaGVjIHwgLS1yZWNoZSB8IC0tcmVjaCB8IC0tcmVjIHwgLS1yZSB8IC0tcikKLSsgICAgZWNobyAicnVubmluZyBcJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0gJDAgJGFjX2NvbmZpZ3VyZV9hcmdzIC0tbm8tY3JlYXRlIC0tbm8tcmVjdXJzaW9uIgotKyAgICBleGVjIFwke0NPTkZJR19TSEVMTC0vYmluL3NofSAkMCAkYWNfY29uZmlndXJlX2FyZ3MgLS1uby1jcmVhdGUgLS1uby1yZWN1cnNpb24gOzsKLSsgIC12ZXJzaW9uIHwgLS12ZXJzaW9uIHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwgLS12ZXJzIHwgLS12ZXIgfCAtLXZlIHwgLS12KQotKyAgICBlY2hvICIkQ09ORklHX1NUQVRVUyBnZW5lcmF0ZWQgYnkgYXV0b2NvbmYgdmVyc2lvbiAyLjEzIgotKyAgICBleGl0IDAgOzsKLSsgIC1oZWxwIHwgLS1oZWxwIHwgLS1oZWwgfCAtLWhlIHwgLS1oKQotKyAgICBlY2hvICJcJGFjX2NzX3VzYWdlIjsgZXhpdCAwIDs7Ci0rICAqKSBlY2hvICJcJGFjX2NzX3VzYWdlIjsgZXhpdCAxIDs7Ci0rICBlc2FjCi0gZG9uZQotIAotLSMgUmVxdWlyZWQgdG8gdXNlIGJhc2VuYW1lLgotLWlmIGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0tICBhc19leHByPWV4cHIKLS1lbHNlCi0tICBhc19leHByPWZhbHNlCi0tZmkKLSthY19naXZlbl9zcmNkaXI9JHNyY2RpcgotK2FjX2dpdmVuX0lOU1RBTEw9IiRJTlNUQUxMIgotIAotLWlmIChiYXNlbmFtZSAvKSA+L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAiWGBiYXNlbmFtZSAvIDI+JjFgIiA9ICJYLyI7IHRoZW4KLS0gIGFzX2Jhc2VuYW1lPWJhc2VuYW1lCi0tZWxzZQotLSAgYXNfYmFzZW5hbWU9ZmFsc2UKLS1maQotK3RyYXAgJ3JtIC1mciBgZWNobyAiY29uZmlnL2NvbmZpZyBjb25maWcvc3lzdGVtLm1hayIgfCBzZWQgInMvOlteIF0qLy9nImAgY29uZnRlc3QqOyBleGl0IDEnIDEgMiAxNQotK0VPRgotK2NhdCA+PiAkQ09ORklHX1NUQVRVUyA8PEVPRgotIAotKyMgUHJvdGVjdCBhZ2FpbnN0IGJlaW5nIG9uIHRoZSByaWdodCBzaWRlIG9mIGEgc2VkIHN1YnN0IGluIGNvbmZpZy5zdGF0dXMuCi0rc2VkICdzLyVAL0BALzsgcy9AJS9AQC87IHMvJWdcJC9AZy87IC9AZ1wkL3MvW1xcXFwmJV0vXFxcXCYvZzsKLSsgcy9AQC8lQC87IHMvQEAvQCUvOyBzL0BnXCQvJWcvJyA+IGNvbmZ0ZXN0LnN1YnMgPDxcXENFT0YKLSskYWNfdnBzdWIKLSskZXh0cmFzdWIKLStzJUBTSEVMTEAlJFNIRUxMJWcKLStzJUBDRkxBR1NAJSRDRkxBR1MlZwotK3MlQENQUEZMQUdTQCUkQ1BQRkxBR1MlZwotK3MlQENYWEZMQUdTQCUkQ1hYRkxBR1MlZwotK3MlQEZGTEFHU0AlJEZGTEFHUyVnCi0rcyVAREVGU0AlJERFRlMlZwotK3MlQExERkxBR1NAJSRMREZMQUdTJWcKLStzJUBMSUJTQCUkTElCUyVnCi0rcyVAZXhlY19wcmVmaXhAJSRleGVjX3ByZWZpeCVnCi0rcyVAcHJlZml4QCUkcHJlZml4JWcKLStzJUBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lQCUkcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSVnCi0rcyVAYmluZGlyQCUkYmluZGlyJWcKLStzJUBzYmluZGlyQCUkc2JpbmRpciVnCi0rcyVAbGliZXhlY2RpckAlJGxpYmV4ZWNkaXIlZwotK3MlQGRhdGFkaXJAJSRkYXRhZGlyJWcKLStzJUBzeXNjb25mZGlyQCUkc3lzY29uZmRpciVnCi0rcyVAc2hhcmVkc3RhdGVkaXJAJSRzaGFyZWRzdGF0ZWRpciVnCi0rcyVAbG9jYWxzdGF0ZWRpckAlJGxvY2Fsc3RhdGVkaXIlZwotK3MlQGxpYmRpckAlJGxpYmRpciVnCi0rcyVAaW5jbHVkZWRpckAlJGluY2x1ZGVkaXIlZwotK3MlQG9sZGluY2x1ZGVkaXJAJSRvbGRpbmNsdWRlZGlyJWcKLStzJUBpbmZvZGlyQCUkaW5mb2RpciVnCi0rcyVAbWFuZGlyQCUkbWFuZGlyJWcKLStzJUBob3N0QCUkaG9zdCVnCi0rcyVAaG9zdF9hbGlhc0AlJGhvc3RfYWxpYXMlZwotK3MlQGhvc3RfY3B1QCUkaG9zdF9jcHUlZwotK3MlQGhvc3RfdmVuZG9yQCUkaG9zdF92ZW5kb3IlZwotK3MlQGhvc3Rfb3NAJSRob3N0X29zJWcKLStzJUB0YXJnZXRAJSR0YXJnZXQlZwotK3MlQHRhcmdldF9hbGlhc0AlJHRhcmdldF9hbGlhcyVnCi0rcyVAdGFyZ2V0X2NwdUAlJHRhcmdldF9jcHUlZwotK3MlQHRhcmdldF92ZW5kb3JAJSR0YXJnZXRfdmVuZG9yJWcKLStzJUB0YXJnZXRfb3NAJSR0YXJnZXRfb3MlZwotK3MlQGJ1aWxkQCUkYnVpbGQlZwotK3MlQGJ1aWxkX2FsaWFzQCUkYnVpbGRfYWxpYXMlZwotK3MlQGJ1aWxkX2NwdUAlJGJ1aWxkX2NwdSVnCi0rcyVAYnVpbGRfdmVuZG9yQCUkYnVpbGRfdmVuZG9yJWcKLStzJUBidWlsZF9vc0AlJGJ1aWxkX29zJWcKLStzJUBDQ0AlJENDJWcKLStzJUBSQU5MSUJAJSRSQU5MSUIlZwotK3MlQElOU1RBTExfUFJPR1JBTUAlJElOU1RBTExfUFJPR1JBTSVnCi0rcyVASU5TVEFMTF9TQ1JJUFRAJSRJTlNUQUxMX1NDUklQVCVnCi0rcyVASU5TVEFMTF9EQVRBQCUkSU5TVEFMTF9EQVRBJWcKLStzJUBBUkAlJEFSJWcKLStzJUBUQVJHRVRfT1NAJSRUQVJHRVRfT1MlZwotK3MlQFRBUkdFVF9DUFVAJSRUQVJHRVRfQ1BVJWcKLStzJUBNNjhLQ0NAJSRNNjhLQ0MlZwotK3MlQExFWERFRlNAJSRMRVhERUZTJWcKLStzJUBWT1hERUZTQCUkVk9YREVGUyVnCi0rcyVASE9TVF9PU0AlJEhPU1RfT1MlZwotK3MlQEhPU1RfQ1BVQCUkSE9TVF9DUFUlZwotK3MlQE9USEVSTElCU0AlJE9USEVSTElCUyVnCi0rcyVAU0hGTEFHU0AlJFNIRkxBR1MlZwotK3MlQE1NQVBUWVBFQCUkTU1BUFRZUEUlZwotK3MlQFNURElPVFlQRUAlJFNURElPVFlQRSVnCi0rcyVAQ1BQQCUkQ1BQJWcKLStzJUBBVURJT0RSSVZFUkAlJEFVRElPRFJJVkVSJWcKLStzJUBBVURJT0RFRlNAJSRBVURJT0RFRlMlZwotK3MlQEFVRElPTElCU0AlJEFVRElPTElCUyVnCi0rcyVARkxfTEFOR0AlJEZMX0xBTkclZwotK3MlQEZMX1ZPWEAlJEZMX1ZPWCVnCi0rcyVARkxfTEVYQCUkRkxfTEVYJWcKLStzJUBFWEVFWFRAJSRFWEVFWFQlZwotIAotLSMgTmFtZSBvZiB0aGUgZXhlY3V0YWJsZS4KLS1hc19tZT1gJGFzX2Jhc2VuYW1lICIkMCIgfHwKLS0kYXNfZXhwciBYLyIkMCIgOiAnLiovXChbXi9dW14vXSpcKS8qJCcgXHwgXAotLQkgWCIkMCIgOiAnWFwoLy9cKSQnIFx8IFwKLS0JIFgiJDAiIDogJ1hcKC9cKSQnIFx8IFwKLS0JIC4gICAgIDogJ1woLlwpJyAyPi9kZXYvbnVsbCB8fAotLWVjaG8gWC8iJDAiIHwKLS0gICAgc2VkICcvXi4qXC9cKFteL11bXi9dKlwpXC8qJC97IHMvL1wxLzsgcTsgfQotLSAgCSAgL15YXC9cKFwvXC9cKSQveyBzLy9cMS87IHE7IH0KLS0gIAkgIC9eWFwvXChcL1wpLioveyBzLy9cMS87IHE7IH0KLS0gIAkgIHMvLiovLi87IHEnYAotK0NFT0YKLStFT0YKLSAKLStjYXQgPj4gJENPTkZJR19TVEFUVVMgPDxcRU9GCi0gCi0tIyBQQVRIIG5lZWRzIENSLCBhbmQgTElORU5PIG5lZWRzIENSIGFuZCBQQVRILgotLSMgQXZvaWQgZGVwZW5kaW5nIHVwb24gQ2hhcmFjdGVyIFJhbmdlcy4KLS1hc19jcl9sZXR0ZXJzPSdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicKLS1hc19jcl9MRVRURVJTPSdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicKLS1hc19jcl9MZXR0ZXJzPSRhc19jcl9sZXR0ZXJzJGFzX2NyX0xFVFRFUlMKLS1hc19jcl9kaWdpdHM9JzAxMjM0NTY3ODknCi0tYXNfY3JfYWxudW09JGFzX2NyX0xldHRlcnMkYXNfY3JfZGlnaXRzCi0tCi0tIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCi0taWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRPUitzZXR9IiAhPSBzZXQ7IHRoZW4KLS0gIGVjaG8gIiMhIC9iaW4vc2giID5jb25mJCQuc2gKLS0gIGVjaG8gICJleGl0IDAiICAgPj5jb25mJCQuc2gKLS0gIGNobW9kICt4IGNvbmYkJC5zaAotLSAgaWYgKFBBVEg9Ii9ub25leGlzdGVudDsuIjsgY29uZiQkLnNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLS0gICAgUEFUSF9TRVBBUkFUT1I9JzsnCi0rIyBTcGxpdCB0aGUgc3Vic3RpdHV0aW9ucyBpbnRvIGJpdGUtc2l6ZWQgcGllY2VzIGZvciBzZWRzIHdpdGgKLSsjIHNtYWxsIGNvbW1hbmQgbnVtYmVyIGxpbWl0cywgbGlrZSBvbiBEaWdpdGFsIE9TRi8xIGFuZCBIUC1VWC4KLSthY19tYXhfc2VkX2NtZHM9OTAgIyBNYXhpbXVtIG51bWJlciBvZiBsaW5lcyB0byBwdXQgaW4gYSBzZWQgc2NyaXB0LgotK2FjX2ZpbGU9MSAjIE51bWJlciBvZiBjdXJyZW50IGZpbGUuCi0rYWNfYmVnPTEgIyBGaXJzdCBsaW5lIGZvciBjdXJyZW50IGZpbGUuCi0rYWNfZW5kPSRhY19tYXhfc2VkX2NtZHMgIyBMaW5lIGFmdGVyIGxhc3QgbGluZSBmb3IgY3VycmVudCBmaWxlLgotK2FjX21vcmVfbGluZXM9OgotK2FjX3NlZF9jbWRzPSIiCi0rd2hpbGUgJGFjX21vcmVfbGluZXM7IGRvCi0rICBpZiB0ZXN0ICRhY19iZWcgLWd0IDE7IHRoZW4KLSsgICAgc2VkICIxLCR7YWNfYmVnfWQ7ICR7YWNfZW5kfXEiIGNvbmZ0ZXN0LnN1YnMgPiBjb25mdGVzdC5zJGFjX2ZpbGUKLSAgIGVsc2UKLS0gICAgUEFUSF9TRVBBUkFUT1I9OgotKyAgICBzZWQgIiR7YWNfZW5kfXEiIGNvbmZ0ZXN0LnN1YnMgPiBjb25mdGVzdC5zJGFjX2ZpbGUKLSAgIGZpCi0tICBybSAtZiBjb25mJCQuc2gKLS1maQotLQotLQotLSAgYXNfbGluZW5vXzE9JExJTkVOTwotLSAgYXNfbGluZW5vXzI9JExJTkVOTwotLSAgYXNfbGluZW5vXzM9YChleHByICRhc19saW5lbm9fMSArIDEpIDI+L2Rldi9udWxsYAotLSAgdGVzdCAieCRhc19saW5lbm9fMSIgIT0gIngkYXNfbGluZW5vXzIiICYmCi0tICB0ZXN0ICJ4JGFzX2xpbmVub18zIiAgPSAieCRhc19saW5lbm9fMiIgIHx8IHsKLS0gICMgRmluZCB3aG8gd2UgYXJlLiAgTG9vayBpbiB0aGUgcGF0aCBpZiB3ZSBjb250YWluIG5vIHBhdGggYXQgYWxsCi0tICAjIHJlbGF0aXZlIG9yIG5vdC4KLS0gIGNhc2UgJDAgaW4KLS0gICAgKltcXC9dKiApIGFzX215c2VsZj0kMCA7OwotLSAgICAqKSBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgdGVzdCAtciAiJGFzX2Rpci8kMCIgJiYgYXNfbXlzZWxmPSRhc19kaXIvJDAgJiYgYnJlYWsKLS1kb25lCi0tCi0tICAgICAgIDs7Ci0tICBlc2FjCi0tICAjIFdlIGRpZCBub3QgZmluZCBvdXJzZWx2ZXMsIG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBydW4gYXMgYHNoIENPTU1BTkQnCi0tICAjIGluIHdoaWNoIGNhc2Ugd2UgYXJlIG5vdCB0byBiZSBmb3VuZCBpbiB0aGUgcGF0aC4KLS0gIGlmIHRlc3QgIngkYXNfbXlzZWxmIiA9IHg7IHRoZW4KLS0gICAgYXNfbXlzZWxmPSQwCi0tICBmaQotLSAgaWYgdGVzdCAhIC1mICIkYXNfbXlzZWxmIjsgdGhlbgotLSAgICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBjYW5ub3QgZmluZCBteXNlbGY7IHJlcnVuIHdpdGggYW4gYWJzb2x1dGUgcGF0aCIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGZpbmQgbXlzZWxmOyByZXJ1biB3aXRoIGFuIGFic29sdXRlIHBhdGgiID4mMjt9Ci0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tICBmaQotLSAgY2FzZSAkQ09ORklHX1NIRUxMIGluCi0tICAnJykKLS0gICAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotLWZvciBhc19kaXIgaW4gL2JpbiRQQVRIX1NFUEFSQVRPUi91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgKLS1kbwotLSAgSUZTPSRhc19zYXZlX0lGUwotLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLS0gIGZvciBhc19iYXNlIGluIHNoIGJhc2gga3NoIHNoNTsgZG8KLS0JIGNhc2UgJGFzX2RpciBpbgotLQkgLyopCi0tCSAgIGlmICgiJGFzX2Rpci8kYXNfYmFzZSIgLWMgJwotLSAgYXNfbGluZW5vXzE9JExJTkVOTwotLSAgYXNfbGluZW5vXzI9JExJTkVOTwotLSAgYXNfbGluZW5vXzM9YChleHByICRhc19saW5lbm9fMSArIDEpIDI+L2Rldi9udWxsYAotLSAgdGVzdCAieCRhc19saW5lbm9fMSIgIT0gIngkYXNfbGluZW5vXzIiICYmCi0tICB0ZXN0ICJ4JGFzX2xpbmVub18zIiAgPSAieCRhc19saW5lbm9fMiIgJykgMj4vZGV2L251bGw7IHRoZW4KLS0JICAgICAkYXNfdW5zZXQgQkFTSF9FTlYgfHwgdGVzdCAiJHtCQVNIX0VOVitzZXR9IiAhPSBzZXQgfHwgeyBCQVNIX0VOVj07IGV4cG9ydCBCQVNIX0VOVjsgfQotLQkgICAgICRhc191bnNldCBFTlYgfHwgdGVzdCAiJHtFTlYrc2V0fSIgIT0gc2V0IHx8IHsgRU5WPTsgZXhwb3J0IEVOVjsgfQotLQkgICAgIENPTkZJR19TSEVMTD0kYXNfZGlyLyRhc19iYXNlCi0tCSAgICAgZXhwb3J0IENPTkZJR19TSEVMTAotLQkgICAgIGV4ZWMgIiRDT05GSUdfU0hFTEwiICIkMCIgJHsxKyIkQCJ9Ci0tCSAgIGZpOzsKLS0JIGVzYWMKLS0gICAgICAgZG9uZQotLWRvbmUKLS07OwotLSAgZXNhYwotLQotLSAgIyBDcmVhdGUgJGFzX21lLmxpbmVubyBhcyBhIGNvcHkgb2YgJGFzX215c2VsZiwgYnV0IHdpdGggJExJTkVOTwotLSAgIyB1bmlmb3JtbHkgcmVwbGFjZWQgYnkgdGhlIGxpbmUgbnVtYmVyLiAgVGhlIGZpcnN0ICdzZWQnIGluc2VydHMgYQotLSAgIyBsaW5lLW51bWJlciBsaW5lIGJlZm9yZSBlYWNoIGxpbmU7IHRoZSBzZWNvbmQgJ3NlZCcgZG9lcyB0aGUgcmVhbAotLSAgIyB3b3JrLiAgVGhlIHNlY29uZCBzY3JpcHQgdXNlcyAnTicgdG8gcGFpciBlYWNoIGxpbmUtbnVtYmVyIGxpbmUKLS0gICMgd2l0aCB0aGUgbnVtYmVyZWQgbGluZSwgYW5kIGFwcGVuZHMgdHJhaWxpbmcgJy0nIGR1cmluZwotLSAgIyBzdWJzdGl0dXRpb24gc28gdGhhdCAkTElORU5PIGlzIG5vdCBhIHNwZWNpYWwgY2FzZSBhdCBsaW5lIGVuZC4KLS0gICMgKFJhamEgUiBIYXJpbmF0aCBzdWdnZXN0ZWQgc2VkICc9JywgYW5kIFBhdWwgRWdnZXJ0IHdyb3RlIHRoZQotLSAgIyBzZWNvbmQgJ3NlZCcgc2NyaXB0LiAgQmxhbWUgTGVlIEUuIE1jTWFob24gZm9yIHNlZCdzIHN5bnRheC4gIDotKQotLSAgc2VkICc9JyA8JGFzX215c2VsZiB8Ci0tICAgIHNlZCAnCi0tICAgICAgTgotLSAgICAgIHMsJCwtLAotLSAgICAgIDogbG9vcAotLSAgICAgIHMsXlwoWyckYXNfY3JfZGlnaXRzJ10qXClcKC4qXClbJF1MSU5FTk9cKFteJyRhc19jcl9hbG51bSdfXVwpLFwxXDJcMVwzLAotLSAgICAgIHQgbG9vcAotLSAgICAgIHMsLSQsLAotLSAgICAgIHMsXlsnJGFzX2NyX2RpZ2l0cyddKlxuLCwKLS0gICAgJyA+JGFzX21lLmxpbmVubyAmJgotLSAgY2htb2QgK3ggJGFzX21lLmxpbmVubyB8fAotLSAgICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBjYW5ub3QgY3JlYXRlICRhc19tZS5saW5lbm87IHJlcnVuIHdpdGggYSBQT1NJWCBzaGVsbCIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNyZWF0ZSAkYXNfbWUubGluZW5vOyByZXJ1biB3aXRoIGEgUE9TSVggc2hlbGwiID4mMjt9Ci0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tCi0tICAjIERvbid0IHRyeSB0byBleGVjIGFzIGl0IGNoYW5nZXMgJFswXSwgY2F1c2luZyBhbGwgc29ydCBvZiBwcm9ibGVtcwotLSAgIyAodGhlIGRpcm5hbWUgb2YgJFswXSBpcyBub3QgdGhlIHBsYWNlIHdoZXJlIHdlIG1pZ2h0IGZpbmQgdGhlCi0tICAjIG9yaWdpbmFsIGFuZCBzbyBvbi4gIEF1dG9jb25mIGlzIGVzcGVjaWFsbHkgc2Vuc2libGUgdG8gdGhpcykuCi0tICAuIC4vJGFzX21lLmxpbmVubwotLSAgIyBFeGl0IHN0YXR1cyBpcyB0aGF0IG9mIHRoZSBsYXN0IGNvbW1hbmQuCi0tICBleGl0Ci0tfQotLQotLQotLWNhc2UgYGVjaG8gInRlc3RpbmdcYyI7IGVjaG8gMSwyLDNgLGBlY2hvIC1uIHRlc3Rpbmc7IGVjaG8gMSwyLDNgIGluCi0tICAqYyosLW4qKSBFQ0hPX049IEVDSE9fQz0nCi0tJyBFQ0hPX1Q9JwknIDs7Ci0tICAqYyosKiAgKSBFQ0hPX049LW4gRUNIT19DPSBFQ0hPX1Q9IDs7Ci0tICAqKSAgICAgICBFQ0hPX049IEVDSE9fQz0nXGMnIEVDSE9fVD0gOzsKLS1lc2FjCi0tCi0taWYgZXhwciBhIDogJ1woYVwpJyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLS0gIGFzX2V4cHI9ZXhwcgotLWVsc2UKLS0gIGFzX2V4cHI9ZmFsc2UKLS1maQotLQotLXJtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxlCi0tZWNobyA+Y29uZiQkLmZpbGUKLS1pZiBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4KLS0gICMgV2UgY291bGQganVzdCBjaGVjayBmb3IgREpHUFA7IGJ1dCB0aGlzIHRlc3QgYSkgd29ya3MgYikgaXMgbW9yZSBnZW5lcmljCi0tICAjIGFuZCBjKSB3aWxsIHJlbWFpbiB2YWxpZCBvbmNlIERKR1BQIHN1cHBvcnRzIHN5bWxpbmtzIChESkdQUCAyLjA0KS4KLS0gIGlmIHRlc3QgLWYgY29uZiQkLmV4ZTsgdGhlbgotLSAgICAjIERvbid0IHVzZSBsbiBhdCBhbGw7IHdlIGRvbid0IGhhdmUgYW55IGxpbmtzCi0tICAgIGFzX2xuX3M9J2NwIC1wJwotKyAgaWYgdGVzdCAhIC1zIGNvbmZ0ZXN0LnMkYWNfZmlsZTsgdGhlbgotKyAgICBhY19tb3JlX2xpbmVzPWZhbHNlCi0rICAgIHJtIC1mIGNvbmZ0ZXN0LnMkYWNfZmlsZQotICAgZWxzZQotLSAgICBhc19sbl9zPSdsbiAtcycKLSsgICAgaWYgdGVzdCAteiAiJGFjX3NlZF9jbWRzIjsgdGhlbgotKyAgICAgIGFjX3NlZF9jbWRzPSJzZWQgLWYgY29uZnRlc3QucyRhY19maWxlIgotKyAgICBlbHNlCi0rICAgICAgYWNfc2VkX2NtZHM9IiRhY19zZWRfY21kcyB8IHNlZCAtZiBjb25mdGVzdC5zJGFjX2ZpbGUiCi0rICAgIGZpCi0rICAgIGFjX2ZpbGU9YGV4cHIgJGFjX2ZpbGUgKyAxYAotKyAgICBhY19iZWc9JGFjX2VuZAotKyAgICBhY19lbmQ9YGV4cHIgJGFjX2VuZCArICRhY19tYXhfc2VkX2NtZHNgCi0gICBmaQotLWVsaWYgbG4gY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCi0tICBhc19sbl9zPWxuCi0tZWxzZQotLSAgYXNfbG5fcz0nY3AgLXAnCi0tZmkKLS1ybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZmlsZQotLQotLWlmIG1rZGlyIC1wIC4gMj4vZGV2L251bGw7IHRoZW4KLS0gIGFzX21rZGlyX3A9OgotLWVsc2UKLS0gIGFzX21rZGlyX3A9ZmFsc2UKLS1maQotLQotLWFzX2V4ZWN1dGFibGVfcD0idGVzdCAtZiIKLS0KLS0jIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgQ1BQIG5hbWUuCi0tYXNfdHJfY3BwPSJzZWQgeSUqJGFzX2NyX2xldHRlcnMlUCRhc19jcl9MRVRURVJTJTtzJVteXyRhc19jcl9hbG51bV0lXyVnIgotLQotLSMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLgotLWFzX3RyX3NoPSJzZWQgeSUqKyVwcCU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyIKLS0KLS0KLS0jIElGUwotLSMgV2UgbmVlZCBzcGFjZSwgdGFiIGFuZCBuZXcgbGluZSwgaW4gcHJlY2lzZWx5IHRoYXQgb3JkZXIuCi0tYXNfbmw9JwotLScKLS1JRlM9IiAJJGFzX25sIgotLQotLSMgQ0RQQVRILgotLSRhc191bnNldCBDRFBBVEgKLS0KLS1leGVjIDY+JjEKLS0KLS0jIE9wZW4gdGhlIGxvZyByZWFsIHNvb24sIHRvIGtlZXAgXCRbMF0gYW5kIHNvIG9uIG1lYW5pbmdmdWwsIGFuZCB0bwotLSMgcmVwb3J0IGFjdHVhbCBpbnB1dCB2YWx1ZXMgb2YgQ09ORklHX0ZJTEVTIGV0Yy4gaW5zdGVhZCBvZiB0aGVpcgotLSMgdmFsdWVzIGFmdGVyIG9wdGlvbnMgaGFuZGxpbmcuICBMb2dnaW5nIC0tdmVyc2lvbiBldGMuIGlzIE9LLgotLWV4ZWMgNT4+Y29uZmlnLmxvZwotLXsKLS0gIGVjaG8KLS0gIHNlZCAnaDtzLy4vLS9nO3MvXi4uLi8jIyAvO3MvLi4uJC8gIyMvO3A7eDtwO3gnIDw8X0FTQk9YCi0tIyMgUnVubmluZyAkYXNfbWUuICMjCi0tX0FTQk9YCi0tfSA+JjUKLS1jYXQgPiY1IDw8X0NTRU9GCi0tCi0tVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSAkYXNfbWUsIHdoaWNoIHdhcwotLWdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi41Ny4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcwotLQotLSAgQ09ORklHX0ZJTEVTICAgID0gJENPTkZJR19GSUxFUwotLSAgQ09ORklHX0hFQURFUlMgID0gJENPTkZJR19IRUFERVJTCi0tICBDT05GSUdfTElOS1MgICAgPSAkQ09ORklHX0xJTktTCi0tICBDT05GSUdfQ09NTUFORFMgPSAkQ09ORklHX0NPTU1BTkRTCi0tICAkICQwICRACi0tCi0tX0NTRU9GCi0tZWNobyAib24gYChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgIiA+JjUKLS1lY2hvID4mNQotLV9BQ0VPRgotLQotLSMgRmlsZXMgdGhhdCBjb25maWcuc3RhdHVzIHdhcyBtYWRlIGZvci4KLS1pZiB0ZXN0IC1uICIkYWNfY29uZmlnX2ZpbGVzIjsgdGhlbgotLSAgZWNobyAiY29uZmlnX2ZpbGVzPVwiJGFjX2NvbmZpZ19maWxlc1wiIiA+PiRDT05GSUdfU1RBVFVTCi0tZmkKLS0KLS1pZiB0ZXN0IC1uICIkYWNfY29uZmlnX2hlYWRlcnMiOyB0aGVuCi0tICBlY2hvICJjb25maWdfaGVhZGVycz1cIiRhY19jb25maWdfaGVhZGVyc1wiIiA+PiRDT05GSUdfU1RBVFVTCi0tZmkKLS0KLS1pZiB0ZXN0IC1uICIkYWNfY29uZmlnX2xpbmtzIjsgdGhlbgotLSAgZWNobyAiY29uZmlnX2xpbmtzPVwiJGFjX2NvbmZpZ19saW5rc1wiIiA+PiRDT05GSUdfU1RBVFVTCi0tZmkKLS0KLS1pZiB0ZXN0IC1uICIkYWNfY29uZmlnX2NvbW1hbmRzIjsgdGhlbgotLSAgZWNobyAiY29uZmlnX2NvbW1hbmRzPVwiJGFjX2NvbmZpZ19jb21tYW5kc1wiIiA+PiRDT05GSUdfU1RBVFVTCi0tZmkKLS0KLS1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YKLS0KLS1hY19jc191c2FnZT0iXAotLVxgJGFzX21lJyBpbnN0YW50aWF0ZXMgZmlsZXMgZnJvbSB0ZW1wbGF0ZXMgYWNjb3JkaW5nIHRvIHRoZQotLWN1cnJlbnQgY29uZmlndXJhdGlvbi4KLS0KLS1Vc2FnZTogJDAgW09QVElPTlNdIFtGSUxFXS4uLgotLQotLSAgLWgsIC0taGVscCAgICAgICBwcmludCB0aGlzIGhlbHAsIHRoZW4gZXhpdAotLSAgLVYsIC0tdmVyc2lvbiAgICBwcmludCB2ZXJzaW9uIG51bWJlciwgdGhlbiBleGl0Ci0tICAtcSwgLS1xdWlldCAgICAgIGRvIG5vdCBwcmludCBwcm9ncmVzcyBtZXNzYWdlcwotLSAgLWQsIC0tZGVidWcgICAgICBkb24ndCByZW1vdmUgdGVtcG9yYXJ5IGZpbGVzCi0tICAgICAgLS1yZWNoZWNrICAgIHVwZGF0ZSAkYXNfbWUgYnkgcmVjb25maWd1cmluZyBpbiB0aGUgc2FtZSBjb25kaXRpb25zCi0tICAtLWZpbGU9RklMRVs6VEVNUExBVEVdCi0tICAgICAgICAgICAgICAgICAgIGluc3RhbnRpYXRlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgRklMRQotLQotLUNvbmZpZ3VyYXRpb24gZmlsZXM6Ci0tJGNvbmZpZ19maWxlcwotLQotLVJlcG9ydCBidWdzIHRvIDxidWctYXV0b2NvbmZAZ251Lm9yZz4uIgotLV9BQ0VPRgotLQotLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GCi0tYWNfY3NfdmVyc2lvbj0iXFwKLS1jb25maWcuc3RhdHVzCi0tY29uZmlndXJlZCBieSAkMCwgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjU3LAotLSAgd2l0aCBvcHRpb25zIFxcImBlY2hvICIkYWNfY29uZmlndXJlX2FyZ3MiIHwgc2VkICdzL1tcXCIiXGBcJF0vXFxcXCYvZydgXFwiCi0tCi0tQ29weXJpZ2h0IDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEKLS1GcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS1UaGlzIGNvbmZpZy5zdGF0dXMgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLS1naXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuIgotLXNyY2Rpcj0kc3JjZGlyCi0tSU5TVEFMTD0iJElOU1RBTEwiCi0tX0FDRU9GCi0tCi0tY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GCi0tIyBJZiBubyBmaWxlIGFyZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIsIHRoZW4gd2UgbmVlZCB0byBwcm92aWRlIGRlZmF1bHQKLS0jIHZhbHVlLiAgQnkgd2UgbmVlZCB0byBrbm93IGlmIGZpbGVzIHdlcmUgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLgotLWFjX25lZWRfZGVmYXVsdHM9OgotLXdoaWxlIHRlc3QgJCMgIT0gMAotLWRvCi0tICBjYXNlICQxIGluCi0tICAtLSo9KikKLS0gICAgYWNfb3B0aW9uPWBleHByICJ4JDEiIDogJ3hcKFtePV0qXCk9J2AKLS0gICAgYWNfb3B0YXJnPWBleHByICJ4JDEiIDogJ3hbXj1dKj1cKC4qXCknYAotLSAgICBhY19zaGlmdD06Ci0tICAgIDs7Ci0tICAtKikKLS0gICAgYWNfb3B0aW9uPSQxCi0tICAgIGFjX29wdGFyZz0kMgotLSAgICBhY19zaGlmdD1zaGlmdAotLSAgICA7OwotLSAgKikgIyBUaGlzIGlzIG5vdCBhbiBvcHRpb24sIHNvIHRoZSB1c2VyIGhhcyBwcm9iYWJseSBnaXZlbiBleHBsaWNpdAotLSAgICAgIyBhcmd1bWVudHMuCi0tICAgICBhY19vcHRpb249JDEKLS0gICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7OwotLSAgZXNhYwotLQotLSAgY2FzZSAkYWNfb3B0aW9uIGluCi0tICAjIEhhbmRsaW5nIG9mIHRoZSBvcHRpb25zLgotLV9BQ0VPRgotLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRgotLSAgLXJlY2hlY2sgfCAtLXJlY2hlY2sgfCAtLXJlY2hlYyB8IC0tcmVjaGUgfCAtLXJlY2ggfCAtLXJlYyB8IC0tcmUgfCAtLXIpCi0tICAgIGFjX2NzX3JlY2hlY2s9OiA7OwotLSAgLS12ZXJzaW9uIHwgLS12ZXJzKiB8IC1WICkKLS0gICAgZWNobyAiJGFjX2NzX3ZlcnNpb24iOyBleGl0IDAgOzsKLS0gIC0taGUgfCAtLWgpCi0tICAgICMgQ29uZmxpY3QgYmV0d2VlbiAtLWhlbHAgYW5kIC0taGVhZGVyCi0tICAgIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGFtYmlndW91cyBvcHRpb246ICQxCi0tVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IGFtYmlndW91cyBvcHRpb246ICQxCi0tVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iID4mMjt9Ci0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9OzsKLS0gIC0taGVscCB8IC0taGVsIHwgLWggKQotLSAgICBlY2hvICIkYWNfY3NfdXNhZ2UiOyBleGl0IDAgOzsKLS0gIC0tZGVidWcgfCAtLWQqIHwgLWQgKQotLSAgICBkZWJ1Zz06IDs7Ci0tICAtLWZpbGUgfCAtLWZpbCB8IC0tZmkgfCAtLWYgKQotLSAgICAkYWNfc2hpZnQKLS0gICAgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTICRhY19vcHRhcmciCi0tICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7OwotLSAgLS1oZWFkZXIgfCAtLWhlYWRlIHwgLS1oZWFkIHwgLS1oZWEgKQotLSAgICAkYWNfc2hpZnQKLS0gICAgQ09ORklHX0hFQURFUlM9IiRDT05GSUdfSEVBREVSUyAkYWNfb3B0YXJnIgotLSAgICBhY19uZWVkX2RlZmF1bHRzPWZhbHNlOzsKLS0gIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBcCi0tICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCB8IC0tc2kgfCAtLXMpCi0tICAgIGFjX2NzX3NpbGVudD06IDs7Ci0tCi0tICAjIFRoaXMgaXMgYW4gZXJyb3IuCi0tICAtKikgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogdW5yZWNvZ25pemVkIG9wdGlvbjogJDEKLS1UcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogdW5yZWNvZ25pemVkIG9wdGlvbjogJDEKLS1UcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0gOzsKLS0KLS0gICopIGFjX2NvbmZpZ190YXJnZXRzPSIkYWNfY29uZmlnX3RhcmdldHMgJDEiIDs7Ci0tCi0tICBlc2FjCi0tICBzaGlmdAotIGRvbmUKLS0KLS1hY19jb25maWd1cmVfZXh0cmFfYXJncz0KLS0KLS1pZiAkYWNfY3Nfc2lsZW50OyB0aGVuCi0tICBleGVjIDY+L2Rldi9udWxsCi0tICBhY19jb25maWd1cmVfZXh0cmFfYXJncz0iJGFjX2NvbmZpZ3VyZV9leHRyYV9hcmdzIC0tc2lsZW50IgotK2lmIHRlc3QgLXogIiRhY19zZWRfY21kcyI7IHRoZW4KLSsgIGFjX3NlZF9jbWRzPWNhdAotIGZpCi0rRU9GCi0gCi0tX0FDRU9GCi0tY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YKLS1pZiBcJGFjX2NzX3JlY2hlY2s7IHRoZW4KLS0gIGVjaG8gInJ1bm5pbmcgJFNIRUxMICQwICIgJGFjX2NvbmZpZ3VyZV9hcmdzIFwkYWNfY29uZmlndXJlX2V4dHJhX2FyZ3MgIiAtLW5vLWNyZWF0ZSAtLW5vLXJlY3Vyc2lvbiIgPiY2Ci0tICBleGVjICRTSEVMTCAkMCAkYWNfY29uZmlndXJlX2FyZ3MgXCRhY19jb25maWd1cmVfZXh0cmFfYXJncyAtLW5vLWNyZWF0ZSAtLW5vLXJlY3Vyc2lvbgotLWZpCi0rY2F0ID4+ICRDT05GSUdfU1RBVFVTIDw8RU9GCi0gCi0tX0FDRU9GCi0tCi0tCi0tCi0tCi0tCi0tY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GCi0tZm9yIGFjX2NvbmZpZ190YXJnZXQgaW4gJGFjX2NvbmZpZ190YXJnZXRzCi0tZG8KLS0gIGNhc2UgIiRhY19jb25maWdfdGFyZ2V0IiBpbgotLSAgIyBIYW5kbGluZyBvZiBhcmd1bWVudHMuCi0tICAiY29uZmlnL2NvbmZpZyIgKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgY29uZmlnL2NvbmZpZyIgOzsKLS0gICJjb25maWcvc3lzdGVtLm1hayIgKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgY29uZmlnL3N5c3RlbS5tYWsiIDs7Ci0tICAqKSB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBpbnZhbGlkIGFyZ3VtZW50OiAkYWNfY29uZmlnX3RhcmdldCIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogaW52YWxpZCBhcmd1bWVudDogJGFjX2NvbmZpZ190YXJnZXQiID4mMjt9Ci0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9OzsKLStDT05GSUdfRklMRVM9XCR7Q09ORklHX0ZJTEVTLSJjb25maWcvY29uZmlnIGNvbmZpZy9zeXN0ZW0ubWFrIn0KLStFT0YKLStjYXQgPj4gJENPTkZJR19TVEFUVVMgPDxcRU9GCi0rZm9yIGFjX2ZpbGUgaW4gLi4gJENPTkZJR19GSUxFUzsgZG8gaWYgdGVzdCAieCRhY19maWxlIiAhPSB4Li47IHRoZW4KLSsgICMgU3VwcG9ydCAib3V0ZmlsZVs6aW5maWxlWzppbmZpbGUuLi5dXSIsIGRlZmF1bHRpbmcgaW5maWxlPSJvdXRmaWxlLmluIi4KLSsgIGNhc2UgIiRhY19maWxlIiBpbgotKyAgKjoqKSBhY19maWxlX2luPWBlY2hvICIkYWNfZmlsZSJ8c2VkICdzJVteOl0qOiUlJ2AKLSsgICAgICAgYWNfZmlsZT1gZWNobyAiJGFjX2ZpbGUifHNlZCAncyU6LiolJSdgIDs7Ci0rICAqKSBhY19maWxlX2luPSIke2FjX2ZpbGV9LmluIiA7OwotICAgZXNhYwotLWRvbmUKLSAKLS0jIElmIHRoZSB1c2VyIGRpZCBub3QgdXNlIHRoZSBhcmd1bWVudHMgdG8gc3BlY2lmeSB0aGUgaXRlbXMgdG8gaW5zdGFudGlhdGUsCi0tIyB0aGVuIHRoZSBlbnZ2YXIgaW50ZXJmYWNlIGlzIHVzZWQuICBTZXQgb25seSB0aG9zZSB0aGF0IGFyZSBub3QuCi0tIyBXZSB1c2UgdGhlIGxvbmcgZm9ybSBmb3IgdGhlIGRlZmF1bHQgYXNzaWdubWVudCBiZWNhdXNlIG9mIGFuIGV4dHJlbWVseQotLSMgYml6YXJyZSBidWcgb24gU3VuT1MgNC4xLjMuCi0taWYgJGFjX25lZWRfZGVmYXVsdHM7IHRoZW4KLS0gIHRlc3QgIiR7Q09ORklHX0ZJTEVTK3NldH0iID0gc2V0IHx8IENPTkZJR19GSUxFUz0kY29uZmlnX2ZpbGVzCi0tZmkKLSsgICMgQWRqdXN0IGEgcmVsYXRpdmUgc3JjZGlyLCB0b3Bfc3JjZGlyLCBhbmQgSU5TVEFMTCBmb3Igc3ViZGlyZWN0b3JpZXMuCi0gCi0tIyBIYXZlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBmb3IgY29udmVuaWVuY2UuICBNYWtlIGl0IGluIHRoZSBidWlsZCB0cmVlCi0tIyBzaW1wbHkgYmVjYXVzZSB0aGVyZSBpcyBubyByZWFzb24gdG8gcHV0IGl0IGhlcmUsIGFuZCBpbiBhZGRpdGlvbiwKLS0jIGNyZWF0aW5nIGFuZCBtb3ZpbmcgZmlsZXMgZnJvbSAvdG1wIGNhbiBzb21ldGltZXMgY2F1c2UgcHJvYmxlbXMuCi0tIyBDcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5LCBhbmQgaG9vayBmb3IgaXRzIHJlbW92YWwgdW5sZXNzIGRlYnVnZ2luZy4KLS0kZGVidWcgfHwKLS17Ci0tICB0cmFwICdleGl0X3N0YXR1cz0kPzsgcm0gLXJmICR0bXAgJiYgZXhpdCAkZXhpdF9zdGF0dXMnIDAKLS0gIHRyYXAgJ3sgKGV4aXQgMSk7IGV4aXQgMTsgfScgMSAyIDEzIDE1Ci0tfQotLQotLSMgQ3JlYXRlIGEgKHNlY3VyZSkgdG1wIGRpcmVjdG9yeSBmb3IgdG1wIGZpbGVzLgotLQotLXsKLS0gIHRtcD1gKHVtYXNrIDA3NyAmJiBta3RlbXAgLWQgLXEgIi4vY29uZnN0YXRYWFhYWFgiKSAyPi9kZXYvbnVsbGAgJiYKLS0gIHRlc3QgLW4gIiR0bXAiICYmIHRlc3QgLWQgIiR0bXAiCi0tfSAgfHwKLS17Ci0tICB0bXA9Li9jb25mc3RhdCQkLSRSQU5ET00KLS0gICh1bWFzayAwNzcgJiYgbWtkaXIgJHRtcCkKLS19IHx8Ci0tewotLSAgIGVjaG8gIiRtZTogY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gLiIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9Ci0tfQotLQotLV9BQ0VPRgotLQotLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GCi0tCi0tIwotLSMgQ09ORklHX0ZJTEVTIHNlY3Rpb24uCi0tIwotLQotLSMgTm8gbmVlZCB0byBnZW5lcmF0ZSB0aGUgc2NyaXB0cyBpZiB0aGVyZSBhcmUgbm8gQ09ORklHX0ZJTEVTLgotLSMgVGhpcyBoYXBwZW5zIGZvciBpbnN0YW5jZSB3aGVuIC4vY29uZmlnLnN0YXR1cyBjb25maWcuaAotLWlmIHRlc3QgLW4gIlwkQ09ORklHX0ZJTEVTIjsgdGhlbgotLSAgIyBQcm90ZWN0IGFnYWluc3QgYmVpbmcgb24gdGhlIHJpZ2h0IHNpZGUgb2YgYSBzZWQgc3Vic3QgaW4gY29uZmlnLnN0YXR1cy4KLS0gIHNlZCAncy8sQC9AQC87IHMvQCwvQEAvOyBzLyw7dCB0XCQvQDt0IHQvOyAvQDt0IHRcJC9zL1tcXFxcJixdL1xcXFwmL2c7Ci0tICAgcy9AQC8sQC87IHMvQEAvQCwvOyBzL0A7dCB0XCQvLDt0IHQvJyA+XCR0bXAvc3Vicy5zZWQgPDxcXENFT0YKLS1zLEBTSEVMTEAsJFNIRUxMLDt0IHQKLS1zLEBQQVRIX1NFUEFSQVRPUkAsJFBBVEhfU0VQQVJBVE9SLDt0IHQKLS1zLEBQQUNLQUdFX05BTUVALCRQQUNLQUdFX05BTUUsO3QgdAotLXMsQFBBQ0tBR0VfVEFSTkFNRUAsJFBBQ0tBR0VfVEFSTkFNRSw7dCB0Ci0tcyxAUEFDS0FHRV9WRVJTSU9OQCwkUEFDS0FHRV9WRVJTSU9OLDt0IHQKLS1zLEBQQUNLQUdFX1NUUklOR0AsJFBBQ0tBR0VfU1RSSU5HLDt0IHQKLS1zLEBQQUNLQUdFX0JVR1JFUE9SVEAsJFBBQ0tBR0VfQlVHUkVQT1JULDt0IHQKLS1zLEBleGVjX3ByZWZpeEAsJGV4ZWNfcHJlZml4LDt0IHQKLS1zLEBwcmVmaXhALCRwcmVmaXgsO3QgdAotLXMsQHByb2dyYW1fdHJhbnNmb3JtX25hbWVALCRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lLDt0IHQKLS1zLEBiaW5kaXJALCRiaW5kaXIsO3QgdAotLXMsQHNiaW5kaXJALCRzYmluZGlyLDt0IHQKLS1zLEBsaWJleGVjZGlyQCwkbGliZXhlY2Rpciw7dCB0Ci0tcyxAZGF0YWRpckAsJGRhdGFkaXIsO3QgdAotLXMsQHN5c2NvbmZkaXJALCRzeXNjb25mZGlyLDt0IHQKLS1zLEBzaGFyZWRzdGF0ZWRpckAsJHNoYXJlZHN0YXRlZGlyLDt0IHQKLS1zLEBsb2NhbHN0YXRlZGlyQCwkbG9jYWxzdGF0ZWRpciw7dCB0Ci0tcyxAbGliZGlyQCwkbGliZGlyLDt0IHQKLS1zLEBpbmNsdWRlZGlyQCwkaW5jbHVkZWRpciw7dCB0Ci0tcyxAb2xkaW5jbHVkZWRpckAsJG9sZGluY2x1ZGVkaXIsO3QgdAotLXMsQGluZm9kaXJALCRpbmZvZGlyLDt0IHQKLS1zLEBtYW5kaXJALCRtYW5kaXIsO3QgdAotLXMsQGJ1aWxkX2FsaWFzQCwkYnVpbGRfYWxpYXMsO3QgdAotLXMsQGhvc3RfYWxpYXNALCRob3N0X2FsaWFzLDt0IHQKLS1zLEB0YXJnZXRfYWxpYXNALCR0YXJnZXRfYWxpYXMsO3QgdAotLXMsQERFRlNALCRERUZTLDt0IHQKLS1zLEBFQ0hPX0NALCRFQ0hPX0MsO3QgdAotLXMsQEVDSE9fTkAsJEVDSE9fTiw7dCB0Ci0tcyxARUNIT19UQCwkRUNIT19ULDt0IHQKLS1zLEBMSUJTQCwkTElCUyw7dCB0Ci0tcyxAYnVpbGRALCRidWlsZCw7dCB0Ci0tcyxAYnVpbGRfY3B1QCwkYnVpbGRfY3B1LDt0IHQKLS1zLEBidWlsZF92ZW5kb3JALCRidWlsZF92ZW5kb3IsO3QgdAotLXMsQGJ1aWxkX29zQCwkYnVpbGRfb3MsO3QgdAotLXMsQGhvc3RALCRob3N0LDt0IHQKLS1zLEBob3N0X2NwdUAsJGhvc3RfY3B1LDt0IHQKLS1zLEBob3N0X3ZlbmRvckAsJGhvc3RfdmVuZG9yLDt0IHQKLS1zLEBob3N0X29zQCwkaG9zdF9vcyw7dCB0Ci0tcyxAdGFyZ2V0QCwkdGFyZ2V0LDt0IHQKLS1zLEB0YXJnZXRfY3B1QCwkdGFyZ2V0X2NwdSw7dCB0Ci0tcyxAdGFyZ2V0X3ZlbmRvckAsJHRhcmdldF92ZW5kb3IsO3QgdAotLXMsQHRhcmdldF9vc0AsJHRhcmdldF9vcyw7dCB0Ci0tcyxAQ0NALCRDQyw7dCB0Ci0tcyxAQ0ZMQUdTQCwkQ0ZMQUdTLDt0IHQKLS1zLEBMREZMQUdTQCwkTERGTEFHUyw7dCB0Ci0tcyxAQ1BQRkxBR1NALCRDUFBGTEFHUyw7dCB0Ci0tcyxAYWNfY3RfQ0NALCRhY19jdF9DQyw7dCB0Ci0tcyxARVhFRVhUQCwkRVhFRVhULDt0IHQKLS1zLEBPQkpFWFRALCRPQkpFWFQsO3QgdAotLXMsQFJBTkxJQkAsJFJBTkxJQiw7dCB0Ci0tcyxAYWNfY3RfUkFOTElCQCwkYWNfY3RfUkFOTElCLDt0IHQKLS1zLEBJTlNUQUxMX1BST0dSQU1ALCRJTlNUQUxMX1BST0dSQU0sO3QgdAotLXMsQElOU1RBTExfU0NSSVBUQCwkSU5TVEFMTF9TQ1JJUFQsO3QgdAotLXMsQElOU1RBTExfREFUQUAsJElOU1RBTExfREFUQSw7dCB0Ci0tcyxAQVJALCRBUiw7dCB0Ci0tcyxAYWNfY3RfQVJALCRhY19jdF9BUiw7dCB0Ci0tcyxAVEFSR0VUX09TQCwkVEFSR0VUX09TLDt0IHQKLS1zLEBUQVJHRVRfQ1BVQCwkVEFSR0VUX0NQVSw7dCB0Ci0tcyxATTY4S0NDQCwkTTY4S0NDLDt0IHQKLS1zLEBMRVhERUZTQCwkTEVYREVGUyw7dCB0Ci0tcyxAVk9YREVGU0AsJFZPWERFRlMsO3QgdAotLXMsQEhPU1RfT1NALCRIT1NUX09TLDt0IHQKLS1zLEBIT1NUX0NQVUAsJEhPU1RfQ1BVLDt0IHQKLS1zLEBPVEhFUkxJQlNALCRPVEhFUkxJQlMsO3QgdAotLXMsQFNIRkxBR1NALCRTSEZMQUdTLDt0IHQKLS1zLEBNTUFQVFlQRUAsJE1NQVBUWVBFLDt0IHQKLS1zLEBTVERJT1RZUEVALCRTVERJT1RZUEUsO3QgdAotLXMsQENQUEAsJENQUCw7dCB0Ci0tcyxARUdSRVBALCRFR1JFUCw7dCB0Ci0tcyxAQVVESU9EUklWRVJALCRBVURJT0RSSVZFUiw7dCB0Ci0tcyxAQVVESU9ERUZTQCwkQVVESU9ERUZTLDt0IHQKLS1zLEBBVURJT0xJQlNALCRBVURJT0xJQlMsO3QgdAotLXMsQEZMX0xBTkdALCRGTF9MQU5HLDt0IHQKLS1zLEBGTF9WT1hALCRGTF9WT1gsO3QgdAotLXMsQEZMX0xFWEAsJEZMX0xFWCw7dCB0Ci0tcyxATElCT0JKU0AsJExJQk9CSlMsO3QgdAotLXMsQExUTElCT0JKU0AsJExUTElCT0JKUyw7dCB0Ci0tQ0VPRgotLQotLV9BQ0VPRgotLQotLSAgY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GCi0tICAjIFNwbGl0IHRoZSBzdWJzdGl0dXRpb25zIGludG8gYml0ZS1zaXplZCBwaWVjZXMgZm9yIHNlZHMgd2l0aAotLSAgIyBzbWFsbCBjb21tYW5kIG51bWJlciBsaW1pdHMsIGxpa2Ugb24gRGlnaXRhbCBPU0YvMSBhbmQgSFAtVVguCi0tICBhY19tYXhfc2VkX2xpbmVzPTQ4Ci0tICBhY19zZWRfZnJhZz0xICMgTnVtYmVyIG9mIGN1cnJlbnQgZmlsZS4KLS0gIGFjX2JlZz0xICMgRmlyc3QgbGluZSBmb3IgY3VycmVudCBmaWxlLgotLSAgYWNfZW5kPSRhY19tYXhfc2VkX2xpbmVzICMgTGluZSBhZnRlciBsYXN0IGxpbmUgZm9yIGN1cnJlbnQgZmlsZS4KLS0gIGFjX21vcmVfbGluZXM9OgotLSAgYWNfc2VkX2NtZHM9Ci0tICB3aGlsZSAkYWNfbW9yZV9saW5lczsgZG8KLS0gICAgaWYgdGVzdCAkYWNfYmVnIC1ndCAxOyB0aGVuCi0tICAgICAgc2VkICIxLCR7YWNfYmVnfWQ7ICR7YWNfZW5kfXEiICR0bXAvc3Vicy5zZWQgPiR0bXAvc3Vicy5mcmFnCi0tICAgIGVsc2UKLS0gICAgICBzZWQgIiR7YWNfZW5kfXEiICR0bXAvc3Vicy5zZWQgPiR0bXAvc3Vicy5mcmFnCi0tICAgIGZpCi0tICAgIGlmIHRlc3QgISAtcyAkdG1wL3N1YnMuZnJhZzsgdGhlbgotLSAgICAgIGFjX21vcmVfbGluZXM9ZmFsc2UKLS0gICAgZWxzZQotLSAgICAgICMgVGhlIHB1cnBvc2Ugb2YgdGhlIGxhYmVsIGFuZCBvZiB0aGUgYnJhbmNoaW5nIGNvbmRpdGlvbiBpcyB0bwotLSAgICAgICMgc3BlZWQgdXAgdGhlIHNlZCBwcm9jZXNzaW5nIChpZiB0aGVyZSBhcmUgbm8gYEAnIGF0IGFsbCwgdGhlcmUKLS0gICAgICAjIGlzIG5vIG5lZWQgdG8gYnJvd3NlIGFueSBvZiB0aGUgc3Vic3RpdHV0aW9ucykuCi0tICAgICAgIyBUaGVzZSBhcmUgdGhlIHR3byBleHRyYSBzZWQgY29tbWFuZHMgbWVudGlvbmVkIGFib3ZlLgotLSAgICAgIChlY2hvICc6dAotLSAgL0BbYS16QS1aX11bYS16QS1aXzAtOV0qQC8hYicgJiYgY2F0ICR0bXAvc3Vicy5mcmFnKSA+JHRtcC9zdWJzLSRhY19zZWRfZnJhZy5zZWQKLS0gICAgICBpZiB0ZXN0IC16ICIkYWNfc2VkX2NtZHMiOyB0aGVuCi0tICAJYWNfc2VkX2NtZHM9InNlZCAtZiAkdG1wL3N1YnMtJGFjX3NlZF9mcmFnLnNlZCIKLS0gICAgICBlbHNlCi0tICAJYWNfc2VkX2NtZHM9IiRhY19zZWRfY21kcyB8IHNlZCAtZiAkdG1wL3N1YnMtJGFjX3NlZF9mcmFnLnNlZCIKLS0gICAgICBmaQotLSAgICAgIGFjX3NlZF9mcmFnPWBleHByICRhY19zZWRfZnJhZyArIDFgCi0tICAgICAgYWNfYmVnPSRhY19lbmQKLS0gICAgICBhY19lbmQ9YGV4cHIgJGFjX2VuZCArICRhY19tYXhfc2VkX2xpbmVzYAotLSAgICBmaQotLSAgZG9uZQotLSAgaWYgdGVzdCAteiAiJGFjX3NlZF9jbWRzIjsgdGhlbgotLSAgICBhY19zZWRfY21kcz1jYXQKLSsgICMgUmVtb3ZlIGxhc3Qgc2xhc2ggYW5kIGFsbCB0aGF0IGZvbGxvd3MgaXQuICBOb3QgYWxsIHN5c3RlbXMgaGF2ZSBkaXJuYW1lLgotKyAgYWNfZGlyPWBlY2hvICRhY19maWxlfHNlZCAncyUvW14vXVteL10qJCUlJ2AKLSsgIGlmIHRlc3QgIiRhY19kaXIiICE9ICIkYWNfZmlsZSIgJiYgdGVzdCAiJGFjX2RpciIgIT0gLjsgdGhlbgotKyAgICAjIFRoZSBmaWxlIGlzIGluIGEgc3ViZGlyZWN0b3J5LgotKyAgICB0ZXN0ICEgLWQgIiRhY19kaXIiICYmIG1rZGlyICIkYWNfZGlyIgotKyAgICBhY19kaXJfc3VmZml4PSIvYGVjaG8gJGFjX2RpcnxzZWQgJ3MlXlwuLyUlJ2AiCi0rICAgICMgQSAiLi4vIiBmb3IgZWFjaCBkaXJlY3RvcnkgaW4gJGFjX2Rpcl9zdWZmaXguCi0rICAgIGFjX2RvdHM9YGVjaG8gJGFjX2Rpcl9zdWZmaXh8c2VkICdzJS9bXi9dKiUuLi8lZydgCi0rICBlbHNlCi0rICAgIGFjX2Rpcl9zdWZmaXg9IGFjX2RvdHM9Ci0gICBmaQotLWZpICMgdGVzdCAtbiAiJENPTkZJR19GSUxFUyIKLSAKLS1fQUNFT0YKLS1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YKLS1mb3IgYWNfZmlsZSBpbiA6ICRDT05GSUdfRklMRVM7IGRvIHRlc3QgIngkYWNfZmlsZSIgPSB4OiAmJiBjb250aW51ZQotLSAgIyBTdXBwb3J0ICJvdXRmaWxlWzppbmZpbGVbOmluZmlsZS4uLl1dIiwgZGVmYXVsdGluZyBpbmZpbGU9Im91dGZpbGUuaW4iLgotLSAgY2FzZSAkYWNfZmlsZSBpbgotLSAgLSB8ICo6LSB8ICo6LToqICkgIyBpbnB1dCBmcm9tIHN0ZGluCi0tICAgICAgICBjYXQgPiR0bXAvc3RkaW4KLS0gICAgICAgIGFjX2ZpbGVfaW49YGVjaG8gIiRhY19maWxlIiB8IHNlZCAncyxbXjpdKjosLCdgCi0tICAgICAgICBhY19maWxlPWBlY2hvICIkYWNfZmlsZSIgfCBzZWQgJ3MsOi4qLCwnYCA7OwotLSAgKjoqICkgYWNfZmlsZV9pbj1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLFteOl0qOiwsJ2AKLS0gICAgICAgIGFjX2ZpbGU9YGVjaG8gIiRhY19maWxlIiB8IHNlZCAncyw6LiosLCdgIDs7Ci0tICAqICkgICBhY19maWxlX2luPSRhY19maWxlLmluIDs7Ci0rICBjYXNlICIkYWNfZ2l2ZW5fc3JjZGlyIiBpbgotKyAgLikgIHNyY2Rpcj0uCi0rICAgICAgaWYgdGVzdCAteiAiJGFjX2RvdHMiOyB0aGVuIHRvcF9zcmNkaXI9LgotKyAgICAgIGVsc2UgdG9wX3NyY2Rpcj1gZWNobyAkYWNfZG90c3xzZWQgJ3MlLyQlJSdgOyBmaSA7OwotKyAgLyopIHNyY2Rpcj0iJGFjX2dpdmVuX3NyY2RpciRhY19kaXJfc3VmZml4IjsgdG9wX3NyY2Rpcj0iJGFjX2dpdmVuX3NyY2RpciIgOzsKLSsgICopICMgUmVsYXRpdmUgcGF0aC4KLSsgICAgc3JjZGlyPSIkYWNfZG90cyRhY19naXZlbl9zcmNkaXIkYWNfZGlyX3N1ZmZpeCIKLSsgICAgdG9wX3NyY2Rpcj0iJGFjX2RvdHMkYWNfZ2l2ZW5fc3JjZGlyIiA7OwotICAgZXNhYwotIAotLSAgIyBDb21wdXRlIEBzcmNkaXJALCBAdG9wX3NyY2RpckAsIGFuZCBASU5TVEFMTEAgZm9yIHN1YmRpcmVjdG9yaWVzLgotLSAgYWNfZGlyPWAoZGlybmFtZSAiJGFjX2ZpbGUiKSAyPi9kZXYvbnVsbCB8fAotLSRhc19leHByIFgiJGFjX2ZpbGUiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCi0tICAgICAgICAgWCIkYWNfZmlsZSIgOiAnWFwoLy9cKVteL10nIFx8IFwKLS0gICAgICAgICBYIiRhY19maWxlIiA6ICdYXCgvL1wpJCcgXHwgXAotLSAgICAgICAgIFgiJGFjX2ZpbGUiIDogJ1hcKC9cKScgXHwgXAotLSAgICAgICAgIC4gICAgIDogJ1woLlwpJyAyPi9kZXYvbnVsbCB8fAotLWVjaG8gWCIkYWNfZmlsZSIgfAotLSAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQveyBzLy9cMS87IHE7IH0KLS0gIAkgIC9eWFwoXC9cL1wpW14vXS4qL3sgcy8vXDEvOyBxOyB9Ci0tICAJICAvXlhcKFwvXC9cKSQveyBzLy9cMS87IHE7IH0KLS0gIAkgIC9eWFwoXC9cKS4qL3sgcy8vXDEvOyBxOyB9Ci0tICAJICBzLy4qLy4vOyBxJ2AKLS0gIHsgaWYgJGFzX21rZGlyX3A7IHRoZW4KLS0gICAgbWtkaXIgLXAgIiRhY19kaXIiCi0tICBlbHNlCi0tICAgIGFzX2Rpcj0iJGFjX2RpciIKLS0gICAgYXNfZGlycz0KLS0gICAgd2hpbGUgdGVzdCAhIC1kICIkYXNfZGlyIjsgZG8KLS0gICAgICBhc19kaXJzPSIkYXNfZGlyICRhc19kaXJzIgotLSAgICAgIGFzX2Rpcj1gKGRpcm5hbWUgIiRhc19kaXIiKSAyPi9kZXYvbnVsbCB8fAotLSRhc19leHByIFgiJGFzX2RpciIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKLS0gICAgICAgICBYIiRhc19kaXIiIDogJ1hcKC8vXClbXi9dJyBcfCBcCi0tICAgICAgICAgWCIkYXNfZGlyIiA6ICdYXCgvL1wpJCcgXHwgXAotLSAgICAgICAgIFgiJGFzX2RpciIgOiAnWFwoL1wpJyBcfCBcCi0tICAgICAgICAgLiAgICAgOiAnXCguXCknIDI+L2Rldi9udWxsIHx8Ci0tZWNobyBYIiRhc19kaXIiIHwKLS0gICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sgcy8vXDEvOyBxOyB9Ci0tICAJICAvXlhcKFwvXC9cKVteL10uKi97IHMvL1wxLzsgcTsgfQotLSAgCSAgL15YXChcL1wvXCkkL3sgcy8vXDEvOyBxOyB9Ci0tICAJICAvXlhcKFwvXCkuKi97IHMvL1wxLzsgcTsgfQotLSAgCSAgcy8uKi8uLzsgcSdgCi0tICAgIGRvbmUKLS0gICAgdGVzdCAhIC1uICIkYXNfZGlycyIgfHwgbWtkaXIgJGFzX2RpcnMKLS0gIGZpIHx8IHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJGFjX2RpclwiIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiRhY19kaXJcIiIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH07IH0KLSsgIGNhc2UgIiRhY19naXZlbl9JTlNUQUxMIiBpbgotKyAgWy8kXSopIElOU1RBTEw9IiRhY19naXZlbl9JTlNUQUxMIiA7OwotKyAgKikgSU5TVEFMTD0iJGFjX2RvdHMkYWNfZ2l2ZW5fSU5TVEFMTCIgOzsKLSsgIGVzYWMKLSAKLS0gIGFjX2J1aWxkZGlyPS4KLS0KLS1pZiB0ZXN0ICIkYWNfZGlyIiAhPSAuOyB0aGVuCi0tICBhY19kaXJfc3VmZml4PS9gZWNobyAiJGFjX2RpciIgfCBzZWQgJ3MsXlwuW1xcL10sLCdgCi0tICAjIEEgIi4uLyIgZm9yIGVhY2ggZGlyZWN0b3J5IGluICRhY19kaXJfc3VmZml4LgotLSAgYWNfdG9wX2J1aWxkZGlyPWBlY2hvICIkYWNfZGlyX3N1ZmZpeCIgfCBzZWQgJ3MsL1teXFwvXSosLi4vLGcnYAotLWVsc2UKLS0gIGFjX2Rpcl9zdWZmaXg9IGFjX3RvcF9idWlsZGRpcj0KLS1maQotLQotLWNhc2UgJHNyY2RpciBpbgotLSAgLikgICMgTm8gLS1zcmNkaXIgb3B0aW9uLiAgV2UgYXJlIGJ1aWxkaW5nIGluIHBsYWNlLgotLSAgICBhY19zcmNkaXI9LgotLSAgICBpZiB0ZXN0IC16ICIkYWNfdG9wX2J1aWxkZGlyIjsgdGhlbgotLSAgICAgICBhY190b3Bfc3JjZGlyPS4KLS0gICAgZWxzZQotLSAgICAgICBhY190b3Bfc3JjZGlyPWBlY2hvICRhY190b3BfYnVpbGRkaXIgfCBzZWQgJ3MsLyQsLCdgCi0tICAgIGZpIDs7Ci0tICBbXFwvXSogfCA/OltcXC9dKiApICAjIEFic29sdXRlIHBhdGguCi0tICAgIGFjX3NyY2Rpcj0kc3JjZGlyJGFjX2Rpcl9zdWZmaXg7Ci0tICAgIGFjX3RvcF9zcmNkaXI9JHNyY2RpciA7OwotLSAgKikgIyBSZWxhdGl2ZSBwYXRoLgotLSAgICBhY19zcmNkaXI9JGFjX3RvcF9idWlsZGRpciRzcmNkaXIkYWNfZGlyX3N1ZmZpeAotLSAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRkaXIkc3JjZGlyIDs7Ci0tZXNhYwotLSMgRG9uJ3QgYmxpbmRseSBwZXJmb3JtIGEgYGNkICIkYWNfZGlyIi8kYWNfZm9vICYmIHB3ZGAgc2luY2UgJGFjX2ZvbyBjYW4gYmUKLS0jIGFic29sdXRlLgotLWFjX2Fic19idWlsZGRpcj1gY2QgIiRhY19kaXIiICYmIGNkICRhY19idWlsZGRpciAmJiBwd2RgCi0tYWNfYWJzX3RvcF9idWlsZGRpcj1gY2QgIiRhY19kaXIiICYmIGNkICR7YWNfdG9wX2J1aWxkZGlyfS4gJiYgcHdkYAotLWFjX2Fic19zcmNkaXI9YGNkICIkYWNfZGlyIiAmJiBjZCAkYWNfc3JjZGlyICYmIHB3ZGAKLS1hY19hYnNfdG9wX3NyY2Rpcj1gY2QgIiRhY19kaXIiICYmIGNkICRhY190b3Bfc3JjZGlyICYmIHB3ZGAKLS0KLS0KLS0gIGNhc2UgJElOU1RBTEwgaW4KLS0gIFtcXC8kXSogfCA/OltcXC9dKiApIGFjX0lOU1RBTEw9JElOU1RBTEwgOzsKLS0gICopIGFjX0lOU1RBTEw9JGFjX3RvcF9idWlsZGRpciRJTlNUQUxMIDs7Ci0rICBlY2hvIGNyZWF0aW5nICIkYWNfZmlsZSIKLSsgIHJtIC1mICIkYWNfZmlsZSIKLSsgIGNvbmZpZ3VyZV9pbnB1dD0iR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgZnJvbSBgZWNobyAkYWNfZmlsZV9pbnxzZWQgJ3MlLiovJSUnYCBieSBjb25maWd1cmUuIgotKyAgY2FzZSAiJGFjX2ZpbGUiIGluCi0rICAqTWFrZWZpbGUqKSBhY19jb21zdWI9IjFpXFwKLSsjICRjb25maWd1cmVfaW5wdXQiIDs7Ci0rICAqKSBhY19jb21zdWI9IDs7Ci0gICBlc2FjCi0gCi0tICBpZiB0ZXN0IHgiJGFjX2ZpbGUiICE9IHgtOyB0aGVuCi0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGNyZWF0aW5nICRhY19maWxlIiA+JjUKLS1lY2hvICIkYXNfbWU6IGNyZWF0aW5nICRhY19maWxlIiA+JjY7fQotLSAgICBybSAtZiAiJGFjX2ZpbGUiCi0tICBmaQotLSAgIyBMZXQncyBzdGlsbCBwcmV0ZW5kIGl0IGlzIGBjb25maWd1cmUnIHdoaWNoIGluc3RhbnRpYXRlcyAoaS5lLiwgZG9uJ3QKLS0gICMgdXNlICRhc19tZSksIHBlb3BsZSB3b3VsZCBiZSBzdXJwcmlzZWQgdG8gcmVhZDoKLS0gICMgICAgLyogY29uZmlnLmguICBHZW5lcmF0ZWQgYnkgY29uZmlnLnN0YXR1cy4gICovCi0tICBpZiB0ZXN0IHgiJGFjX2ZpbGUiID0geC07IHRoZW4KLS0gICAgY29uZmlndXJlX2lucHV0PQotLSAgZWxzZQotLSAgICBjb25maWd1cmVfaW5wdXQ9IiRhY19maWxlLiAgIgotLSAgZmkKLS0gIGNvbmZpZ3VyZV9pbnB1dD0kY29uZmlndXJlX2lucHV0IkdlbmVyYXRlZCBmcm9tIGBlY2hvICRhY19maWxlX2luIHwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VkICdzLC4qLywsJ2AgYnkgY29uZmlndXJlLiIKLSsgIGFjX2ZpbGVfaW5wdXRzPWBlY2hvICRhY19maWxlX2lufHNlZCAtZSAicyVeJSRhY19naXZlbl9zcmNkaXIvJSIgLWUgInMlOiUgJGFjX2dpdmVuX3NyY2Rpci8lZyJgCi0rICBzZWQgLWUgIiRhY19jb21zdWIKLStzJUBjb25maWd1cmVfaW5wdXRAJSRjb25maWd1cmVfaW5wdXQlZwotK3MlQHNyY2RpckAlJHNyY2RpciVnCi0rcyVAdG9wX3NyY2RpckAlJHRvcF9zcmNkaXIlZwotK3MlQElOU1RBTExAJSRJTlNUQUxMJWcKLSsiICRhY19maWxlX2lucHV0cyB8IChldmFsICIkYWNfc2VkX2NtZHMiKSA+ICRhY19maWxlCi0rZmk7IGRvbmUKLStybSAtZiBjb25mdGVzdC5zKgotIAotLSAgIyBGaXJzdCBsb29rIGZvciB0aGUgaW5wdXQgZmlsZXMgaW4gdGhlIGJ1aWxkIHRyZWUsIG90aGVyd2lzZSBpbiB0aGUKLS0gICMgc3JjIHRyZWUuCi0tICBhY19maWxlX2lucHV0cz1gSUZTPToKLS0gICAgZm9yIGYgaW4gJGFjX2ZpbGVfaW47IGRvCi0tICAgICAgY2FzZSAkZiBpbgotLSAgICAgIC0pIGVjaG8gJHRtcC9zdGRpbiA7OwotLSAgICAgIFtcXC8kXSopCi0tICAgICAgICAgIyBBYnNvbHV0ZSAoY2FuJ3QgYmUgRE9TLXN0eWxlLCBhcyBJRlM9OikKLS0gICAgICAgICB0ZXN0IC1mICIkZiIgfHwgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogJGYiID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjI7fQotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotLSAgICAgICAgIGVjaG8gJGY7OwotLSAgICAgICopICMgUmVsYXRpdmUKLS0gICAgICAgICBpZiB0ZXN0IC1mICIkZiI7IHRoZW4KLS0gICAgICAgICAgICMgQnVpbGQgdHJlZQotLSAgICAgICAgICAgZWNobyAkZgotLSAgICAgICAgIGVsaWYgdGVzdCAtZiAiJHNyY2Rpci8kZiI7IHRoZW4KLS0gICAgICAgICAgICMgU291cmNlIHRyZWUKLS0gICAgICAgICAgIGVjaG8gJHNyY2Rpci8kZgotLSAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICMgL2Rldi9udWxsIHRyZWUKLS0gICAgICAgICAgIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiAkZiIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLS0gICAgICAgICBmaTs7Ci0tICAgICAgZXNhYwotLSAgICBkb25lYCB8fCB7IChleGl0IDEpOyBleGl0IDE7IH0KLS1fQUNFT0YKLS1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRgotLSAgc2VkICIkYWNfdnBzdWIKLS0kZXh0cmFzdWIKLS1fQUNFT0YKLS1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YKLS06dAotLS9AW2EtekEtWl9dW2EtekEtWl8wLTldKkAvIWIKLS1zLEBjb25maWd1cmVfaW5wdXRALCRjb25maWd1cmVfaW5wdXQsO3QgdAotLXMsQHNyY2RpckAsJGFjX3NyY2Rpciw7dCB0Ci0tcyxAYWJzX3NyY2RpckAsJGFjX2Fic19zcmNkaXIsO3QgdAotLXMsQHRvcF9zcmNkaXJALCRhY190b3Bfc3JjZGlyLDt0IHQKLS1zLEBhYnNfdG9wX3NyY2RpckAsJGFjX2Fic190b3Bfc3JjZGlyLDt0IHQKLS1zLEBidWlsZGRpckAsJGFjX2J1aWxkZGlyLDt0IHQKLS1zLEBhYnNfYnVpbGRkaXJALCRhY19hYnNfYnVpbGRkaXIsO3QgdAotLXMsQHRvcF9idWlsZGRpckAsJGFjX3RvcF9idWlsZGRpciw7dCB0Ci0tcyxAYWJzX3RvcF9idWlsZGRpckAsJGFjX2Fic190b3BfYnVpbGRkaXIsO3QgdAotLXMsQElOU1RBTExALCRhY19JTlNUQUxMLDt0IHQKLS0iICRhY19maWxlX2lucHV0cyB8IChldmFsICIkYWNfc2VkX2NtZHMiKSA+JHRtcC9vdXQKLS0gIHJtIC1mICR0bXAvc3RkaW4KLS0gIGlmIHRlc3QgeCIkYWNfZmlsZSIgIT0geC07IHRoZW4KLS0gICAgbXYgJHRtcC9vdXQgJGFjX2ZpbGUKLS0gIGVsc2UKLS0gICAgY2F0ICR0bXAvb3V0Ci0tICAgIHJtIC1mICR0bXAvb3V0Ci0tICBmaQotK0VPRgotK2NhdCA+PiAkQ09ORklHX1NUQVRVUyA8PEVPRgotIAotLWRvbmUKLS1fQUNFT0YKLStFT0YKLStjYXQgPj4gJENPTkZJR19TVEFUVVMgPDxcRU9GCi0gCi0tY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GCi0tCi0teyAoZXhpdCAwKTsgZXhpdCAwOyB9Ci0tX0FDRU9GCi0rZXhpdCAwCi0rRU9GCi0gY2htb2QgK3ggJENPTkZJR19TVEFUVVMKLS1hY19jbGVhbl9maWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQotK3JtIC1mciBjb25mZGVmcyogJGFjX2NsZWFuX2ZpbGVzCi0rdGVzdCAiJG5vX2NyZWF0ZSIgPSB5ZXMgfHwgJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0gJENPTkZJR19TVEFUVVMgfHwgZXhpdCAxCi0gCi0tCi0tIyBjb25maWd1cmUgaXMgd3JpdGluZyB0byBjb25maWcubG9nLCBhbmQgdGhlbiBjYWxscyBjb25maWcuc3RhdHVzLgotLSMgY29uZmlnLnN0YXR1cyBkb2VzIGl0cyBvd24gcmVkaXJlY3Rpb24sIGFwcGVuZGluZyB0byBjb25maWcubG9nLgotLSMgVW5mb3J0dW5hdGVseSwgb24gRE9TIHRoaXMgZmFpbHMsIGFzIGNvbmZpZy5sb2cgaXMgc3RpbGwga2VwdCBvcGVuCi0tIyBieSBjb25maWd1cmUsIHNvIGNvbmZpZy5zdGF0dXMgd29uJ3QgYmUgYWJsZSB0byB3cml0ZSB0byBpdDsgaXRzCi0tIyBvdXRwdXQgaXMgc2ltcGx5IGRpc2NhcmRlZC4gIFNvIHdlIGV4ZWMgdGhlIEZEIHRvIC9kZXYvbnVsbCwKLS0jIGVmZmVjdGl2ZWx5IGNsb3NpbmcgY29uZmlnLmxvZywgc28gaXQgY2FuIGJlIHByb3Blcmx5IChyZSlvcGVuZWQgYW5kCi0tIyBhcHBlbmRlZCB0byBieSBjb25maWcuc3RhdHVzLiAgV2hlbiBjb21pbmcgYmFjayB0byBjb25maWd1cmUsIHdlCi0tIyBuZWVkIHRvIG1ha2UgdGhlIEZEIGF2YWlsYWJsZSBhZ2Fpbi4KLS1pZiB0ZXN0ICIkbm9fY3JlYXRlIiAhPSB5ZXM7IHRoZW4KLS0gIGFjX2NzX3N1Y2Nlc3M9OgotLSAgYWNfY29uZmlnX3N0YXR1c19hcmdzPQotLSAgdGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYKLS0gICAgYWNfY29uZmlnX3N0YXR1c19hcmdzPSIkYWNfY29uZmlnX3N0YXR1c19hcmdzIC0tcXVpZXQiCi0tICBleGVjIDU+L2Rldi9udWxsCi0tICAkU0hFTEwgJENPTkZJR19TVEFUVVMgJGFjX2NvbmZpZ19zdGF0dXNfYXJncyB8fCBhY19jc19zdWNjZXNzPWZhbHNlCi0tICBleGVjIDU+PmNvbmZpZy5sb2cKLS0gICMgVXNlIHx8LCBub3QgJiYsIHRvIGF2b2lkIGV4aXRpbmcgZnJvbSB0aGUgaWYgd2l0aCAkPyA9IDEsIHdoaWNoCi0tICAjIHdvdWxkIG1ha2UgY29uZmlndXJlIGZhaWwgaWYgdGhpcyBpcyB0aGUgbGFzdCBpbnN0cnVjdGlvbi4KLS0gICRhY19jc19zdWNjZXNzIHx8IHsgKGV4aXQgMSk7IGV4aXQgMTsgfQotLWZpCi0tCi1JbmRleDogY29uZmlndXJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxpdGUtMS4zLXJlbGVhc2UvY29uZmlndXJlLmluCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiA3KQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL2NvbmZpZ3VyZS5pbgkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC0yMDYsMTAgKzIwNiwxMCBAQAotIEFDX0NIRUNLX0hFQURFUihzeXMvYXVkaW9pby5oLAotICAgICAgICAgICAgICAgW0FVRElPRFJJVkVSPSJzdW4iCi0gICAgICAgICAgICAgICAgQVVESU9ERUZTPS1EQ1NUX0FVRElPX1NVTk9TXSkKLS1kbmwgQUNfQ0hFQ0tfSEVBREVSKHN5cy9hc291bmRsaWIuaCwKLS1kbmwgICAgICAgICAgICAgIFtBVURJT0RSSVZFUj0iYWxzYSIKLS1kbmwJICAgICAgIEFVRElPREVGUz0tRENTVF9BVURJT19BTFNBCi0tZG5sICAgICAgICAgICAgICAgQVVESU9MSUJTPS1sYXNvdW5kXSkKLSsgQUNfQ0hFQ0tfSEVBREVSKGFsc2EvYXNvdW5kbGliLmgsCi0rICAgICAgICAgICAgICBbQVVESU9EUklWRVI9ImFsc2EiCi0rCSAgICAgICBBVURJT0RFRlM9LURDU1RfQVVESU9fQUxTQQotKyAgICAgICAgICAgICAgIEFVRElPTElCUz0tbGFzb3VuZF0pCi0gQUNfQ0hFQ0tfSEVBREVSKG1tc3lzdGVtLmgsCi0gCSAgICAgIFtBVURJT0RSSVZFUj0id2luY2UiCi0gCSAgICAgICBBVURJT0RFRlM9LURDU1RfQVVESU9fV0lOQ0UKLUluZGV4OiBzcmMvaHJnL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL2hyZy9NYWtlZmlsZQkoLi4uL2ZsaXRlLTEuMy1vcmlnKQkocmV2aXNpb24gNykKLSsrKyBmbGl0ZS0xLjMtcmVsZWFzZS9zcmMvaHJnL01ha2VmaWxlCSguLi4vcmVsZWFzZS0xLjIpCShyZXZpc2lvbiA3KQotQEAgLTM5LDkgKzM5LDE0IEBACi0gQlVJTERfRElSUyA9IAotIEFMTF9ESVJTPSAKLSBIID0gCi0raW5jbHVkZSAkKFRPUCkvY29uZmlnL2NvbmZpZwotIFNSQ1MgPSBjc3RfdXR0ZXJhbmNlLmMgY3N0X3JlbGF0aW9uLmMgY3N0X2l0ZW0uYyBjc3RfZmZlYXR1cmUuYyBcCi0gICAgICAgIGNzdF9yZWxfaW8uYwotLU9CSlMgPSAkKFNSQ1M6LmM9Lm8pCi0raWZkZWYgU0hGTEFHUwotK09CSlMgOj0gJChTUkNTOi5jPS5vcykKLStlbHNlCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm8pCi0rZW5kaWYKLSBGSUxFUyA9IE1ha2VmaWxlICQoSCkgJChTUkNTKQotIExJQk5BTUUgPSBmbGl0ZQotIAotSW5kZXg6IHNyYy91dGlscy9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsaXRlLTEuMy1yZWxlYXNlL3NyYy91dGlscy9NYWtlZmlsZQkoLi4uL2ZsaXRlLTEuMy1vcmlnKQkocmV2aXNpb24gNykKLSsrKyBmbGl0ZS0xLjMtcmVsZWFzZS9zcmMvdXRpbHMvTWFrZWZpbGUJKC4uLi9yZWxlYXNlLTEuMikJKHJldmlzaW9uIDcpCi1AQCAtNDQsOCArNDQsMTMgQEAKLSAgICAgICAgY3N0X3Rva2Vuc3RyZWFtLmMgY3N0X3ZhbC5jIGNzdF9mZWF0dXJlcy5jIFwKLSAgICAgICAgY3N0X2VuZGlhbi5jIGNzdF9zb2NrZXQuYyBjc3RfdmFsX2NvbnN0LmMgXAotICAgICAgICBjc3RfdmFsX3VzZXIuYyBjc3RfYXJncy5jIAotK2lmZGVmIFNIRkxBR1MKLStPQkpTIDo9ICQoU1JDUzouYz0ub3MpICQoTU1BUFRZUEU6JT1jc3RfbW1hcF8lLm9zKSBcCi0rICAgICAgICAkKFNURElPVFlQRTolPWNzdF9maWxlXyUub3MpCi0rZWxzZQotIE9CSlMgOj0gJChTUkNTOi5jPS5vKSAkKE1NQVBUWVBFOiU9Y3N0X21tYXBfJS5vKSBcCi0gICAgICAgICAkKFNURElPVFlQRTolPWNzdF9maWxlXyUubykKLStlbmRpZgotIEZJTEVTID0gTWFrZWZpbGUgJChIKSAkKFNSQ1MpIFwKLSAJY3N0X21tYXBfcG9zaXguYyBjc3RfbW1hcF93aW4zMi5jIGNzdF9tbWFwX25vbmUuYyBcCi0gCWNzdF9maWxlX3N0ZGlvLmMgY3N0X2ZpbGVfd2luY2UuYyBjc3RfZmlsZV9wYWxtb3MuYwotSW5kZXg6IHNyYy9hdWRpby9hdV9hbHNhLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9zcmMvYXVkaW8vYXVfYWxzYS5jCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiAwKQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL3NyYy9hdWRpby9hdV9hbHNhLmMJKC4uLi9yZWxlYXNlLTEuMikJKHJldmlzaW9uIDcpCi1AQCAtMCwwICsxLDMxMSBAQAotKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2UgVGVjaG5vbG9naWVzIEluc3RpdHV0ZSAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgICAgICAgICAgICAgICAgICAgQ2FybmVnaWUgTWVsbG9uIFVuaXZlcnNpdHkgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgICAgICAgICAgICAgICAgICAgICAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gdXNlIGFuZCBkaXN0cmlidXRlICAqLwotKy8qICB0aGlzIHNvZnR3YXJlIGFuZCBpdHMgZG9jdW1lbnRhdGlvbiB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAqLwotKy8qICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAqLwotKy8qICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhpcyB3b3JrLCBhbmQgdG8gICAgICAqLwotKy8qICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoaXMgd29yayBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gICAqLwotKy8qICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgMS4gVGhlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiAgICAqLwotKy8qICAgICAgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgMi4gQW55IG1vZGlmaWNhdGlvbnMgbXVzdCBiZSBjbGVhcmx5IG1hcmtlZCBhcyBzdWNoLiAgICAgICAgICAgICAgICAqLwotKy8qICAgMy4gT3JpZ2luYWwgYXV0aG9ycycgbmFtZXMgYXJlIG5vdCBkZWxldGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgNC4gVGhlIGF1dGhvcnMnIG5hbWVzIGFyZSBub3QgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgICAqLwotKy8qICAgICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuICAgICAgICAqLwotKy8qICAgICAgcGVybWlzc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICBDQVJORUdJRSBNRUxMT04gVU5JVkVSU0lUWSBBTkQgVEhFIENPTlRSSUJVVE9SUyBUTyBUSElTIFdPUksgICAgICAgICAqLwotKy8qICBESVNDTEFJTSBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFLCBJTkNMVURJTkcgICAgICAqLwotKy8qICBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUywgSU4gTk8gRVZFTlQgICAqLwotKy8qICBTSEFMTCBDQVJORUdJRSBNRUxMT04gVU5JVkVSU0lUWSBOT1IgVEhFIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgICAgICAqLwotKy8qICBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyAgICAqLwotKy8qICBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gICAqLwotKy8qICBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCAgICAgICAgICAqLwotKy8qICBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiAgICAgICAqLwotKy8qICBUSElTIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotKy8qICAgICAgICAgICAgIEF1dGhvcjogIEx1a2FzIExvZWhyZXIgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICAgICAgICAgICAgICAgRGF0ZTogIEphbnVhcnkgMjAwNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICBOYXRpdmUgYWNjZXNzIHRvIGFsc2EgYXVkaW8gZGV2aWNlcyBvbiBMaW51eCAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qICBUZXN0ZWQgd2l0aCBsaWJhc291bmQgdmVyc2lvbiAxLjAuMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotKwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSsKLSsjaW5jbHVkZSAiY3N0X3N0cmluZy5oIgotKyNpbmNsdWRlICJjc3Rfd2F2ZS5oIgotKyNpbmNsdWRlICJjc3RfYXVkaW8uaCIKLSsKLSsjaW5jbHVkZSA8YWxzYS9hc291bmRsaWIuaD4KLSsKLSsKLSsvKnN0YXRpYyBjaGFyICpwY21fZGV2X25hbWUgPSAiaHc6MCwwIjsgKi8KLStzdGF0aWMgY2hhciAqcGNtX2Rldl9uYW1lID0iZGVmYXVsdCI7Ci0rCi0rc3RhdGljIGlubGluZSB2b2lkIHByaW50X3BjbV9zdGF0ZShzbmRfcGNtX3QgKmhhbmRsZSwgY2hhciAqbXNnKQotK3sKLSsgIGZwcmludGYoc3RkZXJyLCAiUENNIHN0YXRlIGF0ICVzID0gJXNcbiIsIG1zZywKLSsJCSAgc25kX3BjbV9zdGF0ZV9uYW1lKHNuZF9wY21fc3RhdGUoaGFuZGxlKSkpOwotK30KLSsKLStjc3RfYXVkaW9kZXYgKmF1ZGlvX29wZW5fYWxzYShpbnQgc3BzLCBpbnQgY2hhbm5lbHMsIGNzdF9hdWRpb2ZtdCBmbXQpCi0rewotKyAgY3N0X2F1ZGlvZGV2ICphZDsKLSsgIHVuc2lnbmVkIAlpbnQgcmVhbF9yYXRlOwotKyAgaW50IGVycjsKLSsKLSsgIC8qIGFsc2Egc3BlY2lmaWMgc3R1ZmYgKi8KLSsgIHNuZF9wY21fdCAqcGNtX2hhbmRsZTsgICAgICAgICAgCi0rICBzbmRfcGNtX3N0cmVhbV90IHN0cmVhbSA9IFNORF9QQ01fU1RSRUFNX1BMQVlCQUNLOwotKyAgc25kX3BjbV9od19wYXJhbXNfdCAqaHdwYXJhbXM7Ci0rICBzbmRfcGNtX2Zvcm1hdF90IGZvcm1hdDsKLSsgIHNuZF9wY21fYWNjZXNzX3QgYWNjZXNzID0gU05EX1BDTV9BQ0NFU1NfUldfSU5URVJMRUFWRUQ7Ci0rCi0rICAvKiBBbGxvY2F0ZSB0aGUgc25kX3BjbV9od19wYXJhbXNfdCBzdHJ1Y3R1cmUgb24gdGhlIHN0YWNrLiAqLwotKyAgc25kX3BjbV9od19wYXJhbXNfYWxsb2NhKCZod3BhcmFtcyk7Ci0rCi0rICAvKiBPcGVuIHBjbSBkZXZpY2UgKi8KLSsgIGVyciA9IHNuZF9wY21fb3BlbigmcGNtX2hhbmRsZSwgcGNtX2Rldl9uYW1lLCBzdHJlYW0sIDApOwotKyAgaWYgKGVyciA8IDApIAotKyAgewotKwljc3RfZXJybXNnKCJhdWRpb19vcGVuX2Fsc2E6IGZhaWxlZCB0byBvcGVuIGF1ZGlvIGRldmljZSAlcy4gJXNcbiIsCi0rCQkJICAgcGNtX2Rldl9uYW1lLCBzbmRfc3RyZXJyb3IoZXJyKSk7Ci0rCXJldHVybiBOVUxMOwotKyAgfQotKwotKyAgLyogSW5pdCBod3BhcmFtcyB3aXRoIGZ1bGwgY29uZmlndXJhdGlvbiBzcGFjZSAqLwotKyAgZXJyID0gc25kX3BjbV9od19wYXJhbXNfYW55KHBjbV9oYW5kbGUsIGh3cGFyYW1zKTsKLSsgIGlmIChlcnIgPCAwKSAKLSsgIHsKLSsJc25kX3BjbV9jbG9zZShwY21faGFuZGxlKTsKLSsJY3N0X2Vycm1zZygiYXVkaW9fb3Blbl9hbHNhOiBmYWlsZWQgdG8gZ2V0IGhhcmR3YXJlIHBhcmFtZXRlcnMgZnJvbSBhdWRpbyBkZXZpY2UuICVzXG4iLCBzbmRfc3RyZXJyb3IoZXJyKSk7Ci0rCXJldHVybiBOVUxMOwotKyAgfQotKwotKyAgLyogU2V0IGFjY2VzcyBtb2RlICovCi0rICBlcnIgPSBzbmRfcGNtX2h3X3BhcmFtc19zZXRfYWNjZXNzKHBjbV9oYW5kbGUsIGh3cGFyYW1zLCBhY2Nlc3MpOwotKyAgaWYgKGVyciA8IDApIAotKyAgewotKwlzbmRfcGNtX2Nsb3NlKHBjbV9oYW5kbGUpOwotKwljc3RfZXJybXNnKCJhdWRpb19vcGVuX2Fsc2E6IGZhaWxlZCB0byBzZXQgYWNjZXNzIG1vZGUuICVzLlxuIiwgc25kX3N0cmVycm9yKGVycikpOwotKwlyZXR1cm4gTlVMTDsKLSsgIH0KLSsKLSsgIC8qIERldGVybWluZSBtYXRjaGluZyBhbHNhIHNhbXBsZSBmb3JtYXQgKi8KLSsgIC8qIFRoaXMgY291bGQgYmUgaW1wbGVtZW50ZWQgaW4gYSBtb3JlICovCi0rICAvKiBmbGV4aWJsZSB3YXkgKGJ5dGUgb3JkZXIgY29udmVyc2lvbikuICovCi0rICBzd2l0Y2ggKGZtdCkKLSsgIHsKLSsgIGNhc2UgQ1NUX0FVRElPX0xJTkVBUjE2OgotKwlpZiAoQ1NUX0xJVFRMRV9FTkRJQU4pCi0rCSAgZm9ybWF0ID0gU05EX1BDTV9GT1JNQVRfUzE2X0xFOwotKwllbHNlCi0rCSAgZm9ybWF0ID0gU05EX1BDTV9GT1JNQVRfUzE2X0JFOwotKwlicmVhazsKLSsgIGNhc2UgQ1NUX0FVRElPX0xJTkVBUjg6Ci0rCWZvcm1hdCA9IFNORF9QQ01fRk9STUFUX1U4OwotKwlicmVhazsKLSsgIGNhc2UgQ1NUX0FVRElPX01VTEFXOgotKwlmb3JtYXQgPSBTTkRfUENNX0ZPUk1BVF9NVV9MQVc7Ci0rCWJyZWFrOwotKyAgZGVmYXVsdDoKLSsJc25kX3BjbV9jbG9zZShwY21faGFuZGxlKTsKLSsJY3N0X2Vycm1zZygiYXVkaW9fb3Blbl9hbHNhOiBmYWlsZWQgdG8gZmluZCBzdWl0YWJsZSBmb3JtYXQuXG4iKTsKLSsJcmV0dXJuIE5VTEw7Ci0rCWJyZWFrOwotKyAgfQotKwotKyAgLyogU2V0IHNhbWJsZSBmb3JtYXQgKi8KLSsgIGVyciA9IHNuZF9wY21faHdfcGFyYW1zX3NldF9mb3JtYXQocGNtX2hhbmRsZSwgaHdwYXJhbXMsIGZvcm1hdCk7Ci0rICBpZiAoZXJyIDwwKSAKLSsgIHsKLSsJc25kX3BjbV9jbG9zZShwY21faGFuZGxlKTsKLSsJY3N0X2Vycm1zZygiYXVkaW9fb3Blbl9hbHNhOiBmYWlsZWQgdG8gc2V0IGZvcm1hdC4gJXMuXG4iLCBzbmRfc3RyZXJyb3IoZXJyKSk7Ci0rCXJldHVybiBOVUxMOwotKyAgfQotKwotKyAgLyogU2V0IHNhbXBsZSByYXRlIG5lYXIgdGhlIGRpc2lyZWQgcmF0ZSAqLwotKyAgcmVhbF9yYXRlID0gc3BzOwotKyAgZXJyID0gc25kX3BjbV9od19wYXJhbXNfc2V0X3JhdGVfbmVhcihwY21faGFuZGxlLCBod3BhcmFtcywgJnJlYWxfcmF0ZSwgMCk7Ci0rICBpZiAoZXJyIDwgMCkgICAKLSsgIHsKLSsJc25kX3BjbV9jbG9zZShwY21faGFuZGxlKTsKLSsJY3N0X2Vycm1zZygiYXVkaW9fb3Blbl9hbHNhOiBmYWlsZWQgdG8gc2V0IHNhbXBsZSByYXRlIG5lYXIgJWQuICVzLlxuIiwgc3BzLCBzbmRfc3RyZXJyb3IoZXJyKSk7Ci0rCXJldHVybiBOVUxMOwotKyAgfQotKyAgLypGSVhNRTogIFRoaXMgaXMgcHJvYmFibHkgdG9vIHN0cmljdCAqLwotKyAgYXNzZXJ0KHNwcyA9PSByZWFsX3JhdGUpOwotKwotKyAgLyogU2V0IG51bWJlciBvZiBjaGFubmVscyAqLwotKyAgYXNzZXJ0KGNoYW5uZWxzID4wKTsKLSsgIGVyciA9IHNuZF9wY21faHdfcGFyYW1zX3NldF9jaGFubmVscyhwY21faGFuZGxlLCBod3BhcmFtcywgY2hhbm5lbHMpOwotKyAgaWYgKGVyciA8IDApIAotKyAgewotKwlzbmRfcGNtX2Nsb3NlKHBjbV9oYW5kbGUpOwotKwljc3RfZXJybXNnKCJhdWRpb19vcGVuX2Fsc2E6IGZhaWxlZCB0byBzZXQgbnVtYmVyIG9mIGNoYW5uZWxzIHRvICVkLiAlcy5cbiIsIGNoYW5uZWxzLCBzbmRfc3RyZXJyb3IoZXJyKSk7Ci0rCXJldHVybiBOVUxMOwotKyAgfQotKwotKyAgLyogQ29tbWl0IGhhcmR3YXJlIHBhcmFtZXRlcnMgKi8KLSsgIGVyciA9IHNuZF9wY21faHdfcGFyYW1zKHBjbV9oYW5kbGUsIGh3cGFyYW1zKTsKLSsgIGlmIChlcnIgPCAwKSAKLSsgIHsKLSsJc25kX3BjbV9jbG9zZShwY21faGFuZGxlKTsKLSsJY3N0X2Vycm1zZygiYXVkaW9fb3Blbl9hbHNhOiBmYWlsZWQgdG8gc2V0IGh3IHBhcmFtZXRlcnMuICVzLlxuIiwgc25kX3N0cmVycm9yKGVycikpOwotKwlyZXR1cm4gTlVMTDsKLSsgIH0KLSsKLSsgIC8qIE1ha2Ugc3VyZSB0aGUgZGV2aWNlIGlzIHJlYWR5IHRvIGFjY2VwdCBkYXRhICovCi0rICBhc3NlcnQoc25kX3BjbV9zdGF0ZShwY21faGFuZGxlKSA9PSBTTkRfUENNX1NUQVRFX1BSRVBBUkVEKTsKLSsKLSsgIC8qIFdyaXRlIGhhcmR3YXJlIHBhcmFtZXRlcnMgdG8gZmxpdGUgYXVkaW8gZGV2aWNlIGRhdGEgc3RydWN0dXJlICovCi0rICBhZCA9IGNzdF9hbGxvYyhjc3RfYXVkaW9kZXYsIDEpOwotKyAgYXNzZXJ0KGFkICE9IE5VTEwpOwotKyAgYWQtPnJlYWxfc3BzID0gYWQtPnNwcyA9IHNwczsKLSsgIGFkLT5yZWFsX2NoYW5uZWxzID0gYWQtPmNoYW5uZWxzID0gY2hhbm5lbHM7Ci0rICBhZC0+cmVhbF9mbXQgPSBhZC0+Zm10ID0gZm10OwotKyAgYWQtPnBsYXRmb3JtX2RhdGEgPSAodm9pZCAqKSBwY21faGFuZGxlOwotKwotKyAgcmV0dXJuIGFkOwotK30KLSsKLStpbnQgYXVkaW9fY2xvc2VfYWxzYShjc3RfYXVkaW9kZXYgKmFkKQotK3sKLSsgIGludCByZXN1bHQ7Ci0rICBzbmRfcGNtX3QgKnBjbV9oYW5kbGU7Ci0rCi0rICBpZiAoYWQgPT0gTlVMTCkKLSsJcmV0dXJuIDA7Ci0rCi0rICBwY21faGFuZGxlID0gKHNuZF9wY21fdCAqKSBhZC0+cGxhdGZvcm1fZGF0YTsKLSsgIHJlc3VsdCA9IHNuZF9wY21fY2xvc2UocGNtX2hhbmRsZSk7Ci0rICBpZiAocmVzdWx0IDwgMCkKLSsgIHsKLSsJY3N0X2Vycm1zZygiYXVkaW9fY2xvc2VfYWxzYTogRXJyb3I6ICVzLlxuIiwgc25kX3N0cmVycm9yKHJlc3VsdCkpOwotKyAgfQotKyAgY3N0X2ZyZWUoYWQpOwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rLyogUmV0dXJucyB6ZXJvIGlmIHJlY292ZXJ5IHdhcyBzdWNjZXNzZnVsLiAqLwotK3N0YXRpYyBpbnQgcmVjb3Zlcl9mcm9tX2Vycm9yKHNuZF9wY21fdCAqcGNtX2hhbmRsZSwgc3NpemVfdCByZXMpCi0rewotKyAgaWYgKHJlcyA9PSAtRVBJUEUpIC8qIHhydW4gKi8KLSsgIHsKLSsJcmVzID0gc25kX3BjbV9wcmVwYXJlKHBjbV9oYW5kbGUpOwotKwlpZiAocmVzIDwgMCkgCi0rCXsKLSsJICAvKiBGYWlsZWQgdG8gcmVjb3ZlciBmcm9tIHhydW4gKi8KLSsJICBjc3RfZXJybXNnKCJyZWNvdmVyX2Zyb21fd3JpdGVfZXJyb3I6IGZhaWxlZCB0byByZWNvdmVyIGZyb20geHJ1bi4gJXNcbi4iLCBzbmRfc3RyZXJyb3IocmVzKSk7Ci0rCSAgcmV0dXJuIHJlczsKLSsJfQotKyAgfSAKLSsgIGVsc2UgaWYgKHJlcyA9PSAtRVNUUlBJUEUpIC8qIFN1c3BlbmQgKi8KLSsgIHsKLSsJd2hpbGUgKChyZXMgPSBzbmRfcGNtX3Jlc3VtZShwY21faGFuZGxlKSkgPT0gLUVBR0FJTikgCi0rCXsKLSsJICBzbmRfcGNtX3dhaXQocGNtX2hhbmRsZSwgMTAwMCk7Ci0rCX0KLSsJaWYgKHJlcyA8IDApIAotKwl7Ci0rCSAgcmVzID0gc25kX3BjbV9wcmVwYXJlKHBjbV9oYW5kbGUpOwotKwkgIGlmIChyZXMgPDApIAotKwkgIHsKLSsJCS8qIFJlc3VtZSBmYWlsZWQgKi8KLSsJCWNzdF9lcnJtc2coImF1ZGlvX3JlY292ZXJfZnJvbV93cml0ZV9lcnJvcjogZmFpbGVkIHRvIHJlc3VtZSBhZnRlciBzdXNwZW5kLiAlc1xuLiIsIHNuZF9zdHJlcnJvcihyZXMpKTsKLSsJCXJldHVybiByZXM7Ci0rCSAgfQotKwl9Ci0rICB9IAotKyAgZWxzZSBpZiAocmVzIDwgMCkgCi0rICB7Ci0rCS8qIFVua25vd24gZmFpbHVyZSAqLwotKwljc3RfZXJybXNnKCJhdWRpb19yZWNvdmVyX2Zyb21fd3JpdGVfZXJyb3I6ICVzLlxuIiwgc25kX3N0cmVycm9yKHJlcykpOwotKwlyZXR1cm4gcmVzOwotKyAgfQotKyAgcmV0dXJuIDA7Ci0rfQotKwotK2ludCBhdWRpb193cml0ZV9hbHNhKGNzdF9hdWRpb2RldiAqYWQsIHZvaWQgKnNhbXBsZXMsIGludCBudW1fYnl0ZXMpCi0rewotKyAgc2l6ZV90IGZyYW1lX3NpemU7Ci0rICBzc2l6ZV90IG51bV9mcmFtZXMsIHJlczsKLSsgIHNuZF9wY21fdCAqcGNtX2hhbmRsZTsKLSsgIGNoYXIgKmJ1ZiA9IChjaGFyICopIHNhbXBsZXM7Ci0rCi0rICAvKiBEZXRlcm1pbmUgZnJhbWUgc2l6ZSBpbiBieXRlcyAqLwotKyAgZnJhbWVfc2l6ZSAgPSBhdWRpb19icHMoYWQtPnJlYWxfZm10KSAqIGFkLT5yZWFsX2NoYW5uZWxzOwotKyAgLyogUmVxdWlyZSB0aGF0IG9ubHkgY29tcGxldGUgZnJhbWVzIGFyZSBoYW5kZWQgaW4gKi8KLSsgIGFzc2VydCgobnVtX2J5dGVzICUgZnJhbWVfc2l6ZSkgPT0gMCk7Ci0rICBudW1fZnJhbWVzID0gbnVtX2J5dGVzIC8gZnJhbWVfc2l6ZTsKLSsgIHBjbV9oYW5kbGUgPSAoc25kX3BjbV90ICopIGFkLT5wbGF0Zm9ybV9kYXRhOwotKwotKyAgd2hpbGUgKG51bV9mcmFtZXMgPiAwKSAKLSsgIHsKLSsJcmVzID0gc25kX3BjbV93cml0ZWkocGNtX2hhbmRsZSwgYnVmLCBudW1fZnJhbWVzKTsKLSsJaWYgKHJlcyAhPSBudW1fZnJhbWVzKSAKLSsJewotKwkgIGlmIChyZXMgPT0gLUVBR0FJTiB8fCAocmVzID4gMCAmJiByZXMgPCBudW1fZnJhbWVzKSkgCi0rCSAgewotKwkJc25kX3BjbV93YWl0KHBjbV9oYW5kbGUsIDEwMCk7Ci0rCSAgfQotKwkgIGVsc2UgaWYgKHJlY292ZXJfZnJvbV9lcnJvcihwY21faGFuZGxlLCByZXMpIDwgMCkgCi0rCSAgewotKwkJcmV0dXJuIC0xOwotKwkgIH0KLSsJfQotKwotKwlpZiAocmVzID4wKSAKLSsJewotKwkgIG51bV9mcmFtZXMgLT0gcmVzOwotKwkgIGJ1ZiArPSByZXMgKiBmcmFtZV9zaXplOwotKwl9Ci0rICB9Ci0rICByZXR1cm4gbnVtX2J5dGVzOwotK30KLSsKLStpbnQgYXVkaW9fZmx1c2hfYWxzYShjc3RfYXVkaW9kZXYgKmFkKQotK3sKLSsgIGludCByZXN1bHQ7Ci0rICByZXN1bHQgPSBzbmRfcGNtX2RyYWluKChzbmRfcGNtX3QgKikgYWQtPnBsYXRmb3JtX2RhdGEpOwotKyAgaWYgKHJlc3VsdCA8IDApCi0rICB7Ci0rCWNzdF9lcnJtc2coImF1ZGlvX2ZsdXNoX2Fsc2E6IEVycm9yOiAlcy5cbiIsIHNuZF9zdHJlcnJvcihyZXN1bHQpKTsKLSsgIH0KLSsJLyogUHJlcGFyZSBkZXZpY2UgZm9yIG1vcmUgZGF0YSAqLwotKyAgcmVzdWx0ID0gc25kX3BjbV9wcmVwYXJlKChzbmRfcGNtX3QgKikgYWQtPnBsYXRmb3JtX2RhdGEpOwotK2lmIChyZXN1bHQgPCAwKQotKyAgewotKwljc3RfZXJybXNnKCJhdWRpb19mbHVzaF9hbHNhOiBFcnJvcjogJXMuXG4iLCBzbmRfc3RyZXJyb3IocmVzdWx0KSk7Ci0rICB9Ci0rICByZXR1cm4gcmVzdWx0OwotK30KLSsKLStpbnQgYXVkaW9fZHJhaW5fYWxzYShjc3RfYXVkaW9kZXYgKmFkKQotK3sKLSsgIGludCByZXN1bHQ7Ci0rICByZXN1bHQgPSBzbmRfcGNtX2Ryb3AoKHNuZF9wY21fdCAqKSBhZC0+cGxhdGZvcm1fZGF0YSk7Ci0rICBpZiAocmVzdWx0IDwgMCkKLSsgIHsKLSsJY3N0X2Vycm1zZygiYXVkaW9fZHJhaW5fYWxzYTogRXJyb3I6ICVzLlxuIiwgc25kX3N0cmVycm9yKHJlc3VsdCkpOwotKyAgfQotKy8qIFByZXBhcmUgZGV2aWNlIGZvciBtb3JlIGRhdGEgKi8KLSsgIHJlc3VsdCA9IHNuZF9wY21fcHJlcGFyZSgoc25kX3BjbV90ICopIGFkLT5wbGF0Zm9ybV9kYXRhKTsKLStpZiAocmVzdWx0IDwgMCkKLSsgIHsKLSsJY3N0X2Vycm1zZygiYXVkaW9fZHJhaW5fYWxzYTogRXJyb3I6ICVzLlxuIiwgc25kX3N0cmVycm9yKHJlc3VsdCkpOwotKyAgfQotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci1JbmRleDogc3JjL2F1ZGlvL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL2F1ZGlvL01ha2VmaWxlCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiA3KQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL3NyYy9hdWRpby9NYWtlZmlsZQkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC00Myw5ICs0MywxMyBAQAotIAotIEJBU0VTUkNTID0gYXVjbGllbnQuYyBhdXNlcnZlci5jIGF1ZGlvLmMgCi0gU1JDUyA9ICQoQkFTRVNSQ1MpICQoQVVESU9EUklWRVI6JT1hdV8lLmMpCi0tT0JKUyA9ICQoU1JDUzouYz0ubykKLStpZmRlZiBTSEZMQUdTCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm9zKQotK2Vsc2UKLStPQkpTIDo9ICQoU1JDUzouYz0ubykKLStlbmRpZgotIEZJTEVTID0gTWFrZWZpbGUgJChIKSAkKEJBU0VTUkNTKSBhdV9jb21tYW5kLmMgYXVfbm9uZS5jIFwKLS0JYXVfb3NzLmMgYXVfc3VuLmMgYXVfd2luY2UuYyBhdV9wYWxtb3MuYwotKwlhdV9vc3MuYyBhdV9zdW4uYyBhdV93aW5jZS5jIGF1X3BhbG1vcy5jIGF1X2Fsc2EuYwotIExJQk5BTUUgPSBmbGl0ZQotIAotIExPQ0FMX0lOQ0xVREVTID0gLUkuICQoQVVESU9ERUZTKQotSW5kZXg6IHNyYy9sZXhpY29uL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL2xleGljb24vTWFrZWZpbGUJKC4uLi9mbGl0ZS0xLjMtb3JpZykJKHJldmlzaW9uIDcpCi0rKysgZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL2xleGljb24vTWFrZWZpbGUJKC4uLi9yZWxlYXNlLTEuMikJKHJldmlzaW9uIDcpCi1AQCAtMzgsOCArMzgsMTMgQEAKLSBESVJOQU1FPXNyYy9sZXhpY29uCi0gQlVJTERfRElSUyA9IAotIEFMTF9ESVJTPSAKLStpbmNsdWRlICQoVE9QKS9jb25maWcvY29uZmlnCi0gU1JDUyA9IGNzdF9sZXhpY29uLmMgY3N0X2x0cy5jIGNzdF9sdHNfcmV3cml0ZXMuYwotLU9CSlMgPSAkKFNSQ1M6LmM9Lm8pCi0raWZkZWYgU0hGTEFHUwotK09CSlMgOj0gJChTUkNTOi5jPS5vcykKLStlbHNlCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm8pCi0rZW5kaWYKLSBGSUxFUyA9IE1ha2VmaWxlICQoU1JDUykKLSBMSUJOQU1FID0gZmxpdGUKLSAKLUluZGV4OiBzcmMvc3ludGgvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9zcmMvc3ludGgvTWFrZWZpbGUJKC4uLi9mbGl0ZS0xLjMtb3JpZykJKHJldmlzaW9uIDcpCi0rKysgZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL3N5bnRoL01ha2VmaWxlCSguLi4vcmVsZWFzZS0xLjIpCShyZXZpc2lvbiA3KQotQEAgLTM4LDkgKzM4LDE0IEBACi0gRElSTkFNRT1zcmMvc3ludGgKLSBCVUlMRF9ESVJTID0gCi0gQUxMX0RJUlM9IAotK2luY2x1ZGUgJChUT1ApL2NvbmZpZy9jb25maWcKLSBTUkNTID0gY3N0X3N5bnRoLmMgY3N0X3V0dF91dGlscy5jIGNzdF92b2ljZS5jIGNzdF9waG9uZXNldC5jIFwKLSAgICAgICAgZmxpdGUuYyAKLS1PQkpTID0gJChTUkNTOi5jPS5vKQotK2lmZGVmIFNIRkxBR1MKLStPQkpTIDo9ICQoU1JDUzouYz0ub3MpCi0rZWxzZQotK09CSlMgOj0gJChTUkNTOi5jPS5vKQotK2VuZGlmCi0gRklMRVMgPSBNYWtlZmlsZSAkKFNSQ1MpCi0gTElCTkFNRSA9IGZsaXRlCi0gCi1JbmRleDogc3JjL3NwZWVjaC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsaXRlLTEuMy1yZWxlYXNlL3NyYy9zcGVlY2gvTWFrZWZpbGUJKC4uLi9mbGl0ZS0xLjMtb3JpZykJKHJldmlzaW9uIDcpCi0rKysgZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL3NwZWVjaC9NYWtlZmlsZQkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC0zOSw5ICszOSwxNCBAQAotIEJVSUxEX0RJUlMgPSAKLSBBTExfRElSUz0gCi0gSCA9IAotK2luY2x1ZGUgJChUT1ApL2NvbmZpZy9jb25maWcKLSBTUkNTID0gY3N0X3dhdmUuYyBjc3Rfd2F2ZV9pby5jIGNzdF90cmFjay5jIGNzdF90cmFja19pby5jIFwKLSAgICAgICAgY3N0X3dhdmVfdXRpbHMuYyBjc3RfbHBjcmVzLmMgcmF0ZWNvbnYuYwotLU9CSlMgPSAkKFNSQ1M6LmM9Lm8pCi0raWZkZWYgU0hGTEFHUwotK09CSlMgOj0gJChTUkNTOi5jPS5vcykKLStlbHNlCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm8pCi0rZW5kaWYKLSBGSUxFUyA9IE1ha2VmaWxlICQoSCkgJChTUkNTKQotIExJQk5BTUUgPSBmbGl0ZQotIAotSW5kZXg6IHNyYy93YXZlc3ludGgvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9zcmMvd2F2ZXN5bnRoL01ha2VmaWxlCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiA3KQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL3NyYy93YXZlc3ludGgvTWFrZWZpbGUJKC4uLi9yZWxlYXNlLTEuMikJKHJldmlzaW9uIDcpCi1AQCAtMzgsOSArMzgsMTQgQEAKLSBESVJOQU1FPXNyYy93YXZlc3ludGgKLSBCVUlMRF9ESVJTID0gCi0gQUxMX0RJUlM9Ci0raW5jbHVkZSAkKFRPUCkvY29uZmlnL2NvbmZpZwotIFNSQ1MgPSBjc3RfdW5pdHMuYyBjc3Rfc2lncHIuYyBjc3RfY2x1bml0cy5jIGNzdF9kaXBob25lLmMgXAotICAgICAgICBjc3Rfc2lncHJGUC5jIGNzdF9zdHMuYyBjc3RfcmVmbHBjLmMKLS1PQkpTID0gJChTUkNTOi5jPS5vKQotK2lmZGVmIFNIRkxBR1MKLStPQkpTIDo9ICQoU1JDUzouYz0ub3MpCi0rZWxzZQotK09CSlMgOj0gJChTUkNTOi5jPS5vKQotK2VuZGlmCi0gTElCTkFNRSA9IGZsaXRlCi0gRklMRVMgPSBNYWtlZmlsZSAkKFNSQ1MpCi0gCi1JbmRleDogc3JjL3JlZ2V4L01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL3JlZ2V4L01ha2VmaWxlCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiA3KQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL3NyYy9yZWdleC9NYWtlZmlsZQkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC00Miw4ICs0MiwxMyBAQAotIERJUk5BTUU9c3JjL3JlZ2V4Ci0gQlVJTERfRElSUyA9IAotIEFMTF9ESVJTPSAKLStpbmNsdWRlICQoVE9QKS9jb25maWcvY29uZmlnCi0gU1JDUyA9IGNzdF9yZWdleC5jIHJlZ2V4cC5jIHJlZ3N1Yi5jCi0tT0JKUyA9ICQoU1JDUzouYz0ubykKLStpZmRlZiBTSEZMQUdTCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm9zKQotK2Vsc2UKLStPQkpTIDo9ICQoU1JDUzouYz0ubykKLStlbmRpZgotIEZJTEVTID0gTWFrZWZpbGUgJChIKSAkKFNSQ1MpCi0gTElCTkFNRSA9IGZsaXRlCi0gCi1JbmRleDogc3JjL3N0YXRzL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL3N0YXRzL01ha2VmaWxlCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiA3KQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL3NyYy9zdGF0cy9NYWtlZmlsZQkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC0zOSw4ICszOSwxMyBAQAotIEJVSUxEX0RJUlMgPSAKLSBBTExfRElSUz0gCi0gSCA9IAotK2luY2x1ZGUgJChUT1ApL2NvbmZpZy9jb25maWcKLSBTUkNTID0gY3N0X2NhcnQuYyBjc3Rfdml0ZXJiaS5jIGNzdF9zcy5jCi0tT0JKUyA9ICQoU1JDUzouYz0ubykKLStpZmRlZiBTSEZMQUdTCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm9zKQotK2Vsc2UKLStPQkpTIDo9ICQoU1JDUzouYz0ubykKLStlbmRpZgotIEZJTEVTID0gTWFrZWZpbGUgJChIKSAkKFNSQ1MpCi0gTElCTkFNRSA9IGZsaXRlCi0gCi1JbmRleDogY29uZmlnL2NvbW1vbl9tYWtlX3J1bGVzCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxpdGUtMS4zLXJlbGVhc2UvY29uZmlnL2NvbW1vbl9tYWtlX3J1bGVzCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiA3KQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL2NvbmZpZy9jb21tb25fbWFrZV9ydWxlcwkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC03MywxMiArNzMsMTMgQEAKLSBpZmRlZiBTSEZMQUdTCi0gU09PQkpTID0gJChPQkpTOi5vPS5vcykKLSBGVUxMU0hPQkpTID0gJChTT09CSlM6JT0kKE9CSkRJUikvJSkKLS1pZmRlZiBMSUJOQU1FCi0tQUxMICs9ICQoT0JKRElSKS8uYnVpbGRfc28KLSsjaWZkZWYgTElCTkFNRQotKyNBTEwgKz0gJChPQkpESVIpLy5idWlsZF9zbwotKyNlbmRpZgotIGVuZGlmCi0tZW5kaWYKLSBpZmRlZiBMSUJOQU1FCi0gQUxMICs9ICQoT0JKRElSKS8uYnVpbGRfbGliCi0rQUxMICs9ICQoT0JKRElSKS8uYnVpbGRfc28KLSBlbmRpZgotICMgT25seSBkbyBzb21lIGRpcmVjdG9yaWVzIHdoZW4geW91IGFyZSBub3QgY3Jvc3MgY29tcGlsaW5nCi0gaWZlcSAoJChIT1NUX1BMQVRGT1JNKSwkKFRBUkdFVF9QTEFURk9STSkpCi1AQCAtMTE3LDE0ICsxMTgsMTcgQEAKLSAJQCB0b3VjaCAkKE9CSkRJUikvLmJ1aWxkX3NvCi0gCi0gIyBVc2VkIGluIHRoZSBsaWIvIGRpcmVjdG9yeSBhbmQgaW4gYnVpbGRpbmcgbmV3IHZvaWNlcwotLSQoT0JKRElSKS8lLnNvOiAlLnNoYXJlZC5hCi0rIyQoT0JKRElSKS8lLnNvOiAlLnNoYXJlZC5hCi0rJS5zbzogJS5zaGFyZWQuYQotIAlAIGVjaG8gbWFraW5nICRACi0gCUAgcm0gLXJmIHNoYXJlZF9vcyAmJiBta2RpciBzaGFyZWRfb3MKLSAJQCBybSAtZiAkQCAkKExJQkRJUikvJEAuJHtQUk9KRUNUX1ZFUlNJT059ICQoTElCRElSKS8kQC4ke1BST0pFQ1RfU0hMSUJfVkVSU0lPTn0gCi0gCUAgKGNkIHNoYXJlZF9vcyAmJiBhciB4IC4uLyQ8KQotIAlAIChjZCBzaGFyZWRfb3MgJiYgJChDQykgLXNoYXJlZCAtV2wsLXNvbmFtZSwkQC4ke1BST0pFQ1RfU0hMSUJfVkVSU0lPTn0gLW8gLi4vJEAuJHtQUk9KRUNUX1ZFUlNJT059ICoub3MpCi0tCUAgbG4gLXMgJChMSUJESVIpLyRALiR7UFJPSkVDVF9WRVJTSU9OfSAkKExJQkRJUikvJEAuJHtQUk9KRUNUX1NITElCX1ZFUlNJT059Ci0tCUAgbG4gLXMgJChMSUJESVIpLyRALiR7UFJPSkVDVF9TSExJQl9WRVJTSU9OfSAkKExJQkRJUikvJEAKLSsJI0AgbG4gLXMgJChMSUJESVIpLyRALiR7UFJPSkVDVF9WRVJTSU9OfSAkKExJQkRJUikvJEAuJHtQUk9KRUNUX1NITElCX1ZFUlNJT059Ci0rCSNAIGxuIC1zICQoTElCRElSKS8kQC4ke1BST0pFQ1RfU0hMSUJfVkVSU0lPTn0gJChMSUJESVIpLyRACi0rCUAgbG4gLXMgJEAuJHtQUk9KRUNUX1ZFUlNJT059ICRALiR7UFJPSkVDVF9TSExJQl9WRVJTSU9OfQotKwlAIGxuIC1zICRALiR7UFJPSkVDVF9TSExJQl9WRVJTSU9OfSAkQAotIAlAIHJtIC1yZiBzaGFyZWRfb3MKLSAKLSAkKE9CSkRJUikvLm1ha2VfYnVpbGRfZGlyczoKLUluZGV4OiBsaWIvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9saWIvTWFrZWZpbGUJKC4uLi9mbGl0ZS0xLjMtb3JpZykJKHJldmlzaW9uIDApCi0rKysgZmxpdGUtMS4zLXJlbGVhc2UvbGliL01ha2VmaWxlCSguLi4vcmVsZWFzZS0xLjIpCShyZXZpc2lvbiA3KQotQEAgLTAsMCArMSw3MCBAQAotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2UgVGVjaG5vbG9naWVzIEluc3RpdHV0ZSAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgICAgICAgICAgICAgICAgICAgQ2FybmVnaWUgTWVsbG9uIFVuaXZlcnNpdHkgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgICAgICAgICAgICAgICAgICAgICAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gdXNlIGFuZCBkaXN0cmlidXRlICAjIwotKyMjICB0aGlzIHNvZnR3YXJlIGFuZCBpdHMgZG9jdW1lbnRhdGlvbiB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgICAjIwotKyMjICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsICAjIwotKyMjICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhpcyB3b3JrLCBhbmQgdG8gICAgICAjIwotKyMjICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoaXMgd29yayBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gICAjIwotKyMjICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgMS4gVGhlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiAgICAjIwotKyMjICAgICAgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgMi4gQW55IG1vZGlmaWNhdGlvbnMgbXVzdCBiZSBjbGVhcmx5IG1hcmtlZCBhcyBzdWNoLiAgICAgICAgICAgICAgICAjIwotKyMjICAgMy4gT3JpZ2luYWwgYXV0aG9ycycgbmFtZXMgYXJlIG5vdCBkZWxldGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgNC4gVGhlIGF1dGhvcnMnIG5hbWVzIGFyZSBub3QgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgICAjIwotKyMjICAgICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuICAgICAgICAjIwotKyMjICAgICAgcGVybWlzc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICBDQVJORUdJRSBNRUxMT04gVU5JVkVSU0lUWSBBTkQgVEhFIENPTlRSSUJVVE9SUyBUTyBUSElTIFdPUksgICAgICAgICAjIwotKyMjICBESVNDTEFJTSBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFLCBJTkNMVURJTkcgICAgICAjIwotKyMjICBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUywgSU4gTk8gRVZFTlQgICAjIwotKyMjICBTSEFMTCBDQVJORUdJRSBNRUxMT04gVU5JVkVSU0lUWSBOT1IgVEhFIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgICAgICAjIwotKyMjICBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyAgICAjIwotKyMjICBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gICAjIwotKyMjICBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCAgICAgICAgICAjIwotKyMjICBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiAgICAgICAjIwotKyMjICBUSElTIFNPRlRXQVJFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgIEZMSVRFIGxpYnJhcmllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotK1RPUD0uLgotK0RJUk5BTUU9bGliCi0rQlVJTERfRElSUyA9IAotK0FMTF9ESVJTPQotK0ZJTEVTID0gTWFrZWZpbGUKLStMSUJOQU1FUyA9IGZsaXRlIGZsaXRlX2NtdWxleCBmbGl0ZV91c2VuZ2xpc2ggXAotKyAgICAgICAgICAgZmxpdGVfY211X3VzX2thbCBmbGl0ZV9jbXVfdXNfa2FsMTYgZmxpdGVfY211X3RpbWVfYXdiCi0rCi0rU1RBVElDTElCUz0gJChMSUJOQU1FUzolPWxpYiUuYSkKLStTSEFSRURBUkxJQlM9ICQoTElCTkFNRVM6JT1saWIlLnNoYXJlZC5hKQotKyNTSEFSRURMSUJTID0gJChMSUJOQU1FUzolPWxpYiUuc28pCi0rU0hBUkVETElCUyA9ICQoU0hBUkVEQVJMSUJTOiUuc2hhcmVkLmE9JS5zbykKLStWRVJTSU9OU0hBUkVETElCUyA9ICQoU0hBUkVETElCUzolPSUuJHtQUk9KRUNUX1ZFUlNJT059KSBcCi0rICAgICAgICAgICAgICAgICAgICAkKFNIQVJFRExJQlM6JT0lLiR7UFJPSkVDVF9TSExJQl9WRVJTSU9OfSkKLStBTExfTElCUyA9ICQoU1RBVElDTElCUykgJChTSEFSRURMSUJTKSAkKFZFUlNJT05TSEFSRURMSUJTKQotKwotK0FMTCA9IHNoYXJlZF9saWJzCi0rCi0rTE9DQUxfQ0xFQU49Ki5hICouc28gKi5zby4ke1BST0pFQ1RfVkVSU0lPTn0gKi5zby4ke1BST0pFQ1RfU0hMSUJfVkVSU0lPTn0KLSsKLStpbmNsdWRlICQoVE9QKS9jb25maWcvY29tbW9uX21ha2VfcnVsZXMKLSsKLStpZmRlZiBTSEZMQUdTCi0rc2hhcmVkX2xpYnM6ICQoU0hBUkVETElCUykKLStlbHNlCi0rc2hhcmVkX2xpYnM6IG5vdGhpbmcKLStlbmRpZgotKwotK2luc3RhbGw6Ci0rCUAgY3AgLXZmICQoTElCRElSKS8qIC4KLSsJQCAkKE1BS0UpIHNoYXJlZF9saWJzCi0rCUAgZWNobyBBUkxJQlM6ICQoU0hBUkVEQVJMSUJTKQotKwlAIGVjaG8gU0hBUkxJQlM6ICQoU0hBUkVETElCUykKLSsJQCB0YXIgY3ZmIC0gJChBTExfTElCUykgfCAoIGNkICQoSU5TVEFMTExJQkRJUikgJiYgdGFyIHhmIC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsdGsvZmx0ay5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmx0ay9mbHRrLmJiCmluZGV4IDYxOWQxNDIuLmVjOWUwNGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmx0ay9mbHRrLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmx0ay9mbHRrLmJiCkBAIC0yLDcgKzIsMTAgQEAKIAogREVQRU5EUyA9ICJhbHNhLWxpYiB6bGliIGpwZWcgbGlicG5nIGxpYnhleHQgbGlieGZ0IgogCi1pbmhlcml0IGJpbmNvbmZpZyBsaWJfcGFja2FnZSBndGstaWNvbi1jYWNoZSBtaW1lCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBiaW5jb25maWcgbGliX3BhY2thZ2UgZ3RrLWljb24tY2FjaGUgbWltZQorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDMtQ01ha2UtYnVpbGQtRm9yY2Utc2hhcmVkLWxpYnMtd2l0aC11bnN1ZmZpeGVkLW5hbWVzLnBhdGNoIgogCiBFWFRSQV9PRUNNQUtFID0gIiBcCiAgICAgLURPUFRJT05fQlVJTERfU0hBUkVEX0xJQlM9T04gXApAQCAtMTUsNiArMTgsNyBAQAogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsIGQpfSIKIAogUEFDS0FHRUNPTkZJR1tleGFtcGxlc10gPSAiLURPUFRJT05fQlVJTERfRVhBTVBMRVM9T04sLURPUFRJT05fQlVJTERfRVhBTVBMRVM9T0ZGLCIKK1BBQ0tBR0VDT05GSUdbY2Fpcm9dID0gIi1ET1BUSU9OX0NBSVJPPU9OLC1ET1BUSU9OX0NBSVJPPU9GRixjYWlybyIKIFBBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICItRE9QVElPTl9VU0VfR0w9T04sLURPUFRJT05fVVNFX0dMPU9GRix2aXJ0dWFsL2xpYmdsIgogUEFDS0FHRUNPTkZJR1t4aW5lcmFtYV0gPSAiLURPUFRJT05fVVNFX1hJTkVSQU1BPU9OLC1ET1BUSU9OX1VTRV9YSU5FUkFNQT1PRkYsbGlieGluZXJhbWEiCiBQQUNLQUdFQ09ORklHW3hmaXhlc10gPSAiLURPUFRJT05fVVNFX1hGSVhFUz1PTiwtRE9QVElPTl9VU0VfWEZJWEVTPU9GRixsaWJ4Zml4ZXMiCkBAIC0zMSw0ICszNSwxMiBAQAogCiBMRUFEX1NPTkFNRSA9ICJsaWJmbHRrLnNvIgogCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9taW1lIgorIyAuZGVza3RvcCAvIGljb25zIC8gbWltZSBvbmx5IG5lY2Vzc2FyeSBmb3IgZmx1aWQgYXBwCitGSUxFU18ke1BOfS1iaW4gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMgXAorICAgICR7ZGF0YWRpcn0vaWNvbnMgXAorICAgICR7ZGF0YWRpcn0vbWltZSBcCisiCisKKyMgY21ha2UgZmlsZXMKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9mbHRrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbHRrL2ZsdGsvMDAwMy1DTWFrZS1idWlsZC1Gb3JjZS1zaGFyZWQtbGlicy13aXRoLXVuc3VmZml4ZWQtbmFtZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsdGsvZmx0ay8wMDAzLUNNYWtlLWJ1aWxkLUZvcmNlLXNoYXJlZC1saWJzLXdpdGgtdW5zdWZmaXhlZC1uYW1lcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjJmOGFlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbHRrL2ZsdGsvMDAwMy1DTWFrZS1idWlsZC1Gb3JjZS1zaGFyZWQtbGlicy13aXRoLXVuc3VmZml4ZWQtbmFtZXMucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSBiYzM4ZmI0MTA0NDUwM2M5ZGViZjU3MTA5MTBjNTFkZDI5Njc0YjZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTUgRGVjIDIwMTcgMjI6MTQ6MDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gQ01ha2UgYnVpbGQ6IEZvcmNlIHNoYXJlZCBsaWJzIHdpdGggdW5zdWZmaXhlZCBuYW1lcworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitGb3Igd2luZG93cyBidWlsZCBzYWtlIENNYWtlIGNvbXBsYWlucyB3aGVuIGEgcHJvamVjdCB3YW50cyB0byBidWlsZCBzaGFyZWQgYW5kCitzdGF0aWMgbGlicmFyaWVzIHdpdGggc2FtZSBuYW1lLiBUaGlzIGNhdXNlZCB0aGUgYXV0aG9ycyBvZiBmbHRrIHRvIGdlbmVyYXRlCitsaWJyYXJpZXMgd2l0aCBuYW1lcyBzdWZmaXhlZCBieSAnX1NIQVJFRCcgd2hlbiBidWlsZGluZyBmbHRrIHdpdGggY21ha2UgLQorYXV0b3Rvb2xzIGJ1aWxkcyBkbyBub3Qgc3VmZml4LgorCitSZWFzb25zIHRvIGJ1aWxkIHNoYXJlZCBsaWJzIHdpdGggY29ycmVjdCBuYW1lczoKKworKiBTaGFyZWQgbGlicmFyaWVzIGFyZSB0aGUgcHJlZmVycmVkIGNob2ljZSBmb3IgZW1iZWRkZWQgZGV2aWNlcworKiBUaGVyZSBhcmUgcHJvamVjdHMgKGUuZyB5b3NoaW1pKSBleHBlY3Rpbmcgc2hhcmVkIGxpYnJhcmllcyB3aXRoIHVuc3VmZml4ZWQKKyAgbmFtZXMgLSBhcyBjcmVhdGVkIGJ5IGF1dG90b29scyBidWlsZC4gVGhlc2UgcHJvamVjdHMgbGluayBhZ2FpbnN0IHN0YXRpYworICBsaWJyYXJpZXMgYnkgYWNjaWRlbnQgY2F1c2luZyB1bnVzYWJsZSBiaW5hcmllcy4KKworU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKy0tLQorIENNYWtlL21hY3Jvcy5jbWFrZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL0NNYWtlL21hY3Jvcy5jbWFrZSBiL0NNYWtlL21hY3Jvcy5jbWFrZQoraW5kZXggNGRlZjYyZC4uYWI2NzVmMCAxMDA2NDQKKy0tLSBhL0NNYWtlL21hY3Jvcy5jbWFrZQorKysrIGIvQ01ha2UvbWFjcm9zLmNtYWtlCitAQCAtNDksNyArNDksNyBAQCBtYWNybyhGTF9BRERfTElCUkFSWSBMSUJOQU1FIExJQlRZUEUgTElCRklMRVMpCisgCSAgICBQUk9QRVJUSUVTCisgCSAgICBWRVJTSU9OICR7RkxUS19WRVJTSU9OX0ZVTEx9CisgCSAgICBTT1ZFUlNJT04gJHtGTFRLX1ZFUlNJT05fTUFKT1J9LiR7RkxUS19WRVJTSU9OX01JTk9SfQorLQkgICAgUFJFRklYICJsaWIiICAgICMgZm9yIE1TVkMgc3RhdGljL3NoYXJlZCBjb2V4aXN0ZW5jZQorKwkgICAgT1VUUFVUX05BTUUgJHtMSUJOQU1FfSBDTEVBTl9ESVJFQ1RfT1VUUFVUIDEKKyAJICAgICkKKyAgICAgZW5kaWYgKCR7TElCVFlQRX0gU1RSRVFVQUwgIlNIQVJFRCIpCisgCistLSAKKzIuOS41CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwLzAwMDEtRmluZEdTdHJlYW1lcl8xXzAtZml4LWJ1aWxkLWZhaWx1cmUtZm9yLW5ldy1nc3RyZWFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwLzAwMDEtRmluZEdTdHJlYW1lcl8xXzAtZml4LWJ1aWxkLWZhaWx1cmUtZm9yLW5ldy1nc3RyZWFtZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVmNjQ4NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZyZWVyZHAvZnJlZXJkcC8wMDAxLUZpbmRHU3RyZWFtZXJfMV8wLWZpeC1idWlsZC1mYWlsdXJlLWZvci1uZXctZ3N0cmVhbWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1Gcm9tIGJlYTI3ZmQ5MTliNjRlZThkOTc5OTY0MDllMjc5ZTFlODNkMTM1OTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKZWFuLUxvdWlzIER1cG9uZCA8amVhbi1sb3Vpc0BkdXBvbmQuYmU+Ci1EYXRlOiBTdW4sIDQgT2N0IDIwMTUgMTg6MTc6MzMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRmluZEdTdHJlYW1lcl8xXzA6IGZpeCBidWlsZCBmYWlsdXJlIGZvciBuZXcgZ3N0cmVhbWVyCi0gdmVyc2lvbnMKLQotLS0tCi0gY21ha2UvRmluZEdTdHJlYW1lcl8xXzAuY21ha2UgfCAzMCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jbWFrZS9GaW5kR1N0cmVhbWVyXzFfMC5jbWFrZSBiL2NtYWtlL0ZpbmRHU3RyZWFtZXJfMV8wLmNtYWtlCi1pbmRleCBmN2JmOTkwLi4zYWE4ZmM2IDEwMDY0NAotLS0tIGEvY21ha2UvRmluZEdTdHJlYW1lcl8xXzAuY21ha2UKLSsrKyBiL2NtYWtlL0ZpbmRHU3RyZWFtZXJfMV8wLmNtYWtlCi1AQCAtNTMsMTcgKzUzLDE3IEBAIHNldChHU1RSRUFNRVJfMV8wX01JTklNVU1fVkVSU0lPTiAxLjAuNSkKLSAjIEhlbHBlciBtYWNybyB0byBmaW5kIGEgR3N0cmVhbWVyIHBsdWdpbiAob3IgR3N0cmVhbWVyIGl0c2VsZikKLSAjICAgX2NvbXBvbmVudF9wcmVmaXggaXMgcHJlcGVuZGVkIHRvIHRoZSBfSU5DTFVERV9ESVJTIGFuZCBfTElCUkFSSUVTIHZhcmlhYmxlcyAoZWcuICJHU1RSRUFNRVJfMV8wX0FVRElPIikKLSAjICAgX3BrZ2NvbmZpZ19uYW1lIGlzIHRoZSBjb21wb25lbnQncyBwa2ctY29uZmlnIG5hbWUgKGVnLiAiZ3N0cmVhbWVyLTEuMCIsIG9yICJnc3RyZWFtZXItdmlkZW8tMS4wIikuCi0tIyAgIF9oZWFkZXIgaXMgdGhlIGNvbXBvbmVudCdzIGhlYWRlciwgcmVsYXRpdmUgdG8gdGhlIGdzdHJlYW1lci0xLjAgZGlyZWN0b3J5IChlZy4gImdzdC9nc3QuaCIpLgotICMgICBfbGlicmFyeSBpcyB0aGUgY29tcG9uZW50J3MgbGlicmFyeSBuYW1lIChlZy4gImdzdHJlYW1lci0xLjAiIG9yICJnc3R2aWRlby0xLjAiKQotLW1hY3JvKEZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVCBfY29tcG9uZW50X3ByZWZpeCBfcGtnY29uZmlnX25hbWUgX2hlYWRlciBfbGlicmFyeSkKLSttYWNybyhGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQgX2NvbXBvbmVudF9wcmVmaXggX3BrZ2NvbmZpZ19uYW1lIF9saWJyYXJ5KQotICAgICAjIEZJWE1FOiBUaGUgUVVJRVQga2V5d29yZCBjYW4gYmUgdXNlZCBvbmNlIHdlIHJlcXVpcmUgQ01ha2UgMi44LjIuCi0tICAgIHBrZ19jaGVja19tb2R1bGVzKFBDXyR7X2NvbXBvbmVudF9wcmVmaXh9ICR7X3BrZ2NvbmZpZ19uYW1lfSkKLSAKLS0gICAgZmluZF9wYXRoKCR7X2NvbXBvbmVudF9wcmVmaXh9X0lOQ0xVREVfRElSUwotLSAgICAgICAgTkFNRVMgJHtfaGVhZGVyfQotLSAgICAgICAgSElOVFMgJHtQQ18ke19jb21wb25lbnRfcHJlZml4fV9JTkNMVURFX0RJUlN9ICR7UENfJHtfY29tcG9uZW50X3ByZWZpeH1fSU5DTFVERURJUn0KLS0gICAgICAgIFBBVEhfU1VGRklYRVMgZ3N0cmVhbWVyLTEuMAotLSAgICApCi0rICAgIHN0cmluZyhSRUdFWCBNQVRDSCAiKC4qKT49KC4qKSIgX2R1bW15ICIke19wa2djb25maWdfbmFtZX0iKQotKyAgICBpZiAoIiR7Q01BS0VfTUFUQ0hfMn0iIFNUUkVRVUFMICIiKQotKyAgICAgICAgcGtnX2NoZWNrX21vZHVsZXMoUENfJHtfY29tcG9uZW50X3ByZWZpeH0gIiR7X3BrZ2NvbmZpZ19uYW1lfSA+PSAke0dTdHJlYW1lcl9GSU5EX1ZFUlNJT059IikKLSsgICAgZWxzZSAoKQotKyAgICAgICAgcGtnX2NoZWNrX21vZHVsZXMoUENfJHtfY29tcG9uZW50X3ByZWZpeH0gJHtfcGtnY29uZmlnX25hbWV9KQotKyAgICBlbmRpZiAoKQotKyAgICBzZXQoJHtfY29tcG9uZW50X3ByZWZpeH1fSU5DTFVERV9ESVJTICR7UENfJHtfY29tcG9uZW50X3ByZWZpeH1fSU5DTFVERV9ESVJTfSkKLSAKLSAgICAgZmluZF9saWJyYXJ5KCR7X2NvbXBvbmVudF9wcmVmaXh9X0xJQlJBUklFUwotICAgICAgICAgTkFNRVMgJHtfbGlicmFyeX0gZ3N0cmVhbWVyX2FuZHJvaWQKLUBAIC03OCw4ICs3OCw4IEBAIGVuZG1hY3JvKCkKLSAjIDEuMS4gRmluZCBoZWFkZXJzIGFuZCBsaWJyYXJpZXMKLSBzZXQoR0xJQl9ST09UX0RJUiAke0dTVFJFQU1FUl8xXzBfUk9PVF9ESVJ9KQotIGZpbmRfcGFja2FnZShHbGliIFJFUVVJUkVEKQotLUZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfMV8wIGdzdHJlYW1lci0xLjAgZ3N0L2dzdC5oIGdzdHJlYW1lci0xLjApCi0tRklORF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl8xXzBfQkFTRSBnc3RyZWFtZXItYmFzZS0xLjAgZ3N0L2dzdC5oIGdzdGJhc2UtMS4wKQotK0ZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfMV8wIGdzdHJlYW1lci0xLjAgZ3N0cmVhbWVyLTEuMCkKLStGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9CQVNFIGdzdHJlYW1lci1iYXNlLTEuMCBnc3RiYXNlLTEuMCkKLSAKLSAjIDEuMi4gQ2hlY2sgR3N0cmVhbWVyIHZlcnNpb24KLSBpZiAoR1NUUkVBTUVSXzFfMF9JTkNMVURFX0RJUlMpCi1AQCAtMTEwLDExICsxMTAsMTEgQEAgZW5kaWYgKCkKLSAjIDIuIEZpbmQgR3N0cmVhbWVyIHBsdWdpbnMKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLS1GSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9BUFAgZ3N0cmVhbWVyLWFwcC0xLjAgZ3N0L2FwcC9nc3RhcHBzaW5rLmggZ3N0YXBwLTEuMCkKLS1GSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9BVURJTyBnc3RyZWFtZXItYXVkaW8tMS4wIGdzdC9hdWRpby9hdWRpby5oIGdzdGF1ZGlvLTEuMCkKLS1GSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9GRlQgZ3N0cmVhbWVyLWZmdC0xLjAgZ3N0L2ZmdC9nc3RmZnQuaCBnc3RmZnQtMS4wKQotLUZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfMV8wX1BCVVRJTFMgZ3N0cmVhbWVyLXBidXRpbHMtMS4wIGdzdC9wYnV0aWxzL3BidXRpbHMuaCBnc3RwYnV0aWxzLTEuMCkKLS1GSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9WSURFTyBnc3RyZWFtZXItdmlkZW8tMS4wIGdzdC92aWRlby92aWRlby5oIGdzdHZpZGVvLTEuMCkKLStGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9BUFAgZ3N0cmVhbWVyLWFwcC0xLjAgZ3N0YXBwLTEuMCkKLStGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9BVURJTyBnc3RyZWFtZXItYXVkaW8tMS4wIGdzdGF1ZGlvLTEuMCkKLStGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9GRlQgZ3N0cmVhbWVyLWZmdC0xLjAgZ3N0ZmZ0LTEuMCkKLStGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9QQlVUSUxTIGdzdHJlYW1lci1wYnV0aWxzLTEuMCBnc3RwYnV0aWxzLTEuMCkKLStGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9WSURFTyBnc3RyZWFtZXItdmlkZW8tMS4wIGdzdHZpZGVvLTEuMCkKLSAKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICMgMy4gUHJvY2VzcyB0aGUgQ09NUE9ORU5UUyBwYXNzZWQgdG8gRklORF9QQUNLQUdFCi0tLSAKLTIuNi40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwLzAwMDEtRml4LWdzdHJlYW1lci0xLjAtZGV0ZWN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mcmVlcmRwL2ZyZWVyZHAvMDAwMS1GaXgtZ3N0cmVhbWVyLTEuMC1kZXRlY3Rpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU2N2NiYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwLzAwMDEtRml4LWdzdHJlYW1lci0xLjAtZGV0ZWN0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gMzY4OTg5NTI2YzMyY2RmOWQ2ODBhMzk3ZmVkZTNjYjc3M2ZhMjYwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pa2UgR2lsYmVydCA8ZmxvcHB5bUBnZW50b28ub3JnPgorRGF0ZTogRnJpLCAyOCBKdWwgMjAxNyAxNjozMTo0MSAtMDQwMAorU3ViamVjdDogW1BBVENIXSBGaXggZ3N0cmVhbWVyLTEuMCBkZXRlY3Rpb24KKworVXBzdHJlYW0gU3RhdGU6IEJhY2twb3J0CisKKy0tLQorIGNtYWtlL0ZpbmRHU3RyZWFtZXJfMV8wLmNtYWtlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY21ha2UvRmluZEdTdHJlYW1lcl8xXzAuY21ha2UgYi9jbWFrZS9GaW5kR1N0cmVhbWVyXzFfMC5jbWFrZQoraW5kZXggM2FhOGZjNi4uNmZiYzBlYyAxMDA2NDQKKy0tLSBhL2NtYWtlL0ZpbmRHU3RyZWFtZXJfMV8wLmNtYWtlCisrKysgYi9jbWFrZS9GaW5kR1N0cmVhbWVyXzFfMC5jbWFrZQorQEAgLTU5LDcgKzU5LDcgQEAgbWFjcm8oRklORF9HU1RSRUFNRVJfQ09NUE9ORU5UIF9jb21wb25lbnRfcHJlZml4IF9wa2djb25maWdfbmFtZSBfbGlicmFyeSkKKyAKKyAgICAgc3RyaW5nKFJFR0VYIE1BVENIICIoLiopPj0oLiopIiBfZHVtbXkgIiR7X3BrZ2NvbmZpZ19uYW1lfSIpCisgICAgIGlmICgiJHtDTUFLRV9NQVRDSF8yfSIgU1RSRVFVQUwgIiIpCistICAgICAgICBwa2dfY2hlY2tfbW9kdWxlcyhQQ18ke19jb21wb25lbnRfcHJlZml4fSAiJHtfcGtnY29uZmlnX25hbWV9ID49ICR7R1N0cmVhbWVyX0ZJTkRfVkVSU0lPTn0iKQorKyAgICAgICAgcGtnX2NoZWNrX21vZHVsZXMoUENfJHtfY29tcG9uZW50X3ByZWZpeH0gIiR7X3BrZ2NvbmZpZ19uYW1lfSA+PSAke0dTVFJFQU1FUl8xXzBfTUlOSU1VTV9WRVJTSU9OfSIpCisgICAgIGVsc2UgKCkKKyAgICAgICAgIHBrZ19jaGVja19tb2R1bGVzKFBDXyR7X2NvbXBvbmVudF9wcmVmaXh9ICR7X3BrZ2NvbmZpZ19uYW1lfSkKKyAgICAgZW5kaWYgKCkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mcmVlcmRwL2ZyZWVyZHAvMDAwMy1hZGQtbWlzc2luZy1kZWZpbmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZyZWVyZHAvZnJlZXJkcC8wMDAzLWFkZC1taXNzaW5nLWRlZmluZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjIwZWRlZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZyZWVyZHAvZnJlZXJkcC8wMDAzLWFkZC1taXNzaW5nLWRlZmluZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLWxpYndpbnByL2NvbW1fc2VyaWE6IGZpeCBtaXNzaW5nIGRlZmluZQotCi1GcmVlUkRQIHVzZXMgQ01TUEFSLCB3aGljaCBpcyBkZWZpbmVkIGJ5IGdsaWJjIGluIGJpdHMvdGVybWlvcy5oIC4KLQotZ2xpYmMgaGFzIHR3byBmbGF2b3VycyBvZiBiaXRzL3Rlcm1pb3MuaDogYSBnZW5tZXJpYyBvbmUgYW5kIGFuCi1hcmNoaXRlY3R1cmUtc3BlY2lmaWMgb25lLiBXaGVuIGluc3RhbGxpbmcsIGdsaWJjIHdpbGwgaW5zdGFsbCB0aGUKLWFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmaWxlIGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlIGl0IGluc3RhbGxzIHRoZQotZ2VuZXJpYyBmaWxlLiBPbmx5IEFscGhhLCBNSVBTLCBQUEMgYW5kIFNwYXJjIGhhdmUgdGhlaXIgb3duCi1iaXRzL3Rlcm1pb3MuaC4KLQotVGhlIGdlbmVyaWMgYml0cy90ZXJtaW9zLmgsIGFzIHdlbGwgYXMgdGhlIEFscGhhLCBQUEMgYW5kIFNwYXJjIGZsYXZvdXJzCi1kbyBkZWZpbmUgQ01TUEFSLiBIb3dldmVyLCB0aGUgTUlQUyBmbGF2b3VyIGRvZXMgbm90IGRlZmluZSBpdC4KLQotRGVmaW5lIENNU1BBUiB0byB0aGUgdmFsdWUgZnJvbSB0aGUgZ2VuZXJpYyB2YWx1ZSwgd2hpY2ggaXMgYWxzbyB0aGUKLXZhbHVlIGtub3duIHRvIHRoZSBMaW51eCBrZXJuZWwgZm9yIE1JUFMuCi0KLUZpeGVzOgotICAgIGh0dHA6Ly9hdXRvYnVpbGQuYnVpbGRyb290Lm9yZy9yZXN1bHRzLzBiNC8wYjQ3OTNmMGJmOWY0YzU3OTMzODk3ZjM0ODAwNTRhNGUwNjUyOGFkLwotICAgIGh0dHA6Ly9hdXRvYnVpbGQuYnVpbGRyb290Lm9yZy9yZXN1bHRzLzdhMi83YTIyODRkMGEyOTg3MTU4ZmEyZTc4Zjc4OWIwN2M4YzZmY2RiOTc0LwotICAgIGh0dHA6Ly9hdXRvYnVpbGQuYnVpbGRyb290Lm9yZy9yZXN1bHRzLzM4Ny8zODc0MDg4YzNjY2Q0YmJmNzZlYTBjOTExY2ExZWY2NGM3ZGM5ZDFjLwotICAgIC4uLgotCi1TaWduZWQtb2ZmLWJ5OiAiWWFubiBFLiBNT1JJTiIgPHlhbm4ubW9yaW4uMTk5OEBmcmVlLmZyPgotQ2M6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHVjbGliYy5vcmc+Ci1DYzogVGhvbWFzIFBldGF6em9uaSA8dGhvbWFzLnBldGF6em9uaUBmcmVlLWVsZWN0cm9ucy5jb20+Ci0KLWRpZmYgLWR1ck4gZnJlZXJkcC0xNzgzNGFmN2JiMzc4Zjg1YTNiM2NjNGRjYWRhYTUxMjVhMzM3ZTE2Lm9yaWcvd2lucHIvbGlid2lucHIvY29tbS9jb21tX3NlcmlhbF9zeXMuYyBmcmVlcmRwLTE3ODM0YWY3YmIzNzhmODVhM2IzY2M0ZGNhZGFhNTEyNWEzMzdlMTYvd2lucHIvbGlid2lucHIvY29tbS9jb21tX3NlcmlhbF9zeXMuYwotLS0tIGZyZWVyZHAtMTc4MzRhZjdiYjM3OGY4NWEzYjNjYzRkY2FkYWE1MTI1YTMzN2UxNi5vcmlnL3dpbnByL2xpYndpbnByL2NvbW0vY29tbV9zZXJpYWxfc3lzLmMJMjAxNS0wOS0wNCAxNjoyMDoxNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBmcmVlcmRwLTE3ODM0YWY3YmIzNzhmODVhM2IzY2M0ZGNhZGFhNTEyNWEzMzdlMTYvd2lucHIvbGlid2lucHIvY29tbS9jb21tX3NlcmlhbF9zeXMuYwkyMDE1LTEwLTA0IDExOjA3OjQxLjg2ODUxMzcyNiArMDEwMAotQEAgLTI3LDYgKzI3LDE0IEBACi0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotICNpbmNsdWRlIDx0ZXJtaW9zLmg+Ci0rCi0rLyogZ2xpYmMgZm9yIE1JUFMgaGFzIGl0cyBvd24gYml0cy90ZXJtaW9zLmggd2hpY2ggZG9lcyBub3QgZGVmaW5lCi0rICogQ01TUEFSLCBzbyB3ZSB2YW1waXJpc2UgdGhlIHZhbHVlIGZyb20gdGhlIGdlbmVyaWMgYml0cy90ZXJtaW9zLmgKLSsgKi8KLSsjaWZuZGVmIENNU1BBUgotKyNkZWZpbmUgQ01TUEFSIDAxMDAwMDAwMDAwMAotKyNlbmRpZgotKwotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLSAjaW5jbHVkZSAiY29tbV9zZXJpYWxfc3lzLmgiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwL3dpbnByLW1ha2VjZXJ0LUJ1aWxkLXdpdGgtaW5zdGFsbC1SUEFUSC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwL3dpbnByLW1ha2VjZXJ0LUJ1aWxkLXdpdGgtaW5zdGFsbC1SUEFUSC5wYXRjaAppbmRleCBkMjc5ZDZkLi4wZDdkY2MyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZyZWVyZHAvZnJlZXJkcC93aW5wci1tYWtlY2VydC1CdWlsZC13aXRoLWluc3RhbGwtUlBBVEgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mcmVlcmRwL2ZyZWVyZHAvd2lucHItbWFrZWNlcnQtQnVpbGQtd2l0aC1pbnN0YWxsLVJQQVRILnBhdGNoCkBAIC0xLDMxICsxLDMxIEBACi1Gcm9tIDI1M2VhZmM4YzhkYTgzZmMyYjFhOTlhOWU0MzgyNGVmYzYxMDVjN2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYW51ZWwgQmFjaG1hbm4gPG1hbnVlbC5iYWNobWFubkBpb3QuYnpoPgotRGF0ZTogU3VuLCA0IE9jdCAyMDE1IDEwOjQ0OjQ5ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIHdpbnByLW1ha2VjZXJ0OiBCdWlsZCB3aXRoIGluc3RhbGwgUlBBVEgKIAogQXMgd2UgYXJlIGluc3RhbGxpbmcgIndpbnByLW1ha2VjZXJ0IiBtYW51YWxseSwgd2UgZG8gd2FudAogdG8gcmVmZXIgdG8gdGhlIGxpYnJhcnkgaW4gREVTVERJUiwgbm90IHRoZSBvbmUgcmVzdGluZyBpbgogdGhlIGJ1aWxkIHRyZWUuCiAKLVNpZ25lZC1vZmYtYnk6IE1hbnVlbCBCYWNobWFubiA8bWFudWVsLmJhY2htYW5uQGlvdC5iemg+Ci0tLS0KLSB3aW5wci90b29scy9tYWtlY2VydC9jbGkvQ01ha2VMaXN0cy50eHQgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCitVcGRhdGUgaXQgZm9yIDIuMC4wLgogCi1kaWZmIC0tZ2l0IGEvd2lucHIvdG9vbHMvbWFrZWNlcnQvY2xpL0NNYWtlTGlzdHMudHh0IGIvd2lucHIvdG9vbHMvbWFrZWNlcnQvY2xpL0NNYWtlTGlzdHMudHh0Ci1pbmRleCAxNzk1NGM0Li45MGM0NDZiIDEwMDY0NAotLS0tIGEvd2lucHIvdG9vbHMvbWFrZWNlcnQvY2xpL0NNYWtlTGlzdHMudHh0Ci0rKysgYi93aW5wci90b29scy9tYWtlY2VydC9jbGkvQ01ha2VMaXN0cy50eHQKLUBAIC00NSw1ICs0NSw5IEBAIHNldCgke01PRFVMRV9QUkVGSVh9X0xJQlMgd2lucHItbWFrZWNlcnQtdG9vbCkKK1NpZ25lZC1vZmYtYnk6IE1hbnVlbCBCYWNobWFubiA8bWFudWVsLmJhY2htYW5uQGlvdC5iemg+CitTaWduZWQtb2ZmLWJ5OiBaaGVuZyBSdW9xaW4gPHpoZW5ncnEuZm5zdEBjbi5mdWppdHN1LmNvbT4KKy0tLQorIHdpbnByL3Rvb2xzL21ha2VjZXJ0LWNsaS9DTWFrZUxpc3RzLnR4dCB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvd2lucHIvdG9vbHMvbWFrZWNlcnQtY2xpL0NNYWtlTGlzdHMudHh0IGIvd2lucHIvdG9vbHMvbWFrZWNlcnQtY2xpL0NNYWtlTGlzdHMudHh0CitpbmRleCA3NGFmYTA5Li44ZDAwZWYxIDEwMDY0NAorLS0tIGEvd2lucHIvdG9vbHMvbWFrZWNlcnQtY2xpL0NNYWtlTGlzdHMudHh0CisrKysgYi93aW5wci90b29scy9tYWtlY2VydC1jbGkvQ01ha2VMaXN0cy50eHQKK0BAIC00NCw2ICs0NCw5IEBAIHNldCgke01PRFVMRV9QUkVGSVh9X0xJQlMgd2lucHItdG9vbHMpCiAgCiAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7TU9EVUxFX05BTUV9ICR7JHtNT0RVTEVfUFJFRklYfV9MSUJTfSkKICAKLStzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtNT0RVTEVfTkFNRX0gUFJPUEVSVElFUyAKLSsJQlVJTERfV0lUSF9JTlNUQUxMX1JQQVRIIDEpCisrc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCR7TU9EVUxFX05BTUV9IFBST1BFUlRJRVMKKysgICAgICAgQlVJTERfV0lUSF9JTlNUQUxMX1JQQVRIIDEpCiArCiAgc2V0X3Byb3BlcnR5KFRBUkdFVCAke01PRFVMRV9OQU1FfSBQUk9QRVJUWSBGT0xERVIgIldpblBSL1Rvb2xzIikKICAKLSsKKyBpbnN0YWxsKFRBUkdFVFMgJHtNT0RVTEVfTkFNRX0gREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0JJTkRJUn0gQ09NUE9ORU5UIHRvb2xzIEVYUE9SVCBXaW5QUlRhcmdldHMpCiAtLSAKLTEuOC4zLjEKKzIuNy40CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwX2dpdC5iYgppbmRleCBmMGFhMWI2Li44OGFlYzljIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZyZWVyZHAvZnJlZXJkcF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mcmVlcmRwL2ZyZWVyZHBfZ2l0LmJiCkBAIC0xMCwxNCArMTAsMTMgQEAKIAogaW5oZXJpdCBwa2djb25maWcgY21ha2UgZ2l0cGtndgogCi1QViA9ICIxLjIuNStnaXRyJHtTUkNQVn0iCitQViA9ICIyLjAuMCtnaXRyJHtTUkNQVn0iCiBQS0dWID0gIiR7R0lUUEtHVlRBR30iCiAKLVNSQ1JFViA9ICI2MmRhOWQyOGM2NzQ4MTRjODFjMjQ1YzFjNzg4MmViMGRhN2JlNzZiIgorU1JDUkVWID0gIjE2NDhkZWI0MzVhZDUyMjA2ZjdhYTJhZmU0YjRkZmY3MWQ5MzI5YmMiCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vRnJlZVJEUC9GcmVlUkRQLmdpdCBcCiAgICAgZmlsZTovL3dpbnByLW1ha2VjZXJ0LUJ1aWxkLXdpdGgtaW5zdGFsbC1SUEFUSC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtRmluZEdTdHJlYW1lcl8xXzAtZml4LWJ1aWxkLWZhaWx1cmUtZm9yLW5ldy1nc3RyZWFtZS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtYWRkLW1pc3NpbmctZGVmaW5lLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1GaXgtZ3N0cmVhbWVyLTEuMC1kZXRlY3Rpb24ucGF0Y2ggXAogIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpAQCAtNTcsNyArNTYsNyBAQAogIyB3ZSB3aWxsIG5lZWQgd2lucHItbWFrZWNlcnQgdG8gZ2VuZXJhdGUgVExTIGNlcnRpZmljYXRlcwogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgLW03NTUgd2lucHIvdG9vbHMvbWFrZWNlcnQvY2xpL3dpbnByLW1ha2VjZXJ0ICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tNzU1IHdpbnByL3Rvb2xzL21ha2VjZXJ0LWNsaS93aW5wci1tYWtlY2VydCAke0R9JHtiaW5kaXJ9CiAgICAgcm0gLXJmICR7RH0ke2xpYmRpcn0vY21ha2UKICAgICBybSAtcmYgJHtEfSR7bGliZGlyfS9mcmVlcmRwCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkXzIuMi40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZF8yLjIuNS5iYgpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkXzIuMi40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkXzIuMi41LmJiCmluZGV4IDQ5MzJiYjcuLjYzZDlhY2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2RfMi4yLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZF8yLjIuNS5iYgpAQCAtMTYsNyArMTYsNyBAQAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpYmdkL2xpYmdkLmdpdDticmFuY2g9R0QtMi4yIFwKICAgICAgICAgICAiCiAKLVNSQ1JFViA9ICJkZTA5ODc0YjE1YTRjODg3NzJkYjM1Y2VkODQyMzMwZjVkZTIzZTc2IgorU1JDUkVWID0gIjgyNTUyMzFiNjg4ODk1OTdkMDRkNDUxYTcyNDM4YWI5MmE0MDVhYmEiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2ZsYWdzL2dmbGFnc18yLjIuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2ZsYWdzL2dmbGFnc18yLjIuMC5iYgppbmRleCAwZTg1YjNmLi4yOGI2NTJhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dmbGFncy9nZmxhZ3NfMi4yLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZmxhZ3MvZ2ZsYWdzXzIuMi4wLmJiCkBAIC0xOSwzICsxOSw1IEBACiBQQUNLQUdFUyA9KyAiJHtQTn0tYmFzaC1jb21wbGV0aW9uIgogRklMRVNfJHtQTn0tYmFzaC1jb21wbGV0aW9uICs9ICIke2JpbmRpcn0vZ2ZsYWdzX2NvbXBsZXRpb25zLnNoIgogUkRFUEVORFNfJHtQTn0tYmFzaC1jb21wbGV0aW9uID0gImJhc2ggYmFzaC1jb21wbGV0aW9uIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ251bGliL2dudWxpYl8yMDE3LTA4LTIwLjE4LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nbnVsaWIvZ251bGliXzIwMTctMDgtMjAuMTguYmIKaW5kZXggYjUwNWFjMS4uYjcyZmZhOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nbnVsaWIvZ251bGliXzIwMTctMDgtMjAuMTguYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nbnVsaWIvZ251bGliXzIwMTctMDgtMjAuMTguYmIKQEAgLTI5LDggKzI5LDggQEAKIGRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgogZG9fcGFja2FnZVtub2V4ZWNdID0gIjEiCiBkb19wYWNrYWdlZGF0YVtub2V4ZWNdID0gIjEiCi1kb19wYWNrYWdlX3dyaXRlX2lwa1tub2V4ZWNdID0gIjEiCi1kb19wYWNrYWdlX3dyaXRlX2RlYltub2V4ZWNdID0gIjEiCi1kb19wYWNrYWdlX3dyaXRlX3JwbVtub2V4ZWNdID0gIjEiCitkZWx0YXNrIHBhY2thZ2Vfd3JpdGVfaXBrCitkZWx0YXNrIHBhY2thZ2Vfd3JpdGVfZGViCitkZWx0YXNrIHBhY2thZ2Vfd3JpdGVfcnBtCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1TdXBwb3J0LUF0b21pYy1vcHMtb24tY2xhbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLVN1cHBvcnQtQXRvbWljLW9wcy1vbi1jbGFuZy5wYXRjaAppbmRleCBlNTgyYzBkLi4yZmQyMWMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLVN1cHBvcnQtQXRvbWljLW9wcy1vbi1jbGFuZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLVN1cHBvcnQtQXRvbWljLW9wcy1vbi1jbGFuZy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZWE5ZjY0ZWIyY2RmM2JlNmM0ZGM2NWZhMTQ3MmQ4NTQ2MTZlNDNjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYWEwYTYzMjA5YWY2ODEzZDg3MjU1ZWMzYWIzMzlmMmRiYmYyN2Q2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDYgTWFyIDIwMTcgMTM6Mzg6NDYgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gU3VwcG9ydCBBdG9taWMgb3BzIG9uIGNsYW5nCkBAIC05LDI1ICs5LDIzIEBACiB0aGUgYXRvbWljcyBhbmQgZmFpbHMgZm9yIGNsYW5nCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KKwogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKKy0tLQogIHNyYy9iYXNlL2F0b21pY29wcy5oIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2UvYXRvbWljb3BzLmggYi9zcmMvYmFzZS9hdG9taWNvcHMuaAotaW5kZXggYmUwMzhmMy4uZjFhMjFmZiAxMDA2NDQKK2luZGV4IGRhYzk1YmUuLjM5MDczM2MgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzZS9hdG9taWNvcHMuaAogKysrIGIvc3JjL2Jhc2UvYXRvbWljb3BzLmgKLUBAIC0xMTgsNyArMTE4LDcgQEAKK0BAIC0xMjQsNyArMTI0LDcgQEAKICAjaW5jbHVkZSAiYmFzZS9hdG9taWNvcHMtaW50ZXJuYWxzLWxpbnV4cHBjLmgiCiAgI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX21pcHNfXykKICAjaW5jbHVkZSAiYmFzZS9hdG9taWNvcHMtaW50ZXJuYWxzLW1pcHMuaCIKIC0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBHQ0NfVkVSU0lPTiA+PSA0MDcwMAogKyNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIEdDQ19WRVJTSU9OID49IDQwNzAwIHx8IGRlZmluZWQoX19jbGFuZ19fKQogICNpbmNsdWRlICJiYXNlL2F0b21pY29wcy1pbnRlcm5hbHMtZ2NjLmgiCi0gI2Vsc2UKLSAjZXJyb3IgWW91IG5lZWQgdG8gaW1wbGVtZW50IGF0b21pYyBvcGVyYXRpb25zIGZvciB0aGlzIGFyY2hpdGVjdHVyZQotLS0gCi0yLjEyLjAKLQorICNlbGlmIGRlZmluZWQoX19jbGFuZ19fKSAmJiBDTEFOR19WRVJTSU9OID49IDMwNDAwCisgI2luY2x1ZGUgImJhc2UvYXRvbWljb3BzLWludGVybmFscy1nY2MuaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtVXNlLXVjb250ZXh0X3QtaW5zdGVhZC1vZi1zdHJ1Y3QtdWNvbnRleHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLVVzZS11Y29udGV4dF90LWluc3RlYWQtb2Ytc3RydWN0LXVjb250ZXh0LnBhdGNoCmluZGV4IDViZDBiNmYuLmIzMDMzNjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtVXNlLXVjb250ZXh0X3QtaW5zdGVhZC1vZi1zdHJ1Y3QtdWNvbnRleHQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1Vc2UtdWNvbnRleHRfdC1pbnN0ZWFkLW9mLXN0cnVjdC11Y29udGV4dC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMTJhYzBkYzY3NDJlMWJjZGZhZjE4NDIxODZjOTAwMmYwODIwYTVlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMjMwY2Q4NDQ4NjE0NWM1YmIxZDY5ZDRjOWE1NDRlMDBhZGJjYzliNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDEgSnVsIDIwMTcgMTM6MjE6MjEgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gVXNlIHVjb250ZXh0X3QgaW5zdGVhZCBvZiBzdHJ1Y3QgdWNvbnRleHQKQEAgLTYsMTIgKzYsMTMgQEAKIE5ld2VyIGdsaWJjIGhhcyBkcm9wcGVkIHRoZSB1Y29udGV4dCB0YWcgZnJvbSBleHBvc2luZwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBzcmMvc3RhY2t0cmFjZV9wb3dlcnBjLWxpbnV4LWlubC5oIHwgMyArLS0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvc3RhY2t0cmFjZV9wb3dlcnBjLWxpbnV4LWlubC5oIGIvc3JjL3N0YWNrdHJhY2VfcG93ZXJwYy1saW51eC1pbmwuaAotaW5kZXggYTliZjc3NS4uNDdmZjJkNyAxMDA2NDQKK2luZGV4IDNiMzg0M2IuLmEzMDFhNDYgMTAwNjQ0CiAtLS0gYS9zcmMvc3RhY2t0cmFjZV9wb3dlcnBjLWxpbnV4LWlubC5oCiArKysgYi9zcmMvc3RhY2t0cmFjZV9wb3dlcnBjLWxpbnV4LWlubC5oCiBAQCAtNTMsNyArNTMsNiBAQApAQCAtMzEsNiArMzIsMyBAQAogICAgICAgICAgICAvLyBXZSBkb24ndCBjYXJlIGFib3V0IHRoZSByZXN0LCBzaW5jZSBJUCB2YWx1ZSBpcyBhdCAndWMnIGZpZWxkLkEKICAgICAgICAgIH0gKnNpZ2ZyYW1lID0gcmVpbnRlcnByZXRfY2FzdDxydF9zaWduYWxfZnJhbWVfMzIqPihjdXJyZW50KTsKICAgICAgICAgIHJlc3VsdFtuXSA9ICh2b2lkKikgc2lnZnJhbWUtPnVjLnVjX21jb250ZXh0LnVjX3JlZ3MtPmdyZWdzW1BUX05JUF07Ci0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWRpc2JhbGUtaGVhcC1jaGVja2Vycy1hbmQtZGVidWctYWxsb2NhdG9yLW9uLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWRpc2JhbGUtaGVhcC1jaGVja2Vycy1hbmQtZGVidWctYWxsb2NhdG9yLW9uLW11c2wucGF0Y2gKaW5kZXggOTkxMjdlMS4uYWIzY2ViOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1kaXNiYWxlLWhlYXAtY2hlY2tlcnMtYW5kLWRlYnVnLWFsbG9jYXRvci1vbi1tdXNsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtZGlzYmFsZS1oZWFwLWNoZWNrZXJzLWFuZC1kZWJ1Zy1hbGxvY2F0b3Itb24tbXVzbC5wYXRjaApAQCAtMSwxOSArMSwyMCBAQAotRnJvbSBiNTk2MWYxN2U5ZDdmMmJjNDRkYTYxMWIzZTRiMjdjOGE2NDFmYzcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwNjYwNTE1ODg1MmY5MzY0NTE5MzkxZmExMTA3MGJhNWVjNDMwM2U5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFNhdCwgMiBTZXAgMjAxNyAwODowNzoxNyAtMDcwMAogU3ViamVjdDogW1BBVENIXSBkaXNiYWxlIGhlYXAgY2hlY2tlcnMgYW5kIGRlYnVnIGFsbG9jYXRvciBvbiBtdXNsCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KKwogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKKy0tLQogIGNvbmZpZ3VyZS5hYyB8IDIgKysKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCiAKLUluZGV4OiBnaXQvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgZ2l0L2NvbmZpZ3VyZS5hYworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNzBiNDlhMy4uODE1NGM1YyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCiBAQCAtNTEsNiArNTEsOCBAQCBjYXNlICIkaG9zdCIgaW4KICAgICAqLWN5Z3dpbiopIGRlZmF1bHRfZW5hYmxlX2hlYXBfY2hlY2tlcj1ubzsgZGVmYXVsdF9lbmFibGVfY3B1X3Byb2ZpbGVyPW5vOzsKICAgICAqLWZyZWVic2QqKSBkZWZhdWx0X2VuYWJsZV9oZWFwX2NoZWNrZXI9bm87OwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaAppbmRleCA3ODYyMWM3Li4wYTcyZmYyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMTU3OTE0OTQxYmQzOGYxYTM4YmI2YmQ3Mjk0Y2E2YzJiYzFiOGRjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMDM0ZTdkYTA4YzNmYmZmY2JhOGNmOGQ0ZTI0YTcxYTE2NTU4ZGI1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTdW4sIDE2IEp1bCAyMDE3IDE1OjUxOjI4IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIGZpeCBidWlsZCB3aXRoIG11c2wgbGliYwpAQCAtNiw2ICs2LDcgQEAKIFBhdGNoIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2dwZXJmdG9vbHMvZ3BlcmZ0b29scy9wdWxsLzc2NS8KIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICB8IDEgKwogIHNyYy9tYWxsb2NfaG9va19tbWFwX2xpbnV4LmggfCA4ICsrKysrKy0tCkBAIC01Niw2ICs1NywzIEBACiAgLy8gbGliYydzIHZlcnNpb246CiAgZXh0ZXJuICJDIiB2b2lkKiBfX3NicmsocHRyZGlmZl90IGluY3JlbWVudCk7CiAgCi0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWluY2x1ZGUtZmNudGwuaC1mb3ItbG9mZl90LWRlZmluaXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWluY2x1ZGUtZmNudGwuaC1mb3ItbG9mZl90LWRlZmluaXRpb24ucGF0Y2gKaW5kZXggNjY3MDA4YS4uNGM2M2U3MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1pbmNsdWRlLWZjbnRsLmgtZm9yLWxvZmZfdC1kZWZpbml0aW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtaW5jbHVkZS1mY250bC5oLWZvci1sb2ZmX3QtZGVmaW5pdGlvbi5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMDRlYThlMDAxNTAxOTMxZjRkYmYyMDI4OGFjYTc4NDY5NjE3YjA4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTE2YTczZjA4MTlkMjYyMTllZTgzY2Q5OGVlYTgyNzg2ZDdjMTc1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTdW4sIDE2IEp1bCAyMDE3IDE5OjI4OjE3IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgZmNudGwuaCBmb3IgbG9mZl90IGRlZmluaXRpb24KQEAgLTcsNiArNyw3IEBACiBsaW51eF9zeXNjYWxsX3N1cHBvcnQuaDoyNjQxOjI2OiBlcnJvcjogJ2xvZmZfdCcgaGFzIG5vdCBiZWVuIGRlY2xhcmVkCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHNyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oIHwgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCkBAIC0yMyw2ICsyNCwzIEBACiAgCiAgI2lmZGVmIF9fbWlwc19fCiAgLyogSW5jbHVkZSBkZWZpbml0aW9ucyBvZiB0aGUgQUJJIGN1cnJlbnRseSBpbiB1c2UuICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvZGlzYWJsZV9saWJ1bndpbmRfYWFyY2g2NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzL2Rpc2FibGVfbGlidW53aW5kX2FhcmNoNjQucGF0Y2gKaW5kZXggZjI2NDc0MC4uYzNjNTc4NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvZGlzYWJsZV9saWJ1bndpbmRfYWFyY2g2NC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy9kaXNhYmxlX2xpYnVud2luZF9hYXJjaDY0LnBhdGNoCkBAIC0xLDE1ICsxLDIyIEBACi1EaXNhYmxlIGxpYnVud2luZCBvbiBhYXJjaDY0CitGcm9tIDU2NGY4MDBlM2UyNDY0N2MwOTVmN2EzMjFiZjNlYmRjY2ZiZjc2MmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAyIFNlcCAyMDE3IDEyOjAyOjA0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgbGlidW53aW5kIG9uIGFhcmNoNjQKIAogRml4ZXMgaGFuZ3Mgd2hlbiB1c2luZyBsaWJ0Y21hbGxvYy5zbwogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAKLUluZGV4OiBnaXQvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgZ2l0L2NvbmZpZ3VyZS5hYwotQEAgLTY5LDYgKzY5LDExIEBAIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oLCBbcmUKKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDgxNTRjNWMuLjA2M2IyNjAgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTY5LDYgKzY5LDExIEBAIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oLCBbcmV0dXJuIF9fUFBDNjRfX10pXSwKICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdF9lbmFibGVfbGlidW53aW5kPXllcwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X3RjbWFsbG9jX3BhZ2VzaXplPThdKQogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvc2dpZGVmLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvc2dpZGVmLnBhdGNoCmluZGV4IDdlMWEyM2IuLjEwMjc0YTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzL3NnaWRlZi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy9zZ2lkZWYucGF0Y2gKQEAgLTEsMTEgKzEsMTkgQEAKLXNnaWRlZi5oIGRvZXMgbm90IGV4aXN0IG9uIG11c2wgYW5kIGl0cyBub3QgbmVlZGVkIHRvIGNvbXBpbGUKK0Zyb20gMjU5YjQyMDQ0NGM1MjQ2Mzc5NWI0YjU4MmEyYWI3NTExMTQ5ZWVhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDE2IE9jdCAyMDE3IDIxOjI2OjQwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHNnaWRlZi5oIGRvZXMgbm90IGV4aXN0IG9uIG11c2wgYW5kIGl0cyBub3QgbmVlZGVkIHRvIGNvbXBpbGUKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdpdC9zcmMvYmFzZS9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3NyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCi0rKysgZ2l0L3NyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCisKKy0tLQorIHNyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9zdXBwb3J0LmggYi9zcmMvYmFzZS9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAoraW5kZXggNzA0MzFjYS4uYjIzY2E1OSAxMDA2NDQKKy0tLSBhL3NyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCisrKysgYi9zcmMvYmFzZS9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAogQEAgLTE2NCw3ICsxNjQsNyBAQCBleHRlcm4gIkMiIHsKICAjaW5jbHVkZSA8ZW5kaWFuLmg+CiAgI2luY2x1ZGUgPGZjbnRsLmg+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2hkZHRlbXAvaGRkdGVtcC9oZGR0ZW1wLTAuMy1iZXRhMTUtYXV0b2RldGVjdC03MTc0NzkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2hkZHRlbXAvaGRkdGVtcC9oZGR0ZW1wLTAuMy1iZXRhMTUtYXV0b2RldGVjdC03MTc0NzkucGF0Y2gKaW5kZXggMTlmODM4MC4uMWVjNmE2MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9oZGR0ZW1wL2hkZHRlbXAvaGRkdGVtcC0wLjMtYmV0YTE1LWF1dG9kZXRlY3QtNzE3NDc5LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaGRkdGVtcC9oZGR0ZW1wL2hkZHRlbXAtMC4zLWJldGExNS1hdXRvZGV0ZWN0LTcxNzQ3OS5wYXRjaApAQCAtMyw5ICszLDEwIEBACiBSZWZlciB0bzoKIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NzE3NDc5CiAKLWRpZmYgLXVwIGhkZHRlbXAtMC4zLWJldGExNS9kb2MvaGRkdGVtcC44fiBoZGR0ZW1wLTAuMy1iZXRhMTUvZG9jL2hkZHRlbXAuOAotLS0tIGhkZHRlbXAtMC4zLWJldGExNS9kb2MvaGRkdGVtcC44fgkyMDExLTA4LTE4IDAwOjM2OjA1LjY4OTAwMTQ3MCArMDMwMAotKysrIGhkZHRlbXAtMC4zLWJldGExNS9kb2MvaGRkdGVtcC44CTIwMTEtMDgtMTggMDA6NDQ6NDYuNzUzMDA2MjUzICswMzAwCitJbmRleDogaGRkdGVtcC0wLjMtYmV0YTE1L2RvYy9oZGR0ZW1wLjgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBoZGR0ZW1wLTAuMy1iZXRhMTUub3JpZy9kb2MvaGRkdGVtcC44CisrKysgaGRkdGVtcC0wLjMtYmV0YTE1L2RvYy9oZGR0ZW1wLjgKIEBAIC0xOSw3ICsxOSw3IEBACiAgaGRkdGVtcCBcLSBVdGlsaXR5IHRvIG1vbml0b3IgaGFyZCBkcml2ZSB0ZW1wZXJhdHVyZQogIC5TSCBTWU5PUFNJUwpAQCAtMjUsOSArMjYsMTAgQEAKICAKICAKICAuU0ggIk9QVElPTlMiCi1kaWZmIC11cCBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL2hkZHRlbXAuY34gaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9oZGR0ZW1wLmMKLS0tLSBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL2hkZHRlbXAuY34JMjAxMS0wOC0xOCAwMDozNjowNS42Mzg5OTY4NjEgKzAzMDAKLSsrKyBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL2hkZHRlbXAuYwkyMDExLTA4LTE4IDAwOjM1OjU1LjQ4NTA2MDc5OCArMDMwMAorSW5kZXg6IGhkZHRlbXAtMC4zLWJldGExNS9zcmMvaGRkdGVtcC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gaGRkdGVtcC0wLjMtYmV0YTE1Lm9yaWcvc3JjL2hkZHRlbXAuYworKysrIGhkZHRlbXAtMC4zLWJldGExNS9zcmMvaGRkdGVtcC5jCiBAQCAtNTQsNiArNTQsNyBAQAogICNpbmNsdWRlIDxsaW51eC9oZHJlZy5oPgogICNpbmNsdWRlIDxjdHlwZS5oPgpAQCAtNDQsNyArNDYsNyBAQAogIAogICAgYmFja3RyYWNlX3NpZ3NlZ3YoKTsKICAgIGJhY2t0cmFjZV9zaWdpbGwoKTsKLUBAIC00MTksMTEgKzQyMSw2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKK0BAIC00MjMsMTEgKzQyNSw2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgICAgIGV4aXQoMCk7CiAgICB9CiAgICAKQEAgLTU2LDcgKzU4LDcgQEAKICAgIGlmKGRlYnVnKSB7CiAgICAgIC8qICAgIGFyZ2MgPSBvcHRpbmQgKyAxOyovCiAgICAgIHF1aWV0ID0gMTsKLUBAIC00MzQsNiArNDMxLDIzIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKK0BAIC00MzgsNiArNDM1LDIzIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgICAgZXhpdCgxKTsKICAgIH0KICAKQEAgLTgwLDcgKzgyLDcgQEAKICAgIGluaXRfYnVzX3R5cGVzKCk7CiAgCiAgICAvKiBjb2xsZWN0IGRpc2tzIGluZm9ybWF0aW9ucyAqLwotQEAgLTUyNyw2ICs1NDEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CitAQCAtNTMxLDYgKzU0NSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgIGVsc2UgewogICAgICBkb19kaXJlY3RfbW9kZShsZGlza3MpOwogICAgfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9oZGR0ZW1wL2hkZHRlbXAvaGRkdGVtcF8wLjMtYmV0YTE1LTUyLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2hkZHRlbXAvaGRkdGVtcC9oZGR0ZW1wXzAuMy1iZXRhMTUtNTIuZGlmZgppbmRleCBmNjFjMTY0Li4wNTdiMWZkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2hkZHRlbXAvaGRkdGVtcC9oZGR0ZW1wXzAuMy1iZXRhMTUtNTIuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2hkZHRlbXAvaGRkdGVtcC9oZGR0ZW1wXzAuMy1iZXRhMTUtNTIuZGlmZgpAQCAtOCw5ICs4LDExIEBACiAKIFVwc3RyZWFtLVN0YXR1czogdW5tYWludGFpbmVkCiAKK0luZGV4OiBoZGR0ZW1wLTAuMy1iZXRhMTUvZG9jL2hkZHRlbXAuOAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGhkZHRlbXAtMC4zLWJldGExNS5vcmlnL2RvYy9oZGR0ZW1wLjgKICsrKyBoZGR0ZW1wLTAuMy1iZXRhMTUvZG9jL2hkZHRlbXAuOAotQEAgLTU4LDYgKzU4LDEwIEBACitAQCAtNTgsNiArNTgsMTAgQEAgRXhlY3V0ZSBoZGR0ZW1wIGluIFRDUC9JUCBkYWVtb24gbW9kZSAocAogIC5CIFwtZiwgXC1cLWZpbGU9XGZJZmlsZVxmSQogIFNwZWNpZnkgdGhlIGRhdGFiYXNlIGZpbGUgdG8gdXNlLgogIC5UUApAQCAtMjEsNyArMjMsNyBAQAogIC5CIFwtbCwgXC1cLWxpc3Rlbj1cZklhZGRyXGZSCiAgTGlzdGVuIG9uIGEgc3BlY2lmaWMgYWRkcmVzcy4gIFxmSWFkZHJcZlIgaXMgYSBzdHJpbmcgY29udGFpbmluZyBhCiAgaG9zdCBuYW1lIG9yIGEgbnVtZXJpYyBob3N0IGFkZHJlc3Mgc3RyaW5nLiAgVGhlIG51bWVyaWMgaG9zdCBhZGRyZXNzCi1AQCAtODAsNiArODQsOSBAQAorQEAgLTgwLDYgKzg0LDkgQEAgc2Vjb25kcy4KICAuQiBcLXEsIFwtXC1xdWlldAogIERvbid0IGNoZWNrIGlmIHRoZSBkcml2ZSBpcyBzdXBwb3J0ZWQuCiAgLlRQCkBAIC0zMSw3ICszMyw3IEBACiAgLkIgXC12LCBcLVwtdmVyc2lvbgogIERpc3BsYXkgaGRkdGVtcCB2ZXJzaW9uIG51bWJlci4KICAuVFAKLUBAIC05Niw3ICsxMDMsNyBAQAorQEAgLTk2LDcgKzEwMyw3IEBAIExpc3RlbiBvbiBJUHY2IHNvY2tldHMgb25seS4KICAuU0ggIkRSSVZFIERBVEFCQVNFIgogIElmIHlvdSBrbm93IHlvdXIgZHJpdmUgaGFzIGEgdGVtcGVyYXR1cmUgc2Vuc29yIGJ1dCBpdCBpcyBiZWluZwogIHJlcG9ydGVkIHVuc3VwcG9ydGVkLCB0ZWxsIG1lIHdoaWNoIG1vZGVsIGFuZCB3aGljaCBtYW51ZmFjdHVyZXIgaXQKQEAgLTQwLDcgKzQyLDcgQEAKICBsaW5lIG9mIGhkZHRlbXAuZGIgaXMgZWl0aGVyIGEgY29tbWVudCwgYSBibGFuayBsaW5lIG9yIGEgbGluZQogIGNvbnRhaW5pbmc6CiAgLlRQCi1AQCAtMTEyLDcgKzExOSw3IEBACitAQCAtMTEyLDcgKzExOSw3IEBAIHNldCBvZiBkcml2ZXMgZnJvbSBpdHMgbW9kZWwgbmFtZSBvciBmcm8KICBGZWVkYmFjayBpcyB3ZWxjb21lIChzZWUgdGhlIFJFUE9SVCBzZWN0aW9uIGJlbG93KS4KICAKICAuU0ggIlRDUC9JUCBEQUVNT04gTU9ERSIKQEAgLTQ5LDcgKzUxLDcgQEAKICAuUFAKICAjIGhkZHRlbXAgU0FUQTovZGV2L3NkYSBQQVRBOi9kZXYvaGRhCiAgLlBQCi1AQCAtMTIwLDcgKzEyNyw3IEBACitAQCAtMTIwLDcgKzEyNyw3IEBAIFRvIHRlc3QKICAuQiBoZGR0ZW1wCiAgaW4gZGFlbW9uIG1vZGUsIHN0YXJ0IGl0IGxpa2UgdGhpczoKICAuUFAKQEAgLTU4LDcgKzYwLDcgQEAKICAuUFAKICAuUFAKICBhbmQgdXNlCi1AQCAtMTY1LDggKzE3Miw4IEBACitAQCAtMTY1LDggKzE3Miw4IEBAIGFuZCAxMiBhcmUgb2Z0ZW4gcmVwb3J0ZWQgdG8gbWF0Y2ggYSB0ZW0KICBpbnZlc3RpZ2F0aW9uIHRoZXkgZG8gbm90LiAgQnV0IGZpZWxkcyAxOTQgKHdoaWNoIGlzIHRoZSBzdGFuZGFyZAogIGZpZWxkIGZvciB0ZW1wZXJhdHVyZSkgYW5kIDIzMSBhcmUgZ29vZCBjYW5kaWRhdGVzLgogIC5QUApAQCAtNjksMTMgKzcxLDE1IEBACiAgeW91cnNlbGYuCiAgCiAgLlNIICJCVUdTIgotQEAgLTE4Myw1ICsxOTAsNSBAQAorQEAgLTE4Myw1ICsxOTAsNSBAQCBzdXBwb3J0ZWQgb24gaTM4NiBhcmNoaXRlY3R1cmVzIG9ubHkuCiAgLlBQCiAgRW1tYW51ZWwgVmFyYWduYXQgKGhkZHRlbXBAZ3V6dS5uZXQpLgogIC5QUAogLVRoaXMgbWFudWFsIHBhZ2Ugd2FzIG9yaWdpbmFseSB3cml0dGVuIGJ5IEF1cmVsaWVuIEphcm5vIDxhdXJlbDMyQGRlYmlhbi5vcmc+LAogK1RoaXMgbWFudWFsIHBhZ2Ugd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBBdXJlbGllbiBKYXJubyA8YXVyZWwzMkBkZWJpYW4ub3JnPiwKICBmb3IgdGhlIERlYmlhbiBHTlUvTGludXggc3lzdGVtIChidXQgbWF5IGJlIHVzZWQgYnkgb3RoZXJzKS4KK0luZGV4OiBoZGR0ZW1wLTAuMy1iZXRhMTUvcG8vZnIucG8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBoZGR0ZW1wLTAuMy1iZXRhMTUub3JpZy9wby9mci5wbwogKysrIGhkZHRlbXAtMC4zLWJldGExNS9wby9mci5wbwogQEAgLTcsOSArNyw5IEBACkBAIC05MSw3ICs5NSw3IEBACiAgIkxhc3QtVHJhbnNsYXRvcjogQXVyZWxpZW4gSmFybm8gPGF1cmVsaWVuQGF1cmVsMzIubmV0PlxuIgogICJMYW5ndWFnZS1UZWFtOiBGUkFOQ0FJUyA8ZnJAbGkub3JnPlxuIgogICJNSU1FLVZlcnNpb246IDEuMFxuIgotQEAgLTE3LDIzICsxNyw3IEBACitAQCAtMTcsMjMgKzE3LDcgQEAgbXNnc3RyICIiCiAgIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKICAiWC1HZW5lcmF0b3I6IEtCYWJlbCAxLjAuMVxuIgogIApAQCAtMTE2LDcgKzEyMCw3IEBACiAgIywgYy1mb3JtYXQKICBtc2dpZCAiIgogICJcbiIKLUBAIC00Niw3ICszMCw3IEBACitAQCAtNDYsNyArMzAsNyBAQCBtc2dzdHIgIiIKICAiTW9k6GxlOiAlc1xuIgogICJcbiIKICAKQEAgLTEyNSw3ICsxMjksNyBAQAogICMsIGMtZm9ybWF0CiAgbXNnaWQgIiIKICAiV0FSTklORzogRHJpdmUgJXMgZG9lc24ndCBzZWVtIHRvIGhhdmUgYSB0ZW1wZXJhdHVyZSBzZW5zb3IuXG4iCi1AQCAtNjAsNzUgKzQ0LDYwIEBACitAQCAtNjAsNzUgKzQ0LDYwIEBAIG1zZ3N0ciAiIgogICJuZXQpLlxuIgogICJBVFRFTlRJT04gOiBWb2lyIGxlcyBvcHRpb25zIC0taGVscCwgLS1kZWJ1ZyBldCAtLWRyaXZlYmFzZS5cbiIKICAKQEAgLTIxNiw3ICsyMjAsNyBAQAogICIgIC1iICAgLS1kcml2ZWJhc2UgICA6ICBkaXNwbGF5IGRhdGFiYXNlIGZpbGUgY29udGVudCB0aGF0IGFsbG93IGhkZHRlbXAgdG9cbiIKICAiICAgICAgICAgICAgICAgICAgICAgICAgcmVjb2duaXplIHN1cHBvcnRlZCBkcml2ZXMuXG4iCiAgIiAgLUQgICAtLWRlYnVnICAgICAgIDogIGRpc3BsYXkgdmFyaW91cyBTLk0uQS5SLlQuIGZpZWxkcyBhbmQgdGhlaXIgdmFsdWVzLlxuIgotQEAgLTEzOCw2ICsxMDcsNyBAQAorQEAgLTEzOCw2ICsxMDcsNyBAQCBtc2dpZCAiIgogICIgIC1kICAgLS1kYWVtb24gICAgICA6ICBydW4gaGRkdGVtcCBpbiBUQ1AvSVAgZGFlbW9uIG1vZGUgKHBvcnQgJWQgYnkgIgogICJkZWZhdWx0LilcbiIKICAiICAtZiAgIC0tZmlsZT1GSUxFICAgOiAgc3BlY2lmeSBkYXRhYmFzZSBmaWxlIHRvIHVzZS5cbiIKQEAgLTIyNCw3ICsyMjgsNyBAQAogICIgIC1sICAgLS1saXN0ZW49YWRkciA6ICBsaXN0ZW4gb24gYSBzcGVjaWZpYyBpbnRlcmZhY2UgKGluIFRDUC9JUCBkYWVtb24gIgogICJtb2RlKS5cbiIKICAiICAtbiAgIC0tbnVtZXJpYyAgICAgOiAgcHJpbnQgb25seSB0aGUgdGVtcGVyYXR1cmUuXG4iCi1AQCAtMTQ1LDYgKzExNSw4IEBACitAQCAtMTQ1LDYgKzExNSw4IEBAIG1zZ2lkICIiCiAgIiAgLXMgICAtLXNlcGFyYXRvcj1DIDogIHNlcGFyYXRvciB0byB1c2UgYmV0d2VlbiBmaWVsZHMgKGluIFRDUC9JUCBkYWVtb24gIgogICJtb2RlKS5cbiIKICAiICAtUyAgIC0tc3lzbG9nPXMgICAgOiAgbG9nIHRlbXBlcmF0dXJlIHRvIHN5c2xvZyBldmVyeSBzIHNlY29uZHMuXG4iCkBAIC0yMzMsNyArMjM3LDcgQEAKICAiICAtcSAgIC0tcXVpZXQgICAgICAgOiAgZG8gbm90IGNoZWNrIGlmIHRoZSBkcml2ZSBpcyBzdXBwb3J0ZWQuXG4iCiAgIiAgLXYgICAtLXZlcnNpb24gICAgIDogIGRpc3BsYXkgaGRkdGVtcCB2ZXJzaW9uIG51bWJlci5cbiIKICAiICAtdyAgIC0td2FrZS11cCAgICAgOiAgd2FrZS11cCB0aGUgZHJpdmUgaWYgbmVlZC5cbiIKLUBAIC0xNTMsMTEgKzEyNSwxNCBAQAorQEAgLTE1MywxMSArMTI1LDE0IEBAIG1zZ2lkICIiCiAgIlxuIgogICJSZXBvcnQgYnVncyBvciBuZXcgZHJpdmVzIHRvIDxoZGR0ZW1wQGd1enUubmV0Pi5cbiIKICBtc2dzdHIgIiIKQEAgLTI0OSw3ICsyNTMsNyBAQAogICIgIC1iICAgLS1kcml2ZWJhc2UgICA6ICBhZmZpY2hlIGxlIGNvbnRlbnUgZHUgZmljaGllciBkZSBiYXNlIGRlIGRvbm7pZSAiCiAgInF1aSBcbiIKICAiICAgICAgICAgICAgICAgICAgICAgICAgcGVybWV0IOAgaGRkdGVtcCBkZSByZWNvbm5h7nRyZSBsZXMgbGVjdGV1cnMgIgotQEAgLTE3Miw2ICsxNDcsNyBAQAorQEAgLTE3Miw2ICsxNDcsNyBAQCBtc2dzdHIgIiIKICAiZOlmYXV0KS5cbiIKICAiICAtZiAgIC0tZmlsZT1GSUxFICAgOiAgc3BlY2lmaWUgbGUgZmljaGllciDgIHV0aWxpc2VyIGNvbW1lIGJhc2UgZGUgIgogICJkb25u6WVzLlxuIgpAQCAtMjU3LDcgKzI2MSw3IEBACiAgIiAgLWwgICAtLWxpc3Rlbj1hZGRyIDogIOljb3V0ZSBzdXIgdW5lIGludGVyZmFjZSBzcOljaWZpcXVlIChlbiBtb2RlIGTpbW9uICIKICAiVENQL0lQKS5cbiIKICAiICAtbiAgIC0tbnVtZXJpYyAgICAgOiAgYWZmaWNoZSBzZXVsZW1lbnQgbGEgdGVtcOlyYXR1cmUuXG4iCi1AQCAtMTgwLDYgKzE1Niw4IEBACitAQCAtMTgwLDYgKzE1Niw4IEBAIG1zZ3N0ciAiIgogICJk6W1vbiBUQ1AvSVApLlxuIgogICIgIC1TICAgLS1zeXNsb2c9cyAgICA6ICBlbnJlZ2lzdHJlIGxhIHRlbXDpcmF0dXJlIGRhbnMgc3lzbG9nIHRvdXMgbGVzIHMgIgogICJzZWNvbmRlcy5cbiIKQEAgLTI2Niw3ICsyNzAsNyBAQAogICIgIC1xICAgLS1xdWlldCAgICAgICA6ICBuZSB26XJpZmllIHBhcyBzaSBsZSBsZWN0ZXVyIGVzdCBzdXBwb3J06S5cbiIKICAiICAtdiAgIC0tdmVyc2lvbiAgICAgOiAgYWZmaWNoZSBsYSB2ZXJzaW9uIGRlIGhkZHRlbXAuXG4iCiAgIiAgLXcgICAtLXdha2UtdXAgICAgIDogIHLpdmVpbGxlciBsZSBsZWN0ZXVyIHNpIG7pY2Vzc2FpcmUuXG4iCi1AQCAtMTg4LDYyICsxNjYsOTUgQEAKK0BAIC0xODgsNjIgKzE2Niw5NSBAQCBtc2dzdHIgIiIKICAiXG4iCiAgIlJlcG9ydCBidWdzIG9yIG5ldyBkcml2ZXMgdG8gPGhkZHRlbXBAZ3V6dS5uZXQ+LlxuIgogIApAQCAtMzc3LDYgKzM4MSw4IEBACiArCiArI34gbXNnaWQgImZpZWxkKCVkKVx0ID0gJWRcbiIKICsjfiBtc2dzdHIgImNoYW1wKCVkKVx0ID0gJWRcbiIKK0luZGV4OiBoZGR0ZW1wLTAuMy1iZXRhMTUvcG8vcnUucG8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBoZGR0ZW1wLTAuMy1iZXRhMTUub3JpZy9wby9ydS5wbwogKysrIGhkZHRlbXAtMC4zLWJldGExNS9wby9ydS5wbwogQEAgLTYsOCArNiw4IEBACkBAIC0zOTAsNyArMzk2LDcgQEAKICAiUE8tUmV2aXNpb24tRGF0ZTogMjAwMy0wMy0wOCAxNjo0MiswMzAwXG4iCiAgIkxhc3QtVHJhbnNsYXRvcjogTWljaGFlbCBTaGlnb3JpbiA8bWlrZUBhbHRsaW51eC5ydT5cbiIKICAiTGFuZ3VhZ2UtVGVhbTogUnVzc2lhbiA8cnVAbGkub3JnPlxuIgotQEAgLTE1LDIzICsxNSw3IEBACitAQCAtMTUsMjMgKzE1LDcgQEAgbXNnc3RyICIiCiAgIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1rb2k4LXJcbiIKICAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgogIApAQCAtNDE1LDcgKzQyMSw3IEBACiAgIywgYy1mb3JtYXQKICBtc2dpZCAiIgogICJcbiIKLUBAIC00MCw3ICsyNCw3IEBACitAQCAtNDAsNyArMjQsNyBAQCBtc2dpZCAiIgogICJcbiIKICBtc2dzdHIgIiIKICAKQEAgLTQyNCw3ICs0MzAsNyBAQAogICMsIGMtZm9ybWF0CiAgbXNnaWQgIiIKICAiV0FSTklORzogRHJpdmUgJXMgZG9lc24ndCBzZWVtIHRvIGhhdmUgYSB0ZW1wZXJhdHVyZSBzZW5zb3IuXG4iCi1AQCAtNTMsNzIgKzM3LDU5IEBACitAQCAtNTMsNzIgKzM3LDU5IEBAIG1zZ3N0ciAiIgogICL37unt4e7p5Tog5dPMySDX2SDUz97OzyDazsHF1MUsIN7UzyDEwdTeycsgxdPU2CwgzsHQydvJ1MUgaGRkdGVtcEBndXp1Lm5ldFxuIgogICL37unt4e7p5TogKNPNLiDP0MPJySAtLWhlbHAsIC0tZGVidWcgySAtLWRyaXZlYmFzZSkuXG4iCiAgCkBAIC01MTIsNyArNTE4LDcgQEAKICAiICAtYiAgIC0tZHJpdmViYXNlICAgOiAgZGlzcGxheSBkYXRhYmFzZSBmaWxlIGNvbnRlbnQgdGhhdCBhbGxvdyBoZGR0ZW1wIHRvXG4iCiAgIiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29nbml6ZSBzdXBwb3J0ZWQgZHJpdmVzLlxuIgogICIgIC1EICAgLS1kZWJ1ZyAgICAgICA6ICBkaXNwbGF5IHZhcmlvdXMgUy5NLkEuUi5ULiBmaWVsZHMgYW5kIHRoZWlyIHZhbHVlcy5cbiIKLUBAIC0xMjgsNiArOTksNyBAQAorQEAgLTEyOCw2ICs5OSw3IEBAIG1zZ2lkICIiCiAgIiAgLWQgICAtLWRhZW1vbiAgICAgIDogIHJ1biBoZGR0ZW1wIGluIFRDUC9JUCBkYWVtb24gbW9kZSAocG9ydCAlZCBieSAiCiAgImRlZmF1bHQuKVxuIgogICIgIC1mICAgLS1maWxlPUZJTEUgICA6ICBzcGVjaWZ5IGRhdGFiYXNlIGZpbGUgdG8gdXNlLlxuIgpAQCAtNTIwLDcgKzUyNiw3IEBACiAgIiAgLWwgICAtLWxpc3Rlbj1hZGRyIDogIGxpc3RlbiBvbiBhIHNwZWNpZmljIGludGVyZmFjZSAoaW4gVENQL0lQIGRhZW1vbiAiCiAgIm1vZGUpLlxuIgogICIgIC1uICAgLS1udW1lcmljICAgICA6ICBwcmludCBvbmx5IHRoZSB0ZW1wZXJhdHVyZS5cbiIKLUBAIC0xMzUsNiArMTA3LDggQEAKK0BAIC0xMzUsNiArMTA3LDggQEAgbXNnaWQgIiIKICAiICAtcyAgIC0tc2VwYXJhdG9yPUMgOiAgc2VwYXJhdG9yIHRvIHVzZSBiZXR3ZWVuIGZpZWxkcyAoaW4gVENQL0lQIGRhZW1vbiAiCiAgIm1vZGUpLlxuIgogICIgIC1TICAgLS1zeXNsb2c9cyAgICA6ICBsb2cgdGVtcGVyYXR1cmUgdG8gc3lzbG9nIGV2ZXJ5IHMgc2Vjb25kcy5cbiIKQEAgLTUyOSw3ICs1MzUsNyBAQAogICIgIC1xICAgLS1xdWlldCAgICAgICA6ICBkbyBub3QgY2hlY2sgaWYgdGhlIGRyaXZlIGlzIHN1cHBvcnRlZC5cbiIKICAiICAtdiAgIC0tdmVyc2lvbiAgICAgOiAgZGlzcGxheSBoZGR0ZW1wIHZlcnNpb24gbnVtYmVyLlxuIgogICIgIC13ICAgLS13YWtlLXVwICAgICA6ICB3YWtlLXVwIHRoZSBkcml2ZSBpZiBuZWVkLlxuIgotQEAgLTE2OCw1OSArMTQyLDkwIEBACitAQCAtMTY4LDU5ICsxNDIsOTAgQEAgbXNnc3RyICIiCiAgIlxuIgogICLzz8/C3cXOydEgz8Igz9vJwsvByCDJIMTBzs7ZxSDEzNEgxMnTy8/XIM/U0NLB18zRytTFIM7BIDxoZGR0ZW1wQGd1enUubmV0Pi5cbiIKICAKQEAgLTYzNiw2ICs2NDIsOCBAQAogKwogKyN+IG1zZ2lkICJmaWVsZCglZClcdCA9ICVkXG4iCiArI34gbXNnc3RyICLQz8zFKCVkKVx0ID0gJWRcbiIKK0luZGV4OiBoZGR0ZW1wLTAuMy1iZXRhMTUvcG8vc3YucG8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBoZGR0ZW1wLTAuMy1iZXRhMTUub3JpZy9wby9zdi5wbwogKysrIGhkZHRlbXAtMC4zLWJldGExNS9wby9zdi5wbwogQEAgLTYsOCArNiw4IEBACkBAIC02NDksNyArNjU3LDcgQEAKICAiUE8tUmV2aXNpb24tRGF0ZTogMjAwNS0xMS0wMiAxOTowMyswMTAwXG4iCiAgIkxhc3QtVHJhbnNsYXRvcjogRGFuaWVsIE55bGFuZGVyIDxwb0BkYW5pZWxueWxhbmRlci5zZT5cbiIKICAiTGFuZ3VhZ2UtVGVhbTogU3dlZGlzaCA8c3ZAbGkub3JnPlxuIgotQEAgLTE3LDIzICsxNyw3IEBACitAQCAtMTcsMjMgKzE3LDcgQEAgbXNnc3RyICIiCiAgIlgtUG9lZGl0LUxhbmd1YWdlOiBzd2VcbiIKICAiWC1Qb2VkaXQtQ291bnRyeTogc3dlXG4iCiAgCkBAIC02NzQsNyArNjgyLDcgQEAKICAjLCBjLWZvcm1hdAogIG1zZ2lkICIiCiAgIlxuIgotQEAgLTQ2LDcgKzMwLDcgQEAKK0BAIC00Niw3ICszMCw3IEBAIG1zZ3N0ciAiIgogICJNb2RlbGw6ICVzXG4iCiAgIlxuIgogIApAQCAtNjgzLDcgKzY5MSw3IEBACiAgIywgYy1mb3JtYXQKICBtc2dpZCAiIgogICJXQVJOSU5HOiBEcml2ZSAlcyBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhIHRlbXBlcmF0dXJlIHNlbnNvci5cbiIKLUBAIC02MCw3NiArNDQsNjMgQEAKK0BAIC02MCw3NiArNDQsNjMgQEAgbXNnc3RyICIiCiAgIm5ldCkuXG4iCiAgIlZBUk5JTkc6IFNlIC0taGVscCwgLS1kZWJ1ZyBvY2ggLS1kcml2ZWJhc2UgZmxhZ2dvcm5hLlxuIgogIApAQCAtNzc3LDcgKzc4NSw3IEBACiAgIiAgLWIgICAtLWRyaXZlYmFzZSAgIDogIGRpc3BsYXkgZGF0YWJhc2UgZmlsZSBjb250ZW50IHRoYXQgYWxsb3cgaGRkdGVtcCB0b1xuIgogICIgICAgICAgICAgICAgICAgICAgICAgICByZWNvZ25pemUgc3VwcG9ydGVkIGRyaXZlcy5cbiIKICAiICAtRCAgIC0tZGVidWcgICAgICAgOiAgZGlzcGxheSB2YXJpb3VzIFMuTS5BLlIuVC4gZmllbGRzIGFuZCB0aGVpciB2YWx1ZXMuXG4iCi1AQCAtMTM5LDYgKzExMCw3IEBACitAQCAtMTM5LDYgKzExMCw3IEBAIG1zZ2lkICIiCiAgIiAgLWQgICAtLWRhZW1vbiAgICAgIDogIHJ1biBoZGR0ZW1wIGluIFRDUC9JUCBkYWVtb24gbW9kZSAocG9ydCAlZCBieSAiCiAgImRlZmF1bHQuKVxuIgogICIgIC1mICAgLS1maWxlPUZJTEUgICA6ICBzcGVjaWZ5IGRhdGFiYXNlIGZpbGUgdG8gdXNlLlxuIgpAQCAtNzg1LDcgKzc5Myw3IEBACiAgIiAgLWwgICAtLWxpc3Rlbj1hZGRyIDogIGxpc3RlbiBvbiBhIHNwZWNpZmljIGludGVyZmFjZSAoaW4gVENQL0lQIGRhZW1vbiAiCiAgIm1vZGUpLlxuIgogICIgIC1uICAgLS1udW1lcmljICAgICA6ICBwcmludCBvbmx5IHRoZSB0ZW1wZXJhdHVyZS5cbiIKLUBAIC0xNDYsNiArMTE4LDggQEAKK0BAIC0xNDYsNiArMTE4LDggQEAgbXNnaWQgIiIKICAiICAtcyAgIC0tc2VwYXJhdG9yPUMgOiAgc2VwYXJhdG9yIHRvIHVzZSBiZXR3ZWVuIGZpZWxkcyAoaW4gVENQL0lQIGRhZW1vbiAiCiAgIm1vZGUpLlxuIgogICIgIC1TICAgLS1zeXNsb2c9cyAgICA6ICBsb2cgdGVtcGVyYXR1cmUgdG8gc3lzbG9nIGV2ZXJ5IHMgc2Vjb25kcy5cbiIKQEAgLTc5NCw3ICs4MDIsNyBAQAogICIgIC1xICAgLS1xdWlldCAgICAgICA6ICBkbyBub3QgY2hlY2sgaWYgdGhlIGRyaXZlIGlzIHN1cHBvcnRlZC5cbiIKICAiICAtdiAgIC0tdmVyc2lvbiAgICAgOiAgZGlzcGxheSBoZGR0ZW1wIHZlcnNpb24gbnVtYmVyLlxuIgogICIgIC13ICAgLS13YWtlLXVwICAgICA6ICB3YWtlLXVwIHRoZSBkcml2ZSBpZiBuZWVkLlxuIgotQEAgLTE4NCw2MSArMTU4LDkxIEBACitAQCAtMTg0LDYxICsxNTgsOTEgQEAgbXNnc3RyICIiCiAgIlxuIgogICJSYXBwb3J0ZXJhIGJ1Z2dhciBlbGxlciBueWEgaOVyZGRpc2thciB0aWxsIDxoZGR0ZW1wQGd1enUubmV0Pi5cbiIKICAKQEAgLTkwMSw5ICs5MDksMTEgQEAKICsKICsjfiBtc2dpZCAiZmllbGQoJWQpXHQgPSAlZFxuIgogKyN+IG1zZ3N0ciAiZuRsdCglZClcdCA9ICVkXG4iCitJbmRleDogaGRkdGVtcC0wLjMtYmV0YTE1L3BvL3B0LnBvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gaGRkdGVtcC0wLjMtYmV0YTE1Lm9yaWcvcG8vcHQucG8KICsrKyBoZGR0ZW1wLTAuMy1iZXRhMTUvcG8vcHQucG8KLUBAIC03LDcgKzcsNyBAQAorQEAgLTcsNyArNyw3IEBAIG1zZ2lkICIiCiAgbXNnc3RyICIiCiAgIlByb2plY3QtSWQtVmVyc2lvbjogaGRkdGVtcCAwLjMtYmV0YTE0XG4iCiAgIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBcbiIKQEAgLTkxMiw3ICs5MjIsNyBAQAogICJQTy1SZXZpc2lvbi1EYXRlOiAyMDA2LTAzLTI5IDIzOjIyKzAwMDBcbiIKICAiTGFzdC1UcmFuc2xhdG9yOiBNaWd1ZWwgRmlndWVpcmVkbyA8ZWxtaWdAZGViaWFucC5vcmc+XG4iCiAgIkxhbmd1YWdlLVRlYW06IFBvcnR1Z3Vlc2UgPHRyYWR1ekBkZWJpYW5wdC5vcmc+XG4iCi1AQCAtMTUsMjMgKzE1LDcgQEAKK0BAIC0xNSwyMyArMTUsNyBAQCBtc2dzdHIgIiIKICAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCiAgIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKICAKQEAgLTkzNyw3ICs5NDcsNyBAQAogICMsIGMtZm9ybWF0CiAgbXNnaWQgIiIKICAiXG4iCi1AQCAtNDQsNyArMjgsNyBAQAorQEAgLTQ0LDcgKzI4LDcgQEAgbXNnc3RyICIiCiAgIk1vZGVsbzogJXNcbiIKICAiXG4iCiAgCkBAIC05NDYsNyArOTU2LDcgQEAKICAjLCBjLWZvcm1hdAogIG1zZ2lkICIiCiAgIldBUk5JTkc6IERyaXZlICVzIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGEgdGVtcGVyYXR1cmUgc2Vuc29yLlxuIgotQEAgLTU0LDc5ICszOCw2OCBAQAorQEAgLTU0LDc5ICszOCw2OCBAQCBtc2dpZCAiIgogIG1zZ3N0ciAiIgogICJBVklTTzogTyBkaXNjbyAlcyBuw6NvIHBhcmVjZSB0ZXIgdW0gc2Vuc29yIGRlIHRlbXBlcmF0dXJhLlxuIgogICJBVklTTzogSXN0byBuw6NvIHNpZ25pZmljYSBxdWUgbsOjbyB0ZW0gbmVuaHVtLlxuIgpAQCAtMTA0Nyw3ICsxMDU3LDcgQEAKICAiICAtYiAgIC0tZHJpdmViYXNlICAgOiAgZGlzcGxheSBkYXRhYmFzZSBmaWxlIGNvbnRlbnQgdGhhdCBhbGxvdyBoZGR0ZW1wIHRvXG4iCiAgIiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29nbml6ZSBzdXBwb3J0ZWQgZHJpdmVzLlxuIgogICIgIC1EICAgLS1kZWJ1ZyAgICAgICA6ICBkaXNwbGF5IHZhcmlvdXMgUy5NLkEuUi5ULiBmaWVsZHMgYW5kIHRoZWlyIHZhbHVlcy5cbiIKLUBAIC0xMzYsNiArMTA5LDcgQEAKK0BAIC0xMzYsNiArMTA5LDcgQEAgbXNnaWQgIiIKICAiICAtZCAgIC0tZGFlbW9uICAgICAgOiAgcnVuIGhkZHRlbXAgaW4gVENQL0lQIGRhZW1vbiBtb2RlIChwb3J0ICVkIGJ5ICIKICAiZGVmYXVsdC4pXG4iCiAgIiAgLWYgICAtLWZpbGU9RklMRSAgIDogIHNwZWNpZnkgZGF0YWJhc2UgZmlsZSB0byB1c2UuXG4iCkBAIC0xMDU1LDcgKzEwNjUsNyBAQAogICIgIC1sICAgLS1saXN0ZW49YWRkciA6ICBsaXN0ZW4gb24gYSBzcGVjaWZpYyBpbnRlcmZhY2UgKGluIFRDUC9JUCBkYWVtb24gIgogICJtb2RlKS5cbiIKICAiICAtbiAgIC0tbnVtZXJpYyAgICAgOiAgcHJpbnQgb25seSB0aGUgdGVtcGVyYXR1cmUuXG4iCi1AQCAtMTQzLDYgKzExNyw4IEBACitAQCAtMTQzLDYgKzExNyw4IEBAIG1zZ2lkICIiCiAgIiAgLXMgICAtLXNlcGFyYXRvcj1DIDogIHNlcGFyYXRvciB0byB1c2UgYmV0d2VlbiBmaWVsZHMgKGluIFRDUC9JUCBkYWVtb24gIgogICJtb2RlKS5cbiIKICAiICAtUyAgIC0tc3lzbG9nPXMgICAgOiAgbG9nIHRlbXBlcmF0dXJlIHRvIHN5c2xvZyBldmVyeSBzIHNlY29uZHMuXG4iCkBAIC0xMDY0LDcgKzEwNzQsNyBAQAogICIgIC1xICAgLS1xdWlldCAgICAgICA6ICBkbyBub3QgY2hlY2sgaWYgdGhlIGRyaXZlIGlzIHN1cHBvcnRlZC5cbiIKICAiICAtdiAgIC0tdmVyc2lvbiAgICAgOiAgZGlzcGxheSBoZGR0ZW1wIHZlcnNpb24gbnVtYmVyLlxuIgogICIgIC13ICAgLS13YWtlLXVwICAgICA6ICB3YWtlLXVwIHRoZSBkcml2ZSBpZiBuZWVkLlxuIgotQEAgLTE1NiwxOSArMTMyLDIzIEBACitAQCAtMTU2LDE5ICsxMzIsMjMgQEAgbXNnc3RyICIiCiAgIiAgIGhkZHRlbXAgbW9zdHJhIGEgdGVtcGVyYXR1cmEgZG9zIGRpc2NvcyBpbmRpY2Fkb3Mgbm8gYXJndW1lbnRvLlxuIgogICIgICBPcyBkaXNjb3MgdMOqbSBkZSBzdXBvcnRhciBTLk0uQS5SLlQuXG4iCiAgIlxuIgpAQCAtMTA5Niw3ICsxMTA2LDcgQEAKICAiICAtcSAgIC0tcXVpZXQgICAgICAgOiAgbsOjbyB2ZXJpZmljYXIgc2UgbyBkaXNjbyDDqSBzdXBvcnRhZG8uXG4iCiAgIiAgLXYgICAtLXZlcnNpb24gICAgIDogIG1vc3RyYXIgbyBuw7ptZXJvIGRhIHZlcnPDo28gZG8gaGRkdGVtcC5cbiIKICAiICAtdyAgIC0td2FrZS11cCAgICAgOiAgYWNvcmRhciBvIGRpc2NvIHNlIG5lY2Vzc8OhcmlvLlxuIgotQEAgLTE3Nyw1OCArMTU3LDkzIEBACitAQCAtMTc3LDU4ICsxNTcsOTMgQEAgbXNnc3RyICIiCiAgIlxuIgogICJSZWxhdGFyIGJ1Z3Mgb3Ugbm92b3MgZGlzY29zIHBhcmEgPGhkZHRlbXBAZ3V6dS5uZXQ+LlxuIgogIApAQCAtMTIwOCw3ICsxMjE4LDkgQEAKICsKICsjfiBtc2dpZCAiZmllbGQoJWQpXHQgPSAlZFxuIgogKyN+IG1zZ3N0ciAiY2FtcG8oJWQpXHQgPSAlZFxuIgotLS0tIGhkZHRlbXAtMC4zLWJldGExNS5vcmlnL3BvL2RlLnBvCitJbmRleDogaGRkdGVtcC0wLjMtYmV0YTE1L3BvL2RlLnBvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCiArKysgaGRkdGVtcC0wLjMtYmV0YTE1L3BvL2RlLnBvCiBAQCAtMCwwICsxLDI1MCBAQAogKyMgR2VybWFuIHRyYW5zbGF0aW9uIG9mIGhkZHRlbXAuCkBAIC0xNDYxLDEyICsxNDczLDE2IEBACiArIywgYy1mb3JtYXQKICttc2dpZCAibG9nIHNlbnNlIGZhaWxlZCA6ICVzIgogK21zZ3N0ciAiUHJvdG9rb2xsLUVya2VubnVuZyBmZWhsZ2VzY2hsYWdlbiA6ICVzIgorSW5kZXg6IGhkZHRlbXAtMC4zLWJldGExNS9wby9MSU5HVUFTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gaGRkdGVtcC0wLjMtYmV0YTE1Lm9yaWcvcG8vTElOR1VBUwogKysrIGhkZHRlbXAtMC4zLWJldGExNS9wby9MSU5HVUFTCiBAQCAtMSwyICsxLDIgQEAKICAjIFNldCBvZiBhdmFpbGFibGUgbGFuZ3VhZ2VzLgogLWZyIHB0IHJ1IHN2IAogK2RlIGZyIHB0IHJ1IHN2IAorSW5kZXg6IGhkZHRlbXAtMC4zLWJldGExNS9wby9oZGR0ZW1wLnBvdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGhkZHRlbXAtMC4zLWJldGExNS5vcmlnL3BvL2hkZHRlbXAucG90CiArKysgaGRkdGVtcC0wLjMtYmV0YTE1L3BvL2hkZHRlbXAucG90CiBAQCAtMSwzNSArMSwyMiBAQApAQCAtMTUxMyw3ICsxNTI5LDcgQEAKICAjLCBjLWZvcm1hdAogIG1zZ2lkICIiCiAgIlxuIgotQEAgLTM4LDcgKzI1LDcgQEAKK0BAIC0zOCw3ICsyNSw3IEBAIG1zZ2lkICIiCiAgIlxuIgogIG1zZ3N0ciAiIgogIApAQCAtMTUyMiw3ICsxNTM4LDcgQEAKICAjLCBjLWZvcm1hdAogIG1zZ2lkICIiCiAgIldBUk5JTkc6IERyaXZlICVzIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGEgdGVtcGVyYXR1cmUgc2Vuc29yLlxuIgotQEAgLTQ3LDY3ICszNCw1OSBAQAorQEAgLTQ3LDY3ICszNCw1OSBAQCBtc2dpZCAiIgogICJXQVJOSU5HOiBTZWUgLS1oZWxwLCAtLWRlYnVnIGFuZCAtLWRyaXZlYmFzZSBvcHRpb25zLlxuIgogIG1zZ3N0ciAiIgogIApAQCAtMTYwNCw3ICsxNjIwLDcgQEAKICAiICAtYiAgIC0tZHJpdmViYXNlICAgOiAgZGlzcGxheSBkYXRhYmFzZSBmaWxlIGNvbnRlbnQgdGhhdCBhbGxvdyBoZGR0ZW1wIHRvXG4iCiAgIiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29nbml6ZSBzdXBwb3J0ZWQgZHJpdmVzLlxuIgogICIgIC1EICAgLS1kZWJ1ZyAgICAgICA6ICBkaXNwbGF5IHZhcmlvdXMgUy5NLkEuUi5ULiBmaWVsZHMgYW5kIHRoZWlyIHZhbHVlcy5cbiIKLUBAIC0xMTcsNiArOTYsNyBAQAorQEAgLTExNyw2ICs5Niw3IEBAIG1zZ2lkICIiCiAgIiAgLWQgICAtLWRhZW1vbiAgICAgIDogIHJ1biBoZGR0ZW1wIGluIFRDUC9JUCBkYWVtb24gbW9kZSAocG9ydCAlZCBieSAiCiAgImRlZmF1bHQuKVxuIgogICIgIC1mICAgLS1maWxlPUZJTEUgICA6ICBzcGVjaWZ5IGRhdGFiYXNlIGZpbGUgdG8gdXNlLlxuIgpAQCAtMTYxMiw3ICsxNjI4LDcgQEAKICAiICAtbCAgIC0tbGlzdGVuPWFkZHIgOiAgbGlzdGVuIG9uIGEgc3BlY2lmaWMgaW50ZXJmYWNlIChpbiBUQ1AvSVAgZGFlbW9uICIKICAibW9kZSkuXG4iCiAgIiAgLW4gICAtLW51bWVyaWMgICAgIDogIHByaW50IG9ubHkgdGhlIHRlbXBlcmF0dXJlLlxuIgotQEAgLTEyNCw2ICsxMDQsOCBAQAorQEAgLTEyNCw2ICsxMDQsOCBAQCBtc2dpZCAiIgogICIgIC1zICAgLS1zZXBhcmF0b3I9QyA6ICBzZXBhcmF0b3IgdG8gdXNlIGJldHdlZW4gZmllbGRzIChpbiBUQ1AvSVAgZGFlbW9uICIKICAibW9kZSkuXG4iCiAgIiAgLVMgICAtLXN5c2xvZz1zICAgIDogIGxvZyB0ZW1wZXJhdHVyZSB0byBzeXNsb2cgZXZlcnkgcyBzZWNvbmRzLlxuIgpAQCAtMTYyMSw3ICsxNjM3LDcgQEAKICAiICAtcSAgIC0tcXVpZXQgICAgICAgOiAgZG8gbm90IGNoZWNrIGlmIHRoZSBkcml2ZSBpcyBzdXBwb3J0ZWQuXG4iCiAgIiAgLXYgICAtLXZlcnNpb24gICAgIDogIGRpc3BsYXkgaGRkdGVtcCB2ZXJzaW9uIG51bWJlci5cbiIKICAiICAtdyAgIC0td2FrZS11cCAgICAgOiAgd2FrZS11cCB0aGUgZHJpdmUgaWYgbmVlZC5cbiIKLUBAIC0xMzMsNTggKzExNSw2OSBAQAorQEAgLTEzMyw1OCArMTE1LDY5IEBAIG1zZ2lkICIiCiAgIlJlcG9ydCBidWdzIG9yIG5ldyBkcml2ZXMgdG8gPGhkZHRlbXBAZ3V6dS5uZXQ+LlxuIgogIG1zZ3N0ciAiIgogIApAQCAtMTcwNSw5ICsxNzIxLDExIEBACiAgIywgYy1mb3JtYXQKICBtc2dpZCAibG9nIHNlbnNlIGZhaWxlZCA6ICVzIgogIG1zZ3N0ciAiIgorSW5kZXg6IGhkZHRlbXAtMC4zLWJldGExNS9zcmMvc2F0YS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gaGRkdGVtcC0wLjMtYmV0YTE1Lm9yaWcvc3JjL3NhdGEuYwogKysrIGhkZHRlbXAtMC4zLWJldGExNS9zcmMvc2F0YS5jCi1AQCAtMTE4LDExICsxMTgsMjIgQEAKK0BAIC0xMTgsMTEgKzExOCwyMiBAQCBzdGF0aWMgZW51bSBlX2dldHRlbXAgc2F0YV9nZXRfdGVtcGVyYXR1CiAgICBpbnQgICAgICAgICAgICAgIGk7CiAgICB1MTYgKiAgICAgICAgICAgIHA7CiAgCkBAIC0xNzMxLDcgKzE3NDksNyBAQAogICAgCiAgICAvKiBnZXQgU01BUlQgdmFsdWVzICovCiAgICBpZihzYXRhX2VuYWJsZV9zbWFydChkc2stPmZkKSAhPSAwKSB7Ci1AQCAtMTU0LDI0ICsxNjUsMTUgQEAKK0BAIC0xNTQsMjQgKzE2NSwxNSBAQCBzdGF0aWMgZW51bSBlX2dldHRlbXAgc2F0YV9nZXRfdGVtcGVyYXR1CiAgICB9CiAgCiAgICAvKiB0ZW1wZXJhdHVyZSAqLwpAQCAtMTc1OSw2ICsxNzc3LDggQEAKICAKICAgIC8qIG5ldmVyIHJlYWNoZWQgKi8KICB9CitJbmRleDogaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9zYXRhY21kcy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gaGRkdGVtcC0wLjMtYmV0YTE1Lm9yaWcvc3JjL3NhdGFjbWRzLmMKICsrKyBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL3NhdGFjbWRzLmMKIEBAIC0zOSw3ICszOSw3IEBACkBAIC0xNzcwLDcgKzE3OTAsNyBAQAogIAogIC8vIEFwcGxpY2F0aW9uIHNwZWNpZmljIGluY2x1ZGVzCiAgI2luY2x1ZGUgInNhdGFjbWRzLmgiCi1AQCAtODAsOCArODAsOCBAQAorQEAgLTgwLDggKzgwLDggQEAgaW50IHNhdGFfcGFzc190aHJ1KGludCBkZXZpY2UsIHVuc2lnbmVkCiAgCiAgICByZXQgPSBzY3NpX1NHX0lPKGRldmljZSwgY2RiLCBzaXplb2YoY2RiKSwgYnVmZmVyLCBjbWRbM10gKiA1MTIsIHNlbnNlLCBzaXplb2Yoc2Vuc2UpLCBkeGZlcl9kaXJlY3Rpb24pOwogICAKQEAgLTE3ODEsNyArMTgwMSw3IEBACiAgICAgIHJldHVybiAxOwkJICAKICAgIGVsc2UgCiAgICAgIHJldHVybiByZXQ7Ci1AQCAtOTUsMTAgKzk1LDEwIEBACitAQCAtOTUsMTAgKzk1LDEwIEBAIHZvaWQgc2F0YV9maXhzdHJpbmcodW5zaWduZWQgY2hhciAqcywgaW4KICAgIHAgPSBzOwogICAgZW5kID0gJnNbYnl0ZWNvdW50ICYgfjFdOyAvKiBieXRlY291bnQgbXVzdCBiZSBldmVuICovCiAgCkBAIC0xNzk0LDYgKzE4MTQsOCBAQAogICAgfQogIAogICAgLyogc3RyaXAgbGVhZGluZyBibGFua3MgKi8KK0luZGV4OiBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL2JhY2t0cmFjZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gaGRkdGVtcC0wLjMtYmV0YTE1Lm9yaWcvc3JjL2JhY2t0cmFjZS5jCiArKysgaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9iYWNrdHJhY2UuYwogQEAgLTE2LDkgKzE2LDEwIEBACkBAIC0xODIyLDcgKzE4NDQsNyBAQAogIAogICNkZWZpbmUgTUFYX0JUU0laRSA2NAogIAotQEAgLTQyLDcgKzQ3LDYgQEAKK0BAIC00Miw3ICs0Nyw2IEBAIHZvaWQgYmFja3RyYWNlX2hhbmRsZXIoaW50IG4sIHNpZ2luZm9fdAogICAgc3RhdGljIGNoYXIgKiptZXNzYWdlcyA9IE5VTEw7CiAgICBzdGF0aWMgc2l6ZV90IGJ0c2l6ZSA9IDA7CiAgICBzdGF0aWMgc2l6ZV90IGk7CkBAIC0xODMwLDcgKzE4NTIsNyBAQAogICAgc3RhdGljIGNoYXIgKnN0cmVyciA9ICI/Pz8iOwogICAgc3RhdGljIEZJTEUgKmZzdHJtOwogIAotQEAgLTYxLDEwICs2NSwxMCBAQAorQEAgLTYxLDEwICs2NSwxMCBAQCB2b2lkIGJhY2t0cmFjZV9oYW5kbGVyKGludCBuLCBzaWdpbmZvX3QKICAgICAgICBTSUNfQ0FTRShTRUdWX01BUEVSUik7CiAgICAgICAgU0lDX0NBU0UoU0VHVl9BQ0NFUlIpOwogICAgICB9CkBAIC0xODQzLDcgKzE4NjUsNyBAQAogICAgICBicmVhazsKICAgIGNhc2UgU0lHSUxMOgogICAgICBzd2l0Y2goaXN0LT5zaV9jb2RlKSB7Ci1AQCAtNzcsMTAgKzgxLDEwIEBACitAQCAtNzcsMTAgKzgxLDEwIEBAIHZvaWQgYmFja3RyYWNlX2hhbmRsZXIoaW50IG4sIHNpZ2luZm9fdAogICAgICAgIFNJQ19DQVNFKElMTF9DT1BST0MpOwogICAgICAgIFNJQ19DQVNFKElMTF9CQURTVEspOwogICAgICB9CkBAIC0xODU2LDcgKzE4NzgsNyBAQAogICAgICBicmVhazsKICAgIGNhc2UgU0lHQlVTOgogICAgICBzd2l0Y2goaXN0LT5zaV9jb2RlKSB7Ci1AQCAtODgsMTAgKzkyLDEwIEBACitAQCAtODgsMTAgKzkyLDEwIEBAIHZvaWQgYmFja3RyYWNlX2hhbmRsZXIoaW50IG4sIHNpZ2luZm9fdAogICAgICAgIFNJQ19DQVNFKEJVU19BRFJFUlIpOwogICAgICAgIFNJQ19DQVNFKEJVU19PQkpFUlIpOwogICAgICB9CkBAIC0xODY5LDcgKzE4OTEsNyBAQAogICAgICBicmVhazsKICAgIH0KICAgIGZmbHVzaChmc3RybSk7Ci1AQCAtMTAxLDcgKzEwNSw3IEBACitAQCAtMTAxLDcgKzEwNSw3IEBAIHZvaWQgYmFja3RyYWNlX2hhbmRsZXIoaW50IG4sIHNpZ2luZm9fdAogICAgLyoKICAgICAgb2xkX2VpcCA9ICoodW5zaWduZWQgaW50KikoKHZvaWQqKSZuLTQpOwogICAgICBvbGRfZWJwID0gKih1bnNpZ25lZCBpbnQqKSgodm9pZCopJm4tOCk7CkBAIC0xODc4LDcgKzE5MDAsNyBAQAogICAgICAqKHVuc2lnbmVkIGludCopKCh2b2lkKikmbi04KSA9IHB1Yy0+dWNfbWNvbnRleHQuZ3JlZ3NbUkVHX0VCUF07ICAgIAogICAgICAKICAgICAgYnRzaXplID0gYmFja3RyYWNlKGJ0aW5mbywgTUFYX0JUU0laRSk7Ci1AQCAtMTExLDE0ICsxMTUsMTQgQEAKK0BAIC0xMTEsMTQgKzExNSwxNCBAQCB2b2lkIGJhY2t0cmFjZV9oYW5kbGVyKGludCBuLCBzaWdpbmZvX3QKICAgICovCiAgICAKICAgIGJ0c2l6ZSA9IGJhY2t0cmFjZShidGluZm8sIE1BWF9CVFNJWkUpOwpAQCAtMTg5NSw5ICsxOTE3LDExIEBACiAgICBmZmx1c2goZnN0cm0pOwogICAgZmNsb3NlKGZzdHJtKTsKICAKK0luZGV4OiBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL2RhZW1vbi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gaGRkdGVtcC0wLjMtYmV0YTE1Lm9yaWcvc3JjL2RhZW1vbi5jCiArKysgaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9kYWVtb24uYwotQEAgLTE2MywxOSArMTYzLDE2IEBACitAQCAtMTYzLDE5ICsxNjMsMTYgQEAgdm9pZCBkYWVtb25fc2VuZF9tc2coc3RydWN0IGRpc2sgKmxkaXNrcwogIAogICAgICBzd2l0Y2goZHNrLT5yZXQpIHsKICAgICAgY2FzZSBHRVRURU1QX05PVF9BUFBMSUNBQkxFOgpAQCAtMTkyMiw3ICsxOTQ2LDcgQEAKICAgICAgICBicmVhazsKICAgICAgY2FzZSBHRVRURU1QX0tOT1dOOgogICAgICAgIG4gPSBzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAiJXMlYyVzJWMlZCVjJWMiLAotQEAgLTE4NSwyNiArMTgyLDIzIEBACitAQCAtMTg1LDI2ICsxODIsMjMgQEAgdm9pZCBkYWVtb25fc2VuZF9tc2coc3RydWN0IGRpc2sgKmxkaXNrcwogICAgICAgICAgICAgICAgICAgICBnZXRfdW5pdChkc2spKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSBHRVRURU1QX05PU0VOU09SOgpAQCAtMTk1NSw3ICsxOTc5LDcgQEAKICAgICAgICBicmVhazsKICAgICAgfQogICAgICB3cml0ZShjZmQsJnNlcGFyYXRvciwgMSk7Ci1AQCAtMjIyLDE0ICsyMTYsMTEgQEAKK0BAIC0yMjIsMTQgKzIxNiwxMSBAQCB2b2lkIGRhZW1vbl9zeXNsb2coc3RydWN0IGRpc2sgKmxkaXNrcykKICAgIGZvcihkc2sgPSBsZGlza3M7IGRzazsgZHNrID0gZHNrLT5uZXh0KSB7CiAgICAgIHN3aXRjaChkc2stPnJldCkgewogICAgICBjYXNlIEdFVFRFTVBfS05PV046CkBAIC0xOTcyLDcgKzE5OTYsNyBAQAogICAgICAgIGJyZWFrOwogICAgICBjYXNlIEdFVFRFTVBfRFJJVkVfU0xFRVA6CiAgICAgICAgc3lzbG9nKExPR19XQVJOSU5HLCBfKCIlczogJXM6IGRyaXZlIGlzIHNsZWVwaW5nIiksIAotQEAgLTI3MCwyOCArMjYxLDMwIEBACitAQCAtMjcwLDI4ICsyNjEsMzAgQEAgdm9pZCBkb19kYWVtb25fbW9kZShzdHJ1Y3QgZGlzayAqbGRpc2tzKQogICAgZmRfc2V0ICAgICAgICAgICAgIGRlZmZkczsKICAgIHRpbWVfdCAgICAgICAgICAgICBuZXh0X3RpbWU7CiAgCkBAIC0yMDI1LDkgKzIwNDksMTEgQEAKICAgIH0KICAgIGNoZGlyKCIvIik7CiAgICB1bWFzaygwKTsKK0luZGV4OiBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL2hkZHRlbXAuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGhkZHRlbXAtMC4zLWJldGExNS5vcmlnL3NyYy9oZGR0ZW1wLmMKICsrKyBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL2hkZHRlbXAuYwotQEAgLTc1LDcgKzc1LDcgQEAKK0BAIC03NSw3ICs3NSw3IEBAIGNoYXIgKiAgICAgICAgICAgICBsaXN0ZW5fYWRkcjsKICBjaGFyICAgICAgICAgICAgICAgc2VwYXJhdG9yID0gU0VQQVJBVE9SOwogIAogIHN0cnVjdCBidXN0eXBlICogICBidXNbQlVTX1RZUEVfTUFYXTsKQEAgLTIwMzYsNyArMjA2Miw3IEBACiAgCiAgc3RhdGljIGVudW0geyBERUZBVUxULCBDRUxTSVVTLCBGQUhSRU5IRUlUIH0gdW5pdDsKICAKLUBAIC0xOTQsMjMgKzE5NCw3IEBACitAQCAtMTk0LDIzICsxOTQsNyBAQCBzdGF0aWMgdm9pZCBkaXNwbGF5X3RlbXBlcmF0dXJlKHN0cnVjdCBkCiAgICAgIGlmIChudW1lcmljICYmIHF1aWV0KQogICAgICAgIHByaW50ZigiMFxuIik7ICAgICAgCiAgICAgIGVsc2UKQEAgLTIwNjEsNyArMjA4Nyw3IEBACiAgCiAgICAgIGJyZWFrOwogICAgY2FzZSBHRVRURU1QX0tOT1dOOgotQEAgLTIzMiwxNCArMjE2LDE0IEBACitAQCAtMjMyLDE0ICsyMTYsMTQgQEAgc3RhdGljIHZvaWQgZGlzcGxheV90ZW1wZXJhdHVyZShzdHJ1Y3QgZAogICAgICBpZiAobnVtZXJpYyAmJiBxdWlldCkKICAgICAgICBwcmludGYoIjBcbiIpOyAgICAgIAogICAgICBlbHNlCkBAIC0yMDc4LDcgKzIxMDQsNyBAQAogICAgICAgIAogICAgICBicmVhazsKICAgIGRlZmF1bHQ6Ci1AQCAtMjY4LDggKzI1Miw5IEBACitAQCAtMjY4LDggKzI1Miw5IEBAIHZvaWQgZG9fZGlyZWN0X21vZGUoc3RydWN0IGRpc2sgKmxkaXNrcykKICAKICBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgICBpbnQgICAgICAgICAgIGksIGMsIGxpbmRleCA9IDAsIGRiX2xvYWRlZCA9IDA7CkBAIC0yMDg5LDE2ICsyMTE1LDE2IEBACiAgCiAgICBiYWNrdHJhY2Vfc2lnc2VndigpOwogICAgYmFja3RyYWNlX3NpZ2lsbCgpOwotQEAgLTI3OSw3ICsyNjQsNyBAQAotICAgYmluZHRleHRkb21haW4gKFBBQ0tBR0UsIExPQ0FMRURJUik7CitAQCAtMjgzLDcgKzI2OCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgIHRleHRkb21haW4gKFBBQ0tBR0UpOworICNlbmRpZgogICAgCiAtICBzaG93X2RiID0gZGVidWcgPSBudW1lcmljID0gcXVpZXQgPSB3YWtldXAgPSBhZl9oaW50ID0gc3lzbG9nX2ludGVydmFsID0gMDsKICsgIHNob3dfZGIgPSBkZWJ1ZyA9IG51bWVyaWMgPSBxdWlldCA9IHdha2V1cCA9IGFmX2hpbnQgPSBzeXNsb2dfaW50ZXJ2YWwgPSBmb3JlZ3JvdW5kID0gMDsKICAgIHVuaXQgPSBERUZBVUxUOwogICAgcG9ydG51bSA9IFBPUlRfTlVNQkVSOwogICAgbGlzdGVuX2FkZHIgPSBOVUxMOwotQEAgLTI5NCw2ICsyNzksNyBAQAorQEAgLTI5OCw2ICsyODMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgICAgICAgeyJkcml2ZWJhc2UiLCAgMCwgTlVMTCwgJ2InfSwKICAgICAgICB7ImRlYnVnIiwgICAgICAwLCBOVUxMLCAnRCd9LAogICAgICAgIHsiZmlsZSIsICAgICAgIDEsIE5VTEwsICdmJ30sCkBAIC0yMTA2LDcgKzIxMzIsNyBAQAogICAgICAgIHsibGlzdGVuIiwgICAgIDEsIE5VTEwsICdsJ30sCiAgICAgICAgeyJ2ZXJzaW9uIiwgICAgMCwgTlVMTCwgJ3YnfSwKICAgICAgICB7InBvcnQiLCAgICAgICAxLCBOVUxMLCAncCd9LAotQEAgLTMwNSw3ICsyOTEsNyBAQAorQEAgLTMwOSw3ICsyOTUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgICAgICAgezAsIDAsIDAsIDB9CiAgICAgIH07CiAgIApAQCAtMjExNSw3ICsyMTQxLDcgQEAKICAgICAgaWYgKGMgPT0gLTEpCiAgICAgICAgYnJlYWs7CiAgICAgIAotQEAgLTM4MiwxMiArMzY4LDEzIEBACitAQCAtMzg2LDEyICszNzIsMTMgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogIAkJICIgICAgICAgICAgICAgICAgICAgICAgICAoZG9uZSBmb3IgZXZlcnkgZHJpdmUgc3VwcGxpZWQpLlxuIgogIAkJICIgIC1kICAgLS1kYWVtb24gICAgICA6ICBydW4gaGRkdGVtcCBpbiBUQ1AvSVAgZGFlbW9uIG1vZGUgKHBvcnQgJWQgYnkgZGVmYXVsdC4pXG4iCiAgCQkgIiAgLWYgICAtLWZpbGU9RklMRSAgIDogIHNwZWNpZnkgZGF0YWJhc2UgZmlsZSB0byB1c2UuXG4iCkBAIC0yMTMwLDcgKzIxNTYsNyBAQAogIAkJICIgIC1xICAgLS1xdWlldCAgICAgICA6ICBkbyBub3QgY2hlY2sgaWYgdGhlIGRyaXZlIGlzIHN1cHBvcnRlZC5cbiIKICAJCSAiICAtdiAgIC0tdmVyc2lvbiAgICAgOiAgZGlzcGxheSBoZGR0ZW1wIHZlcnNpb24gbnVtYmVyLlxuIgogIAkJICIgIC13ICAgLS13YWtlLXVwICAgICA6ICB3YWtlLXVwIHRoZSBkcml2ZSBpZiBuZWVkLlxuIgotQEAgLTQxOCw2ICs0MDUsOSBAQAorQEAgLTQyMiw2ICs0MDksOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgCSAgfQogICAgICAgICAgfQogIAlicmVhazsKQEAgLTIxNDAsNyArMjE2Niw3IEBACiAgICAgICAgZGVmYXVsdDoKICAJZXhpdCgxKTsKICAgICAgICB9Ci1AQCAtNDg5LDYgKzQ3OSw3IEBACitAQCAtNDkzLDYgKzQ4Myw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgICAgaWYoIChkc2stPmZkID0gb3Blbihkc2stPmRyaXZlLCBPX1JET05MWSB8IE9fTk9OQkxPQ0spKSA8IDApIHsKICAgICAgICBzbnByaW50Zihkc2stPmVycm9ybXNnLCBNQVhfRVJST1JNU0dfU0laRSwgIm9wZW46ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwogICAgICAgIGRzay0+dHlwZSA9IEVSUk9SOwpAQCAtMjE0OCw3ICsyMTc0LDcgQEAKICAgICAgICBjb250aW51ZTsKICAgICAgfQogIAotQEAgLTUwMSw2ICs0OTIsNyBAQAorQEAgLTUwNSw2ICs0OTYsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgCiAgICAgICAgbGRpc2tzID0gZHNrLT5uZXh0OwogICAgICAgIGZyZWUoZHNrKTsKQEAgLTIxNTYsNyArMjE4Miw3IEBACiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAKLUBAIC01MTQsMTEgKzUwNiwxNyBAQAorQEAgLTUxOCwxMSArNTEwLDE3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAJZGJfbG9hZGVkID0gMTsKICAgICAgICB9ICAgICAgCiAgCkBAIC0yMTc3LDE2ICsyMjAzLDE4IEBACiAgICAgIH0KICAgIH0KICAKLUBAIC01MzAsNSArNTI4LDUgQEAKK0BAIC01MzQsNSArNTMyLDUgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICAgICBkb19kaXJlY3RfbW9kZShsZGlza3MpOwogICAgfQogIAogLSAgcmV0dXJuIDA7CiArICByZXR1cm4gcmV0OwogIH0KK0luZGV4OiBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL2F0YS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gaGRkdGVtcC0wLjMtYmV0YTE1Lm9yaWcvc3JjL2F0YS5jCiArKysgaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9hdGEuYwotQEAgLTc1LDcgKzc1LDcgQEAKK0BAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBlbnVtIGVfZ2V0dGVtcCBhdGFfZ2V0X3RlbXBlcmF0dXIKICAgIGludCAgICAgICAgICAgICAgaTsKICAgIHUxNiAqICAgICAgICAgICAgcDsKICAKQEAgLTIxOTUsNyArMjIyMyw3IEBACiAgICAgIGNsb3NlKGRzay0+ZmQpOwogICAgICBkc2stPmZkID0gLTE7CiAgICAgIHJldHVybiBHRVRURU1QX05PU0VOU09SOwotQEAgLTE0MCwyNCArMTQwLDE1IEBACitAQCAtMTQwLDI0ICsxNDAsMTUgQEAgc3RhdGljIGVudW0gZV9nZXR0ZW1wIGF0YV9nZXRfdGVtcGVyYXR1cgogICAgKi8KICAKICAgIC8qIHRlbXBlcmF0dXJlICovCkBAIC0yMjI0LDkgKzIyNTIsMTEgQEAKICAKICAgIC8qIG5ldmVyIHJlYWNoZWQgKi8KICB9CitJbmRleDogaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9oZGR0ZW1wLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBoZGR0ZW1wLTAuMy1iZXRhMTUub3JpZy9zcmMvaGRkdGVtcC5oCiArKysgaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9oZGR0ZW1wLmgKLUBAIC0zOSw4ICszOSw2IEBACitAQCAtMzksOCArMzksNiBAQCBlbnVtIGVfZ2V0dGVtcCB7CiAgICBHRVRURU1QX0VSUk9SLCAgICAgICAgICAgIC8qIEVycm9yICovCiAgICBHRVRURU1QX05PVF9BUFBMSUNBQkxFLCAgIC8qICovCiAgICBHRVRURU1QX1VOS05PV04sICAgICAgICAgIC8qIERyaXZlIGlzIG5vdCBpbiBkYXRhYmFzZSAqLwpAQCAtMjIzNSw3ICsyMjY1LDcgQEAKICAgIEdFVFRFTVBfS05PV04sICAgICAgICAgICAgLyogRHJpdmUgYXBwZWFyIGluIGRhdGFiYXNlICovCiAgICBHRVRURU1QX05PU0VOU09SLCAgICAgICAgIC8qIERyaXZlIGFwcGVhciBpbiBkYXRhYmFzZSBidXQgaXMga25vd24gdG8gaGF2ZSBubyBzZW5zb3IgKi8KICAgIEdFVFRFTVBfRFJJVkVfU0xFRVAgICAgICAgLyogRHJpdmUgaXMgc2xlZXBpbmcgKi8KLUBAIC03OCw3ICs3Niw3IEBACitAQCAtNzgsNyArNzYsNyBAQCBzdHJ1Y3QgYnVzdHlwZSB7CiAgCiAgZXh0ZXJuIHN0cnVjdCBidXN0eXBlICogICBidXNbQlVTX1RZUEVfTUFYXTsKICBleHRlcm4gY2hhciAgICAgICAgICAgICAgIGVycm9ybXNnW01BWF9FUlJPUk1TR19TSVpFXTsKQEAgLTIyNDQsOSArMjI3NCwxMSBAQAogIGV4dGVybiBjaGFyICAgICAgICAgICAgICAgc2VwYXJhdG9yOwogIGV4dGVybiBsb25nICAgICAgICAgICAgICAgcG9ydG51bSwgc3lzbG9nX2ludGVydmFsOwogIGV4dGVybiBjaGFyICogICAgICAgICAgICAgbGlzdGVuX2FkZHI7CitJbmRleDogaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9zY3NpY21kcy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gaGRkdGVtcC0wLjMtYmV0YTE1Lm9yaWcvc3JjL3Njc2ljbWRzLmMKICsrKyBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL3Njc2ljbWRzLmMKLUBAIC0xNDcsNiArMTQ3LDcgQEAKK0BAIC0xNDcsNiArMTQ3LDcgQEAgaW50IHNjc2lfaW5xdWlyeShpbnQgZGV2aWNlLCB1bnNpZ25lZCBjaAogICAgICByZXR1cm4gMTsKICAgIGVsc2UgewogICAgICBzY3NpX2ZpeHN0cmluZyhidWZmZXIgKyA4LCAyNCk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h0b3AvZmlsZXMvMDAwMS1Vc2UtcGtnLWNvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHRvcC9maWxlcy8wMDAxLVVzZS1wa2ctY29uZmlnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMGQ4NmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h0b3AvZmlsZXMvMDAwMS1Vc2UtcGtnLWNvbmZpZy5wYXRjaApAQCAtMCwwICsxLDM5IEBACitXZSBuZWVkIHRvIHVzZSBwa2ctY29uZmlnIHRvIGZpbmQgdGhlIG5jdXJzZXMgbGlicmFyeSBpbnN0ZWFkIG9mIHRoZQorbmN1cnNlcyotY29uZmlnIGFwcGxpY2F0aW9ucy4KKworU2lnbmVkLW9mZi1ieTogUGF1bCBCYXJrZXIgPHBiYXJrZXJAdG9nYW5sYWJzLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBKb3NseW4gPHJvYmVydC5qb3NseW5AcmVkcmVjdGFuZ2xlLm9yZz4KKworVXBzdHJlYW0tc3RhdHVzOiBJbmFwcHJvcHJpYXRlCisgICAgKGBuY3Vyc2VzKi1jb25maWdgIGNhbiBiZSB1c2VkIG91dHNpZGUgb2YgT3BlbkVtYmVkZGVkKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA1NTlkYzRkLi43N2FlYTIyIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xODUsMTAgKzE4NSwxMCBAQCBtNF9kZWZpbmUoW0hUT1BfQ0hFQ0tfTElCXSwKKyAKKyBBQ19BUkdfRU5BQkxFKHVuaWNvZGUsIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtdW5pY29kZV0sIFtlbmFibGUgVW5pY29kZSBzdXBwb3J0XSldLCAsZW5hYmxlX3VuaWNvZGU9InllcyIpCisgaWYgdGVzdCAieCRlbmFibGVfdW5pY29kZSIgPSB4eWVzOyB0aGVuCistICAgSFRPUF9DSEVDS19TQ1JJUFQoW25jdXJzZXN3Nl0sIFthZGRud3N0cl0sIFtIQVZFX0xJQk5DVVJTRVNXXSwgIm5jdXJzZXN3Ni1jb25maWciLAorLSAgICBIVE9QX0NIRUNLX1NDUklQVChbbmN1cnNlc3ddLCBbYWRkbndzdHJdLCBbSEFWRV9MSUJOQ1VSU0VTV10sICJuY3Vyc2VzdzYtY29uZmlnIiwKKy0gICAgIEhUT1BfQ0hFQ0tfU0NSSVBUKFtuY3Vyc2Vzd10sIFthZGRud3N0cl0sIFtIQVZFX0xJQk5DVVJTRVNXXSwgIm5jdXJzZXN3NS1jb25maWciLAorLSAgICAgIEhUT1BfQ0hFQ0tfU0NSSVBUKFtuY3Vyc2VzXSwgW2FkZG53c3RyXSwgW0hBVkVfTElCTkNVUlNFU1ddLCAibmN1cnNlczUtY29uZmlnIiwKKysgICBIVE9QX0NIRUNLX1NDUklQVChbbmN1cnNlc3c2XSwgW2FkZG53c3RyXSwgW0hBVkVfTElCTkNVUlNFU1ddLCAicGtnLWNvbmZpZyBuY3Vyc2VzdzYiLAorKyAgICBIVE9QX0NIRUNLX1NDUklQVChbbmN1cnNlc3ddLCBbYWRkbndzdHJdLCBbSEFWRV9MSUJOQ1VSU0VTV10sICJwa2ctY29uZmlnIG5jdXJzZXN3NiIsCisrICAgICBIVE9QX0NIRUNLX1NDUklQVChbbmN1cnNlc3ddLCBbYWRkbndzdHJdLCBbSEFWRV9MSUJOQ1VSU0VTV10sICJwa2ctY29uZmlnIG5jdXJzZXN3NSIsCisrICAgICAgSFRPUF9DSEVDS19TQ1JJUFQoW25jdXJzZXNdLCBbYWRkbndzdHJdLCBbSEFWRV9MSUJOQ1VSU0VTV10sICJwa2ctY29uZmlnIG5jdXJzZXM1IiwKKyAgICAgICAgSFRPUF9DSEVDS19MSUIoW25jdXJzZXN3Nl0sIFthZGRud3N0cl0sIFtIQVZFX0xJQk5DVVJTRVNXXSwKKyAgICAgICAgIEhUT1BfQ0hFQ0tfTElCKFtuY3Vyc2Vzd10sIFthZGRud3N0cl0sIFtIQVZFX0xJQk5DVVJTRVNXXSwKKyAgICAgICAgICBIVE9QX0NIRUNLX0xJQihbbmN1cnNlc10sIFthZGRud3N0cl0sIFtIQVZFX0xJQk5DVVJTRVNXXSwKK0BAIC0yMDEsOCArMjAxLDggQEAgaWYgdGVzdCAieCRlbmFibGVfdW5pY29kZSIgPSB4eWVzOyB0aGVuCisgICAgICAgICAgW0FDX0NIRUNLX0hFQURFUlMoW25jdXJzZXMvY3Vyc2VzLmhdLFs6XSwKKyAgICAgICAgICAgICBbQUNfQ0hFQ0tfSEVBREVSUyhbbmN1cnNlcy5oXSxbOl0sW21pc3NpbmdfaGVhZGVycz0iJG1pc3NpbmdfaGVhZGVycyAkYWNfaGVhZGVyIl0pXSldKV0pCisgZWxzZQorLSAgIEhUT1BfQ0hFQ0tfU0NSSVBUKFtuY3Vyc2VzNl0sIFtyZWZyZXNoXSwgW0hBVkVfTElCTkNVUlNFU10sICJuY3Vyc2VzNi1jb25maWciLAorLSAgICBIVE9QX0NIRUNLX1NDUklQVChbbmN1cnNlc10sIFtyZWZyZXNoXSwgW0hBVkVfTElCTkNVUlNFU10sICJuY3Vyc2VzNS1jb25maWciLAorKyAgIEhUT1BfQ0hFQ0tfU0NSSVBUKFtuY3Vyc2VzNl0sIFtyZWZyZXNoXSwgW0hBVkVfTElCTkNVUlNFU10sICJwa2ctY29uZmlnIG5jdXJzZXM2IiwKKysgICAgSFRPUF9DSEVDS19TQ1JJUFQoW25jdXJzZXNdLCBbcmVmcmVzaF0sIFtIQVZFX0xJQk5DVVJTRVNdLCAicGtnLWNvbmZpZyBuY3Vyc2VzNSIsCisgICAgICBIVE9QX0NIRUNLX0xJQihbbmN1cnNlczZdLCAgW3JlZnJlc2hdLCBbSEFWRV9MSUJOQ1VSU0VTXSwKKyAgICAgICBIVE9QX0NIRUNLX0xJQihbbmN1cnNlc10sICBbcmVmcmVzaF0sIFtIQVZFX0xJQk5DVVJTRVNdLAorICAgICAgIG1pc3NpbmdfbGlicmFyaWVzPSIkbWlzc2luZ19saWJyYXJpZXMgbGlibmN1cnNlcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHRvcC9odG9wXzEuMC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9odG9wL2h0b3BfMS4wLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MTY2MWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9odG9wL2h0b3BfMS4wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gImh0b3AgcHJvY2VzcyBtb25pdG9yIgotSE9NRVBBR0UgPSAiaHR0cDovL2h0b3Auc2YubmV0IgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzMxMjY1MzUzMmU4ZTY2OWYzMGU1ZWM4YmRjMjNiZTMiCi0KLURFUEVORFMgPSAibmN1cnNlcyIKLVJERVBFTkRTXyR7UE59ID0gIm5jdXJzZXMtdGVybWluZm8iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2hpc2hhbS5obS9odG9wL3JlbGVhc2VzLyR7UFZ9L2h0b3AtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTc2OGI5YjU1YzAzM2Q5YzFkZmZkYTcyZGIzYTZhYzciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDU1YzU3OTI3Zjc1ODQ3ZmRjMjIyYjUyNThiMDc5YTk1NDI4MTFhOWRjZjU0MjFjNjE1YzdlMTdmNTVkMTgyOSIKLQotTERGTEFHU19hcHBlbmRfbGliYy11Y2xpYmMgPSAiIC1sdWJhY2t0cmFjZSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgIHJtIC1yZiAke1N9L2NvbmZpZy5oCi19Ci0KLWluaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h0b3AvaHRvcF8yLjEuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHRvcC9odG9wXzIuMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNTA4ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h0b3AvaHRvcF8yLjEuMC5iYgpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIkludGVyYWN0aXZlIHByb2Nlc3Mgdmlld2VyIgorSE9NRVBBR0UgPSAiaHR0cDovL2hpc2hhbS5obS9odG9wIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWMzMTI2NTM1MzJlOGU2NjlmMzBlNWVjOGJkYzIzYmUzIgorCitERVBFTkRTID0gIm5jdXJzZXMiCisKK1NSQ19VUkkgPSAiaHR0cDovL2hpc2hhbS5obS9odG9wL3JlbGVhc2VzLyR7UFZ9LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gImYyNjJiNjZhZDZjMTk0NzgyZjRkM2E4MDYyN2U4NGM4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMyNjBiZTk5MGQyNmUyNWI2YjQ5ZmM5ZDk2ZGJjOTM1YWQ0NmU2MTA4M2MwYjdmNmRmNDEzZTUxM2JmODA3NDgiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAicHJvYyBcCisgICAgICAgICAgICAgICAgICAgY2dyb3VwIFwKKyAgICAgICAgICAgICAgICAgICB0YXNrc3RhdHMgXAorICAgICAgICAgICAgICAgICAgIHVuaWNvZGUgXAorICAgICAgICAgICAgICAgICAgIGxpbnV4LWFmZmluaXR5IFwKKyAgICAgICAgICAgICAgICAgICBkZWxheWFjY3QiCitQQUNLQUdFQ09ORklHW3Byb2NdID0gIi0tZW5hYmxlLXByb2MsLS1kaXNhYmxlLXByb2MiCitQQUNLQUdFQ09ORklHW29wZW52el0gPSAiLS1lbmFibGUtb3BlbnZ6LC0tZGlzYWJsZS1vcGVudnoiCitQQUNLQUdFQ09ORklHW2Nncm91cF0gPSAiLS1lbmFibGUtY2dyb3VwLC0tZGlzYWJsZS1jZ3JvdXAiCitQQUNLQUdFQ09ORklHW3ZzZXJ2ZXJdID0gIi0tZW5hYmxlLXZzZXJ2ZXIsLS1kaXNhYmxlLXZzZXJ2ZXIiCitQQUNLQUdFQ09ORklHW3Rhc2tzdGF0c10gPSAiLS1lbmFibGUtdGFza3N0YXRzLC0tZGlzYWJsZS10YXNrc3RhdHMiCitQQUNLQUdFQ09ORklHW3VuaWNvZGVdID0gIi0tZW5hYmxlLXVuaWNvZGUsLS1kaXNhYmxlLXVuaWNvZGUiCitQQUNLQUdFQ09ORklHW2xpbnV4LWFmZmluaXR5XSA9ICItLWVuYWJsZS1saW51eC1hZmZpbml0eSwtLWRpc2FibGUtbGludXgtYWZmaW5pdHkiCitQQUNLQUdFQ09ORklHW2h3bG9jXSA9ICItLWVuYWJsZS1od2xvYywtLWRpc2FibGUtaHdsb2MsaHdsb2MiCitQQUNLQUdFQ09ORklHW3NldHVpZF0gPSAiLS1lbmFibGUtc2V0dWlkLC0tZGlzYWJsZS1zZXR1aWQiCitQQUNLQUdFQ09ORklHW2RlbGF5YWNjdF0gPSAiLS1lbmFibGUtZGVsYXlhY2N0LC0tZGlzYWJsZS1kZWxheWFjY3QsbGlibmwiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKyAgICBybSAtcmYgJHtTfS9jb25maWcuaAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9odW5zcGVsbC9odW5zcGVsbF8xLjYuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHVuc3BlbGwvaHVuc3BlbGxfMS42LjIuYmIKc2ltaWxhcml0eSBpbmRleCA3NSUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9odW5zcGVsbC9odW5zcGVsbF8xLjYuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9odW5zcGVsbC9odW5zcGVsbF8xLjYuMi5iYgppbmRleCAxMjU3MjlmLi41ZmVlYTg5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h1bnNwZWxsL2h1bnNwZWxsXzEuNi4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHVuc3BlbGwvaHVuc3BlbGxfMS42LjIuYmIKQEAgLTcsOCArNyw4IEBACiAiCiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vYXJjaGl2ZS92JHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjBkZjFjMThjMTI4NGY4NjI1YWY1YWU1YThkNWM0Y2VmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwZjU5MzczM2M1MGI3OTQwMTZiYjAzZDMxZmQyYTIwNzFlNDYxMGM2ZmE0NzA4ZTMzZWRhZDIzMzUxMDJjNDkiCitTUkNfVVJJW21kNXN1bV0gPSAiMWE1NDUwNGNiNDcwYWFmYTY1MzBiYjM3MmExMGRjMDQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2NkOWNlYjA2MmZlNTgxNGY2NjhlNGYyMmIyZmE2ZTNiYTBiMzM5YjkyMTczOTU0MWNlMTgwY2FjNGQ2ZjRjNCIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9od2RhdGEvaHdkYXRhX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHdkYXRhL2h3ZGF0YV9naXQuYmIKaW5kZXggNTBkMzVjNi4uNjc5NjczYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9od2RhdGEvaHdkYXRhX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h3ZGF0YS9od2RhdGFfZ2l0LmJiCkBAIC01LDggKzUsOCBAQAogTElDRU5TRSA9ICJHUEwtMi4wKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE1NTY1NDc3MTFlODI0Njk5MmI5OTllZGQ5NDQ1YTU3IgogCi1QViA9ICIwLjI5MStnaXQke1NSQ1BWfSIKLVNSQ1JFViA9ICI0YmZiZGNmNTkxM2Q2ZGQ1MzMzNmQzMWI4MDM1NzA4MDc1ZTZmZGZhIgorUFYgPSAiMC4yOTgrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiOTAzMGZiZDZhYjE1MzhmNGQ3N2QzY2YxZTBiNDYzYTdlYzI1YjVjNCIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS92Y3Job25lay8ke0JQTn0uZ2l0IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pa3NlbWVsL2lrc2VtZWwtMS40L3IyNS5kaWZmIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pa3NlbWVsL2lrc2VtZWwtMS40L3IyNS5kaWZmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjY2Y2UwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaWtzZW1lbC9pa3NlbWVsLTEuNC9yMjUuZGlmZgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVRha2VuIGZyb20gdXBzdHJlYW0gc3VidmVyc2lvbiByZXBvc2l0b3J5OgotCi1odHRwOi8vY29kZS5nb29nbGUuY29tL3AvaWtzZW1lbC9zb3VyY2UvZGV0YWlsP3I9MjUKLQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tCi0gY29uZmlndXJlLmFjIHwgICAxMCArKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi0tLS0gaWtzZW1lbC0xLjQub3JpZy9jb25maWd1cmUuYWMKLSsrKyBpa3NlbWVsLTEuNC9jb25maWd1cmUuYWMKLUBAIC00MywxMSArNDMsMTkgQEAgQU1fQ09ORElUSU9OQUwoRE9fUE9TSVgsIHRlc3QgIngkZGVmaW8iCi0gZG5sIENoZWNrcyBmb3IgbGlicmFyeSBmdW5jdGlvbnMKLSBBQ19TRUFSQ0hfTElCUyhyZWN2LHNvY2tldCkKLSBBQ19DSEVDS19GVU5DUyhnZXRvcHRfbG9uZykKLSBBQ19DSEVDS19GVU5DUyhnZXRhZGRyaW5mbykKLSAKLS1BTV9QQVRIX0xJQkdOVVRMUygsQUNfREVGSU5FKEhBVkVfR05VVExTLCwiVXNlIGxpYmdudXRscyIpKQotK2RubCBDaGVjayBHTlUgVExTCi0rUEtHX0NIRUNLX01PRFVMRVMoR05VVExTLCBnbnV0bHMgPj0gMi4wLjAsIGhhdmVfZ251dGxzPXllcywgaGF2ZV9nbnV0bHM9bm8pCi0raWYgdGVzdCAieCRoYXZlX2dudXRscyIgPSAieHllcyI7IHRoZW4KLSsgIExJQkdOVVRMU19DRkxBR1M9IiRHTlVUTFNfQ0ZMQUdTIgotKyAgTElCR05VVExTX0xJQlM9IiRHTlVUTFNfTElCUyIKLSsgIEFDX1NVQlNUKExJQkdOVVRMU19DRkxBR1MpCi0rICBBQ19TVUJTVChMSUJHTlVUTFNfTElCUykKLSsgIEFDX0RFRklORShIQVZFX0dOVVRMUywgMSwgW3doZXRoZXIgdG8gdXNlIEdudVRTTCBzdXBwb3J0Ll0pCi0rZmkKLSAKLSBkbmwgQ2hlY2sgLVdhbGwgZmxhZyBvZiBHQ0MKLSBpZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KLSAgIGlmIHRlc3QgLXogImBlY2hvICIkQ0ZMQUdTIiB8IGdyZXAgIlwtV2FsbCIgMj4gL2Rldi9udWxsYCIgOyB0aGVuCi0gICAgIENGTEFHUz0iJENGTEFHUyAtV2FsbCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaWtzZW1lbC9pa3NlbWVsL2F2b2lkLW9ic29sZXRlLWdudXRscy1hcGlzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pa3NlbWVsL2lrc2VtZWwvYXZvaWQtb2Jzb2xldGUtZ251dGxzLWFwaXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFmY2NjMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaWtzZW1lbC9pa3NlbWVsL2F2b2lkLW9ic29sZXRlLWdudXRscy1hcGlzLnBhdGNoCkBAIC0wLDAgKzEsNTUgQEAKK0Zyb20gNzEzNmE5MDhhMDU2ZDBlMzZjODliNmUxYzM5YWRmZjhjZTJiYjFkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDEgTm92IDIwMTcgMTM6MTc6MzQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gYXZvaWQgb2Jzb2xldGUgZ251dGxzIGFwaXMKKworVGhlIGdudXRsc18qX3NldF9wcmlvcml0eSgpIGZhbWlseSBvZiBmdW5jdGlvbnMgd2FzIG1hcmtlZCBkZXByZWNhdGVkCitpbiBnbnV0bHMgMi4xMi54IGFuZCByZW1vdmVkIGNvbXBsZXRlbHkgaW4gMy41LnguIFRoZXNlIGZ1bmN0aW9ucworaGF2ZSBiZWVuIHN1cGVyY2VkZWQgYnkgZ251dGxzX3ByaW9yaXR5X3NldF9kaXJlY3QoKSwgd2hpY2ggd2FzIGFkZGVkCitpbiBnbnV0bHMgMi4yLjAgKHJlbGVhc2VkIDIwMDctMTItMTQpLgorCitSYXRoZXIgdGhhbiBzaW1wbHkgdXBkYXRlIHRoZSBjdXN0b20gZ251dGxzXypfc2V0X3ByaW9yaXR5KCkgY2FsbHMgdG8KK3VzZSBnbnV0bHNfcHJpb3JpdHlfc2V0X2RpcmVjdCgpLCBkcm9wIHRoZSBjdXN0b20gcHJpb3JpdHkgc2VsZWN0aW9uCitjb21wbGV0ZWx5IGFuZCB1c2UgdGhlIHJlY29tbWVuZGVkIGFwcHJvYWNoIG9mIGxldHRpbmcgZ251dGxzIHBpY2sgYQorcmVhc29uYWJsZSBzZXQgb2YgZGVmYXVsdHMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorLS0tCisgc3JjL3Rscy1nbnV0bHMuYyB8IDEyICsrLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Rscy1nbnV0bHMuYyBiL3NyYy90bHMtZ251dGxzLmMKK2luZGV4IGQ3YjdjOTEuLjc0OWU5ZWYgMTAwNjQ0CistLS0gYS9zcmMvdGxzLWdudXRscy5jCisrKysgYi9zcmMvdGxzLWdudXRscy5jCitAQCAtNDgsMTEgKzQ4LDYgQEAgdGxzX3B1bGwgKHN0cnVjdCBpa3N0bHNfZGF0YSAqZGF0YSwgY2hhciAqYnVmZmVyLCBzaXplX3QgbGVuKQorIHN0YXRpYyBpbnQKKyB0bHNfaGFuZHNoYWtlIChzdHJ1Y3QgaWtzdGxzX2RhdGEgKipkYXRhcCwgaWtzdHJhbnNwb3J0ICp0cmFucywgdm9pZCAqc29jaykKKyB7CistCWNvbnN0IGludCBwcm90b2NvbF9wcmlvcml0eVtdID0geyBHTlVUTFNfVExTMSwgR05VVExTX1NTTDMsIDAgfTsKKy0JY29uc3QgaW50IGt4X3ByaW9yaXR5W10gPSB7IEdOVVRMU19LWF9SU0EsIDAgfTsKKy0JY29uc3QgaW50IGNpcGhlcl9wcmlvcml0eVtdID0geyBHTlVUTFNfQ0lQSEVSXzNERVNfQ0JDLCBHTlVUTFNfQ0lQSEVSX0FSQ0ZPVVIsIDB9OworLQljb25zdCBpbnQgY29tcF9wcmlvcml0eVtdID0geyBHTlVUTFNfQ09NUF9aTElCLCBHTlVUTFNfQ09NUF9OVUxMLCAwIH07CistCWNvbnN0IGludCBtYWNfcHJpb3JpdHlbXSA9IHsgR05VVExTX01BQ19TSEEsIEdOVVRMU19NQUNfTUQ1LCAwIH07CisgCXN0cnVjdCBpa3N0bHNfZGF0YSAqZGF0YTsKKyAJaW50IHJldDsKKyAKK0BAIC04MSwxMSArNzYsOCBAQCB0bHNfaGFuZHNoYWtlIChzdHJ1Y3QgaWtzdGxzX2RhdGEgKipkYXRhcCwgaWtzdHJhbnNwb3J0ICp0cmFucywgdm9pZCAqc29jaykKKyAJCXJldHVybiBJS1NfTk9NRU07CisgCX0KKyAKKy0JZ251dGxzX3Byb3RvY29sX3NldF9wcmlvcml0eSAoZGF0YS0+c2VzcywgcHJvdG9jb2xfcHJpb3JpdHkpOworLQlnbnV0bHNfY2lwaGVyX3NldF9wcmlvcml0eShkYXRhLT5zZXNzLCBjaXBoZXJfcHJpb3JpdHkpOworLQlnbnV0bHNfY29tcHJlc3Npb25fc2V0X3ByaW9yaXR5KGRhdGEtPnNlc3MsIGNvbXBfcHJpb3JpdHkpOworLQlnbnV0bHNfa3hfc2V0X3ByaW9yaXR5KGRhdGEtPnNlc3MsIGt4X3ByaW9yaXR5KTsKKy0JZ251dGxzX21hY19zZXRfcHJpb3JpdHkoZGF0YS0+c2VzcywgbWFjX3ByaW9yaXR5KTsKKysJZ251dGxzX3NldF9kZWZhdWx0X3ByaW9yaXR5IChkYXRhLT5zZXNzKTsKKysKKyAJZ251dGxzX2NyZWRlbnRpYWxzX3NldCAoZGF0YS0+c2VzcywgR05VVExTX0NSRF9DRVJUSUZJQ0FURSwgZGF0YS0+Y3JlZCk7CisgCisgCWdudXRsc190cmFuc3BvcnRfc2V0X3B1c2hfZnVuY3Rpb24gKGRhdGEtPnNlc3MsIChnbnV0bHNfcHVzaF9mdW5jKSB0bHNfcHVzaCk7CistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaWtzZW1lbC9pa3NlbWVsL2ZpeC1jb25maWd1cmUtb3B0aW9uLXBhcnNpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lrc2VtZWwvaWtzZW1lbC9maXgtY29uZmlndXJlLW9wdGlvbi1wYXJzaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1YWNjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lrc2VtZWwvaWtzZW1lbC9maXgtY29uZmlndXJlLW9wdGlvbi1wYXJzaW5nLnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKK0Zyb20gMTdhNWNmOGY3MGI4NmQ4YTIxOTU1NjJlMmQ5ZGNjY2I0ZmEzNWM4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDMxIE9jdCAyMDE3IDIwOjA1OjU4IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBjb25maWd1cmUgb3B0aW9uIHBhcnNpbmcKKworRG9uJ3Qgb3Zlci13cml0ZSB3aXRoX29wZW5zc2wgZXRjIGJ5IHRyeWluZyB0byBzZXQgdG8gJGVuYWJsZXZhcgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDE0ICsrKysrKystLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggODJlNmQyZC4uODIzZTZjMSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNTYsMTcgKzU2LDE3IEBAIGZpCisgZG5sIE9wdGlvbnMgZm9yIG92ZXJyaWRpbmcgVExTIGNoZWNrcworIEFDX0FSR19XSVRIKFtvcGVuc3NsXSwKKyAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtb3BlbnNzbF0sW2Rpc2FibGUgY2hlY2tpbmcgZm9yIG9wZW5zc2xdKSwKKy0gIFt3aXRoX29wZW5zc2w9JGVuYWJsZXZhbF0sCistICBbd2l0aF9vcGVuc3NsPXllc10KKysgIFtdLAorKyAgW3dpdGhfb3BlbnNzbD1hdXRvXQorICkKKyBBQ19BUkdfV0lUSChbZ251dGxzXSwKKyAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtZ251dGxzXSxbZGlzYWJsZSBjaGVja2luZyBmb3IgR05VIFRMU10pLAorLSAgW3dpdGhfZ251dGxzPSRlbmFibGV2YWxdLAorLSAgW3dpdGhfZ251dGxzPXllc10KKysgIFtdLAorKyAgW3dpdGhfZ251dGxzPWF1dG9dCisgKQorIAorIGRubCBDaGVjayBPcGVuU1NMCistaWYgdGVzdCAieCR3aXRoX29wZW5zc2wiID0gInh5ZXMiOyB0aGVuCisraWYgdGVzdCAieCR3aXRoX29wZW5zc2wiICE9ICJ4bm8iOyB0aGVuCisgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbT1BFTlNTTF0sIG9wZW5zc2wgPj0gMC45LjgsIGhhdmVfb3BlbnNzbD15ZXMsIGhhdmVfb3BlbnNzbD1ubykKKyAgIGlmIHRlc3QgIngkaGF2ZV9vcGVuc3NsIiA9ICJ4eWVzIjsgdGhlbgorICAgICBMSUJPUEVOU1NMX0NGTEFHUz0iJE9QRU5TU0xfQ0ZMQUdTIgorQEAgLTc4LDcgKzc4LDcgQEAgaWYgdGVzdCAieCR3aXRoX29wZW5zc2wiID0gInh5ZXMiOyB0aGVuCisgZmkKKyAKKyBkbmwgQ2hlY2sgR05VIFRMUworLWlmIHRlc3QgIngkd2l0aF9nbnV0bHMiID0gInh5ZXMiOyB0aGVuCisraWYgdGVzdCAieCR3aXRoX2dudXRscyIgIT0gInhubyI7IHRoZW4KKyAgIGlmIHRlc3QgIngkaGF2ZV9vcGVuc3NsIiAhPSAieHllcyI7IHRoZW4KKyAgICAgUEtHX0NIRUNLX01PRFVMRVMoW0dOVVRMU10sIGdudXRscyA+PSAyLjAuMCwgaGF2ZV9nbnV0bHM9eWVzLCBoYXZlX2dudXRscz1ubykKKyAgICAgaWYgdGVzdCAieCRoYXZlX2dudXRscyIgPSAieHllcyI7IHRoZW4KK0BAIC05NCw3ICs5NCw3IEBAIGZpCisgZG5sIE9wdGlvbiBmb3Igb3ZlcnJpZGluZyBQeXRob24gY2hlY2sKKyBBQ19BUkdfRU5BQkxFKFtweXRob25dLAorICAgQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1weXRob25dLFtkaXNhYmxlIGNoZWNraW5nIGZvciBQeXRob24gYmluZGluZ3NdKSwKKy0gIFt3aXRoX3B5dGhvbj0kZW5hYmxldmFsXSwKKysgIFtdLAorICAgW3dpdGhfcHl0aG9uPXllc10KKyApCisgCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaWtzZW1lbC9pa3NlbWVsXzEuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaWtzZW1lbC9pa3NlbWVsXzEuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTAzZTkwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pa3NlbWVsL2lrc2VtZWxfMS41LmJiCkBAIC0wLDAgKzEsMjQgQEAKK1NVTU1BUlkgPSAiRmFzdCBhbmQgcG9ydGFibGUgWE1MIHBhcnNlciBhbmQgSmFiYmVyIHByb3RvY29sIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbWVkdWtldHRvL2lrc2VtZWwiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDgwNDVmM2I4ZjkyOWMxY2IyOWExZTNmZDczN2I0OTkiCisKK1NSQ1JFViA9ICI5NzhiNzMzNDYyZTQxZWZkNWRiNzJiYzk5NzRjYjNiMGQxZDVmNmZhIgorUFYgPSAiMS41K2dpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbWVkdWtldHRvL2lrc2VtZWwuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1jb25maWd1cmUtb3B0aW9uLXBhcnNpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYXZvaWQtb2Jzb2xldGUtZ251dGxzLWFwaXMucGF0Y2giCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQorCisjIFRMUyBzdXBwb3J0IHJlcXVpcmVzIGVpdGhlciBvcGVuc3NsIG9yIGdudXRscyAoaWYgYm90aCBhcmUgZW5hYmxlZCBvcGVuc3NsIHdpbGwgYmUgdXNlZCkuCitQQUNLQUdFQ09ORklHID89ICJnbnV0bHMiCisKK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtZ251dGxzLC0td2l0aG91dC1nbnV0bHMsZ251dGxzIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbCwtLXdpdGhvdXQtb3BlbnNzbCxvcGVuc3NsIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXB5dGhvbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZWlnZW4vbGliZWlnZW4vMDAwMS1DTWFrZUxpc3RzLnR4dC1pbnN0YWxsLUZpbmRFaWdlbjMuY21ha2Utc2NyaXB0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJlaWdlbi9saWJlaWdlbi8wMDAxLUNNYWtlTGlzdHMudHh0LWluc3RhbGwtRmluZEVpZ2VuMy5jbWFrZS1zY3JpcHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2MWRhZGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJlaWdlbi9saWJlaWdlbi8wMDAxLUNNYWtlTGlzdHMudHh0LWluc3RhbGwtRmluZEVpZ2VuMy5jbWFrZS1zY3JpcHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIGZkOGJjNjZlZmFjMTA1OWMxMDY4ZjgwNDc0NmIwMWI5MDE3N2MzMzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMdWthcyBCdWx3YWhuIDxsdWthcy5idWx3YWhuQG9zcy5ibXctY2FyaXQuZGU+Ci1EYXRlOiBTdW4sIDE4IE9jdCAyMDE1IDE2OjUyOjI1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIENNYWtlTGlzdHMudHh0OiBpbnN0YWxsIEZpbmRFaWdlbjMuY21ha2Ugc2NyaXB0Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBMdWthcyBCdWx3YWhuIDxsdWthcy5idWx3YWhuQG9zcy5ibXctY2FyaXQuZGU+Ci0tLS0KLSBDTWFrZUxpc3RzLnR4dCB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA3NmExMWI5Li5lYzZjNmVhIDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtMzQyLDYgKzM0Miw4IEBAIGlmKEVJR0VOX0JVSUxEX1BLR0NPTkZJRykKLSAgICAgICAgICkKLSBlbmRpZihFSUdFTl9CVUlMRF9QS0dDT05GSUcpCi0gCi0raW5zdGFsbChGSUxFUyAiJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2NtYWtlL0ZpbmRFaWdlbjMuY21ha2UiIERFU1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfUFJFRklYfS9zaGFyZS9jbWFrZS9Nb2R1bGVzIikKLSsKLSBhZGRfc3ViZGlyZWN0b3J5KEVpZ2VuKQotIAotIGFkZF9zdWJkaXJlY3RvcnkoZG9jIEVYQ0xVREVfRlJPTV9BTEwpCi0tLSAKLTEuOS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZWlnZW4vbGliZWlnZW5fMy4yLjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmVpZ2VuL2xpYmVpZ2VuXzMuMy40LmJiCnNpbWlsYXJpdHkgaW5kZXggNjIlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZWlnZW4vbGliZWlnZW5fMy4yLjguYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZWlnZW4vbGliZWlnZW5fMy4zLjQuYmIKaW5kZXggZGNjYTJlOS4uYmMzYjMyZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJlaWdlbi9saWJlaWdlbl8zLjIuOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmVpZ2VuL2xpYmVpZ2VuXzMuMy40LmJiCkBAIC00LDE3ICs0LDE2IEBACiBMSUNFTlNFID0gIk1QTC0yLjAiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLk1QTDI7bWQ1PTgxNWNhNTk5YzlkZjI0N2EwYzdmNjE5YmFiMTIzZGFkIgogCi1TUkNfVVJJID0gImh0dHA6Ly9iaXRidWNrZXQub3JnL2VpZ2VuL2VpZ2VuL2dldC8ke1BWfS50YXIuYnoyO2Rvd25sb2FkZmlsZW5hbWU9JHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUNNYWtlTGlzdHMudHh0LWluc3RhbGwtRmluZEVpZ2VuMy5jbWFrZS1zY3JpcHQucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiOWUzYmZhYWFiM2RiMTgyNTNjZmQ4N2VhNjk3YjNhYjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzIyYTYzZDY3MmI3MGYzOWMyNzFjNWUyYTRhNDNiYTE0ZDEyMDE1Njc0MzMxNzkwNDE0ZmNiMTY3YzM1N2U1NSIKK1NSQ19VUkkgPSAiaHR0cDovL2JpdGJ1Y2tldC5vcmcvZWlnZW4vZWlnZW4vZ2V0LyR7UFZ9LnRhci5iejI7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gImE3YWFiOWY3NTgyNDliODZjOTMyMjFhZDQxN2ZiZTE4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRkMjU0YmViMGJhZmM2OTVkMGY2MmFlMWEyMjJmZjg1YjUyZGJhYTNhMTZmNzZlNzgxZGNlMjJkMGQyMGE0YTYiCiAKLVMgPSAiJHtXT1JLRElSfS9laWdlbi1laWdlbi0wNzEwNWY3MTI0ZjkiCitTID0gIiR7V09SS0RJUn0vZWlnZW4tZWlnZW4tNWEwMTU2ZTQwZmViIgogCiBpbmhlcml0IGNtYWtlCiAKIEZJTEVTXyR7UE59ID0gIiR7aW5jbHVkZWRpcn0gJHtsaWJkaXJ9IgotRklMRVNfJHtQTn0tZGV2ID0gIiR7ZGF0YWRpcn0vY21ha2UvTW9kdWxlcyAke2RhdGFkaXJ9L3BrZ2NvbmZpZyIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2RhdGFkaXJ9L2VpZ2VuMy9jbWFrZSAke2RhdGFkaXJ9L2NtYWtlL01vZHVsZXMgJHtkYXRhZGlyfS9wa2djb25maWciCiAKICMgJHtQTn0gaXMgZW1wdHkgc28gd2UgbmVlZCB0byB0d2VhayAtZGV2IGFuZCAtZGJnIHBhY2thZ2UgZGVwZW5kZW5jaWVzCiBSREVQRU5EU18ke1BOfS1kZXYgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2QuaW5jCnNpbWlsYXJpdHkgaW5kZXggNzIlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2QuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2QuaW5jCmluZGV4IGM1MDYwNTcuLmNkNzc1MDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2QuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZC5pbmMKQEAgLTUsMTEgKzUsNiBAQAogCiBTUkNfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL2xpYnMvbGliZ3Bpb2QvJHtCUH0udGFyLnh6IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNWY5ZDg1NTM1MmIxYTUyNzJjZjZmMWMyZTIwNjg5ZDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmRmZDZhZWI1NDRlOGI3YmFmNDg0YTA1YzlhZTBlNjcwMjJjMTA5MzYyYTQxZDg3MDA1MzkzMDQ2YjZiZWFjZiIKLQotUFYgPSAiMC4zLjEiCi0KIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwogCiAjIGVuYWJsZSB0b29scwpAQCAtMTgsNiArMTMsOSBAQAogUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLS1lbmFibGUtdGVzdHMsLS1kaXNhYmxlLXRlc3RzLGttb2QgdWRldiIKIFBBQ0tBR0VDT05GSUdbdG9vbHNdID0gIi0tZW5hYmxlLXRvb2xzLC0tZGlzYWJsZS10b29scywiCiAKLVBBQ0tBR0VTICs9ICIgJHtQTn0tdG9vbHMiCitQQUNLQUdFUyA9KyAiICR7UE59LXRvb2xzIgogCiBGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKKworUlJFQ09NTUVORFNfVE9PTFMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndG9vbHMnLCAnJHtQTn0tdG9vbHMnLCAnJyxkKX0iCitSUkVDT01NRU5EU18ke1BOfSArPSAiJHtSUkVDT01NRU5EU19UT09MU30iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmdwaW9kL2xpYmdwaW9kXzAuMy4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZF8wLjMuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWZiNjVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZF8wLjMuMy5iYgpAQCAtMCwwICsxLDQgQEAKK3JlcXVpcmUgbGliZ3Bpb2QuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyYWExZTFhODBjM2M5MTlhZTE0MmFiOWE1NWZiNTljYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNzczZTU1N2FmMWE0OTdmNzg2ODI1NDYyYTc3NmI3YmY5MDE2OGU2N2VlMGE1YmM1ZDI0NzNhNTY3NGRjMzhjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZF8xLjAuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2RfMS4wLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE0OTlmZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2RfMS4wLjEuYmIKQEAgLTAsMCArMSw0IEBACityZXF1aXJlIGxpYmdwaW9kLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiMmNhMGMzZWIxN2Q2OWUzNjdiNmY2YTEwOWNhODZlNDEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTcyOTI0MTk1MzY3ZjVmYjA0NWMwMjNkNjUzNDBjNGI3ZGZjODc2NDQ5OTUxNmJlNDQ2NTUzODY1MjA4ZGVkYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliaWlvL2xpYmlpb19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmlpby9saWJpaW9fZ2l0LmJiCmluZGV4IGQ2NmFjNTguLmJhMzgwZWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliaWlvL2xpYmlpb19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJpaW8vbGliaWlvX2dpdC5iYgpAQCAtNCwyMSArNCw0MSBAQAogTElDRU5TRSA9ICJMR1BMdjIuMSsiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9N2MxM2IzMzc2Y2VhMGNlNjhkMmQyZGEwYTFiM2E3MmMiCiAKLVNSQ1JFViA9ICIwOGY5NDdkNWU0MDYwMDI1OWJiNjk4YzNiOTU1MzhlOWYyYmZlY2MyIgotUFYgPSAiMC44K2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gImZhODI5NzRkOGJkMWZkZWQ3OGU2MzBhYjcxYTdkZWQxYjExZDBlMzMiCitQViA9ICIwLjE0K2dpdCR7U1JDUFZ9IgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYW5hbG9nZGV2aWNlc2luYy9saWJpaW8uZ2l0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2FuYWxvZ2RldmljZXNpbmMvbGliaWlvLmdpdDtwcm90b2NvbD1odHRwcyIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotREVQRU5EUyA9ICJmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgYXZhaGkgbGliYWlvIGxpYnVzYjEgbGlieG1sMiIKK2luaGVyaXQgY21ha2UgcHl0aG9ubmF0aXZlIHN5c3RlbWQKIAotaW5oZXJpdCBjbWFrZSBweXRob25uYXRpdmUKK0RFUEVORFMgPSAiIFwKKyAgICBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgbGliYWlvIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3plcm9jb25mJywgJ2F2YWhpJywgJycsIGQpfSBcCisiCisKK0VYVFJBX09FQ01BS0UgPSAiIFwKKyAgICAtRENNQUtFX0JVSUxEX1RZUEU9UmVsV2l0aERlYkluZm8gXAorICAgIC1EVURFVl9SVUxFU19JTlNUQUxMX0RJUj0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZCBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy1EV0lUSF9TWVNURU1EPU9OIC1EU1lTVEVNRF9VTklUX0lOU1RBTExfRElSPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0nLCAnJywgZCl9IFwKKyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIlVTQl9CQUNLRU5EIE5FVFdPUktfQkFDS0VORCIKKworUEFDS0FHRUNPTkZJR1tVU0JfQkFDS0VORF0gPSAiLURXSVRIX1VTQl9CQUNLRU5EPU9OLC1EV0lUSF9VU0JfQkFDS0VORD1PRkYsbGlidXNiMSxsaWJ4bWwyIgorUEFDS0FHRUNPTkZJR1tORVRXT1JLX0JBQ0tFTkRdID0gIi1EV0lUSF9ORVRXT1JLX0JBQ0tFTkQ9T04sLURXSVRIX05FVFdPUktfQkFDS0VORD1PRkYsbGlieG1sMiIKIAogUEFDS0FHRVMgPSsgIiR7UE59LWlpb2QgJHtQTn0tdGVzdHMgJHtQTn0tcHl0aG9uIgogCiBSREVQRU5EU18ke1BOfS1weXRob24gPSAiJHtQTn0gcHl0aG9uLWN0eXBlcyBweXRob24tc3RyaW5nb2xkIgogCi1GSUxFU18ke1BOfS1paW9kID0gIiR7c2JpbmRpcn0vaWlvZCIKK0ZJTEVTXyR7UE59LWlpb2QgPSAiIFwKKyAgICAke3NiaW5kaXJ9L2lpb2QgXAorICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vaWlvZC5zZXJ2aWNlIFwKKyIKIEZJTEVTXyR7UE59LXRlc3RzID0gIiR7YmluZGlyfSIKIEZJTEVTXyR7UE59LXB5dGhvbiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1paW9kIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LWlpb2QgPSAiaWlvZC5zZXJ2aWNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaWNyb2h0dHBkL2xpYm1pY3JvaHR0cGRfMC45LjU1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaWNyb2h0dHBkL2xpYm1pY3JvaHR0cGRfMC45LjU1LmJiCmluZGV4IGVlMzk5YTcuLjA5MzBhMjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWljcm9odHRwZC9saWJtaWNyb2h0dHBkXzAuOS41NS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm1pY3JvaHR0cGQvbGlibWljcm9odHRwZF8wLjkuNTUuYmIKQEAgLTExLDYgKzExLDggQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgcGtnY29uZmlnIGdldHRleHQKIAorQ0ZMQUdTICs9ICItcHRocmVhZCAtRF9SRUVOVFJBTlQiCisKIEVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXN0YXRpYyAtLXdpdGgtZ251dGxzPSR7U1RBR0lOR19MSUJESVJ9Ly4uLyIKIAogUEFDS0FHRUNPTkZJRyA/PSAiY3VybCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlib2wvbGlib2xfMC4zLjE4LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJvbC9saWJvbF8wLjMuMTguYmIKaW5kZXggNzRlMWVmMi4uZDdhZGIyYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJvbC9saWJvbF8wLjMuMTguYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJvbC9saWJvbF8wLjMuMTguYmIKQEAgLTQsNyArNCw3IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzkzYzA1NTBiZDMxNzNmNDUwNGIyY2JkODk5MWU1MGIiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5iYWxhYml0LmNvbS9kb3dubG9hZHMvZmlsZXMvbGlib2wvMC4zLyR7QlB9LnRhci5neiBcCitTUkNfVVJJID0gImh0dHA6Ly93d3cuYmFsYWJpdC5jb20vZG93bmxvYWRzL2xpYm9sLzAuMy8ke0JQfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLnBhdGNoIgogU1JDX1VSSVttZDVzdW1dID0gImNiYWRmNGI3ZWEyNzZkZmE4NWFjYzM4YTFjYzVmZjE3IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlkZTNiZjEzMjk3ZmY4ODJlMDJhMWU2ZTVmNmJmNzYwYTU0NGFmZjkyYTlkOGExY2Y0MzI4YTMyMDA1Y2VmZTciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNkbC10dGYvZmlsZXMvYXV0b21ha2VfZm9yZWlnbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic2RsLXR0Zi9maWxlcy9hdXRvbWFrZV9mb3JlaWduLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDViZDZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic2RsLXR0Zi9maWxlcy9hdXRvbWFrZV9mb3JlaWduLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotSW5kZXg6IFNETDJfdHRmLTIuMC4xNC9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFNETDJfdHRmLTIuMC4xNC5vcmlnL01ha2VmaWxlLmFtCi0rKysgU0RMMl90dGYtMi4wLjE0L01ha2VmaWxlLmFtCi1AQCAtMSw2ICsxLDggQEAKLSAjIE1ha2VmaWxlLmFtIGZvciB0aGUgU0RMIHRydWV0eXBlIGZvbnQgbG9hZGluZyBsaWJyYXJ5IGFuZCB2aWV3ZXIKLSBsaWJfTFRMSUJSQVJJRVMgPSBsaWJTREwyX3R0Zi5sYQotIAotK0FVVE9NQUtFX09QVElPTlMgPSBmb3JlaWduCi0rCi0gbGliU0RMMl90dGZpbmNsdWRlZGlyID0gJChpbmNsdWRlZGlyKS9TREwyCi0gbGliU0RMMl90dGZpbmNsdWRlX0hFQURFUlMgPQlcCi0gCVNETF90dGYuaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2ZpbGVzL3VzZS5wa2ctY29uZmlnLmZvci5mcmVldHlwZTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNkbC10dGYvbGlic2RsLXR0Zi91c2UucGtnLWNvbmZpZy5mb3IuZnJlZXR5cGUyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggODAlCmNvcHkgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNkbC10dGYvZmlsZXMvdXNlLnBrZy1jb25maWcuZm9yLmZyZWV0eXBlMi5wYXRjaApjb3B5IHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic2RsLXR0Zi9saWJzZGwtdHRmL3VzZS5wa2ctY29uZmlnLmZvci5mcmVldHlwZTIucGF0Y2gKaW5kZXggOGExMWY2Ni4uMTExNmMzNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2ZpbGVzL3VzZS5wa2ctY29uZmlnLmZvci5mcmVldHlwZTIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2xpYnNkbC10dGYvdXNlLnBrZy1jb25maWcuZm9yLmZyZWV0eXBlMi5wYXRjaApAQCAtMSwxNiArMSwyMSBAQAotZnJlZXR5cGUtY29uZmlnIHdhcyByZW1vdmVkIGZyb20gb2UtY29yZSBpbgorRnJvbSA4Y2YzMTgxOTdlZWE5MWJlYzYwNTczMDhiZWZiYjI5NDI2ZDY5MDE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitEYXRlOiBUaHUsIDIyIE1heSAyMDE0IDEwOjU5OjMzICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGZyZWV0eXBlLWNvbmZpZyB3YXMgcmVtb3ZlZCBmcm9tIG9lLWNvcmUgaW4KIAogY29tbWl0IDU4NzBiZDI3MmIwYjA3N2QwODI2ZmI5MDBiMjUxODg0YzFjMDUwNjEKLUF1dGhvcjogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci1EYXRlOiAgIFRodSBNYXkgMjIgMTA6NTk6MzMgMjAxNCArMDEwMAogCiAgICAgYmluY29uZmlnLWRpc2FibGVkOiBBZGQgY2xhc3MgYW5kIHVzZQogCistLS0KKyBjb25maWd1cmUuaW4gfCAzOCArKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQorCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCA0MDhlOGQ2Li41ZjllNzMwIDEwMDY0NAoraW5kZXggODY1MDc1ZS4uZDdhNWE4MSAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5pbgogKysrIGIvY29uZmlndXJlLmluCi1AQCAtODYsMzkgKzg2LDExIEBAIGNhc2UgIiRob3N0IiBpbgorQEAgLTkwLDM5ICs5MCwxMSBAQCBjYXNlICIkaG9zdCIgaW4KICBlc2FjCiAgQU1fQ09ORElUSU9OQUwoVVNFX1ZFUlNJT05fUkMsIHRlc3QgeCR1c2VfdmVyc2lvbl9yYyA9IHh0cnVlKQogIApAQCAtNTQsNCArNTksNCBAQAogKykKICAKICBkbmwgQ2hlY2sgZm9yIFNETAotIFNETF9WRVJTSU9OPTIuMC4wCisgU0RMX1ZFUlNJT049MS4yLjQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic2RsLXR0Zi9saWJzZGwyLXR0Zi9hdXRvbWFrZV9mb3JlaWduLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2xpYnNkbDItdHRmL2F1dG9tYWtlX2ZvcmVpZ24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODcxZTZlOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic2RsLXR0Zi9saWJzZGwyLXR0Zi9hdXRvbWFrZV9mb3JlaWduLnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKK0Zyb20gZjljNGFkM2ExNzFkNjc2ZTM4MThiOGY2ODk3ZjMyNWNjZjBiMjIwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDkgTWF5IDIwMTcgMDA6NTc6MTAgLTA3MDAKKworLS0tCisgTWFrZWZpbGUuYW0gfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggODE2NmQ5MS4uOGUwNWU0OSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTIsNiArMiw4IEBACisgCisgbGliX0xUTElCUkFSSUVTID0gbGliU0RMMl90dGYubGEKKyAKKytBVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbgorKworIGxpYlNETDJfdHRmaW5jbHVkZWRpciA9ICQoaW5jbHVkZWRpcikvU0RMMgorIGxpYlNETDJfdHRmaW5jbHVkZV9IRUFERVJTID0JXAorIAlTRExfdHRmLmgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic2RsLXR0Zi9maWxlcy91c2UucGtnLWNvbmZpZy5mb3IuZnJlZXR5cGUyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2xpYnNkbDItdHRmL3VzZS5wa2ctY29uZmlnLmZvci5mcmVldHlwZTIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2ZpbGVzL3VzZS5wa2ctY29uZmlnLmZvci5mcmVldHlwZTIucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic2RsLXR0Zi9saWJzZGwyLXR0Zi91c2UucGtnLWNvbmZpZy5mb3IuZnJlZXR5cGUyLnBhdGNoCmluZGV4IDhhMTFmNjYuLjFkZmJlYzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic2RsLXR0Zi9maWxlcy91c2UucGtnLWNvbmZpZy5mb3IuZnJlZXR5cGUyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic2RsLXR0Zi9saWJzZGwyLXR0Zi91c2UucGtnLWNvbmZpZy5mb3IuZnJlZXR5cGUyLnBhdGNoCkBAIC0xLDEzICsxLDE4IEBACi1mcmVldHlwZS1jb25maWcgd2FzIHJlbW92ZWQgZnJvbSBvZS1jb3JlIGluCitGcm9tIGU2ZDJjMGUxMzA4MTFjMTViNWY1Y2MxMDIyMWZhZTE4MmNiODYwOWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK0RhdGU6IFRodSwgMjIgTWF5IDIwMTQgMTA6NTk6MzMgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gZnJlZXR5cGUtY29uZmlnIHdhcyByZW1vdmVkIGZyb20gb2UtY29yZSBpbgogCiBjb21taXQgNTg3MGJkMjcyYjBiMDc3ZDA4MjZmYjkwMGIyNTE4ODRjMWMwNTA2MQotQXV0aG9yOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KLURhdGU6ICAgVGh1IE1heSAyMiAxMDo1OTozMyAyMDE0ICswMTAwCiAKICAgICBiaW5jb25maWctZGlzYWJsZWQ6IEFkZCBjbGFzcyBhbmQgdXNlCiAKKy0tLQorIGNvbmZpZ3VyZS5pbiB8IDM4ICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCisKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDQwOGU4ZDYuLjVmOWU3MzAgMTAwNjQ0CitpbmRleCA5YjM2ZTE1Li5mMzAwY2FlIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmluCiArKysgYi9jb25maWd1cmUuaW4KIEBAIC04NiwzOSArODYsMTEgQEAgY2FzZSAiJGhvc3QiIGluCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbS8wMDAxLXRlYW1fYmFzaWNfdGVzdC5weS1kaXNhYmxlLVJlZEhhdC1zcGVjaWZpYy10ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW0vMDAwMS10ZWFtX2Jhc2ljX3Rlc3QucHktZGlzYWJsZS1SZWRIYXQtc3BlY2lmaWMtdGVzdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjhhNTVmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW0vMDAwMS10ZWFtX2Jhc2ljX3Rlc3QucHktZGlzYWJsZS1SZWRIYXQtc3BlY2lmaWMtdGVzdC5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDAwZGViZTZiZDRjZjVhMzEzM2E4ZmJhYWI3NWY3NDQ3YTM5ZmE2NTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTIgQXByIDIwMTggMDE6NTQ6MTUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVhbV9iYXNpY190ZXN0LnB5OiBkaXNhYmxlIFJlZEhhdCBzcGVjaWZpYyB0ZXN0CisKK1RoZSB0ZXN0IF9ydW5fdGVhbWRfaW5pdHNjcmlwdHMoKSBpcyBmb3IgUmVkSGF0IGlmY2ZnIHNjcmlwdHMgd2hpY2ggYXJlCitpbmNvbXBhdGlibGUgd2l0aCBPRToKKyAgL2V0Yy9zeXNjb25maWcvbmV0d29yay1zY3JpcHRzL2lmY2ZnLSoKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBTcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+CistLS0KKyBzY3JpcHRzL3RlYW1fYmFzaWNfdGVzdC5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NjcmlwdHMvdGVhbV9iYXNpY190ZXN0LnB5IGIvc2NyaXB0cy90ZWFtX2Jhc2ljX3Rlc3QucHkKK2luZGV4IGIwNWJlOWUuLmZhYWJkMTggMTAwNzU1CistLS0gYS9zY3JpcHRzL3RlYW1fYmFzaWNfdGVzdC5weQorKysrIGIvc2NyaXB0cy90ZWFtX2Jhc2ljX3Rlc3QucHkKK0BAIC0xNzEsNyArMTcxLDcgQEAgVEVBTV9QT1JUX0NPTkZJRz0neyJwcmlvIjogMTB9JworICAgICAgICAgdHJ5OgorICAgICAgICAgICAgIGZvciBtb2RlX25hbWUgaW4gc2VsZi5fdGVhbV9tb2RlczoKKyAgICAgICAgICAgICAgICAgc2VsZi5fcnVuX29uZV9tb2RlKG1vZGVfbmFtZSkKKy0gICAgICAgICAgICBzZWxmLl9ydW5fdGVhbWRfaW5pdHNjcmlwdHMoKQorKyAgICAgICAgICAgICNzZWxmLl9ydW5fdGVhbWRfaW5pdHNjcmlwdHMoKQorICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICBjbWRfZXhlYygibW9kcHJvYmUgLXIgdGVhbV9tb2RlX2xvYWRiYWxhbmNlIHRlYW1fbW9kZV9yb3VuZHJvYmluIHRlYW1fbW9kZV9hY3RpdmViYWNrdXAgdGVhbV9tb2RlX2Jyb2FkY2FzdCB0ZWFtIik7CisgCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbS9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbS9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJhNWFjZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRob24gJChkaXJuYW1lICQwKS90ZWFtX2Jhc2ljX3Rlc3QucHkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtXzEuMjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbV8xLjI3LmJiCmluZGV4IDMyMjI3MDAuLjQ0MjU5MmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtXzEuMjcuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW1fMS4yNy5iYgpAQCAtMTAsNiArMTAsOCBAQAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2pwaXJrby9saWJ0ZWFtIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtc2VsZWN0LmgtZm9yLWZkX3NldC1kZWZpbml0aW9uLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItdGVhbWQtUmUtYWRqdXN0LWluY2x1ZGUtaGVhZGVyLW9yZGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVhbV9iYXNpY190ZXN0LnB5LWRpc2FibGUtUmVkSGF0LXNwZWNpZmljLXRlc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICAgICAgICAgICAgIgogU1JDUkVWID0gIjkxYTkyOGE1NmE1MDFkYWFjNWNlOGIzYzE2YmQ5OTQzNjYxZjFkMTYiCiAKQEAgLTE4LDcgKzIwLDcgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHRlc3QKIAogRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYnRlYW0ke1NPTElCU30gXAogIgpAQCAtMzMsNCArMzUsOCBAQAogIgogCiBSREVQRU5EU18ke1BOfS11dGlscyA9ICJiYXNoIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAicHl0aG9uIgogCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWluc3RhbGwgJHtTfS9zY3JpcHRzL3RlYW1fYmFzaWNfdGVzdC5weSAke0R9JHtQVEVTVF9QQVRIfS8KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtbW9uZ28tQWRkLXVzaW5nLXN0ZC1zdHJpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbmdvZGIvbW9uZ29kYi8wMDAxLW1vbmdvLUFkZC11c2luZy1zdGQtc3RyaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTE3ZDUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtbW9uZ28tQWRkLXVzaW5nLXN0ZC1zdHJpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi1Gcm9tIDVmZGVjOTU5MjI4NWY1OTc2MzQ1ZmJjY2IzZDA3ZmFlMTI0NWFiNTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAyIEF1ZyAyMDE3IDE1OjQxOjIyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1vbmdvOiBBZGQgdXNpbmcgc3RkOjpzdHJpbmcKLQotVGhpcyBpcyBuZWVkZWQgd2l0aCBsYXRlc3QgY2xhbmcKLUZpeGVzCi1zcmMvbW9uZ28vZGIvZGJ3ZWJzZXJ2ZXIuY3BwOjIwNjoyMzogZXJyb3I6IHVzZSBvZiB1bmRlY2xhcmVkIGlkZW50aWZpZXIgJ3N0cmluZyc7IGRpZCB5b3UgbWVhbiAnU3RyaW5nJz8KLSAgICAgICAgc3RhdGljIHZlY3RvcjxzdHJpbmc+IGNvbW1hbmRzOwotICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fgotICAgICAgICAgICAgICAgICAgICAgIFN0cmluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL21vbmdvL2RiL2Rid2Vic2VydmVyLmNwcCAgICAgICAgICAgICB8IDEgKwotIHNyYy9tb25nby9kYi9tYXRjaGVyL2V4cHJlc3Npb25fbGVhZi5jcHAgfCAyICsrCi0gc3JjL21vbmdvL2RiL3JlcGwvbWFzdGVyX3NsYXZlLmNwcCAgICAgICB8IDEgKwotIHNyYy9tb25nby91dGlsL25ldC9taW5pd2Vic2VydmVyLmNwcCAgICAgfCAxICsKLSA0IGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL21vbmdvL2RiL2Rid2Vic2VydmVyLmNwcCBiL3NyYy9tb25nby9kYi9kYndlYnNlcnZlci5jcHAKLWluZGV4IGIyMDJlMDUwMGIuLjAyNTU2MTM1MjQgMTAwNjQ0Ci0tLS0gYS9zcmMvbW9uZ28vZGIvZGJ3ZWJzZXJ2ZXIuY3BwCi0rKysgYi9zcmMvbW9uZ28vZGIvZGJ3ZWJzZXJ2ZXIuY3BwCi1AQCAtNjcsNiArNjcsNyBAQCBuYW1lc3BhY2UgbW9uZ28gewotIHVzaW5nIHN0ZDo6bWFwOwotIHVzaW5nIHN0ZDo6c3RyaW5nc3RyZWFtOwotIHVzaW5nIHN0ZDo6dmVjdG9yOwotK3VzaW5nIHN0ZDo6c3RyaW5nOwotIAotIHVzaW5nIG5hbWVzcGFjZSBodG1sOwotIAotZGlmZiAtLWdpdCBhL3NyYy9tb25nby9kYi9tYXRjaGVyL2V4cHJlc3Npb25fbGVhZi5jcHAgYi9zcmMvbW9uZ28vZGIvbWF0Y2hlci9leHByZXNzaW9uX2xlYWYuY3BwCi1pbmRleCBkNTYyYmZmMTQxLi40ZDkzMTk4NWUyIDEwMDY0NAotLS0tIGEvc3JjL21vbmdvL2RiL21hdGNoZXIvZXhwcmVzc2lvbl9sZWFmLmNwcAotKysrIGIvc3JjL21vbmdvL2RiL21hdGNoZXIvZXhwcmVzc2lvbl9sZWFmLmNwcAotQEAgLTQ0LDYgKzQ0LDggQEAKLSAjaW5jbHVkZSAibW9uZ28vc3RkeC9tZW1vcnkuaCIKLSAjaW5jbHVkZSAibW9uZ28vdXRpbC9tb25nb3V0aWxzL3N0ci5oIgotIAotK3VzaW5nIHN0ZDo6c3RyaW5nOwotKwotIG5hbWVzcGFjZSBtb25nbyB7Ci0gCi0gU3RhdHVzIExlYWZNYXRjaEV4cHJlc3Npb246OnNldFBhdGgoU3RyaW5nRGF0YSBwYXRoKSB7Ci1kaWZmIC0tZ2l0IGEvc3JjL21vbmdvL2RiL3JlcGwvbWFzdGVyX3NsYXZlLmNwcCBiL3NyYy9tb25nby9kYi9yZXBsL21hc3Rlcl9zbGF2ZS5jcHAKLWluZGV4IDA1ZmFhZDEyNTkuLmVhMjVkNzE1MWIgMTAwNjQ0Ci0tLS0gYS9zcmMvbW9uZ28vZGIvcmVwbC9tYXN0ZXJfc2xhdmUuY3BwCi0rKysgYi9zcmMvbW9uZ28vZGIvcmVwbC9tYXN0ZXJfc2xhdmUuY3BwCi1AQCAtNzgsNiArNzgsNyBAQCB1c2luZyBzdGQ6OmVuZGw7Ci0gdXNpbmcgc3RkOjptYXg7Ci0gdXNpbmcgc3RkOjptaW47Ci0gdXNpbmcgc3RkOjpzZXQ7Ci0rdXNpbmcgc3RkOjpzdHJpbmc7Ci0gdXNpbmcgc3RkOjpzdHJpbmdzdHJlYW07Ci0gdXNpbmcgc3RkOjp1bmlxdWVfcHRyOwotIHVzaW5nIHN0ZDo6dmVjdG9yOwotZGlmZiAtLWdpdCBhL3NyYy9tb25nby91dGlsL25ldC9taW5pd2Vic2VydmVyLmNwcCBiL3NyYy9tb25nby91dGlsL25ldC9taW5pd2Vic2VydmVyLmNwcAotaW5kZXggNWY0MTY1ZDQyZi4uMjM5NzIwYzM0OSAxMDA2NDQKLS0tLSBhL3NyYy9tb25nby91dGlsL25ldC9taW5pd2Vic2VydmVyLmNwcAotKysrIGIvc3JjL21vbmdvL3V0aWwvbmV0L21pbml3ZWJzZXJ2ZXIuY3BwCi1AQCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgbW9uZ28gewotIAotIHVzaW5nIHN0ZDo6c2hhcmVkX3B0cjsKLSB1c2luZyBzdGQ6OnN0cmluZ3N0cmVhbTsKLSt1c2luZyBzdGQ6OnN0cmluZzsKLSB1c2luZyBzdGQ6OnZlY3RvcjsKLSAKLSBNaW5pV2ViU2VydmVyOjpNaW5pV2ViU2VydmVyKGNvbnN0IHN0cmluZyYgbmFtZSwgY29uc3Qgc3RyaW5nJiBpcCwgaW50IHBvcnQsIFNlcnZpY2VDb250ZXh0KiBjdHgpCi0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25hbm8vbmFub18yLjcuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmFuby9uYW5vXzIuNy40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWYzOTNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmFuby9uYW5vXzIuNy40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1pbmNsdWRlIG5hbm8uaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjMDExYzdmOWU0N2NiMWRhMjdkNGU3Y2M4YjU2ZWM2YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NTIxNzA2NDMwMzllMmM5NWE0MzNkZTM1N2YwYzcwYThjNGM0YzU2MWE5MGE3ZTcyNTlhNjNlMjI1YjY1OWI5IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uYW5vL25hbm9fMi45LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25hbm8vbmFub18yLjkuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmIwY2YyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uYW5vL25hbm9fMi45LjMuYmIKQEAgLTAsMCArMSw0IEBACitpbmNsdWRlIG5hbm8uaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZGQzN2YwMTBkNmE5ODViZjBlNWY4ZWQwOTFmZjkxOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NzgzYmNmZDRiMmQ1ZGMwYmY2NGQ0YmQwN2IxYTE5ZTdiYTNjOTFkYTg4MWE0MjQ5NzcyYTM2Yjk3MmQ0MDEyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uZTEwL25lMTBfMS4yLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25lMTAvbmUxMF8xLjIuMS5iYgppbmRleCBlNWI1MGNlLi43NmUwNzQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25lMTAvbmUxMF8xLjIuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25lMTAvbmUxMF8xLjIuMS5iYgpAQCAtMjksNyArMjksNyBAQAogICAgICAgICBkLnNldFZhcignTkUxMF9UQVJHRVRfQVJDSCcsICdhYXJjaDY0JykKICAgICAgICAgYmIuZGVidWcoMiwgJ0J1aWxkaW5nIE5lMTAgZm9yIGFhcmNoNjQnKQogICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJJbmNvbXBhdGlibGUgd2l0aCBhcmNocyBvdGhlciB0aGFuIGFybXY3IGFuZCBhYXJjaDY0IikKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiSW5jb21wYXRpYmxlIHdpdGggYXJjaHMgb3RoZXIgdGhhbiBhcm12NyBhbmQgYWFyY2g2NCIpCiB9CiAKIGRvX2luc3RhbGwoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25lb24vbmVvbi9wa2djb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25lb24vbmVvbi9wa2djb25maWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM5ZGJhOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmVvbi9uZW9uL3BrZ2NvbmZpZy5wYXRjaApAQCAtMCwwICsxLDE1IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCisKKy0tLQorIG5lb24ucGMuaW4gfCAgICAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKKy0tLSBuZW9uLTAuMzAuMS5vcmlnL25lb24ucGMuaW4KKysrKyBuZW9uLTAuMzAuMS9uZW9uLnBjLmluCitAQCAtNyw1ICs3LDUgQEAgTmFtZTogbmVvbgorIERlc2NyaXB0aW9uOiBIVFRQL1dlYkRBViBjbGllbnQgbGlicmFyeQorIFZlcnNpb246IEBORU9OX1ZFUlNJT05ACisgTGliczogLUwke2xpYmRpcn0gLWxuZW9uIEBORU9OX1BDX0xJQlNACistTGlicy5wcml2YXRlOiBATkVPTl9MSUJTQAorK0xpYnMucHJpdmF0ZTogLUwke2xpYmRpcn0gLWx6IC1sZ2NyeXB0IC1sZ3BnLWVycm9yIC1sZXhwYXQgLWxnbnV0bHMKKyBDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9uZW9uIEBORU9OX0NGTEFHU0AKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmVvbi9uZW9uXzAuMzAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmVvbi9uZW9uXzAuMzAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMGI3OWY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uZW9uL25lb25fMC4zMC4yLmJiCkBAIC0wLDAgKzEsMzggQEAKK1NVTU1BUlkgPSAiQW4gSFRUUCBhbmQgV2ViREFWIGNsaWVudCBsaWJyYXJ5IHdpdGggYSBDIGludGVyZmFjZSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cud2ViZGF2Lm9yZy9uZW9uLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9DT1BZSU5HLkxJQjttZDU9ZjMwYTk3MTZlZjM3NjJlMzQ2N2EyZjYyYmY3OTBmMGEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL25lX3V0aWxzLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9MmNhY2E2MDk1MzhlZGRhYTZmNmFkZjEyMGEyMTgwMzciCisKK1NSQ19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL24vbmVvbjI3L25lb24yN18ke1BWfS5vcmlnLnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImUyOGQ3N2JmMTQwMzJkN2Y1MDQ2YjM5MzA3MDRlZjQxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRiMGJkOGNkZWMzMjliNDhmNTNhNmYwMDE5OWM5MmQ1YmE0MGIwZjAxNWIxNTM3MThkMWIxNWQzZDk2N2ZiY2EiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBsaWJfcGFja2FnZSBwa2djb25maWcKKworIyBFbmFibGUgZ251dGxzIG9yIG9wZW5zc2wsIG5vdCBib3RoCitQQUNLQUdFQ09ORklHID89ICJleHBhdCBnbnV0bHMgbGlicHJveHkgd2ViZGF2IHpsaWIiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJleHBhdCBnbnV0bHMgd2ViZGF2IHpsaWIiCisKK1BBQ0tBR0VDT05GSUdbZXhwYXRdID0gIi0td2l0aC1leHBhdCwtLXdpdGhvdXQtZXhwYXQsZXhwYXQiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLXNzbD1nbnV0bHMsLGdudXRscyIKK1BBQ0tBR0VDT05GSUdbZ3NzYXBpXSA9ICItLXdpdGgtZ3NzYXBpLC0td2l0aG91dC1nc3NhcGksa3JiNSIKK1BBQ0tBR0VDT05GSUdbbGlicHJveHldID0gIi0td2l0aC1saWJwcm94eSwtLXdpdGhvdXQtbGlicHJveHksbGlicHJveHkiCitQQUNLQUdFQ09ORklHW2xpYnhtbDJdID0gIi0td2l0aC1saWJ4bWwyLC0td2l0aG91dC1saWJ4bWwyLGxpYnhtbDIiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1zc2w9b3BlbnNzbCwsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbd2ViZGF2XSA9ICItLWVuYWJsZS13ZWJkYXYsLS1kaXNhYmxlLXdlYmRhdiwiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIiCisKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtc2hhcmVkIgorCitkb19jb21waWxlX2FwcGVuZCgpIHsKKyAgICBvZV9ydW5tYWtlIC1DIHRlc3QKK30KKworQklOQ09ORklHID0gIiR7YmluZGlyfS9uZW9uLWNvbmZpZyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25naHR0cDIvbmdodHRwMl8xLjI2LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25naHR0cDIvbmdodHRwMl8xLjI2LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNmIxMGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uZ2h0dHAyL25naHR0cDJfMS4yNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotU1VNTUFSWSA9ICJIVFRQLzIgQyBMaWJyYXJ5IGFuZCB0b29scyIKLUhPTUVQQUdFID0gImh0dHBzOi8vbmdodHRwMi5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotCi1ERVBFTkRTID0gInBrZ2NvbmZpZyBjdW5pdCB6bGliIG9wZW5zc2wgbGlieG1sMiBqYW5zc29uIGMtYXJlcyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbmdodHRwMi9uZ2h0dHAyL3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS9uZ2h0dHAyLSR7UFZ9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiOTI2ZjA3YWQzYjUwZjM4ZjdkODkzNWNlZDA0NzE2Y2YiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGRmNDIyOWY0MTIzYjVhYTk2ZTgzNGViY2ZkZmZlOTU0ZTkzZDk4NmYwMjUyZmQxMDEyM2Q1MGM2ZjAxMDk4MyIKLQotaW5oZXJpdCBjbWFrZSBweXRob25uYXRpdmUgcHl0aG9uLWRpcgotCi1FWFRSQV9PRUNNQUtFID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9maWxlcy92bXRvb2xzZC5pbml0IGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL2ZpbGVzL3ZtdG9vbHNkLmluaXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgyODA0NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9maWxlcy92bXRvb2xzZC5pbml0CkBAIC0wLDAgKzEsNjYgQEAKKyMhL2Jpbi9zaAorIworIyAgIHZtdG9vbHNkICAgICAgICAgIFN0YXJ0L3N0b3AgdGhlIHZtd2FyZSB0b29scyBkYWVtb24KKyMKKyMgY2hrY29uZmlnOiAgMjM0NSA5MCA2MAorIyBkZXNjcmlwdGlvbjogdm10b29sc2QgaXMgYSBkYWVtb24gdGhhdCBzdGFydHMgdXAuICBmb3Igc29tZSByZWFzb24sIGl0CisjICAgICAgICAgICAgICBkb2Vzbid0IGluY2x1ZGUgYSBzeXN2IGluaXQgc3RhcnR1cCBmaWxlIGluIHRoZSBsYXRlc3QgcmVsZWFzZS4KKyMgICAgICAgICAgICAgIHNvIGkgaGF2ZSB0byB3cml0ZSB0aGlzCisjCisKKyMjIyBCRUdJTiBJTklUIElORk8KKyMgUHJvdmlkZXM6IHZtdG9vbHNkCisjIFJlcXVpcmVkLVN0YXJ0OiAkbG9jYWxfZnMgJHN5c2xvZworIyBSZXF1aXJlZC1TdG9wOiAkbG9jYWxfZnMgJHN5c2xvZworIyBEZWZhdWx0LVN0YXJ0OiAyMzQ1CisjIERlZmF1bHQtU3RvcDogOTAKKyMgU2hvcnQtRGVzY3JpcHRpb246IFJ1biB2bXdhcmUgdG9vbHMgZGFlbW9uCisjIyMgRU5EIElOSVQgSU5GTworCitQQVRIPS9zYmluOi9iaW46L3Vzci9zYmluOi91c3IvYmluCitEQUVNT049L3Vzci9iaW4vdm10b29sc2QKK05BTUU9dm10b29sc2QKK0RFU0M9InZtd2FyZSB0b29scyBkYWVtb24iCitWTVRPT0xTREFSR1M9IiAtYiAvdmFyL3J1bi92bXRvb2xzZC5waWQgIgorUkVUVkFMPSIxIgorCisjIHNvdXJjZSBmdW5jdGlvbiBsaWJyYXJ5CisuIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucworCit0ZXN0IC1mICREQUVNT04gfHwgZXhpdCAwCisKKworY2FzZSAiJDEiIGluCisgIHN0YXJ0KQorICAgIGVjaG8gLW4gIlN0YXJ0aW5nIHZtd2FyZSB0b29scyBkYWVtb246ICIKKyAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1leGVjICREQUVNT04gLS0gJFZNVE9PTFNEQVJHUworICAgIFJFVFZBTD0kPworICAgIGlmIFsgJFJFVFZBTCAtZXEgMCBdIDsgdGhlbgorICAgICAgICBlY2hvICJPSyIKKyAgICBlbHNlCisgICAgICAgIGVjaG8gIkZBSUwiCisgICAgZmkKKyAgICA7OworICBzdG9wKQorICAgIGVjaG8gLW4gIlN0b3BwaW5nIHZtd2FyZSB0b29scyBkYWVtb246ICIKKyAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLS1xdWlldCAtLXBpZGZpbGUgL3Zhci9ydW4vdm10b29sc2QucGlkCisgICAgUkVUVkFMPSQ/CisgICAgaWYgWyAkUkVUVkFMIC1lcSAwIF0gOyB0aGVuCisgICAgICAgIGVjaG8gIk9LIgorICAgIGVsc2UKKyAgICAgICAgZWNobyAiRkFJTCIKKyAgICBmaQorICAgIDs7CisgIHN0YXR1cykKKyAgICBzdGF0dXMgdm10b29sc2QKKyAgICBleGl0ICQ/CisgICAgOzsKKyAgcmVzdGFydCkKKyAgICAkMCBzdG9wICYmIHNsZWVwIDEgJiYgJDAgc3RhcnQKKyAgICA7OworICAqKQorICAgIGVjaG8gIlVzYWdlOiAvZXRjL2luaXQuZC92bXRvb2xzZCB7c3RhcnR8c3RvcHxzdGF0dXN8cmVzdGFydH0iCisgICAgZXhpdCAxCitlc2FjCisKK2V4aXQgJFJFVFZBTApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHNfMTAuMS41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHNfMTAuMS41LmJiCmluZGV4IDgxZThlOTYuLmMzMmQyYzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzXzEwLjEuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29sc18xMC4xLjUuYmIKQEAgLTI0LDYgKzI0LDcgQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS92bXdhcmUvb3Blbi12bS10b29scy5naXQ7cHJvdG9jb2w9aHR0cHMgXAogICAgICAgICAgICBmaWxlOi8vdG9vbHMuY29uZiBcCiAgICAgICAgICAgIGZpbGU6Ly92bXRvb2xzZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3ZtdG9vbHNkLmluaXQgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZG9uLXQtdXNlLWRuZXQtY29uZmlnLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItYWRkLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLWFzc3VtcHRpb25zLWFib3V0LWdsaWJjLWJlaW5nLW9ubHktbGliYy1pbXBsZS5wYXRjaCBcCkBAIC01MCw3ICs1MSw3IEBACiAjIG9wZW4tdm0tdG9vbHMgaXMgc3VwcG9ydGVkIG9ubHkgb24geDg2LgogQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjQuKnxpLjg2LiopLWxpbnV4JwogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAoraW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgdXBkYXRlLXJjLmQKIAogU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInZtdG9vbHNkLnNlcnZpY2UiCiAKQEAgLTg1LDggKzg2LDE0IEBACiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogICAgIGxuIC1zZiAke3NiaW5kaXJ9L21vdW50LnZtaGdmcyAke0R9L3NiaW4vbW91bnQudm1oZ2ZzCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSAke0R9JHtzeXNjb25mZGlyfS92bXdhcmUtdG9vbHMKLSAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9Lyouc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdm13YXJlLXRvb2xzCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9Lyouc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGVsc2UKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vdm10b29sc2QuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdm10b29sc2QKKyAgICBmaQogICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Rvb2xzLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdm13YXJlLXRvb2xzL3Rvb2xzLmNvbmYKIH0KIApAQCAtOTUsNiArMTAyLDEwIEBACiAgICAgZXhwb3J0IENVU1RPTV9ETkVUX0xJQlM9LUwke1NUQUdJTkdfTElCRElSfS9saWJkbmV0LnNvCiB9CiAKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0iCitJTklUU0NSSVBUX05BTUVfJHtQTn0gPSAidm10b29sc2QiCitJTklUU0NSSVBUX1BBUkFNU18ke1BOfSA9ICJzdGFydCA5MCAyIDMgNCA1IC4gc3RvcCA2MCAwIDEgNiAuIgorCiBweXRob24oKSB7CiAgICAgaWYgJ25ldHdvcmtpbmctbGF5ZXInIG5vdCBpbiBkLmdldFZhcignQkJGSUxFX0NPTExFQ1RJT05TJykuc3BsaXQoKSBvciBcCiAJJ2ZpbGVzeXN0ZW1zLWxheWVyJyBub3QgaW4gZC5nZXRWYXIoJ0JCRklMRV9DT0xMRUNUSU9OUycpLnNwbGl0KCk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdC9vcGVuY3RfMC42LjIwLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Qvb3BlbmN0XzAuNi4yMC5iYgppbmRleCBjN2Q3MjAzLi45MTMyOTBjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdC9vcGVuY3RfMC42LjIwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN0L29wZW5jdF8wLjYuMjAuYmIKQEAgLTI1LDcgKzI1LDcgQEAKIExJQ0VOU0UgPSAiTEdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xHUEwtMi4xO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSIKIAotaW5oZXJpdCAke0BiYi51dGlscy5maWx0ZXIoJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXInLCAnc3lzdGVtZCcsIGQpfQoraW5oZXJpdCBzeXN0ZW1kCiBTWVNURU1EX1NFUlZJQ0VfJHtQTn0gKz0gIm9wZW5jdC5zZXJ2aWNlICIKIFNZU1RFTURfQVVUT19FTkFCTEUgPSAiZW5hYmxlIgogCkBAIC03NywxMCArNzcsOCBAQAogICAgIGluc3RhbGwgLURwbSA3NTUgJHtXT1JLRElSfS9vcGVuY3QuaW5pdCAke0R9L2V0Yy9pbml0LmQvb3BlbmN0CiAgICAgaW5zdGFsbCAtRHBtIDY0NCAke1dPUktESVJ9L29wZW5jdC5zeXNjb25maWcgJHtEfS9ldGMvc3lzY29uZmlnL29wZW5jdAogCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L29wZW5jdC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGZpCisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L29wZW5jdC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQogCiAgICAgc289JChmaW5kICR7RH0gLW5hbWUgXCouc28gfCBzZWQgInN8XiR7RH18fCIpCiAgICAgc2VkIC1pIC1lICdzfFxcKExJQlBBVEhcXHMqXFwpLip8XFwxJHNvfCcgZXRjL3JlYWRlci5jb25mCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvYWxyZWFkeS1leGlzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvYWxyZWFkeS1leGlzdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmUyNGYyZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi9hbHJlYWR5LWV4aXN0cy5wYXRjaApAQCAtMCwwICsxLDM5NCBAQAorRnJvbSBlNGJmMTQ4Y2RkZjI3NzgzNGU1N2M5YWZlZWM4ZGFmZjgzNzhhNjU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIyIE5vdiAyMDE3IDE1OjI3OjA3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeDogRmlsZSBhbHJlYWR5IGV4aXN0cyBpbiBkYXRhYmFzZTogY2FmZmUucHJvdG8KKworRml4ZXMgZXJyb3Igd2hlbiBpbXBvcnRpbmcgcHl0aG9uIGN2CisKK1Vwc3RyZWFtLXN0YXR1czogQmFja3BvcnQgaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3YvcHVsbC8xMDA5MgorU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUBnbWFpbC5jb20+CistLS0KKyBtb2R1bGVzL2Rubi9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2ICsrKy0tLQorIG1vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pbXBvcnRlci5jcHAgICAgICAgICAgICAgICAgICB8IDEgLQorIG1vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pby5jcHAgICAgICAgICAgICAgICAgICAgICAgICB8IDEgLQorIG1vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pby5ocHAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBtb2R1bGVzL2Rubi9zcmMvY2FmZmUve2NhZmZlLnByb3RvID0+IG9wZW5jdi1jYWZmZS5wcm90b30gfCAwCisgNSBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisgcmVuYW1lIG1vZHVsZXMvZG5uL3NyYy9jYWZmZS97Y2FmZmUucHJvdG8gPT4gb3BlbmN2LWNhZmZlLnByb3RvfSAoMTAwJSkKKworZGlmZiAtLWdpdCBhL21vZHVsZXMvZG5uL0NNYWtlTGlzdHMudHh0IGIvbW9kdWxlcy9kbm4vQ01ha2VMaXN0cy50eHQKK2luZGV4IGM2MzI5YTc0MjI2My4uOGVmMDBlZjk4M2ZmIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9kbm4vQ01ha2VMaXN0cy50eHQKKysrKyBiL21vZHVsZXMvZG5uL0NNYWtlTGlzdHMudHh0CitAQCAtNTUsMTMgKzU1LDEzIEBAIG9jdl93YXJuaW5nc19kaXNhYmxlKENNQUtFX0NYWF9GTEFHUworIAorIGlmKFBST1RPQlVGX1VQREFURV9GSUxFUykKKyAgIGZpbGUoR0xPQiBwcm90b19maWxlcyBzcmMvdGVuc29yZmxvdy8qLnByb3RvKQorLSAgbGlzdChBUFBFTkQgcHJvdG9fZmlsZXMgc3JjL2NhZmZlL2NhZmZlLnByb3RvKQorKyAgbGlzdChBUFBFTkQgcHJvdG9fZmlsZXMgc3JjL2NhZmZlL29wZW5jdi1jYWZmZS5wcm90bykKKyAgIFBST1RPQlVGX0dFTkVSQVRFX0NQUChQcm90b2J1Zl9IRFJTIFByb3RvYnVmX1NSQ1MgJHtwcm90b19maWxlc30pCisgZWxzZSgpCisgICBmaWxlKEdMT0IgZndfc3JjcyAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vbWlzYy90ZW5zb3JmbG93LyouY2MpCisgICBmaWxlKEdMT0IgZndfaGRycyAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vbWlzYy90ZW5zb3JmbG93LyouaCkKKy0gIGxpc3QoQVBQRU5EIGZ3X3NyY3MgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L21pc2MvY2FmZmUvY2FmZmUucGIuY2MpCistICBsaXN0KEFQUEVORCBmd19oZHJzICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9taXNjL2NhZmZlL2NhZmZlLnBiLmgpCisrICBsaXN0KEFQUEVORCBmd19zcmNzICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9taXNjL2NhZmZlL29wZW5jdi1jYWZmZS5wYi5jYykKKysgIGxpc3QoQVBQRU5EIGZ3X2hkcnMgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L21pc2MvY2FmZmUvb3BlbmN2LWNhZmZlLnBiLmgpCisgICBsaXN0KEFQUEVORCBQcm90b2J1Zl9TUkNTICR7Zndfc3Jjc30pCisgICBsaXN0KEFQUEVORCBQcm90b2J1Zl9IRFJTICR7ZndfaGRyc30pCisgICBsaXN0KEFQUEVORCBQcm90b2J1Zl9JTkNMVURFX0RJUlMgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L21pc2MvY2FmZmUpCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2ltcG9ydGVyLmNwcCBiL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pbXBvcnRlci5jcHAKK2luZGV4IGMwNzU2NTFiOTViMy4uMmM5NzdjODRiMGY0IDEwMDY0NAorLS0tIGEvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2ltcG9ydGVyLmNwcAorKysrIGIvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2ltcG9ydGVyLmNwcAorQEAgLTQyLDcgKzQyLDYgQEAKKyAjaW5jbHVkZSAiLi4vcHJlY29tcC5ocHAiCisgCisgI2lmZGVmIEhBVkVfUFJPVE9CVUYKKy0jaW5jbHVkZSAiY2FmZmUucGIuaCIKKyAKKyAjaW5jbHVkZSA8aW9zdHJlYW0+CisgI2luY2x1ZGUgPGZzdHJlYW0+CitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2lvLmNwcCBiL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pby5jcHAKK2luZGV4IDBmNDZlYTc3ZGY5YS4uMWQzYzUxOGYxMzI4IDEwMDY0NAorLS0tIGEvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2lvLmNwcAorKysrIGIvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2lvLmNwcAorQEAgLTk5LDcgKzk5LDYgQEAKKyAjaW5jbHVkZSA8ZnN0cmVhbT4KKyAjaW5jbHVkZSA8dmVjdG9yPgorIAorLSNpbmNsdWRlICJjYWZmZS5wYi5oIgorICNpbmNsdWRlICJjYWZmZV9pby5ocHAiCisgI2luY2x1ZGUgImdsb2dfZW11bGF0b3IuaHBwIgorIAorZGlmZiAtLWdpdCBhL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pby5ocHAgYi9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uaHBwCitpbmRleCAwOWJjNTcwOWEyNGUuLmY1OTEyYzNiY2VjMSAxMDA2NDQKKy0tLSBhL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pby5ocHAKKysrKyBiL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pby5ocHAKK0BAIC05MSw3ICs5MSw3IEBACisgI2RlZmluZSBfX09QRU5DVl9ETk5fQ0FGRkVfSU9fSFBQX18KKyAjaWZkZWYgSEFWRV9QUk9UT0JVRgorIAorLSNpbmNsdWRlICJjYWZmZS5wYi5oIgorKyNpbmNsdWRlICJvcGVuY3YtY2FmZmUucGIuaCIKKyAKKyBuYW1lc3BhY2UgY3YgeworIG5hbWVzcGFjZSBkbm4geworZGlmZiAtLWdpdCBhL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZS5wcm90byBiL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9vcGVuY3YtY2FmZmUucHJvdG8KK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlLnByb3RvCityZW5hbWUgdG8gbW9kdWxlcy9kbm4vc3JjL2NhZmZlL29wZW5jdi1jYWZmZS5wcm90bworZGlmZiAtLWdpdCBhL21vZHVsZXMvZG5uL3NyYy9sYXllcnMvZGV0ZWN0aW9uX291dHB1dF9sYXllci5jcHAgYi9tb2R1bGVzL2Rubi9zcmMvbGF5ZXJzL2RldGVjdGlvbl9vdXRwdXRfbGF5ZXIuY3BwCitpbmRleCAwYjcyMzI2ZjdlN2QuLmY0MTNiYWQ1YjgxYSAxMDA2NDQKKy0tLSBhL21vZHVsZXMvZG5uL3NyYy9sYXllcnMvZGV0ZWN0aW9uX291dHB1dF9sYXllci5jcHAKKysrKyBiL21vZHVsZXMvZG5uL3NyYy9sYXllcnMvZGV0ZWN0aW9uX291dHB1dF9sYXllci5jcHAKK0BAIC00NCw3ICs0NCw3IEBACisgI2luY2x1ZGUgImxheWVyc19jb21tb24uaHBwIgorICNpbmNsdWRlIDxmbG9hdC5oPgorICNpbmNsdWRlIDxzdHJpbmc+CistI2luY2x1ZGUgPGNhZmZlLnBiLmg+CisrI2luY2x1ZGUgPG9wZW5jdi1jYWZmZS5wYi5oPgorIAorIG5hbWVzcGFjZSBjdgorIHsKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW1wb3J0ZXIuY3BwIGIvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2ltcG9ydGVyLmNwcAoraW5kZXggMmM5NzdjODRiMGY0Li5hMTgyN2EzODExMTcgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW1wb3J0ZXIuY3BwCisrKysgYi9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW1wb3J0ZXIuY3BwCitAQCAtNzgsOCArNzgsOCBAQCBzdGF0aWMgY3Y6OlN0cmluZyB0b1N0cmluZyhjb25zdCBUICZ2KQorIAorIGNsYXNzIENhZmZlSW1wb3J0ZXIgOiBwdWJsaWMgSW1wb3J0ZXIKKyB7CistICAgIGNhZmZlOjpOZXRQYXJhbWV0ZXIgbmV0OworLSAgICBjYWZmZTo6TmV0UGFyYW1ldGVyIG5ldEJpbmFyeTsKKysgICAgb3BlbmN2Y2FmZmU6Ok5ldFBhcmFtZXRlciBuZXQ7CisrICAgIG9wZW5jdmNhZmZlOjpOZXRQYXJhbWV0ZXIgbmV0QmluYXJ5OworIAorIHB1YmxpYzoKKyAKK0BAIC0xOTcsNyArMTk3LDcgQEAgcHVibGljOgorICAgICAgICAgfQorICAgICB9CisgCistICAgIHZvaWQgYmxvYlNoYXBlRnJvbVByb3RvKGNvbnN0IGNhZmZlOjpCbG9iUHJvdG8gJnBiQmxvYiwgTWF0U2hhcGUmIHNoYXBlKQorKyAgICB2b2lkIGJsb2JTaGFwZUZyb21Qcm90byhjb25zdCBvcGVuY3ZjYWZmZTo6QmxvYlByb3RvICZwYkJsb2IsIE1hdFNoYXBlJiBzaGFwZSkKKyAgICAgeworICAgICAgICAgc2hhcGUuY2xlYXIoKTsKKyAgICAgICAgIGlmIChwYkJsb2IuaGFzX251bSgpIHx8IHBiQmxvYi5oYXNfY2hhbm5lbHMoKSB8fCBwYkJsb2IuaGFzX2hlaWdodCgpIHx8IHBiQmxvYi5oYXNfd2lkdGgoKSkKK0BAIC0yMDksNyArMjA5LDcgQEAgcHVibGljOgorICAgICAgICAgfQorICAgICAgICAgZWxzZSBpZiAocGJCbG9iLmhhc19zaGFwZSgpKQorICAgICAgICAgeworLSAgICAgICAgICAgIGNvbnN0IGNhZmZlOjpCbG9iU2hhcGUgJl9zaGFwZSA9IHBiQmxvYi5zaGFwZSgpOworKyAgICAgICAgICAgIGNvbnN0IG9wZW5jdmNhZmZlOjpCbG9iU2hhcGUgJl9zaGFwZSA9IHBiQmxvYi5zaGFwZSgpOworIAorICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgX3NoYXBlLmRpbV9zaXplKCk7IGkrKykKKyAgICAgICAgICAgICAgICAgc2hhcGUucHVzaF9iYWNrKChpbnQpX3NoYXBlLmRpbShpKSk7CitAQCAtMjE4LDcgKzIxOCw3IEBAIHB1YmxpYzoKKyAgICAgICAgICAgICBDVl9FcnJvcihFcnJvcjo6U3RzRXJyb3IsICJVbmtub3duIHNoYXBlIG9mIGlucHV0IGJsb2IiKTsKKyAgICAgfQorIAorLSAgICB2b2lkIGJsb2JGcm9tUHJvdG8oY29uc3QgY2FmZmU6OkJsb2JQcm90byAmcGJCbG9iLCBjdjo6TWF0ICZkc3RCbG9iKQorKyAgICB2b2lkIGJsb2JGcm9tUHJvdG8oY29uc3Qgb3BlbmN2Y2FmZmU6OkJsb2JQcm90byAmcGJCbG9iLCBjdjo6TWF0ICZkc3RCbG9iKQorICAgICB7CisgICAgICAgICBNYXRTaGFwZSBzaGFwZTsKKyAgICAgICAgIGJsb2JTaGFwZUZyb21Qcm90byhwYkJsb2IsIHNoYXBlKTsKK0BAIC0yMzMsNyArMjMzLDcgQEAgcHVibGljOgorICAgICAgICAgICAgIGRzdERhdGFbaV0gPSBwYkJsb2IuZGF0YShpKTsKKyAgICAgfQorIAorLSAgICB2b2lkIGV4dHJhY3RCaW5hcnlMYXllclBhcm1zKGNvbnN0IGNhZmZlOjpMYXllclBhcmFtZXRlciYgbGF5ZXIsIExheWVyUGFyYW1zJiBsYXllclBhcmFtcykKKysgICAgdm9pZCBleHRyYWN0QmluYXJ5TGF5ZXJQYXJtcyhjb25zdCBvcGVuY3ZjYWZmZTo6TGF5ZXJQYXJhbWV0ZXImIGxheWVyLCBMYXllclBhcmFtcyYgbGF5ZXJQYXJhbXMpCisgICAgIHsKKyAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lID0gbGF5ZXIubmFtZSgpOworIAorQEAgLTI0Nyw3ICsyNDcsNyBAQCBwdWJsaWM6CisgICAgICAgICBpZiAobGkgPT0gbmV0QmluYXJ5LmxheWVyX3NpemUoKSB8fCBuZXRCaW5hcnkubGF5ZXIobGkpLmJsb2JzX3NpemUoKSA9PSAwKQorICAgICAgICAgICAgIHJldHVybjsKKyAKKy0gICAgICAgIGNvbnN0IGNhZmZlOjpMYXllclBhcmFtZXRlciAmYmluTGF5ZXIgPSBuZXRCaW5hcnkubGF5ZXIobGkpOworKyAgICAgICAgY29uc3Qgb3BlbmN2Y2FmZmU6OkxheWVyUGFyYW1ldGVyICZiaW5MYXllciA9IG5ldEJpbmFyeS5sYXllcihsaSk7CisgICAgICAgICBsYXllclBhcmFtcy5ibG9icy5yZXNpemUoYmluTGF5ZXIuYmxvYnNfc2l6ZSgpKTsKKyAgICAgICAgIGZvciAoaW50IGJpID0gMDsgYmkgPCBiaW5MYXllci5ibG9ic19zaXplKCk7IGJpKyspCisgICAgICAgICB7CitAQCAtMjg5LDcgKzI4OSw3IEBAIHB1YmxpYzoKKyAKKyAgICAgICAgIGZvciAoaW50IGxpID0gMDsgbGkgPCBsYXllcnNTaXplOyBsaSsrKQorICAgICAgICAgeworLSAgICAgICAgICAgIGNvbnN0IGNhZmZlOjpMYXllclBhcmFtZXRlciAmbGF5ZXIgPSBuZXQubGF5ZXIobGkpOworKyAgICAgICAgICAgIGNvbnN0IG9wZW5jdmNhZmZlOjpMYXllclBhcmFtZXRlciAmbGF5ZXIgPSBuZXQubGF5ZXIobGkpOworICAgICAgICAgICAgIFN0cmluZyBuYW1lID0gbGF5ZXIubmFtZSgpOworICAgICAgICAgICAgIFN0cmluZyB0eXBlID0gbGF5ZXIudHlwZSgpOworICAgICAgICAgICAgIExheWVyUGFyYW1zIGxheWVyUGFyYW1zOworQEAgLTMxMyw3ICszMTMsNyBAQCBwdWJsaWM6CisgICAgICAgICBhZGRlZEJsb2JzLmNsZWFyKCk7CisgICAgIH0KKyAKKy0gICAgdm9pZCBhZGRPdXRwdXQoY29uc3QgY2FmZmU6OkxheWVyUGFyYW1ldGVyICZsYXllciwgaW50IGxheWVySWQsIGludCBvdXROdW0pCisrICAgIHZvaWQgYWRkT3V0cHV0KGNvbnN0IG9wZW5jdmNhZmZlOjpMYXllclBhcmFtZXRlciAmbGF5ZXIsIGludCBsYXllcklkLCBpbnQgb3V0TnVtKQorICAgICB7CisgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSA9IGxheWVyLnRvcChvdXROdW0pOworIAorZGlmZiAtLWdpdCBhL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pby5ocHAgYi9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uaHBwCitpbmRleCBmNTkxMmMzYmNlYzEuLjI0Y2Q1ZmEyNTRlYiAxMDA2NDQKKy0tLSBhL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pby5ocHAKKysrKyBiL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pby5ocHAKK0BAIC05OCw5ICs5OCw5IEBAIG5hbWVzcGFjZSBkbm4geworIAorIC8vIFJlYWQgcGFyYW1ldGVycyBmcm9tIGEgZmlsZSBpbnRvIGEgTmV0UGFyYW1ldGVyIHByb3RvIG1lc3NhZ2UuCisgdm9pZCBSZWFkTmV0UGFyYW1zRnJvbVRleHRGaWxlT3JEaWUoY29uc3QgY2hhciogcGFyYW1fZmlsZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWZmZTo6TmV0UGFyYW1ldGVyKiBwYXJhbSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbmN2Y2FmZmU6Ok5ldFBhcmFtZXRlciogcGFyYW0pOworIHZvaWQgUmVhZE5ldFBhcmFtc0Zyb21CaW5hcnlGaWxlT3JEaWUoY29uc3QgY2hhciogcGFyYW1fZmlsZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZmZlOjpOZXRQYXJhbWV0ZXIqIHBhcmFtKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5jdmNhZmZlOjpOZXRQYXJhbWV0ZXIqIHBhcmFtKTsKKyAKKyB9CisgfQorZGlmZiAtLWdpdCBhL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9vcGVuY3YtY2FmZmUucHJvdG8gYi9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvb3BlbmN2LWNhZmZlLnByb3RvCitpbmRleCAzZDIzZmI0OGVhNmEuLmRmNGUxZDMyNjlhZSAxMDA2NDQKKy0tLSBhL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9vcGVuY3YtY2FmZmUucHJvdG8KKysrKyBiL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9vcGVuY3YtY2FmZmUucHJvdG8KK0BAIC00OCw3ICs0OCw3IEBACisgCisgc3ludGF4ID0gInByb3RvMiI7CisgCistcGFja2FnZSBjYWZmZTsKKytwYWNrYWdlIG9wZW5jdmNhZmZlOworIAorIC8vIFNwZWNpZmllcyB0aGUgc2hhcGUgKGRpbWVuc2lvbnMpIG9mIGEgQmxvYi4KKyBtZXNzYWdlIEJsb2JTaGFwZSB7CitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9kbm4vc3JjL2xheWVycy9kZXRlY3Rpb25fb3V0cHV0X2xheWVyLmNwcCBiL21vZHVsZXMvZG5uL3NyYy9sYXllcnMvZGV0ZWN0aW9uX291dHB1dF9sYXllci5jcHAKK2luZGV4IGY0MTNiYWQ1YjgxYS4uODMyYzI1N2VlYmY5IDEwMDY0NAorLS0tIGEvbW9kdWxlcy9kbm4vc3JjL2xheWVycy9kZXRlY3Rpb25fb3V0cHV0X2xheWVyLmNwcAorKysrIGIvbW9kdWxlcy9kbm4vc3JjL2xheWVycy9kZXRlY3Rpb25fb3V0cHV0X2xheWVyLmNwcAorQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgorIAorICAgICBpbnQgX2JhY2tncm91bmRMYWJlbElkOworIAorLSAgICB0eXBlZGVmIGNhZmZlOjpQcmlvckJveFBhcmFtZXRlcl9Db2RlVHlwZSBDb2RlVHlwZTsKKysgICAgdHlwZWRlZiBvcGVuY3ZjYWZmZTo6UHJpb3JCb3hQYXJhbWV0ZXJfQ29kZVR5cGUgQ29kZVR5cGU7CisgICAgIENvZGVUeXBlIF9jb2RlVHlwZTsKKyAKKyAgICAgYm9vbCBfdmFyaWFuY2VFbmNvZGVkSW5UYXJnZXQ7CitAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CisgICAgIGVudW0geyBfbnVtQXhlcyA9IDQgfTsKKyAgICAgc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIF9sYXllck5hbWU7CisgCistICAgIHR5cGVkZWYgc3RkOjptYXA8aW50LCBzdGQ6OnZlY3RvcjxjYWZmZTo6Tm9ybWFsaXplZEJCb3g+ID4gTGFiZWxCQm94OworKyAgICB0eXBlZGVmIHN0ZDo6bWFwPGludCwgc3RkOjp2ZWN0b3I8b3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiA+IExhYmVsQkJveDsKKyAKKyAgICAgYm9vbCBnZXRQYXJhbWV0ZXJEaWN0KGNvbnN0IExheWVyUGFyYW1zICZwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmcGFyYW1ldGVyTmFtZSwKK0BAIC0xMzEsMTEgKzEzMSwxMSBAQCBwdWJsaWM6CisgICAgIHsKKyAgICAgICAgIFN0cmluZyBjb2RlVHlwZVN0cmluZyA9IHBhcmFtcy5nZXQ8U3RyaW5nPigiY29kZV90eXBlIikudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgIGlmIChjb2RlVHlwZVN0cmluZyA9PSAiY29ybmVyIikKKy0gICAgICAgICAgICBfY29kZVR5cGUgPSBjYWZmZTo6UHJpb3JCb3hQYXJhbWV0ZXJfQ29kZVR5cGVfQ09STkVSOworKyAgICAgICAgICAgIF9jb2RlVHlwZSA9IG9wZW5jdmNhZmZlOjpQcmlvckJveFBhcmFtZXRlcl9Db2RlVHlwZV9DT1JORVI7CisgICAgICAgICBlbHNlIGlmIChjb2RlVHlwZVN0cmluZyA9PSAiY2VudGVyX3NpemUiKQorLSAgICAgICAgICAgIF9jb2RlVHlwZSA9IGNhZmZlOjpQcmlvckJveFBhcmFtZXRlcl9Db2RlVHlwZV9DRU5URVJfU0laRTsKKysgICAgICAgICAgICBfY29kZVR5cGUgPSBvcGVuY3ZjYWZmZTo6UHJpb3JCb3hQYXJhbWV0ZXJfQ29kZVR5cGVfQ0VOVEVSX1NJWkU7CisgICAgICAgICBlbHNlCistICAgICAgICAgICAgX2NvZGVUeXBlID0gY2FmZmU6OlByaW9yQm94UGFyYW1ldGVyX0NvZGVUeXBlX0NPUk5FUjsKKysgICAgICAgICAgICBfY29kZVR5cGUgPSBvcGVuY3ZjYWZmZTo6UHJpb3JCb3hQYXJhbWV0ZXJfQ29kZVR5cGVfQ09STkVSOworICAgICB9CisgCisgICAgIERldGVjdGlvbk91dHB1dExheWVySW1wbChjb25zdCBMYXllclBhcmFtcyAmcGFyYW1zKQorQEAgLTIxNSw3ICsyMTUsNyBAQCBwdWJsaWM6CisgICAgICAgICAgICAgR2V0Q29uZmlkZW5jZVNjb3Jlcyhjb25maWRlbmNlRGF0YSwgbnVtLCBudW1QcmlvcnMsIF9udW1DbGFzc2VzLCBhbGxDb25maWRlbmNlU2NvcmVzKTsKKyAKKyAgICAgICAgICAgICAvLyBSZXRyaWV2ZSBhbGwgcHJpb3IgYmJveGVzCistICAgICAgICAgICAgc3RkOjp2ZWN0b3I8Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiBwcmlvckJCb3hlczsKKysgICAgICAgICAgICBzdGQ6OnZlY3RvcjxvcGVuY3ZjYWZmZTo6Tm9ybWFsaXplZEJCb3g+IHByaW9yQkJveGVzOworICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0PiA+IHByaW9yVmFyaWFuY2VzOworICAgICAgICAgICAgIEdldFByaW9yQkJveGVzKHByaW9yRGF0YSwgbnVtUHJpb3JzLCBwcmlvckJCb3hlcywgcHJpb3JWYXJpYW5jZXMpOworIAorQEAgLTI3Miw3ICsyNzIsNyBAQCBwdWJsaWM6CisgICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBpbmRpY2VzLnNpemUoKTsgKytqLCArK2NvdW50KQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgaW50IGlkeCA9IGluZGljZXNbal07CistICAgICAgICAgICAgICAgIGNvbnN0IGNhZmZlOjpOb3JtYWxpemVkQkJveCYgZGVjb2RlX2Jib3ggPSBsYWJlbF9iYm94ZXMtPnNlY29uZFtpZHhdOworKyAgICAgICAgICAgICAgICBjb25zdCBvcGVuY3ZjYWZmZTo6Tm9ybWFsaXplZEJCb3gmIGRlY29kZV9iYm94ID0gbGFiZWxfYmJveGVzLT5zZWNvbmRbaWR4XTsKKyAgICAgICAgICAgICAgICAgb3V0cHV0c0RhdGFbY291bnQgKiA3XSA9IGk7CisgICAgICAgICAgICAgICAgIG91dHB1dHNEYXRhW2NvdW50ICogNyArIDFdID0gbGFiZWw7CisgICAgICAgICAgICAgICAgIG91dHB1dHNEYXRhW2NvdW50ICogNyArIDJdID0gc2NvcmVzW2lkeF07CitAQCAtMzU1LDcgKzM1NSw3IEBAIHB1YmxpYzoKKyAKKyAgICAgLy8gQ29tcHV0ZSBiYm94IHNpemUKKyAgICAgdGVtcGxhdGU8Ym9vbCBub3JtYWxpemVkPgorLSAgICBzdGF0aWMgZmxvYXQgQkJveFNpemUoY29uc3QgY2FmZmU6Ok5vcm1hbGl6ZWRCQm94JiBiYm94KQorKyAgICBzdGF0aWMgZmxvYXQgQkJveFNpemUoY29uc3Qgb3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94JiBiYm94KQorICAgICB7CisgICAgICAgICBpZiAoYmJveC54bWF4KCkgPCBiYm94LnhtaW4oKSB8fCBiYm94LnltYXgoKSA8IGJib3gueW1pbigpKQorICAgICAgICAgeworQEAgLTM4OCwxMCArMzg4LDEwIEBAIHB1YmxpYzoKKyAgICAgLy8gRGVjb2RlIGEgYmJveCBhY2NvcmRpbmcgdG8gYSBwcmlvciBiYm94CisgICAgIHRlbXBsYXRlPGJvb2wgdmFyaWFuY2VfZW5jb2RlZF9pbl90YXJnZXQ+CisgICAgIHN0YXRpYyB2b2lkIERlY29kZUJCb3goCistICAgICAgICBjb25zdCBjYWZmZTo6Tm9ybWFsaXplZEJCb3gmIHByaW9yX2Jib3gsIGNvbnN0IHN0ZDo6dmVjdG9yPGZsb2F0PiYgcHJpb3JfdmFyaWFuY2UsCisrICAgICAgICBjb25zdCBvcGVuY3ZjYWZmZTo6Tm9ybWFsaXplZEJCb3gmIHByaW9yX2Jib3gsIGNvbnN0IHN0ZDo6dmVjdG9yPGZsb2F0PiYgcHJpb3JfdmFyaWFuY2UsCisgICAgICAgICBjb25zdCBDb2RlVHlwZSBjb2RlX3R5cGUsCistICAgICAgICBjb25zdCBib29sIGNsaXBfYmJveCwgY29uc3QgY2FmZmU6Ok5vcm1hbGl6ZWRCQm94JiBiYm94LAorLSAgICAgICAgY2FmZmU6Ok5vcm1hbGl6ZWRCQm94JiBkZWNvZGVfYmJveCkKKysgICAgICAgIGNvbnN0IGJvb2wgY2xpcF9iYm94LCBjb25zdCBvcGVuY3ZjYWZmZTo6Tm9ybWFsaXplZEJCb3gmIGJib3gsCisrICAgICAgICBvcGVuY3ZjYWZmZTo6Tm9ybWFsaXplZEJCb3gmIGRlY29kZV9iYm94KQorICAgICB7CisgICAgICAgICBmbG9hdCBiYm94X3htaW4gPSB2YXJpYW5jZV9lbmNvZGVkX2luX3RhcmdldCA/IGJib3gueG1pbigpIDogcHJpb3JfdmFyaWFuY2VbMF0gKiBiYm94LnhtaW4oKTsKKyAgICAgICAgIGZsb2F0IGJib3hfeW1pbiA9IHZhcmlhbmNlX2VuY29kZWRfaW5fdGFyZ2V0ID8gYmJveC55bWluKCkgOiBwcmlvcl92YXJpYW5jZVsxXSAqIGJib3gueW1pbigpOworQEAgLTM5OSwxMyArMzk5LDEzIEBAIHB1YmxpYzoKKyAgICAgICAgIGZsb2F0IGJib3hfeW1heCA9IHZhcmlhbmNlX2VuY29kZWRfaW5fdGFyZ2V0ID8gYmJveC55bWF4KCkgOiBwcmlvcl92YXJpYW5jZVszXSAqIGJib3gueW1heCgpOworICAgICAgICAgc3dpdGNoKGNvZGVfdHlwZSkKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBjYXNlIGNhZmZlOjpQcmlvckJveFBhcmFtZXRlcl9Db2RlVHlwZV9DT1JORVI6CisrICAgICAgICAgICAgY2FzZSBvcGVuY3ZjYWZmZTo6UHJpb3JCb3hQYXJhbWV0ZXJfQ29kZVR5cGVfQ09STkVSOgorICAgICAgICAgICAgICAgICBkZWNvZGVfYmJveC5zZXRfeG1pbihwcmlvcl9iYm94LnhtaW4oKSArIGJib3hfeG1pbik7CisgICAgICAgICAgICAgICAgIGRlY29kZV9iYm94LnNldF95bWluKHByaW9yX2Jib3gueW1pbigpICsgYmJveF95bWluKTsKKyAgICAgICAgICAgICAgICAgZGVjb2RlX2Jib3guc2V0X3htYXgocHJpb3JfYmJveC54bWF4KCkgKyBiYm94X3htYXgpOworICAgICAgICAgICAgICAgICBkZWNvZGVfYmJveC5zZXRfeW1heChwcmlvcl9iYm94LnltYXgoKSArIGJib3hfeW1heCk7CisgICAgICAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgICAgIGNhc2UgY2FmZmU6OlByaW9yQm94UGFyYW1ldGVyX0NvZGVUeXBlX0NFTlRFUl9TSVpFOgorKyAgICAgICAgICAgIGNhc2Ugb3BlbmN2Y2FmZmU6OlByaW9yQm94UGFyYW1ldGVyX0NvZGVUeXBlX0NFTlRFUl9TSVpFOgorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgZmxvYXQgcHJpb3Jfd2lkdGggPSBwcmlvcl9iYm94LnhtYXgoKSAtIHByaW9yX2Jib3gueG1pbigpOworICAgICAgICAgICAgICAgICBDVl9Bc3NlcnQocHJpb3Jfd2lkdGggPiAwKTsKK0BAIC00MzEsNyArNDMxLDcgQEAgcHVibGljOgorICAgICAgICAgfTsKKyAgICAgICAgIGlmIChjbGlwX2Jib3gpCisgICAgICAgICB7CistICAgICAgICAgICAgLy8gQ2xpcCB0aGUgY2FmZmU6Ok5vcm1hbGl6ZWRCQm94IHN1Y2ggdGhhdCB0aGUgcmFuZ2UgZm9yIGVhY2ggY29ybmVyIGlzIFswLCAxXQorKyAgICAgICAgICAgIC8vIENsaXAgdGhlIG9wZW5jdmNhZmZlOjpOb3JtYWxpemVkQkJveCBzdWNoIHRoYXQgdGhlIHJhbmdlIGZvciBlYWNoIGNvcm5lciBpcyBbMCwgMV0KKyAgICAgICAgICAgICBkZWNvZGVfYmJveC5zZXRfeG1pbihzdGQ6Om1heChzdGQ6Om1pbihkZWNvZGVfYmJveC54bWluKCksIDEuZiksIDAuZikpOworICAgICAgICAgICAgIGRlY29kZV9iYm94LnNldF95bWluKHN0ZDo6bWF4KHN0ZDo6bWluKGRlY29kZV9iYm94LnltaW4oKSwgMS5mKSwgMC5mKSk7CisgICAgICAgICAgICAgZGVjb2RlX2Jib3guc2V0X3htYXgoc3RkOjptYXgoc3RkOjptaW4oZGVjb2RlX2Jib3gueG1heCgpLCAxLmYpLCAwLmYpKTsKK0BAIC00NDMsMTEgKzQ0MywxMSBAQCBwdWJsaWM6CisgCisgICAgIC8vIERlY29kZSBhIHNldCBvZiBiYm94ZXMgYWNjb3JkaW5nIHRvIGEgc2V0IG9mIHByaW9yIGJib3hlcworICAgICBzdGF0aWMgdm9pZCBEZWNvZGVCQm94ZXMoCistICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxjYWZmZTo6Tm9ybWFsaXplZEJCb3g+JiBwcmlvcl9iYm94ZXMsCisrICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxvcGVuY3ZjYWZmZTo6Tm9ybWFsaXplZEJCb3g+JiBwcmlvcl9iYm94ZXMsCisgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4gPiYgcHJpb3JfdmFyaWFuY2VzLAorICAgICAgICAgY29uc3QgQ29kZVR5cGUgY29kZV90eXBlLCBjb25zdCBib29sIHZhcmlhbmNlX2VuY29kZWRfaW5fdGFyZ2V0LAorLSAgICAgICAgY29uc3QgYm9vbCBjbGlwX2Jib3gsIGNvbnN0IHN0ZDo6dmVjdG9yPGNhZmZlOjpOb3JtYWxpemVkQkJveD4mIGJib3hlcywKKy0gICAgICAgIHN0ZDo6dmVjdG9yPGNhZmZlOjpOb3JtYWxpemVkQkJveD4mIGRlY29kZV9iYm94ZXMpCisrICAgICAgICBjb25zdCBib29sIGNsaXBfYmJveCwgY29uc3Qgc3RkOjp2ZWN0b3I8b3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiYgYmJveGVzLAorKyAgICAgICAgc3RkOjp2ZWN0b3I8b3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiYgZGVjb2RlX2Jib3hlcykKKyAgICAgeworICAgICAgICAgQ1ZfQXNzZXJ0KHByaW9yX2Jib3hlcy5zaXplKCkgPT0gcHJpb3JfdmFyaWFuY2VzLnNpemUoKSk7CisgICAgICAgICBDVl9Bc3NlcnQocHJpb3JfYmJveGVzLnNpemUoKSA9PSBiYm94ZXMuc2l6ZSgpKTsKK0BAIC00NzAsNyArNDcwLDcgQEAgcHVibGljOgorIAorICAgICAvLyBEZWNvZGUgYWxsIGJib3hlcyBpbiBhIGJhdGNoCisgICAgIHN0YXRpYyB2b2lkIERlY29kZUJCb3hlc0FsbChjb25zdCBzdGQ6OnZlY3RvcjxMYWJlbEJCb3g+JiBhbGxfbG9jX3ByZWRzLAorLSAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiYgcHJpb3JfYmJveGVzLAorKyAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8b3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiYgcHJpb3JfYmJveGVzLAorICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+ID4mIHByaW9yX3ZhcmlhbmNlcywKKyAgICAgICAgIGNvbnN0IGludCBudW0sIGNvbnN0IGJvb2wgc2hhcmVfbG9jYXRpb24sCisgICAgICAgICBjb25zdCBpbnQgbnVtX2xvY19jbGFzc2VzLCBjb25zdCBpbnQgYmFja2dyb3VuZF9sYWJlbF9pZCwKK0BAIC01MDMsMTAgKzUwMywxMCBAQCBwdWJsaWM6CisgICAgIC8vIEdldCBwcmlvciBib3VuZGluZyBib3hlcyBmcm9tIHByaW9yX2RhdGEKKyAgICAgLy8gICAgcHJpb3JfZGF0YTogMSB4IDIgeCBudW1fcHJpb3JzICogNCB4IDEgYmxvYi4KKyAgICAgLy8gICAgbnVtX3ByaW9yczogbnVtYmVyIG9mIHByaW9ycy4KKy0gICAgLy8gICAgcHJpb3JfYmJveGVzOiBzdG9yZXMgYWxsIHRoZSBwcmlvciBiYm94ZXMgaW4gdGhlIGZvcm1hdCBvZiBjYWZmZTo6Tm9ybWFsaXplZEJCb3guCisrICAgIC8vICAgIHByaW9yX2Jib3hlczogc3RvcmVzIGFsbCB0aGUgcHJpb3IgYmJveGVzIGluIHRoZSBmb3JtYXQgb2Ygb3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94LgorICAgICAvLyAgICBwcmlvcl92YXJpYW5jZXM6IHN0b3JlcyBhbGwgdGhlIHZhcmlhbmNlcyBuZWVkZWQgYnkgcHJpb3IgYmJveGVzLgorICAgICBzdGF0aWMgdm9pZCBHZXRQcmlvckJCb3hlcyhjb25zdCBmbG9hdCogcHJpb3JEYXRhLCBjb25zdCBpbnQmIG51bVByaW9ycywKKy0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxjYWZmZTo6Tm9ybWFsaXplZEJCb3g+JiBwcmlvckJCb3hlcywKKysgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxvcGVuY3ZjYWZmZTo6Tm9ybWFsaXplZEJCb3g+JiBwcmlvckJCb3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4gPiYgcHJpb3JWYXJpYW5jZXMpCisgICAgIHsKKyAgICAgICAgIHByaW9yQkJveGVzLmNsZWFyKCk7IHByaW9yQkJveGVzLnJlc2l6ZShudW1QcmlvcnMpOworQEAgLTUxNCw3ICs1MTQsNyBAQCBwdWJsaWM6CisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVByaW9yczsgKytpKQorICAgICAgICAgeworICAgICAgICAgICAgIGludCBzdGFydElkeCA9IGkgKiA0OworLSAgICAgICAgICAgIGNhZmZlOjpOb3JtYWxpemVkQkJveCYgYmJveCA9IHByaW9yQkJveGVzW2ldOworKyAgICAgICAgICAgIG9wZW5jdmNhZmZlOjpOb3JtYWxpemVkQkJveCYgYmJveCA9IHByaW9yQkJveGVzW2ldOworICAgICAgICAgICAgIGJib3guc2V0X3htaW4ocHJpb3JEYXRhW3N0YXJ0SWR4XSk7CisgICAgICAgICAgICAgYmJveC5zZXRfeW1pbihwcmlvckRhdGFbc3RhcnRJZHggKyAxXSk7CisgICAgICAgICAgICAgYmJveC5zZXRfeG1heChwcmlvckRhdGFbc3RhcnRJZHggKyAyXSk7CitAQCAtNTY1LDcgKzU2NSw3IEBAIHB1YmxpYzoKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbEJCb3hbbGFiZWxdLnJlc2l6ZShudW1QcmVkc1BlckNsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAgIGNhZmZlOjpOb3JtYWxpemVkQkJveCYgYmJveCA9IGxhYmVsQkJveFtsYWJlbF1bcF07CisrICAgICAgICAgICAgICAgICAgICBvcGVuY3ZjYWZmZTo6Tm9ybWFsaXplZEJCb3gmIGJib3ggPSBsYWJlbEJCb3hbbGFiZWxdW3BdOworICAgICAgICAgICAgICAgICAgICAgYmJveC5zZXRfeG1pbihsb2NEYXRhW3N0YXJ0SWR4ICsgYyAqIDRdKTsKKyAgICAgICAgICAgICAgICAgICAgIGJib3guc2V0X3ltaW4obG9jRGF0YVtzdGFydElkeCArIGMgKiA0ICsgMV0pOworICAgICAgICAgICAgICAgICAgICAgYmJveC5zZXRfeG1heChsb2NEYXRhW3N0YXJ0SWR4ICsgYyAqIDQgKyAyXSk7CitAQCAtNjEyLDcgKzYxMiw3IEBAIHB1YmxpYzoKKyAgICAgLy8gICAgbm1zX3RocmVzaG9sZDogYSB0aHJlc2hvbGQgdXNlZCBpbiBub24gbWF4aW11bSBzdXBwcmVzc2lvbi4KKyAgICAgLy8gICAgdG9wX2s6IGlmIG5vdCAtMSwga2VlcCBhdCBtb3N0IHRvcF9rIHBpY2tlZCBpbmRpY2VzLgorICAgICAvLyAgICBpbmRpY2VzOiB0aGUga2VwdCBpbmRpY2VzIG9mIGJib3hlcyBhZnRlciBubXMuCistICAgIHN0YXRpYyB2b2lkIEFwcGx5Tk1TRmFzdChjb25zdCBzdGQ6OnZlY3RvcjxjYWZmZTo6Tm9ybWFsaXplZEJCb3g+JiBiYm94ZXMsCisrICAgIHN0YXRpYyB2b2lkIEFwcGx5Tk1TRmFzdChjb25zdCBzdGQ6OnZlY3RvcjxvcGVuY3ZjYWZmZTo6Tm9ybWFsaXplZEJCb3g+JiBiYm94ZXMsCisgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGZsb2F0PiYgc2NvcmVzLCBjb25zdCBmbG9hdCBzY29yZV90aHJlc2hvbGQsCisgICAgICAgICAgIGNvbnN0IGZsb2F0IG5tc190aHJlc2hvbGQsIGNvbnN0IGZsb2F0IGV0YSwgY29uc3QgaW50IHRvcF9rLAorICAgICAgICAgICBzdGQ6OnZlY3RvcjxpbnQ+JiBpbmRpY2VzKQorQEAgLTY3NCwxMCArNjc0LDEwIEBAIHB1YmxpYzoKKyAKKyAgICAgLy8gQ29tcHV0ZSB0aGUgamFjY2FyZCAoaW50ZXJzZWN0aW9uIG92ZXIgdW5pb24gSW9VKSBvdmVybGFwIGJldHdlZW4gdHdvIGJib3hlcy4KKyAgICAgdGVtcGxhdGU8Ym9vbCBub3JtYWxpemVkPgorLSAgICBzdGF0aWMgZmxvYXQgSmFjY2FyZE92ZXJsYXAoY29uc3QgY2FmZmU6Ok5vcm1hbGl6ZWRCQm94JiBiYm94MSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FmZmU6Ok5vcm1hbGl6ZWRCQm94JiBiYm94MikKKysgICAgc3RhdGljIGZsb2F0IEphY2NhcmRPdmVybGFwKGNvbnN0IG9wZW5jdmNhZmZlOjpOb3JtYWxpemVkQkJveCYgYmJveDEsCisrICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wZW5jdmNhZmZlOjpOb3JtYWxpemVkQkJveCYgYmJveDIpCisgICAgIHsKKy0gICAgICAgIGNhZmZlOjpOb3JtYWxpemVkQkJveCBpbnRlcnNlY3RfYmJveDsKKysgICAgICAgIG9wZW5jdmNhZmZlOjpOb3JtYWxpemVkQkJveCBpbnRlcnNlY3RfYmJveDsKKyAgICAgICAgIGlmIChiYm94Mi54bWluKCkgPiBiYm94MS54bWF4KCkgfHwgYmJveDIueG1heCgpIDwgYmJveDEueG1pbigpIHx8CisgICAgICAgICAgICAgYmJveDIueW1pbigpID4gYmJveDEueW1heCgpIHx8IGJib3gyLnltYXgoKSA8IGJib3gxLnltaW4oKSkKKyAgICAgICAgIHsKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uY3BwIGIvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2lvLmNwcAoraW5kZXggMWQzYzUxOGYxMzI4Li4zY2Y2ZTI1NWFhNjAgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uY3BwCisrKysgYi9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uY3BwCitAQCAtMTA3LDcgKzEwNyw3IEBAIG5hbWVzcGFjZSBkbm4geworIAorIHVzaW5nIHN0ZDo6c3RyaW5nOworIHVzaW5nIHN0ZDo6bWFwOworLXVzaW5nIG5hbWVzcGFjZSBjYWZmZTsKKyt1c2luZyBuYW1lc3BhY2Ugb3BlbmN2Y2FmZmU7CisgdXNpbmcgbmFtZXNwYWNlIDo6Z29vZ2xlOjpwcm90b2J1ZjsKKyB1c2luZyBuYW1lc3BhY2UgOjpnb29nbGU6OnByb3RvYnVmOjppbzsKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi9qYXZhZ2VuLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L2phdmFnZW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY1MjZlYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi9qYXZhZ2VuLnBhdGNoCkBAIC0wLDAgKzEsMTYgQEAKK1Vwc3RyZWFtLXN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2L3B1bGwvMTAwMzkjaXNzdWVjb21tZW50LTM0MjUzOTI4OAorCitTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgPHJpY2FyZG8ucmliYWxkYUBnbWFpbC5jb20+CitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9qYXZhL0NNYWtlTGlzdHMudHh0IGIvbW9kdWxlcy9qYXZhL0NNYWtlTGlzdHMudHh0CitpbmRleCA3NGJjMGVmMDQxNjkuLjQ2MjJmYmY5YTVmMSAxMDA2NDQKKy0tLSBhL21vZHVsZXMvamF2YS9DTWFrZUxpc3RzLnR4dAorKysrIGIvbW9kdWxlcy9qYXZhL0NNYWtlTGlzdHMudHh0CitAQCAtMjkxLDcgKzI5MSw3IEBAIGZvcmVhY2goamF2YV9maWxlICR7c3RlcDNfaW5wdXRfZmlsZXN9KQorICAgZW5kaWYoKQorICAgaWYoX19jb25maWd1cmUpCisgICAgIGNvbmZpZ3VyZV9maWxlKCIke2phdmFfZmlsZX0iICIke2phdmFfc3JjX2Rpcn0vJHtvdXRwdXRfbmFtZX0iIEBPTkxZKQorLSAgZWxzZWlmKE5PVCAiJHtqYXZhX2ZpbGV9IiBNQVRDSEVTICIke09wZW5DVl9CSU5BUllfRElSfS8iKQorKyAgZWxzZWlmKEVYSVNUUyAiJHtqYXZhX2ZpbGV9IiBBTkQgTk9UICIke2phdmFfZmlsZX0iIE1BVENIRVMgIiR7T3BlbkNWX0JJTkFSWV9ESVJ9LyIpCisgICAgIGNvbmZpZ3VyZV9maWxlKCIke2phdmFfZmlsZX0iICIke2phdmFfc3JjX2Rpcn0vJHtvdXRwdXRfbmFtZX0iIENPUFlPTkxZKQorICAgZWxzZSgpCisgICAgIGFkZF9jdXN0b21fY29tbWFuZChPVVRQVVQgIiR7amF2YV9zcmNfZGlyfS8ke291dHB1dF9uYW1lfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi9wcm90b2J1Zi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi9wcm90b2J1Zi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjNkYzE0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L3Byb3RvYnVmLnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK1Vwc3RyZWFtLXN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSA8cmljYXJkby5yaWJhbGRhQGdtYWlsLmNvbT4KK2RpZmYgLS1naXQgYS9jbWFrZS9PcGVuQ1ZGaW5kTGliUHJvdG9idWYuY21ha2UgYi9jbWFrZS9PcGVuQ1ZGaW5kTGliUHJvdG9idWYuY21ha2UKK2luZGV4IGI2Y2UxZTdmZDU2Yi4uZTkxNmVjMGRmMmE2IDEwMDY0NAorLS0tIGEvY21ha2UvT3BlbkNWRmluZExpYlByb3RvYnVmLmNtYWtlCisrKysgYi9jbWFrZS9PcGVuQ1ZGaW5kTGliUHJvdG9idWYuY21ha2UKK0BAIC03LDIxICs3LDIxIEBAIE9DVl9PUFRJT04oQlVJTERfUFJPVE9CVUYgIkZvcmNlIHRvIGJ1aWxkIGxpYnByb3RvYnVmIGZyb20gc291cmNlcyIgT04pCisgT0NWX09QVElPTihQUk9UT0JVRl9VUERBVEVfRklMRVMgIkZvcmNlIHRvIHJlYnVpbGQgLnByb3RvIGZpbGVzIiBPRkYpCisgCisgaWYoUFJPVE9CVUZfVVBEQVRFX0ZJTEVTKQorLSAgaWYoTk9UIERFRklORUQgUHJvdG9idWZfUFJPVE9DX0VYRUNVVEFCTEUpCisrICBpZihOT1QgREVGSU5FRCBQUk9UT0JVRl9QUk9UT0NfRVhFQ1VUQUJMRSkKKyAgICAgZmluZF9wYWNrYWdlKFByb3RvYnVmIFFVSUVUKQorICAgZW5kaWYoKQorLSAgaWYoREVGSU5FRCBQcm90b2J1Zl9QUk9UT0NfRVhFQ1VUQUJMRSBBTkQgRVhJU1RTICR7UHJvdG9idWZfUFJPVE9DX0VYRUNVVEFCTEV9KQorLSAgICBtZXNzYWdlKFNUQVRVUyAiVGhlIHByb3RvY29sIGJ1ZmZlciBjb21waWxlciBpcyBmb3VuZCAoJHtQcm90b2J1Zl9QUk9UT0NfRVhFQ1VUQUJMRX0pIikKKysgIGlmKERFRklORUQgUFJPVE9CVUZfUFJPVE9DX0VYRUNVVEFCTEUgQU5EIEVYSVNUUyAke1BST1RPQlVGX1BST1RPQ19FWEVDVVRBQkxFfSkKKysgICAgbWVzc2FnZShTVEFUVVMgIlRoZSBwcm90b2NvbCBidWZmZXIgY29tcGlsZXIgaXMgZm91bmQgKCR7UFJPVE9CVUZfUFJPVE9DX0VYRUNVVEFCTEV9KSIpCisgICBlbHNlKCkKKy0gICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiVGhlIHByb3RvY29sIGJ1ZmZlciBjb21waWxlciBpcyBub3QgZm91bmQgKFByb3RvYnVmX1BST1RPQ19FWEVDVVRBQkxFPScke1Byb3RvYnVmX1BST1RPQ19FWEVDVVRBQkxFfScpIikKKysgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiVGhlIHByb3RvY29sIGJ1ZmZlciBjb21waWxlciBpcyBub3QgZm91bmQgKFBST1RPQlVGX1BST1RPQ19FWEVDVVRBQkxFPScke1BST1RPQlVGX1BST1RPQ19FWEVDVVRBQkxFfScpIikKKyAgIGVuZGlmKCkKKyBlbmRpZigpCisgCistaWYoTk9UIEJVSUxEX1BST1RPQlVGIEFORCBOT1QgKERFRklORUQgUHJvdG9idWZfSU5DTFVERV9ESVJTIEFORCBERUZJTkVEIFByb3RvYnVmX0xJQlJBUklFUykpCisraWYoTk9UIEJVSUxEX1BST1RPQlVGIEFORCBOT1QgKERFRklORUQgUFJPVE9CVUZfSU5DTFVERV9ESVIgQU5EIERFRklORUQgUFJPVE9CVUZfTElCUkFSSUVTKSkKKyAgIGZpbmRfcGFja2FnZShQcm90b2J1ZiBRVUlFVCkKKyBlbmRpZigpCisgCistaWYoUHJvdG9idWZfRk9VTkQpCisraWYoUFJPVE9CVUZfRk9VTkQgT1IgKERFRklORUQgUFJPVE9CVUZfSU5DTFVERV9ESVIgQU5EIERFRklORUQgUFJPVE9CVUZfTElCUkFSSUVTKSkKKyAgICMgbm90aGluZworIGVsc2UoKQorICAgc2V0KFByb3RvYnVmX0xJQlJBUklFUyBsaWJwcm90b2J1ZikKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2Rubi9DTWFrZUxpc3RzLnR4dCBiL21vZHVsZXMvZG5uL0NNYWtlTGlzdHMudHh0CitpbmRleCAyYTcxNTY4ZDFhNDQuLmM2MzI5YTc0MjI2MyAxMDA2NDQKKy0tLSBhL21vZHVsZXMvZG5uL0NNYWtlTGlzdHMudHh0CisrKysgYi9tb2R1bGVzL2Rubi9DTWFrZUxpc3RzLnR4dAorQEAgLTcsNyArNyw3IEBAIGlmKERFRklORUQgQlVJTERfb3BlbmN2X2RubiBBTkQgTk9UIEJVSUxEX29wZW5jdl9kbm4pCisgZW5kaWYoKQorIAorIGluY2x1ZGUoJHtPcGVuQ1ZfU09VUkNFX0RJUn0vY21ha2UvT3BlbkNWRmluZExpYlByb3RvYnVmLmNtYWtlKQorLWlmKE5PVCBQcm90b2J1Zl9GT1VORCkKKytpZihOT1QgUFJPVE9CVUZfRk9VTkQpCisgICBvY3ZfbW9kdWxlX2Rpc2FibGUob3BlbmN2X2RubikKKyBlbmRpZigpCisgCitAQCAtNzIsNyArNzIsNyBAQCBvY3Zfc291cmNlX2dyb3VwKCJTcmNcXHByb3RvYnVmIiBGSUxFUyAke1Byb3RvYnVmX1NSQ1N9ICR7UHJvdG9idWZfSERSU30pCisgb2N2X21vZHVsZV9pbmNsdWRlX2RpcmVjdG9yaWVzKGluY2x1ZGUgJHtQcm90b2J1Zl9JTkNMVURFX0RJUlN9KQorIAorIG9jdl9nbG9iX21vZHVsZV9zb3VyY2VzKCR7UHJvdG9idWZfU1JDU30gJHtQcm90b2J1Zl9IRFJTfSAke0NCTEFTX0hfUFJPWFlfUEFUSH0pCistb2N2X2NyZWF0ZV9tb2R1bGUoJHtQcm90b2J1Zl9MSUJSQVJJRVN9ICR7TEFQQUNLX0xJQlJBUklFU30pCisrb2N2X2NyZWF0ZV9tb2R1bGUoJHtQUk9UT0JVRl9MSUJSQVJJRVN9ICR7TEFQQUNLX0xJQlJBUklFU30pCisgb2N2X2FkZF9zYW1wbGVzKCkKKyBvY3ZfYWRkX2FjY3VyYWN5X3Rlc3RzKCkKKyBvY3ZfYWRkX3BlcmZfdGVzdHMoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L3Rpbnlkbm4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvdGlueWRubi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDMzZmMzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L3Rpbnlkbm4ucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorVXBzdHJlYW0tc3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgorZGlmZiAtLWdpdCBhL21vZHVsZXMvZG5uX21vZGVybi9DTWFrZUxpc3RzLnR4dCBiL21vZHVsZXMvZG5uX21vZGVybi9DTWFrZUxpc3RzLnR4dAoraW5kZXggNzliNjRiMTIxNjBiLi5iYTA2YTBhMTYzZTQgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2Rubl9tb2Rlcm4vQ01ha2VMaXN0cy50eHQKKysrKyBiL21vZHVsZXMvZG5uX21vZGVybi9DTWFrZUxpc3RzLnR4dAorQEAgLTE1LDI0ICsxNSw4IEBAIGxpc3QoQVBQRU5EIENNQUtFX01PRFVMRV9QQVRIICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9jbWFrZSkKKyAjIE1PRFVMRSBSRVFVSVJFTUVOVFMKKyAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKy1zZXQoVElOWV9ETk5fQ1BQX1BBVEggIiR7T3BlbkNWX0JJTkFSWV9ESVJ9LzNyZHBhcnR5L3Rpbnlkbm4iKQorLXNldChUSU5ZX0ROTl9DUFBfUk9PVCAiJHtUSU5ZX0ROTl9DUFBfUEFUSH0vdGlueS1kbm4tMS4wLjBhMyIpCistb2N2X2Rvd25sb2FkKEZJTEVOQU1FICJ2MS4wLjBhMy50YXIuZ3oiCistICAgICAgICAgICAgICAgSEFTSCAiYWRiMWM1MTJlMDljYTJjN2E2ZmFlZjM2ZjljNTNlNTkiCistICAgICAgICAgICAgICAgVVJMCistICAgICAgICAgICAgICAgICAiJHtPUEVOQ1ZfVElOWV9ETk5fVVJMfSIKKy0gICAgICAgICAgICAgICAgICIkRU5We09QRU5DVl9USU5ZX0ROTl9VUkx9IgorLSAgICAgICAgICAgICAgICAgImh0dHBzOi8vZ2l0aHViLmNvbS90aW55LWRubi90aW55LWRubi9hcmNoaXZlLyIKKy0gICAgICAgICAgICAgICBERVNUSU5BVElPTl9ESVIgIiR7VElOWV9ETk5fQ1BQX1BBVEh9IgorLSAgICAgICAgICAgICAgIFNUQVRVUyBUSU5ZX0ROTl9ET1dOTE9BRF9TVUNDRVNTCistICAgICAgICAgICAgICAgSUQgInRpbnktZG5uIgorLSAgICAgICAgICAgICAgIFVOUEFDSyBSRUxBVElWRV9VUkwpCistCistaWYoTk9UIFRJTllfRE5OX0RPV05MT0FEX1NVQ0NFU1MpCistICBtZXNzYWdlKFNUQVRVUyAiRmFpbGVkIHRvIGRvd25sb2FkIHRpbnktZG5uIHNvdXJjZXMiKQorLWVuZGlmKCkKKy0KKy1maW5kX3BhY2thZ2UoVGlueUROTiBRVUlFVCkKKytzZXQoVElOWUROTl9JTkNMVURFX0RJUlMgIiR7T3BlbkNWX1NPVVJDRV9ESVJ9LzNyZHBhcnR5L3Rpbnlkbm4vdGlueS1kbm4tMS4wLjBhMyIpCisrc2V0KFRpbnlETk5fRk9VTkQgVFJVRSkKKyAKKyBpbmNsdWRlKENoZWNrQ1hYQ29tcGlsZXJGbGFnKQorIENIRUNLX0NYWF9DT01QSUxFUl9GTEFHKCItc3RkPWMrKzExIiBDT01QSUxFUl9TVVBQT1JUU19DWFgxMSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdl8zLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3ZfMy4zLmJiCmluZGV4IGRkOWU0Y2EuLmNhNjJkZTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdl8zLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2XzMuMy5iYgpAQCAtMTUsNiArMTUsOCBAQAogU1JDUkVWX2lwcCA9ICJhNjJlMjA2NzZhNjBlZTBhZDY1ODFlMjE3ZmU3ZTRiYWRhM2I5NWRiIgogU1JDUkVWX2Jvb3N0ZGVzYyA9ICIzNGU0MjA2YWVmNDRkNTBlNmJiY2QwYWIwNjM1NGI1MmU3NDY2ZDI2IgogU1JDUkVWX3ZnZyA9ICJmY2NmN2NkNmE0YjEyMDc5ZjczYmJmYjIxNzQ1ZjliYWJjZDRlYjFkIgorU1JDX1VSSVt0aW55ZG5uLm1kNXN1bV0gPSAiYWRiMWM1MTJlMDljYTJjN2E2ZmFlZjM2ZjljNTNlNTkiCitTUkNfVVJJW3Rpbnlkbm4uc2hhMjU2c3VtXSA9ICJlMmM2MWNlOGM1ZGViYWE2NDQxMjExNzllOWRiZGNmODNmNDk3ZjM5ZGU4NTNmOGRkNTE3NTg0NjUwNWFhMThiIgogCiBkZWYgaXBwX2ZpbGVuYW1lKGQpOgogICAgIGltcG9ydCByZQpAQCAtNDEsOSArNDMsMTEgQEAKICAgICBnaXQ6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3ZfM3JkcGFydHkuZ2l0O2JyYW5jaD1pcHBpY3YvbWFzdGVyXzIwMTcwNDE4O2Rlc3RzdWZmaXg9aXBwO25hbWU9aXBwIFwKICAgICBnaXQ6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3ZfM3JkcGFydHkuZ2l0O2JyYW5jaD1jb250cmliX3hmZWF0dXJlczJkX2Jvb3N0ZGVzY18yMDE2MTAxMjtkZXN0c3VmZml4PWJvb3N0ZGVzYztuYW1lPWJvb3N0ZGVzYyBcCiAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2XzNyZHBhcnR5LmdpdDticmFuY2g9Y29udHJpYl94ZmVhdHVyZXMyZF92Z2dfMjAxNjAzMTc7ZGVzdHN1ZmZpeD12Z2c7bmFtZT12Z2cgXAorICAgIGh0dHBzOi8vZ2l0aHViLmNvbS90aW55LWRubi90aW55LWRubi9hcmNoaXZlL3YxLjAuMGEzLnRhci5nejtkZXN0c3VmZml4PWdpdC8zcmRwYXJ0eS90aW55ZG5uL3RpbnktZG5uLTEuMC4wYTM7bmFtZT10aW55ZG5uO3VucGFjaz1mYWxzZSBcCiAgICAgZmlsZTovLzAwMDEtM3JkcGFydHktaXBwaWN2LVVzZS1wcmUtZG93bmxvYWRlZC1pcHAucGF0Y2ggXAogICAgIGZpbGU6Ly9maXhwa2djb25maWcucGF0Y2ggXAogICAgIGZpbGU6Ly91c2Vsb2NhbHhmZWF0dXJlcy5wYXRjaDtwYXRjaGRpcj0uLi9jb250cmliLyBcCisgICAgZmlsZTovL3Rpbnlkbm4ucGF0Y2g7cGF0Y2hkaXI9Li4vY29udHJpYi8gXAogICAgIGZpbGU6Ly8wMDAyLU1ha2Utb3BlbmN2LXRzLWNyZWF0ZS1zaGFyZS1saWJyYXJ5LWludGVhZC1vZi1zdGF0aWMucGF0Y2ggXAogICAgIGZpbGU6Ly8wMDAzLVRvLWZpeC1lcnJvcnMtYXMtZm9sbG93aW5nLnBhdGNoIFwKICAgICBmaWxlOi8vMDAwMS1idWlsZC13b3JrYXJvdW5kLUdDQy03LjEuMS1jb21waWxhdGlvbi1pc3N1ZS13aXRoLXNhLnBhdGNoIFwKQEAgLTUzLDEyICs1NywxNyBAQAogICAgIGZpbGU6Ly8wMDAxLWNhcm90ZW5lLWRvbi10LXVzZS1fX2FzbV9fLXdpdGgtYWFyY2g2NC5wYXRjaCBcCiAgICAgZmlsZTovLzAwMDItRG8tbm90LWVuYWJsZS1hc20td2l0aC1jbGFuZy5wYXRjaCBcCiAgICAgZmlsZTovL0NWRS0yMDE3LTE0MTM2LnBhdGNoIFwKKyAgICBmaWxlOi8vamF2YWdlbi5wYXRjaCBcCisgICAgZmlsZTovL3Byb3RvYnVmLnBhdGNoIFwKKyAgICBmaWxlOi8vYWxyZWFkeS1leGlzdHMucGF0Y2ggXAogIgogUFYgPSAiMy4zK2dpdCR7U1JDUFZ9IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBkb191bnBhY2tfZXh0cmEoKSB7CisgICAgbWtkaXIgLXAgJHtTfS8zcmRwYXJ0eS90aW55ZG5uLworICAgIHRhciB4emYgJHtXT1JLRElSfS92MS4wLjBhMy50YXIuZ3ogLUMgJHtTfS8zcmRwYXJ0eS90aW55ZG5uLwogICAgIHRhciB4emYgJHtXT1JLRElSfS9pcHAvaXBwaWN2LyR7SVBQX0ZJTEVOQU1FfSAtQyAke1dPUktESVJ9CiAgICAgY3AgJHtXT1JLRElSfS92Z2cvKi5pICR7V09SS0RJUn0vY29udHJpYi9tb2R1bGVzL3hmZWF0dXJlczJkL3NyYwogICAgIGNwICR7V09SS0RJUn0vYm9vc3RkZXNjLyouaSAke1dPUktESVJ9L2NvbnRyaWIvbW9kdWxlcy94ZmVhdHVyZXMyZC9zcmMKQEAgLTY4LDEzICs3NywxMyBAQAogRVhUUkFfT0VDTUFLRSA9ICItRE9QRU5DVl9FWFRSQV9NT0RVTEVTX1BBVEg9JHtXT1JLRElSfS9jb250cmliL21vZHVsZXMgXAogICAgIC1EV0lUSF8xMzk0PU9GRiBcCiAgICAgLURDTUFLRV9TS0lQX1JQQVRIPU9OIFwKLSAgICAtRE9QRU5DVl9JQ1ZfUEFDS0FHRV9ET1dOTE9BREVEPSR7SVBQX01ENX0gXAotICAgIC1ET1BFTkNWX0lDVl9QQVRIPSR7V09SS0RJUn0vaXBwaWN2X2xueCBcCisgICAgLURPUEVOQ1ZfSUNWX0hBU0g9JHtJUFBfTUQ1fSBcCisgICAgLURJUFBST09UPSR7V09SS0RJUn0vaXBwaWN2X2xueCBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRBUkdFVF9DQ19BUkNIIiwgIi1tc3NlMyIsICItREVOQUJMRV9TU0U9MSAtREVOQUJMRV9TU0UyPTEgLURFTkFCTEVfU1NFMz0xIC1ERU5BQkxFX1NTU0UzPTEiLCAiIiwgZCl9IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygiVEFSR0VUX0NDX0FSQ0giLCAiLW1zc2U0LjEiLCAiLURFTkFCTEVfU1NFPTEgLURFTkFCTEVfU1NFMj0xIC1ERU5BQkxFX1NTRTM9MSAtREVOQUJMRV9TU1NFMz0xIC1ERU5BQkxFX1NTRTQxPTEiLCAiIiwgZCl9IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygiVEFSR0VUX0NDX0FSQ0giLCAiLW1zc2U0LjIiLCAiLURFTkFCTEVfU1NFPTEgLURFTkFCTEVfU1NFMj0xIC1ERU5BQkxFX1NTRTM9MSAtREVOQUJMRV9TU1NFMz0xIC1ERU5BQkxFX1NTRTQxPTEgLURFTkFCTEVfU1NFNDI9MSIsICIiLCBkKX0gXAotICAgICR7QGJhc2VfY29uZGl0aW9uYWwoImxpYmRpciIsICIvdXNyL2xpYjY0IiwgIi1ETElCX1NVRkZJWD02NCIsICIiLCBkKX0gXAotICAgICR7QGJhc2VfY29uZGl0aW9uYWwoImxpYmRpciIsICIvdXNyL2xpYjMyIiwgIi1ETElCX1NVRkZJWD0zMiIsICIiLCBkKX0gXAorICAgICR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCJsaWJkaXIiLCAiL3Vzci9saWI2NCIsICItRExJQl9TVUZGSVg9NjQiLCAiIiwgZCl9IFwKKyAgICAke0BvZS51dGlscy5jb25kaXRpb25hbCgibGliZGlyIiwgIi91c3IvbGliMzIiLCAiLURMSUJfU1VGRklYPTMyIiwgIiIsIGQpfSBcCiAiCiBFWFRSQV9PRUNNQUtFX2FwcGVuZF94ODYgPSAiIC1EWDg2PU9OIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9waWRnaW4vcGlkZ2luLWNyb3NzLXB5dGhvbi0yNjUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9waWRnaW4vcGlkZ2luLWNyb3NzLXB5dGhvbi0yNjUucGF0Y2gKaW5kZXggNzJiZjRlZC4uMzEyZmM4NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vcGlkZ2luL3BpZGdpbi1jcm9zcy1weXRob24tMjY1LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbi9waWRnaW4tY3Jvc3MtcHl0aG9uLTI2NS5wYXRjaApAQCAtMSw5ICsxLDE3IEBACi1Vc2UgcGtnLWNvbmZpZyBpbnN0ZWFkIG9mICR7UFlUSE9OfS1jb25maWcgdG8gZmluZCBweXRob24KK0Zyb20gODU1Y2MyMGJhZmEzMDU5N2FlN2E2MmY3NjcyZDQyNjU0YjI1Y2RlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhlcnJpZSA8Z2l0aHViLmNvbUBoZXJyaWUub3JnPgorRGF0ZTogTW9uLCAyNCBKdWwgMjAxNyAyMTozMDoxNiArMDIwMAorU3ViamVjdDogW1BBVENIXSBVc2UgcGtnLWNvbmZpZyBpbnN0ZWFkIG9mICR7UFlUSE9OfS1jb25maWcgdG8gZmluZCBweXRob24KIAotZGlmZiAtdU5yIHBpZGdpbi0yLjEwLjEyLm9yaWcvY29uZmlndXJlLmFjIHBpZGdpbi0yLjEwLjEyL2NvbmZpZ3VyZS5hYwotLS0tIHBpZGdpbi0yLjEwLjEyLm9yaWcvY29uZmlndXJlLmFjCTIwMTYtMDEtMDEgMDA6MTk6NDAuMDAwMDAwMDAwICswMTAwCi0rKysgcGlkZ2luLTIuMTAuMTIvY29uZmlndXJlLmFjCTIwMTYtMDUtMDUgMTY6NTU6MTMuMjU4OTQ1OTI1ICswMjAwCi1AQCAtMTU4NSwyMCArMTU4NSwxNSBAQAorLS0tCisgY29uZmlndXJlLmFjIHwgMjEgKysrKysrKystLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGQyMGExOGUuLmM3NDE4MjkgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE1NjcsMjAgKzE1NjcsMTUgQEAgQU1fQ09ORElUSU9OQUwoRU5BQkxFX0RCVVMsIHRlc3QgIngkZW5hYmxlX2RidXMiID0gInh5ZXMiKQogIGRubCBDaGVjayBmb3IgUHl0aG9uIGhlYWRlcnMgKGN1cnJlbnRseSB1c2VmdWwgb25seSBmb3IgbGliZ250KQogIGRubCAoVGhhbmtzIHRvIFhDaGF0KQogIGlmIHRlc3QgIngkZW5hYmxlX2NvbnNvbGV1aSIgPSAieHllcyIgLWEgISAteiAiJFBZVEhPTiIgLWEgeCIkUFlUSE9OIiAhPSB4Im5vIiA7IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbi9wdXJwbGUtT0UtYnJhbmRpbmctMjUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9waWRnaW4vcHVycGxlLU9FLWJyYW5kaW5nLTI1LnBhdGNoCmluZGV4IDI5M2VmNzAuLjlhMjRmYmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbi9wdXJwbGUtT0UtYnJhbmRpbmctMjUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vcGlkZ2luL3B1cnBsZS1PRS1icmFuZGluZy0yNS5wYXRjaApAQCAtMSw4ICsxLDE2IEBACi1JbmRleDogcGlkZ2luLTIuNS4wL2xpYnB1cnBsZS9wcm90b2NvbHMvaXJjL2lyYy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGlkZ2luLTIuNS4wLm9yaWcvbGlicHVycGxlL3Byb3RvY29scy9pcmMvaXJjLmgJMjAwOC0wOC0xOSAwMTo1MzozOC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBwaWRnaW4tMi41LjAvbGlicHVycGxlL3Byb3RvY29scy9pcmMvaXJjLmgJMjAwOC0wOC0yNyAxMToxNTo1OC4wMDAwMDAwMDAgKzAwMDAKLUBAIC0zNiw5ICszNiw5IEBACitGcm9tIDQzZTlkYjY1NjQzMWZmYjIyYjQyOWQ1ZmNhNGNlM2I0YWYyMWJjOWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIZXJyaWUgPGdpdGh1Yi5jb21AaGVycmllLm9yZz4KK0RhdGU6IE1vbiwgMjQgSnVsIDIwMTcgMjE6MzA6MTYgKzAyMDAKKworLS0tCisgbGlicHVycGxlL3Byb3RvY29scy9pcmMvaXJjLmggfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlicHVycGxlL3Byb3RvY29scy9pcmMvaXJjLmggYi9saWJwdXJwbGUvcHJvdG9jb2xzL2lyYy9pcmMuaAoraW5kZXggZmRlMzVjNC4uNjZlNTJkZCAxMDA2NDQKKy0tLSBhL2xpYnB1cnBsZS9wcm90b2NvbHMvaXJjL2lyYy5oCisrKysgYi9saWJwdXJwbGUvcHJvdG9jb2xzL2lyYy9pcmMuaAorQEAgLTQwLDkgKzQwLDkgQEAKICAKICAjZGVmaW5lIElSQ19ERUZBVUxUX0NIQVJTRVQgIlVURi04IgogICNkZWZpbmUgSVJDX0RFRkFVTFRfQVVUT0RFVEVDVCBGQUxTRQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vcGlkZ2luL3Nhbml0aXplLWNvbmZpZ3VyZS5hYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbi9zYW5pdGl6ZS1jb25maWd1cmUuYWMucGF0Y2gKaW5kZXggYTc3ZDY0Zi4uODRkYmNkYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9waWRnaW4vcGlkZ2luL3Nhbml0aXplLWNvbmZpZ3VyZS5hYy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9waWRnaW4vc2FuaXRpemUtY29uZmlndXJlLmFjLnBhdGNoCkBAIC0xLDYgKzEsMTYgQEAKLS0tLSAvdG1wL2NvbmZpZ3VyZS5hYwkyMDA3LTA1LTA4IDE3OjI5OjAyLjAwMDAwMDAwMCArMDIwMAotKysrIHBpZGdpbi0yLjAuMC9jb25maWd1cmUuYWMJMjAwNy0wNS0wOCAxNzozMDozMC4zMjUyNTEwMDAgKzAyMDAKLUBAIC00NzIsNyArNDcyLDcgQEAKK0Zyb20gYzMwNThmOWVhZGFmNWZmMjhiYTc3NmNmZWQ1NGI2MDlhOTNhMTI0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhlcnJpZSA8Z2l0aHViLmNvbUBoZXJyaWUub3JnPgorRGF0ZTogTW9uLCAyNCBKdWwgMjAxNyAyMTozMDoxNiArMDIwMAorCistLS0KKyBjb25maWd1cmUuYWMgfCAxMCArLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiOGFjZDJhLi5kMjBhMThlIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02NDIsNyArNjQyLDcgQEAgaWYgdGVzdCAieCRlbmFibGVfY29uc29sZXVpIiA9ICJ4eWVzIjsgdGhlbgogIAlpZiB0ZXN0ICJ4JGVuYWJsZV9jb25zb2xldWkiID0gInh5ZXMiOyB0aGVuCiAgCQlkbmwgIyBTb21lIGRpc3Ryb3MgcHV0IHRoZSBoZWFkZXJzIGluIG5jdXJzZXN3Lywgc29tZSBkb24ndAogIAkJZm91bmRfbmN1cnNlc19oPW5vCkBAIC04LDggKzE4LDggQEAKICsJCWZvciBsb2NhdGlvbiBpbiAkYWNfbmN1cnNlc19pbmNsdWRlcyAkTkNVUlNFU19IRUFERVJTIAogIAkJZG8KICAJCQlmPSIkbG9jYXRpb24vbmN1cnNlcy5oIgotIAkJCUFDX0NIRUNLX0hFQURFUigkZixbCi1AQCAtMTg2MCwxMCArMTg2MCw2IEBACisgCQkJb3JpZ19DRkxBR1M9IiRDRkxBR1MiCitAQCAtMjM5NywxMCArMjM5Nyw2IEBAIGlmIHRlc3QgIiRrZXJiZXJvcyIgIT0gIm5vIiA7IHRoZW4KICAJCQlLUkI0X0NGTEFHUz0iJEtSQjRfQ0ZMQUdTIC1JJHtrZXJiZXJvc30vaW5jbHVkZS9rZXJiZXJvc0lWIgogIAkJZmkKICAJCUtSQjRfTERGTEFHUz0iLUwke2tlcmJlcm9zfS9saWIiCkBAIC0yMCw3ICszMCw3IEBACiAgCWZpCiAgCUFDX0RFRklORShaRVBIWVJfVVNFU19LRVJCRVJPUywgMSwgW0RlZmluZSBpZiBrZXJiZXJvcyBzaG91bGQgYmUgdXNlZCBpbiBaZXBoeXIuXSkKICAKLUBAIC0xODk2LDEwICsxODkyLDYgQEAKK0BAIC0yNDMzLDEwICsyNDI5LDYgQEAgaWYgdGVzdCAiJHplcGh5ciIgIT0gIm5vIiA7IHRoZW4KICAJCVpFUEhZUl9MREZMQUdTPSItTCR7emVwaHlyfS9saWIiCiAgCWVsaWYgdGVzdCAtZCAvdXNyL2F0aGVuYS9pbmNsdWRlL3plcGh5ciA7IHRoZW4KICAJCVpFUEhZUl9DRkxBR1M9Ii1JL3Vzci9hdGhlbmEvaW5jbHVkZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9jby9wb2NvXzEuNy45LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb2NvL3BvY29fMS44LjAuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvY28vcG9jb18xLjcuOS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb2NvL3BvY29fMS44LjAuMS5iYgppbmRleCBhYzY1NzM1Li4xNjBiNGQzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvY28vcG9jb18xLjcuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvY28vcG9jb18xLjguMC4xLmJiCkBAIC0xMiw5ICsxMiw5IEBACiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgogCi1TUkNSRVYgPSAiYmZiZTZhMzI4NzQ0ZWFhODRjYjQ0M2I5M2VlMjA5NDdhYTBiZTkxZiIKK1NSQ1JFViA9ICJhZjUyN2FiMjFmY2E1YWIyNjU5Mjg1NDA4YWVjOTkyMGVkN2M3YjE3IgogU1JDX1VSSSA9ICIgXAotICAgIGdpdDovL2dpdGh1Yi5jb20vcG9jb3Byb2plY3QvcG9jby5naXQ7YnJhbmNoPW1hc3RlciBcCisgICAgZ2l0Oi8vZ2l0aHViLmNvbS9wb2NvcHJvamVjdC9wb2NvLmdpdCBcCiAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAgICAiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyLWRhdGFfMC40LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlci1kYXRhXzAuNC44LmJiCnNpbWlsYXJpdHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyLWRhdGFfMC40LjcuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyLWRhdGFfMC40LjguYmIKaW5kZXggZTUzMGE0OC4uMzQzYjZkYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXItZGF0YV8wLjQuNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlci1kYXRhXzAuNC44LmJiCkBAIC0xNyw4ICsxNyw4IEBACiAgICAgICAgICAgICR7Q01BUF9SRVNPVVJDRVNfQkFTRX0vSWRlbnRpdHktSDtuYW1lPWlkaCBcCiAgICAgICAgICAgICR7Q01BUF9SRVNPVVJDRVNfQkFTRX0vSWRlbnRpdHktVjtuYW1lPWlkdiIKIAotU1JDX1VSSVttZDVzdW1dID0gIjYzNmE4ZjJiOWY2ZGY5ZTdjZWQ4ZWMwOTQ2OTYxZWFmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU3NTJiMGQ4OGE3YWJhNTQ1NzQxNTIxNDNlN2JmNzY0MzZhN2VmNTE5NzdjNTVkNmJkOWE0OGRjY2RlM2E3ZGUiCitTUkNfVVJJW21kNXN1bV0gPSAiMDBmODk4OWM4MDRkZTg0YWYwYmEyZWE2Mjk5NDk5ODAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTA5NmExODE2MWYyNjNjY2NkYzZkOGEyZWI1NTQ4YzQxZmY4ZmNmOWEzNjA5MjQzZjFiNjI5NmFiZGY3Mjg3MiIKIFNSQ19VUklbaWRoLm1kNXN1bV0gPSAiMDA5YzkzY2YwMTQxYWI3YmQ2YWNiN2VlYTE0MzA2Y2MiCiBTUkNfVVJJW2lkaC5zaGEyNTZzdW1dID0gImFlNzAyYzIwM2E4MmVhMTI0ZTliOTY1OTBmODIxZGI2ZmJmODc1NGUyYzQ1NDdhOWRiYTBlODJmOTQ3MzllOTUiCiBTUkNfVVJJW2lkdi5tZDVzdW1dID0gIjJmMzJhNDVkNDNkMDAxYzI2ZWVhYzZiODc4ODU1ZmJmIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXIvMDAwMS1Eby1ub3Qtb3ZlcndyaXRlLWFsbC1vdXItYnVpbGQtZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlci8wMDAxLURvLW5vdC1vdmVyd3JpdGUtYWxsLW91ci1idWlsZC1mbGFncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGY1MDg1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXIvMDAwMS1Eby1ub3Qtb3ZlcndyaXRlLWFsbC1vdXItYnVpbGQtZmxhZ3MucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBiNmZjNmMzNmQzNTlhNTA1MDMxMzhjZDg3ZDcxNDdmYWY2ZGZmODkzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTcgTWFyIDIwMTggMjA6NTI6MTAgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRG8gbm90IG92ZXJ3cml0ZSBhbGwgb3VyIGJ1aWxkIGZsYWdzCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CistLS0KKyBjbWFrZS9tb2R1bGVzL1BvcHBsZXJNYWNyb3MuY21ha2UgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY21ha2UvbW9kdWxlcy9Qb3BwbGVyTWFjcm9zLmNtYWtlIGIvY21ha2UvbW9kdWxlcy9Qb3BwbGVyTWFjcm9zLmNtYWtlCitpbmRleCBjY2IyNzkwLi4wZjM5MmNiIDEwMDY0NAorLS0tIGEvY21ha2UvbW9kdWxlcy9Qb3BwbGVyTWFjcm9zLmNtYWtlCisrKysgYi9jbWFrZS9tb2R1bGVzL1BvcHBsZXJNYWNyb3MuY21ha2UKK0BAIC0xMjUsMTQgKzEyNSwxNCBAQCBpZihDTUFLRV9DT01QSUxFUl9JU19HTlVDWFgpCisgICBzZXQoREVGQVVMVF9DT01QSUxFX1dBUk5JTkdTX0VYVFJBICIke193YXJufSAke193YXJueH0iKQorIAorICAgc2V0KF9zYXZlX2N4eGZsYWdzICIke0NNQUtFX0NYWF9GTEFHU30iKQorLSAgc2V0KENNQUtFX0NYWF9GTEFHUyAgICAgICAgICAgICAgICAiLWZuby1leGNlcHRpb25zIC1mbm8tY2hlY2stbmV3IC1mbm8tY29tbW9uIC1EX0RFRkFVTFRfU09VUkNFIikKKysgIHNldChDTUFLRV9DWFhfRkxBR1MgICAgICAgICAgICAgICAgIi1mbm8tZXhjZXB0aW9ucyAtZm5vLWNoZWNrLW5ldyAtZm5vLWNvbW1vbiAtRF9ERUZBVUxUX1NPVVJDRSAke19zYXZlX2N4eGZsYWdzfSIpCisgICBzZXQoQ01BS0VfQ1hYX0ZMQUdTX1JFTFdJVEhERUJJTkZPICItTzIgLWcgJHtfc2F2ZV9jeHhmbGFnc30iKQorICAgc2V0KENNQUtFX0NYWF9GTEFHU19SRUxFQVNFICAgICAgICAiLU8yIC1ETkRFQlVHICR7X3NhdmVfY3h4ZmxhZ3N9IikKKyAgIHNldChDTUFLRV9DWFhfRkxBR1NfREVCVUcgICAgICAgICAgIi1nIC1PMiAtZm5vLXJlb3JkZXItYmxvY2tzIC1mbm8tc2NoZWR1bGUtaW5zbnMgLWZuby1pbmxpbmUgJHtfc2F2ZV9jeHhmbGFnc30iKQorICAgc2V0KENNQUtFX0NYWF9GTEFHU19ERUJVR0ZVTEwgICAgICAiLWczIC1mbm8taW5saW5lICR7X3NhdmVfY3h4ZmxhZ3N9IikKKyAgIHNldChDTUFLRV9DWFhfRkxBR1NfUFJPRklMRSAgICAgICAgIi1nMyAtZm5vLWlubGluZSAtZnRlc3QtY292ZXJhZ2UgLWZwcm9maWxlLWFyY3MgJHtfc2F2ZV9jeHhmbGFnc30iKQorICAgc2V0KF9zYXZlX2NmbGFncyAiJHtDTUFLRV9DX0ZMQUdTfSIpCistICBzZXQoQ01BS0VfQ19GTEFHUyAgICAgICAgICAgICAgICAgICItc3RkPWM5OSAtRF9ERUZBVUxUX1NPVVJDRSIpCisrICBzZXQoQ01BS0VfQ19GTEFHUyAgICAgICAgICAgICAgICAgICItc3RkPWM5OSAtRF9ERUZBVUxUX1NPVVJDRSAke19zYXZlX2NmbGFnc30iKQorICAgc2V0KENNQUtFX0NfRkxBR1NfUkVMV0lUSERFQklORk8gICAiLU8yIC1nICR7X3NhdmVfY2ZsYWdzfSIpCisgICBzZXQoQ01BS0VfQ19GTEFHU19SRUxFQVNFICAgICAgICAgICItTzIgLUROREVCVUcgJHtfc2F2ZV9jZmxhZ3N9IikKKyAgIHNldChDTUFLRV9DX0ZMQUdTX0RFQlVHICAgICAgICAgICAgIi1nIC1PMiAtZm5vLXJlb3JkZXItYmxvY2tzIC1mbm8tc2NoZWR1bGUtaW5zbnMgLWZuby1pbmxpbmUgJHtfc2F2ZV9jZmxhZ3N9IikKKy0tIAorMi4xNC4zCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlci8wMDAxLWFkZC1tYW5hZGF0b3J5LW9wdGlvbnMtdG8tZmluZC1xdDQtcXQ1LW1vYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyLzAwMDEtYWRkLW1hbmFkYXRvcnktb3B0aW9ucy10by1maW5kLXF0NC1xdDUtbW9jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTgwZDI0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyLzAwMDEtYWRkLW1hbmFkYXRvcnktb3B0aW9ucy10by1maW5kLXF0NC1xdDUtbW9jLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotRnJvbSA5MWI2Mjc1ZjBlOTFjMjViZWIwNDBiNGVmOTQ4NDA1M2FlMzA1ZDg2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogVHVlLCAyNiBNYXkgMjAxNSAxMjo0NTo0NyArMDIwMAotU3ViamVjdDogW1BBVENIXSBhZGQgbWFuYWRhdG9yeSBvcHRpb25zIHRvIGZpbmQgcXQ0L3F0NSBtb2MKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgNTUgKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBjNGNmYzJjLi44ZTk2MWM3IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC03MTIsMjUgKzcxMiwxMCBAQCBBQ19TVUJTVChQT1BQTEVSX1FUNF9MSUJTKQotIEFDX1NVQlNUKFBPUFBMRVJfUVQ0X1RFU1RfTElCUykKLSAKLSBpZiB0ZXN0IHgkZW5hYmxlX3BvcHBsZXJfcXQ0ID0geHllczsgdGhlbgotLSAgQUNfQ0hFQ0tfVE9PTChNT0NRVDQsIG1vYykKLS0gIEFDX01TR19DSEVDS0lORyhbZm9yIFF0NCBtb2NdKQotLSAgbW9jdmVyc2lvbj1gJE1PQ1FUNCAtdiAyPiYxYAotLSAgbW9jdmVyc2lvbmdyZXA9YGVjaG8gJG1vY3ZlcnNpb24gfCBncmVwICJRdCA0ImAKLS0gIGlmIHRlc3QgeCIkbW9jdmVyc2lvbmdyZXAiICE9IHgiJG1vY3ZlcnNpb24iOyB0aGVuCi0tICAgIEFDX01TR19SRVNVTFQoW25vXSkKLS0gICAgIyBtb2Mgd2FzIG5vdCB0aGUgcXQ0IG9uZSwgdHJ5IHdpdGggbW9jLXF0NAotLSAgICBBQ19DSEVDS19UT09MKE1PQ1FUNDIsIG1vYy1xdDQpCi0tICAgIEFDX01TR19DSEVDS0lORyhbZm9yIFF0NCBtb2MtcXQ0XSkKLS0gICAgbW9jdmVyc2lvbj1gJE1PQ1FUNDIgLXYgMj4mMWAKLS0gICAgbW9jdmVyc2lvbmdyZXA9YGVjaG8gJG1vY3ZlcnNpb24gfCBncmVwICJRdCA0ImAKLS0gICAgaWYgdGVzdCB4IiRtb2N2ZXJzaW9uZ3JlcCIgIT0geCIkbW9jdmVyc2lvbiI7IHRoZW4KLS0gICAgICAjIG5vIHZhbGlkIG1vYyBmb3VuZAotLSAgICAgIGVuYWJsZV9wb3BwbGVyX3F0ND1ubzsKLS0gICAgICBNT0NRVDQ9Im5vdCBmb3VuZCIKLS0gICAgZWxzZQotLSAgICAgIE1PQ1FUND0kTU9DUVQ0MgotLSAgICBmaQotLSAgZmkKLSsgIEFDX0FSR19XSVRIKFttb2MtcXQ0XSwKLSsgICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtbW9jLXF0NF0sIFtTZXQgbG9jYXRpb24gb2YgcXQ0IG1vY10pLAotKyAgICAgICAgICAgICAgW01PQ1FUND0kd2l0aHZhbF0KLSsgICkKLSAgIEFDX1NVQlNUKE1PQ1FUNCkKLSAgIEFDX01TR19SRVNVTFQoWyRNT0NRVDRdKQotIGZpCi1AQCAtNzY5LDM0ICs3NTQsMTAgQEAgQUNfU1VCU1QoUE9QUExFUl9RVDVfTElCUykKLSBBQ19TVUJTVChQT1BQTEVSX1FUNV9URVNUX0xJQlMpCi0gCi0gaWYgdGVzdCB4JGVuYWJsZV9wb3BwbGVyX3F0NSA9IHh5ZXM7IHRoZW4KLS0gIEFDX0NIRUNLX1RPT0woTU9DUVQ1LCBtb2MpCi0tICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBRdDUgbW9jXSkKLS0gIG1vY3ZlcnNpb249YCRNT0NRVDUgLXYgMj4mMWAKLS0gIG1vY3ZlcnNpb25ncmVwPWBlY2hvICRtb2N2ZXJzaW9uIHwgZ3JlcCAtRSAiUXQgNXxtb2MgNSJgCi0tICBpZiB0ZXN0IHgiJG1vY3ZlcnNpb25ncmVwIiAhPSB4IiRtb2N2ZXJzaW9uIjsgdGhlbgotLSAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0tICAgICMgbW9jIHdhcyBub3QgdGhlIHF0NSBvbmUsIHRyeSB3aXRoIG1vYy1xdDUKLS0gICAgQUNfQ0hFQ0tfVE9PTChNT0NRVDUyLCBtb2MtcXQ1KQotLSAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBRdDUgbW9jLXF0NV0pCi0tICAgIG1vY3ZlcnNpb249YCRNT0NRVDUyIC12IDI+JjFgCi0tICAgIG1vY3ZlcnNpb25ncmVwPWBlY2hvICRtb2N2ZXJzaW9uIHwgZ3JlcCAtRSAiUXQgNXxtb2MtcXQ1IDV8bW9jIDUiYAotLSAgICBpZiB0ZXN0IHgiJG1vY3ZlcnNpb25ncmVwIiAhPSB4IiRtb2N2ZXJzaW9uIjsgdGhlbgotLSAgICAgIEFDX0NIRUNLX1RPT0woUVRDSE9PU0VSLCBxdGNob29zZXIpCi0tICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgcXRjaG9vc2VyXSkKLS0gICAgICBxdDV0b29sZGlyPWBRVF9TRUxFQ1Q9cXQ1IHF0Y2hvb3NlciAtcHJpbnQtZW52IHwgZ3JlcCBRVFRPT0xESVIgfCBjdXQgLWQgJz0nIC1mIDIgfCBjdXQgLWQgXCIgLWYgMmAKLS0gICAgICBtb2N2ZXJzaW9uPWAkcXQ1dG9vbGRpci9tb2MgLXYgMj4mMWAKLS0gICAgICBtb2N2ZXJzaW9uZ3JlcD1gZWNobyAkbW9jdmVyc2lvbiB8IGdyZXAgLUUgIlF0IDV8bW9jIDUiYAotLSAgICAgIGlmIHRlc3QgeCIkbW9jdmVyc2lvbmdyZXAiICE9IHgiJG1vY3ZlcnNpb24iOyB0aGVuCi0tICAgICAgICAjIG5vIHZhbGlkIG1vYyBmb3VuZAotLSAgICAgICAgZW5hYmxlX3BvcHBsZXJfcXQ1PW5vOwotLSAgICAgICAgTU9DUVQ1PSJub3QgZm91bmQiCi0tICAgICAgZWxzZQotLSAgICAgICAgTU9DUVQ1PSRxdDV0b29sZGlyL21vYwotLSAgICAgIGZpCi0tICAgIGVsc2UKLS0gICAgICBNT0NRVDU9JE1PQ1FUNTIKLS0gICAgZmkKLS0gIGZpCi0rICBBQ19BUkdfV0lUSChbbW9jLXF0NV0sCi0rICAgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLW1vYy1xdDVdLCBbU2V0IGxvY2F0aW9uIG9mIHF0NSBtb2NdKSwKLSsgICAgICAgICAgICAgIFtNT0NRVDU9JHdpdGh2YWxdCi0rICApCi0gICBBQ19TVUJTVChNT0NRVDUpCi0gICBBQ19NU0dfUkVTVUxUKFskTU9DUVQ1XSkKLSBmaQotLS0gCi0yLjUuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlci8wMDAyLUNhaXJvT3V0cHV0RGV2LmNjLWZpeC1idWlsZC1lcnJvci13aGVuLXVzaW5nLWZpeGVkcG8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlci8wMDAyLUNhaXJvT3V0cHV0RGV2LmNjLWZpeC1idWlsZC1lcnJvci13aGVuLXVzaW5nLWZpeGVkcG8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MyMzFmZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyLzAwMDItQ2Fpcm9PdXRwdXREZXYuY2MtZml4LWJ1aWxkLWVycm9yLXdoZW4tdXNpbmctZml4ZWRwby5wYXRjaApAQCAtMCwwICsxLDEwMCBAQAorRnJvbSA2Mjg3NjYzZTdkYjA0ZGY3ZTZkZWM1OGExZmM1YmI1ZDUxMGU4YmRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgOSBBcHIgMjAxOCAxOToxMToyMCArMDIwMAorU3ViamVjdDogW1BBVENIXSBDYWlyb091dHB1dERldi5jYzogZml4IGJ1aWxkIGVycm9yIHdoZW4gdXNpbmcgZml4ZWRwb2ludAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitGaXhlczoKK3wgPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9wb3BwbGVyLTAuNjMuMC9wb3BwbGVyL0NhaXJvT3V0cHV0RGV2LmNjOiBJbiBmdW5jdGlvbiAnaW50IHNwbGFzaFJvdW5kKFNwbGFzaENvb3JkKSc6Cit8IDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcG9wcGxlci0wLjYzLjAvcG9wcGxlci9DYWlyb091dHB1dERldi5jYzoxNjA0OjI4OiBlcnJvcjogY2FsbCBvZiBvdmVybG9hZGVkICdmbG9vcihGaXhlZFBvaW50KScgaXMgYW1iaWd1b3VzCit8ICAgIHJldHVybiAoaW50KWZsb29yKHggKyAwLjUpOworfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9mZWF0dXJlcy5oOjQyODowLAorfCAgICAgICAgICAgICAgICAgIGZyb20gPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9jKysvNy4zLjAvYXJtLW9lLWxpbnV4LWdudWVhYmkvYml0cy9vc19kZWZpbmVzLmg6MzksCit8ICAgICAgICAgICAgICAgICAgZnJvbSA8dG1wZGlyPi9vZS1jb3JlLWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL3BvcHBsZXIvMC42My4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL2MrKy83LjMuMC9hcm0tb2UtbGludXgtZ251ZWFiaS9iaXRzL2MrK2NvbmZpZy5oOjUzMywKK3wgICAgICAgICAgICAgICAgICBmcm9tIDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvYysrLzcuMy4wL2NzdGRpbnQ6MzgsCit8ICAgICAgICAgICAgICAgICAgZnJvbSA8dG1wZGlyPi9vZS1jb3JlLWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL3BvcHBsZXIvMC42My4wLXIwL3BvcHBsZXItMC42My4wL3BvcHBsZXIvQ2Fpcm9PdXRwdXREZXYuY2M6NDQ6Cit8IDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaDoxNjU6MTogbm90ZTogY2FuZGlkYXRlOiBkb3VibGUgZmxvb3IoZG91YmxlKQorfCAgX19NQVRIQ0FMTFggKGZsb29yLCwgKF9NZG91YmxlXyBfX3gpLCAoX19jb25zdF9fKSk7Cit8ICBeCit8IEluIGZpbGUgaW5jbHVkZWQgZnJvbSA8dG1wZGlyPi9vZS1jb3JlLWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL3BvcHBsZXIvMC42My4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL2MrKy83LjMuMC9tYXRoLmg6MzY6MCwKK3wgICAgICAgICAgICAgICAgICBmcm9tIDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcG9wcGxlci0wLjYzLjAvcG9wcGxlci9DYWlyb091dHB1dERldi5jYzo0NjoKK3wgPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9jKysvNy4zLjAvY21hdGg6MjYwOjM6IG5vdGU6IGNhbmRpZGF0ZTogY29uc3RleHByIGZsb2F0IHN0ZDo6Zmxvb3IoZmxvYXQpCit8ICAgIGZsb29yKGZsb2F0IF9feCkKK3wgICAgXn5+fn4KK3wgPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9jKysvNy4zLjAvY21hdGg6MjY0OjM6IG5vdGU6IGNhbmRpZGF0ZTogY29uc3RleHByIGxvbmcgZG91YmxlIHN0ZDo6Zmxvb3IobG9uZyBkb3VibGUpCit8ICAgIGZsb29yKGxvbmcgZG91YmxlIF9feCkKK3wgICAgXn5+fn4KK3wgPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9wb3BwbGVyLTAuNjMuMC9wb3BwbGVyL0NhaXJvT3V0cHV0RGV2LmNjOiBJbiBmdW5jdGlvbiAnaW50IHNwbGFzaENlaWwoU3BsYXNoQ29vcmQpJzoKK3wgPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9wb3BwbGVyLTAuNjMuMC9wb3BwbGVyL0NhaXJvT3V0cHV0RGV2LmNjOjE2MDg6MjE6IGVycm9yOiBjYWxsIG9mIG92ZXJsb2FkZWQgJ2NlaWwoU3BsYXNoQ29vcmQmKScgaXMgYW1iaWd1b3VzCit8ICAgIHJldHVybiAoaW50KWNlaWwoeCk7Cit8ICAgICAgICAgICAgICAgICAgICAgIF4KK3wgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaDo0Mjg6MCwKK3wgICAgICAgICAgICAgICAgICBmcm9tIDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvYysrLzcuMy4wL2FybS1vZS1saW51eC1nbnVlYWJpL2JpdHMvb3NfZGVmaW5lcy5oOjM5LAorfCAgICAgICAgICAgICAgICAgIGZyb20gPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9jKysvNy4zLjAvYXJtLW9lLWxpbnV4LWdudWVhYmkvYml0cy9jKytjb25maWcuaDo1MzMsCit8ICAgICAgICAgICAgICAgICAgZnJvbSA8dG1wZGlyPi9vZS1jb3JlLWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL3BvcHBsZXIvMC42My4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL2MrKy83LjMuMC9jc3RkaW50OjM4LAorfCAgICAgICAgICAgICAgICAgIGZyb20gPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9wb3BwbGVyLTAuNjMuMC9wb3BwbGVyL0NhaXJvT3V0cHV0RGV2LmNjOjQ0OgorfCA8dG1wZGlyPi9vZS1jb3JlLWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL3BvcHBsZXIvMC42My4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmg6MTU5OjE6IG5vdGU6IGNhbmRpZGF0ZTogZG91YmxlIGNlaWwoZG91YmxlKQorfCAgX19NQVRIQ0FMTFggKGNlaWwsLCAoX01kb3VibGVfIF9feCksIChfX2NvbnN0X18pKTsKK3wgIF4KK3wgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvYysrLzcuMy4wL21hdGguaDozNjowLAorfCAgICAgICAgICAgICAgICAgIGZyb20gPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9wb3BwbGVyLTAuNjMuMC9wb3BwbGVyL0NhaXJvT3V0cHV0RGV2LmNjOjQ2OgorfCA8dG1wZGlyPi9vZS1jb3JlLWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL3BvcHBsZXIvMC42My4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL2MrKy83LjMuMC9jbWF0aDoxNjU6Mzogbm90ZTogY2FuZGlkYXRlOiBjb25zdGV4cHIgZmxvYXQgc3RkOjpjZWlsKGZsb2F0KQorfCAgICBjZWlsKGZsb2F0IF9feCkKK3wgICAgXn5+fgorfCA8dG1wZGlyPi9vZS1jb3JlLWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL3BvcHBsZXIvMC42My4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL2MrKy83LjMuMC9jbWF0aDoxNjk6Mzogbm90ZTogY2FuZGlkYXRlOiBjb25zdGV4cHIgbG9uZyBkb3VibGUgc3RkOjpjZWlsKGxvbmcgZG91YmxlKQorfCAgICBjZWlsKGxvbmcgZG91YmxlIF9feCkKK3wgICAgXn5+fgorfCA8dG1wZGlyPi9vZS1jb3JlLWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL3BvcHBsZXIvMC42My4wLXIwL3BvcHBsZXItMC42My4wL3BvcHBsZXIvQ2Fpcm9PdXRwdXREZXYuY2M6IEluIGZ1bmN0aW9uICdpbnQgc3BsYXNoRmxvb3IoU3BsYXNoQ29vcmQpJzoKK3wgPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9wb3BwbGVyLTAuNjMuMC9wb3BwbGVyL0NhaXJvT3V0cHV0RGV2LmNjOjE2MTI6MjI6IGVycm9yOiBjYWxsIG9mIG92ZXJsb2FkZWQgJ2Zsb29yKFNwbGFzaENvb3JkJiknIGlzIGFtYmlndW91cworfCAgICByZXR1cm4gKGludClmbG9vcih4KTsKK3wgICAgICAgICAgICAgICAgICAgICAgIF4KK3wgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaDo0Mjg6MCwKK3wgICAgICAgICAgICAgICAgICBmcm9tIDx0bXBkaXI+L29lLWNvcmUtZ2xpYmMvd29yay9hcm12NXRlLW9lLWxpbnV4LWdudWVhYmkvcG9wcGxlci8wLjYzLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvYysrLzcuMy4wL2FybS1vZS1saW51eC1nbnVlYWJpL2JpdHMvb3NfZGVmaW5lcy5oOjM5LAorfCAgICAgICAgICAgICAgICAgIGZyb20gPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9jKysvNy4zLjAvYXJtLW9lLWxpbnV4LWdudWVhYmkvYml0cy9jKytjb25maWcuaDo1MzMsCit8ICAgICAgICAgICAgICAgICAgZnJvbSA8dG1wZGlyPi9vZS1jb3JlLWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL3BvcHBsZXIvMC42My4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL2MrKy83LjMuMC9jc3RkaW50OjM4LAorfCAgICAgICAgICAgICAgICAgIGZyb20gPHRtcGRpcj4vb2UtY29yZS1nbGliYy93b3JrL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9wb3BwbGVyLzAuNjMuMC1yMC9wb3BwbGVyLTAuNjMuMC9wb3BwbGVyL0NhaXJvT3V0cHV0RGV2LmNjOjQ0OgorfCA8dG1wZGlyPi9vZS1jb3JlLWdsaWJjL3dvcmsvYXJtdjV0ZS1vZS1saW51eC1nbnVlYWJpL3BvcHBsZXIvMC42My4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmg6MTY1OjE6IG5vdGU6IGNhbmRpZGF0ZTogZG91YmxlIGZsb29yKGRvdWJsZSkKKworU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKy0tLQorIHBvcHBsZXIvQ2Fpcm9PdXRwdXREZXYuY2MgfCAxMiArKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvcG9wcGxlci9DYWlyb091dHB1dERldi5jYyBiL3BvcHBsZXIvQ2Fpcm9PdXRwdXREZXYuY2MKK2luZGV4IDE4MTI0YjhmLi40Yzg1YWQ2NSAxMDA2NDQKKy0tLSBhL3BvcHBsZXIvQ2Fpcm9PdXRwdXREZXYuY2MKKysrKyBiL3BvcHBsZXIvQ2Fpcm9PdXRwdXREZXYuY2MKK0BAIC0xNjAyLDE1ICsxNjAyLDI3IEBAIHZvaWQgQ2Fpcm9PdXRwdXREZXY6OmVuZEFjdHVhbFRleHQoR2Z4U3RhdGUgKnN0YXRlKQorIH0KKyAKKyBzdGF0aWMgaW5saW5lIGludCBzcGxhc2hSb3VuZChTcGxhc2hDb29yZCB4KSB7CisrI2lmIGRlZmluZWQoVVNFX0ZJWEVEUE9JTlQpCisrICByZXR1cm4gRml4ZWRQb2ludDo6Zmxvb3IoeCArIDAuNSk7CisrI2Vsc2UKKyAgIHJldHVybiAoaW50KWZsb29yKHggKyAwLjUpOworKyNlbmRpZgorIH0KKyAKKyBzdGF0aWMgaW5saW5lIGludCBzcGxhc2hDZWlsKFNwbGFzaENvb3JkIHgpIHsKKysjaWYgZGVmaW5lZChVU0VfRklYRURQT0lOVCkKKysgIHJldHVybiBGaXhlZFBvaW50OjpjZWlsKHgpOworKyNlbHNlCisgICByZXR1cm4gKGludCljZWlsKHgpOworKyNlbmRpZgorIH0KKyAKKyBzdGF0aWMgaW5saW5lIGludCBzcGxhc2hGbG9vcihTcGxhc2hDb29yZCB4KSB7CisrI2lmIGRlZmluZWQoVVNFX0ZJWEVEUE9JTlQpCisrICByZXR1cm4gRml4ZWRQb2ludDo6Zmxvb3IoeCk7CisrI2Vsc2UKKyAgIHJldHVybiAoaW50KWZsb29yKHgpOworKyNlbmRpZgorIH0KKyAKKyBzdGF0aWMKKy0tIAorMi4xNC4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyLzAwMDItZml4LWdjYy02LW1hdGgtYW1iaWd1b3VzLWVycm9ycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyLzAwMDItZml4LWdjYy02LW1hdGgtYW1iaWd1b3VzLWVycm9ycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDA2MDA5Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlci8wMDAyLWZpeC1nY2MtNi1tYXRoLWFtYmlndW91cy1lcnJvcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0tLS0gcG9wcGxlci0wLjQ1LjAvcG9wcGxlci9DYWlyb091dHB1dERldi5jYy5vcmlnCTIwMTYtMDYtMTcgMTQ6MjM6MzUuMzk5MDgzOTI5IC0wNDAwCi0rKysgcG9wcGxlci0wLjQ1LjAvcG9wcGxlci9DYWlyb091dHB1dERldi5jYwkyMDE2LTA2LTE3IDE0OjM2OjUzLjM1MTA5NzgyNSAtMDQwMAotQEAgLTQyLDcgKzQyLDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8Y21hdGg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxjYWlyby5oPgotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXJfMC41Ny4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXJfMC41Ny4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2I3N2FhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyXzAuNTcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLVNVTU1BUlkgPSAiUG9wcGxlciBpcyBhIFBERiByZW5kZXJpbmcgbGlicmFyeSBiYXNlZCBvbiB0aGUgeHBkZi0zLjAgY29kZSBiYXNlIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL3BvcHBsZXIuZnJlZWRlc2t0b3Aub3JnLyR7QlB9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtYWRkLW1hbmFkYXRvcnktb3B0aW9ucy10by1maW5kLXF0NC1xdDUtbW9jLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1maXgtZ2NjLTYtbWF0aC1hbWJpZ3VvdXMtZXJyb3JzLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiYzVhMTkxNzQxNjA0NTUyYzkwZDQ4NDEwMzIyOTM3NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwZWEzN2RlNzFiN2RiNzgyMTJlYmM3OWRmNTlmOTliNjY0MDlhMjljMmVhYzRkODgyZGFlOWYyMzk3ZmU0NGQ4IgotCi1ERVBFTkRTID0gImZvbnRjb25maWcgemxpYiBjYWlybyBsY21zIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotUEFDS0FHRUNPTkZJRyA/Pz0gImpwZWcgb3BlbmpwZWcgcG5nIHRpZmYgbnNzICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCQkZJTEVfQ09MTEVDVElPTlMnLCAncXQ1LWxheWVyJywgJ3F0NScsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2pwZWddID0gIi0tZW5hYmxlLWRjdGRlY29kZXI9bGlianBlZywtLWVuYWJsZS1kY3RkZWNvZGVyPW5vbmUsanBlZyIKLVBBQ0tBR0VDT05GSUdbcG5nXSA9ICItLWVuYWJsZS1saWJwbmcsLS1kaXNhYmxlLWxpYnBuZyxsaWJwbmciCi1QQUNLQUdFQ09ORklHW3RpZmZdID0gIi0tZW5hYmxlLWxpYnRpZmYsLS1kaXNhYmxlLWxpYnRpZmYsdGlmZiIKLVBBQ0tBR0VDT05GSUdbY3VybF0gPSAiLS1lbmFibGUtbGliY3VybCwtLWRpc2FibGUtbGliY3VybCxjdXJsIgotUEFDS0FHRUNPTkZJR1tvcGVuanBlZ10gPSAiLS1lbmFibGUtbGlib3BlbmpwZWc9b3BlbmpwZWcyLC0tZGlzYWJsZS1saWJvcGVuanBlZyxvcGVuanBlZyIKLVBBQ0tBR0VDT05GSUdbcXQ1XSA9ICItLWVuYWJsZS1wb3BwbGVyLXF0NSAtLXdpdGgtbW9jLXF0NT0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcXQ1L21vYywtLWRpc2FibGUtcG9wcGxlci1xdDUscXRiYXNlIHF0dG9vbHMtbmF0aXZlIgotUEFDS0FHRUNPTkZJR1txdDRlXSA9ICItLWVuYWJsZS1wb3BwbGVyLXF0NCAtLXdpdGgtbW9jLXF0ND0ke1NUQUdJTkdfQklORElSX05BVElWRX0vbW9jNCwtLWRpc2FibGUtcG9wcGxlci1xdDQscXQ0LWVtYmVkZGVkIgotUEFDS0FHRUNPTkZJR1tuc3NdID0gIi0tZW5hYmxlLWxpYm5zcywtLWRpc2FibGUtbGlibnNzLG5zcyIKLQotU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS1lbmFibGUteHBkZi1oZWFkZXJzIFwKLSAgICAtLWRpc2FibGUtZ3RrLXRlc3QgXAotICAgIC0tZW5hYmxlLXpsaWIgXAotIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vcG9wcGxlci8ubGlicyIKLX0KLQotIyBBZGp1c3QgbGlicmFyeSBuYW1lcyB3aGVuIGJ1aWxkaW5nIGZvciBRVDRlCi1RVDRFX1BBVENIRVMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncXQ0ZScsICdmaWxlOi8vZml4LXF0NGUtbGlicmFyeS1kZXBlbmRlbmNpZXMucGF0Y2gnLCAnJywgZCl9IgotU1JDX1VSSV9hcHBlbmQgPSAiJHtRVDRFX1BBVENIRVN9IgotCi0jIGNoZWNrIGZvciBUQVJHRVRfRlBVPXNvZnQgYW5kIGluZm9ybSBjb25maWd1cmUgb2YgdGhlIHJlc3VsdCBzbyBpdCBjYW4gZGlzYWJsZSBzb21lIGZsb2F0aW5nIHBvaW50cwotZGVmIGdldF9wb3BwbGVyX2ZwdV9zZXR0aW5nKGJiLCBkKToKLSAgICBpZiBkLmdldFZhcignVEFSR0VUX0ZQVScpIGluIFsgJ3NvZnQnIF06Ci0gICAgICAgIHJldHVybiAiLS1lbmFibGUtZml4ZWRwb2ludCIKLSAgICByZXR1cm4gIiIKLQotRVhUUkFfT0VDT05GICs9ICIke0BnZXRfcG9wcGxlcl9mcHVfc2V0dGluZyhiYiwgZCl9IgotCi1QQUNLQUdFUyA9KyAibGlicG9wcGxlciBsaWJwb3BwbGVyLWdsaWIiCi1GSUxFU19saWJwb3BwbGVyID0gIiR7bGliZGlyfS9saWJwb3BwbGVyLnNvLioiCi1GSUxFU19saWJwb3BwbGVyLWdsaWIgPSAiJHtsaWJkaXJ9L2xpYnBvcHBsZXItZ2xpYi5zby4qIgotCi1SREVQRU5EU19saWJwb3BwbGVyID0gInBvcHBsZXItZGF0YSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyXzAuNjMuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyXzAuNjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWNiMzU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXJfMC42My4wLmJiCkBAIC0wLDAgKzEsNTYgQEAKK1NVTU1BUlkgPSAiUG9wcGxlciBpcyBhIFBERiByZW5kZXJpbmcgbGlicmFyeSBiYXNlZCBvbiB0aGUgeHBkZi0zLjAgY29kZSBiYXNlIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL3BvcHBsZXIuZnJlZWRlc2t0b3Aub3JnLyR7QlB9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtRG8tbm90LW92ZXJ3cml0ZS1hbGwtb3VyLWJ1aWxkLWZsYWdzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1DYWlyb091dHB1dERldi5jYy1maXgtYnVpbGQtZXJyb3Itd2hlbi11c2luZy1maXhlZHBvLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NmE1NGRhNDg5NmIxNDA4NjExNjk5ZmVkYTVjMTgyMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyN2NjOGFkZGFmYzc5MWUxYTI2Y2U2YWNjMmI0OTA5MjZlYTczYTRmODkxOTZkZDhhNzc0MmNmZjdjZjhhMTExIgorCitERVBFTkRTID0gImZvbnRjb25maWcgemxpYiBjYWlybyBsY21zIgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworUEFDS0FHRUNPTkZJRyA/Pz0gImpwZWcgb3BlbmpwZWcgcG5nIHRpZmYgbnNzICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCQkZJTEVfQ09MTEVDVElPTlMnLCAncXQ1LWxheWVyJywgJ3F0NScsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW2pwZWddID0gIi1EV0lUSF9KUEVHPU9OIC1ERU5BQkxFX0RDVERFQ09ERVI9bGlianBlZywtRFdJVEhfSlBFRz1PRkYgLURFTkFCTEVfRENUREVDT0RFUj1ub25lLGpwZWciCitQQUNLQUdFQ09ORklHW3BuZ10gPSAiLURXSVRIX1BORz1PTiwtRFdJVEhfUE5HPU9GRixsaWJwbmciCitQQUNLQUdFQ09ORklHW3RpZmZdID0gIi1EV0lUSF9USUZGPU9OLC1EV0lUSF9USUZGPU9GRix0aWZmIgorUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItREVOQUJMRV9MSUJDVVJMPU9OLC1ERU5BQkxFX0xJQkNVUkw9T0ZGLGN1cmwiCitQQUNLQUdFQ09ORklHW29wZW5qcGVnXSA9ICItREVOQUJMRV9MSUJPUEVOSlBFRz1vcGVuanBlZzIsLURFTkFCTEVfTElCT1BFTkpQRUc9bm9uZSxvcGVuanBlZyIKK1BBQ0tBR0VDT05GSUdbcXQ1XSA9ICItREVOQUJMRV9RVDU9T04sLURFTkFCTEVfUVQ1PU9GRixxdGJhc2UgcXR0b29scy1uYXRpdmUiCitQQUNLQUdFQ09ORklHW25zc10gPSAiLURXSVRIX05TUzM9T04sLURXSVRIX05TUzM9T0ZGLG5zcyIKKworIyBzdXJwcmlzZSAtIGRpZCBub3QgZXhwZWN0IHRoaXMgdG8gd29yayA6KQoraW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdxdDUnLCAnY21ha2VfcXQ1JywgJycsIGQpfQorCitTRUNVUklUWV9DRkxBR1MgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKKworRVhUUkFfT0VDTUFLRSArPSAiIFwKKyAgICAtREVOQUJMRV9YUERGX0hFQURFUlM9T04gXAorICAgIC1EQlVJTERfR1RLX1RFU1RTPU9GRiBcCisgICAgLURFTkFCTEVfWkxJQj1PTiBcCisiCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisgICAgIyBwb3BwbGVyIG1hY3JvIHVzZXMgcGtnLWNvbmZpZyB0byBjaGVjayBmb3IgZy1pciBydW50aW1lcy4gU29tZXRoaW5nCisgICAgIyBtYWtlcyB0aGVtIHBvaW50IHRvIC91c3IvYmluLiBBbGlnbiB0aGVtIHRvIHN5c3Jvb3QgLSB0aGF0J3Mgd2hlcmUgdGhlCisgICAgIyBnaXQtd3JhcHBlcnMgYXJlOgorICAgIHNlZCAtaSAnczogJHtiaW5kaXJ9L2ctaXI6ICR7U1RBR0lOR19CSU5ESVJ9L2ctaXI6JyAke0J9L2J1aWxkLm5pbmphCit9CisKKyMgY2hlY2sgZm9yIFRBUkdFVF9GUFU9c29mdCBhbmQgaW5mb3JtIGNvbmZpZ3VyZSBvZiB0aGUgcmVzdWx0IHNvIGl0IGNhbiBkaXNhYmxlIHNvbWUgZmxvYXRpbmcgcG9pbnRzCitkZWYgZ2V0X3BvcHBsZXJfZnB1X3NldHRpbmcoYmIsIGQpOgorICAgIGlmIGQuZ2V0VmFyKCdUQVJHRVRfRlBVJykgaW4gWyAnc29mdCcgXToKKyAgICAgICAgcmV0dXJuICItRFVTRV9GSVhFRFBPSU5UPU9OIgorICAgIHJldHVybiAiIgorCitFWFRSQV9PRUNNQUtFICs9ICIke0BnZXRfcG9wcGxlcl9mcHVfc2V0dGluZyhiYiwgZCl9IgorCitQQUNLQUdFUyA9KyAibGlicG9wcGxlciBsaWJwb3BwbGVyLWdsaWIiCitGSUxFU19saWJwb3BwbGVyID0gIiR7bGliZGlyfS9saWJwb3BwbGVyLnNvLioiCitGSUxFU19saWJwb3BwbGVyLWdsaWIgPSAiJHtsaWJkaXJ9L2xpYnBvcHBsZXItZ2xpYi5zby4qIgorCitSREVQRU5EU19saWJwb3BwbGVyID0gInBvcHBsZXItZGF0YSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9zdGdyZXNxbC9maWxlcy9yZW1vdmUuYXV0b2NvbmYudmVyc2lvbi5jaGVjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9zdGdyZXNxbC9maWxlcy9yZW1vdmUuYXV0b2NvbmYudmVyc2lvbi5jaGVjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmUyM2ZkNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvZmlsZXMvcmVtb3ZlLmF1dG9jb25mLnZlcnNpb24uY2hlY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1JbmRleDogcG9zdGdyZXNxbC05LjIuNC9jb25maWd1cmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwb3N0Z3Jlc3FsLTkuMi40Lm9yaWcvY29uZmlndXJlLmluCi0rKysgcG9zdGdyZXNxbC05LjIuNC9jb25maWd1cmUuaW4KLUBAIC0xOSwxMCArMTksNiBAQCBtNF9wYXR0ZXJuX2ZvcmJpZCheUEdBQ18pZG5sIHRvIGNhdGNoIHVuCi0gCi0gQUNfSU5JVChbUG9zdGdyZVNRTF0sIFs5LjQuMl0sIFtwZ3NxbC1idWdzQHBvc3RncmVzcWwub3JnXSkKLSAKLS1tNF9pZihtNF9kZWZuKFttNF9QQUNLQUdFX1ZFUlNJT05dKSwgWzIuNjldLCBbXSwgW200X2ZhdGFsKFtBdXRvY29uZiB2ZXJzaW9uIDIuNjkgaXMgcmVxdWlyZWQuCi0tVW50ZXN0ZWQgY29tYmluYXRpb25zIG9mICdhdXRvY29uZicgYW5kIFBvc3RncmVTUUwgdmVyc2lvbnMgYXJlIG5vdAotLXJlY29tbWVuZGVkLiAgWW91IGNhbiByZW1vdmUgdGhlIGNoZWNrIGZyb20gJ2NvbmZpZ3VyZS5pbicgYnV0IGl0IGlzIHRoZW4KLS15b3VyIHJlc3BvbnNpYmlsaXR5IHdoZXRoZXIgdGhlIHJlc3VsdCB3b3JrcyBvciBub3QuXSldKQotIEFDX0NPUFlSSUdIVChbQ29weXJpZ2h0IChjKSAxOTk2LTIwMTQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwXSkKLSBBQ19DT05GSUdfU1JDRElSKFtzcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2hlYXB0dXBsZS5jXSkKLSBBQ19DT05GSUdfQVVYX0RJUihjb25maWcpCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsXzkuNC4xNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsXzkuNC4xNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWVjMDk5YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bvc3RncmVzcWwvcG9zdGdyZXNxbF85LjQuMTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1yZXF1aXJlIHBvc3RncmVzcWwuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9ODFiNjlkZGIzMWE4YmU2NmJhYWZkMTRhOTAxNDZlZTIiCi0KLVNSQ19VUkkgKz0gIlwKLSAgICBmaWxlOi8vcmVtb3ZlLmF1dG9jb25mLnZlcnNpb24uY2hlY2sucGF0Y2ggXAotICAgIGZpbGU6Ly9ub3QtY2hlY2stbGlicGVybC5wYXRjaCBcCi0iCi0KLWRvX2NvbXBpbGVfcHJlcGVuZF9saWJjLW11c2woKSB7Ci0gICAgc2VkIC1pIC1lICdzL1wtbG5zbC8vZycgJHtCfS9zcmMvTWFrZWZpbGUuZ2xvYmFsCi19Ci0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwYWFkYTA4MzNhOTIwOGFlNWZhYjk2NmM3M2MzOTM3OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMmJmYjNjN2U4ZTQ1NTE1ZWY5MjFhZDM2NWUxMjI2ODJhNWM0OTM1ZGNjMDAzMjY0NDQzM2FmMmRlMzFhY2M0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcGl0b29scy9zcGl0b29sc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NwaXRvb2xzL3NwaXRvb2xzX2dpdC5iYgppbmRleCBmODA4MTI1Li4zZjZjZGM2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NwaXRvb2xzL3NwaXRvb2xzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NwaXRvb2xzL3NwaXRvb2xzX2dpdC5iYgpAQCAtNCwxMSArNCwxNiBAQAogTElDRU5TRT0iR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04YzE2NjY2YWU2YzE1OTg3NmEwYmE2MzA5OTYxNDM4MSIKIAorUFIgPSAicjAiCisKK0JQViA9ICIwLjguMSIKK1BWID0gIiR7QlBWfSIKK1NSQ1JFViA9ICIzMThiY2FlNTI0OTcyMjg3M2JmNThiMjdhZmRkMjA0NzNjNzA0N2NjIgorCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY3BiLS9zcGktdG9vbHMuZ2l0O3Byb3RvY29sPWdpdCIKIAotU1JDUkVWID0gIjAzNDA1YWI0NTg4NGU0MjY0ZGZhMDM3MWMwMzJiMmJhYWVlYWFhOTgiCiAKIGluaGVyaXQgYXV0b3Rvb2xzCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL0ZpeC10aGUtbWVtb3J5LWxlYWstcHJvYmxlbS13aGVuLUhBVkVfRU5WSVJPTi1kZWZpbmVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvRml4LXRoZS1tZW1vcnktbGVhay1wcm9ibGVtLXdoZW4tSEFWRV9FTlZJUk9OLWRlZmluZWQucGF0Y2gKaW5kZXggMmFjOWMwYi4uNWQ0ODFmMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvRml4LXRoZS1tZW1vcnktbGVhay1wcm9ibGVtLXdoZW4tSEFWRV9FTlZJUk9OLWRlZmluZWQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvRml4LXRoZS1tZW1vcnktbGVhay1wcm9ibGVtLXdoZW4tSEFWRV9FTlZJUk9OLWRlZmluZWQucGF0Y2gKQEAgLTQsOSArNCwxMSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBYdWZlbmcgWmhhbmcgPHh1ZmVuZy56aGFuZ0B3aW5kcml2ZXIuY29tPgogLS0tCi0tLS0gYS9saWIvZ3Byb2Nlc3MuYwotKysrIGIvbGliL2dwcm9jZXNzLmMKLUBAIC0xNDIxLDYgKzE0MjEsMTggQEAKK0luZGV4OiBzeXNsb2ctbmctMy44LjEvbGliL2dwcm9jZXNzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzeXNsb2ctbmctMy44LjEub3JpZy9saWIvZ3Byb2Nlc3MuYworKysrIHN5c2xvZy1uZy0zLjguMS9saWIvZ3Byb2Nlc3MuYworQEAgLTE0MzIsNiArMTQzMiwxOCBAQCBnX3Byb2Nlc3Nfc3RhcnR1cF9vayh2b2lkKQogIHZvaWQKICBnX3Byb2Nlc3NfZmluaXNoKHZvaWQpCiAgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvY29uZmlndXJlLmFjLWFkZC1vcHRpb24tZW5hYmxlLXRocmVhZC10bHMtdG8tbWFuYWdlLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL2NvbmZpZ3VyZS5hYy1hZGQtb3B0aW9uLWVuYWJsZS10aHJlYWQtdGxzLXRvLW1hbmFnZS0ucGF0Y2gKaW5kZXggY2M4ZDExMC4uYzE3MmU0ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvY29uZmlndXJlLmFjLWFkZC1vcHRpb24tZW5hYmxlLXRocmVhZC10bHMtdG8tbWFuYWdlLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9jb25maWd1cmUuYWMtYWRkLW9wdGlvbi1lbmFibGUtdGhyZWFkLXRscy10by1tYW5hZ2UtLnBhdGNoCkBAIC0xMCwxMyArMTAsMTMgQEAKICBjb25maWd1cmUuYWMgfCAxNyArKysrKysrKysrKy0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA0NzRlMDk0Li5jZWRjYTU0IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMjAsNiArMTIwLDkgQEAgQUNfQVJHX0VOQUJMRShtZW10cmFjZSwKLSBBQ19BUkdfRU5BQkxFKHNzbCwKLSAgICAgICAgICAgICAgIFsgIC0tZW5hYmxlLXNzbCAgICAgICAgRW5hYmxlIFNTTCBzdXBwb3J0Ll0sLGVuYWJsZV9zc2w9ImF1dG8iKQorSW5kZXg6IHN5c2xvZy1uZy0zLjguMS9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzeXNsb2ctbmctMy44LjEub3JpZy9jb25maWd1cmUuYWMKKysrKyBzeXNsb2ctbmctMy44LjEvY29uZmlndXJlLmFjCitAQCAtMTQ3LDYgKzE0Nyw5IEBAIEFDX0FSR19FTkFCTEUoZ3Byb2YsCisgQUNfQVJHX0VOQUJMRShtZW10cmFjZSwKKyAgICAgICAgICAgICAgIFsgIC0tZW5hYmxlLW1lbXRyYWNlICAgRW5hYmxlIGFsdGVybmF0aXZlIGxlYWsgZGVidWdnaW5nIGNvZGUuXSkKICAKICtBQ19BUkdfRU5BQkxFKHRocmVhZC10bHMsCiArICAgICAgICAgICAgICBbICAtLWVuYWJsZS10aHJlYWQtdGxzICAgICAgICBFbmFibGUgVGhyZWFkIFRyYW5zcG9ydCBMYXllciBTZWN1cml0eSBzdXBwb3J0Ll0sLGVuYWJsZV90aHJlYWRfdGxzPSJubyIpCkBAIC0yNCw3ICsyNCw3IEBACiAgQUNfQVJHX0VOQUJMRShkeW5hbWljLWxpbmtpbmcsCiAgICAgICAgICAgICAgICBbICAtLWVuYWJsZS1keW5hbWljLWxpbmtpbmcgICAgICAgIExpbmsgZXZlcnl0aGluZyBkeW5hbWljYWxseS5dLCxlbmFibGVfZHluYW1pY19saW5raW5nPSJhdXRvIikKICAKLUBAIC0zODEsMTIgKzM4NCwxNCBAQCBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitAQCAtNDg2LDEyICs0ODksMTQgQEAgZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogIGRubCBJcyB0aGUgX190aHJlYWQga2V5d29yZCBhdmFpbGFibGU/CiAgZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogIApAQCAtNDUsNiArNDUsMyBAQAogIAogIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICBkbmwgSG93IHRvIGRvIHN0YXRpYyBsaW5raW5nPwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9maXgtY29uZmlnLWxpYm5ldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL2ZpeC1jb25maWctbGlibmV0LnBhdGNoCmluZGV4IDc1NTgwM2MuLjU1M2Y0YTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL2ZpeC1jb25maWctbGlibmV0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL2ZpeC1jb25maWctbGlibmV0LnBhdGNoCkBAIC0xMCwxMSArMTAsMTEgQEAKICBjb25maWd1cmUuYWMgfCAgIDI3ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogIDEgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGIxZTE4YjQuLjhlMTMwMjUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTczLDYgKzczLDkgQEAgQUNfQ09ORklHX0hFQURFUlMoY29uZmlnLmgpCitJbmRleDogc3lzbG9nLW5nLTMuOC4xL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHN5c2xvZy1uZy0zLjguMS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIHN5c2xvZy1uZy0zLjguMS9jb25maWd1cmUuYWMKK0BAIC0xMDQsNiArMTA0LDkgQEAgQUNfQ09ORklHX0hFQURFUlMoY29uZmlnLmgpCiAgZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogIGRubCBBcmd1bWVudHMKICAKQEAgLTI0LDcgKzI0LDcgQEAKICBBQ19BUkdfV0lUSChsaWJuZXQsCiAgICAgWyAgLS13aXRoLWxpYm5ldD1wYXRoICAgICAgdXNlIHBhdGggdG8gbGlibmV0LWNvbmZpZyBzY3JpcHRdLAogICAgICwKLUBAIC03NjgsMjIgKzc3MSwyNiBAQCBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitAQCAtODkzLDIyICs4OTYsMjYgQEAgZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogIGRubCBsaWJuZXQgaGVhZGVycy9saWJyYXJpZXMKICBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgQUNfTVNHX0NIRUNLSU5HKGZvciBMSUJORVQpCkBAIC02MSw2ICs2MSwzIEBACiAgaWYgdGVzdCAieCRlbmFibGVfc3Bvb2Zfc291cmNlIiA9ICJ4YXV0byI7IHRoZW4KICAJQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgdG8gZW5hYmxlIHNwb29mIHNvdXJjZSBzdXBwb3J0KQogICAgICAgICAgaWYgdGVzdCAieCRMSUJORVRfTElCUyIgIT0gIngiOyB0aGVuCi0tLSAKLTEuNy4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL2ZpeC1pbnZhbGlkLW93bmVyc2hpcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL2ZpeC1pbnZhbGlkLW93bmVyc2hpcC5wYXRjaAppbmRleCBmYWY5NjcyLi41NGVjY2U1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9maXgtaW52YWxpZC1vd25lcnNoaXAucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvZml4LWludmFsaWQtb3duZXJzaGlwLnBhdGNoCkBAIC0xMCwxMSArMTAsMTEgQEAKICBzY2wvTWFrZWZpbGUuYW0gfCAgICAyICstCiAgMSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9zY2wvTWFrZWZpbGUuYW0gYi9zY2wvTWFrZWZpbGUuYW0KLWluZGV4IDU3ZmFkNWQuLjJhMjljYTUgMTAwNjQ0Ci0tLS0gYS9zY2wvTWFrZWZpbGUuYW0KLSsrKyBiL3NjbC9NYWtlZmlsZS5hbQotQEAgLTE0LDcgKzE0LDcgQEAgc2NsLWluc3RhbGwtZGF0YS1sb2NhbDoKK0luZGV4OiBzeXNsb2ctbmctMy44LjEvc2NsL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc3lzbG9nLW5nLTMuOC4xLm9yaWcvc2NsL01ha2VmaWxlLmFtCisrKysgc3lzbG9nLW5nLTMuOC4xL3NjbC9NYWtlZmlsZS5hbQorQEAgLTI3LDcgKzI3LDcgQEAgc2NsLWluc3RhbGwtZGF0YS1sb2NhbDoKICAJCWZpOyBcCiAgCWRvbmUKICAJJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpLyQoc2NsZGlyKQpAQCAtMjMsNiArMjMsMyBAQAogIAljaG1vZCAtUiB1K3J3WCAkKERFU1RESVIpLyQoc2NsZGlyKQogIAogIHNjbC11bmluc3RhbGwtbG9jYWw6Ci0tLSAKLTEuNy4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL3N5c2xvZy1uZy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9zeXNsb2ctbmcuaW5jCmluZGV4IGYxYmY5YjAuLjc3MWNkYjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL3N5c2xvZy1uZy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvc3lzbG9nLW5nLmluYwpAQCAtNDEsNyArNDEsNyBAQAogIgogCiBDT05GSUdfVExTID0gIi0tZW5hYmxlLXRocmVhZC10bHMiCi1DT05GSUdfVExTX2FybSA9ICIke0BiYXNlX2NvbmRpdGlvbmFsKCAiREVCVUdfQlVJTEQiLCAiMSIsICIgLS1kaXNhYmxlLXRocmVhZC10bHMiLCAiIC0tZW5hYmxlLXRocmVhZC10bHMiLCBkICl9IgorQ09ORklHX1RMU19hcm0gPSAiJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoICJERUJVR19CVUlMRCIsICIxIiwgIiAtLWRpc2FibGUtdGhyZWFkLXRscyIsICIgLS1lbmFibGUtdGhyZWFkLXRscyIsIGQgKX0iCiAKIFBBQ0tBR0VDT05GSUcgPz89ICIgXAogICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYgc3lzdGVtZCcsIGQpfSBcCkBAIC0xMDEsNyArMTAxLDcgQEAKIAogIyBzeXNsb2cgaW5pdHNjcmlwdCBpcyBoYW5kbGVkIGV4cGxpY2l0bHkgYmVjYXVzZSBvcmRlciBvZgogIyB1cGRhdGUtcmMuZCBhbmQgdXBkYXRlLWFsdGVybmF0aXZlcyBpcyBpbXBvcnRhbnQKLVJERVBFTkRTXyR7UE59ICs9ICIgJHtAYmFzZV9jb25kaXRpb25hbCgiT05MSU5FX1BBQ0tBR0VfTUFOQUdFTUVOVCIsICJub25lIiwgIiIsICJ1cGRhdGUtcmMuZCIsIGQpfSIKK1JERVBFTkRTXyR7UE59ICs9ICIgJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoIk9OTElORV9QQUNLQUdFX01BTkFHRU1FTlQiLCAibm9uZSIsICIiLCAidXBkYXRlLXJjLmQiLCBkKX0iCiAKIFJDT05GTElDVFNfJHtQTn0gPSAiYnVzeWJveC1zeXNsb2cgc3lza2xvZ2QgcnN5c2xvZyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90b3Njb3Rlcm0vdG9zY290ZXJtX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdG9zY290ZXJtL3Rvc2NvdGVybV9naXQuYmIKaW5kZXggYWEwMzFmZS4uODc5YjY3YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90b3Njb3Rlcm0vdG9zY290ZXJtX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Rvc2NvdGVybS90b3Njb3Rlcm1fZ2l0LmJiCkBAIC0xMSw3ICsxMSw5IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgZ2l0cGtndiBwa2djb25maWcKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGdpdHBrZ3YgcGtnY29uZmlnCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKIGRvX2NvbXBpbGUoKSB7CiAgICAgb2VfcnVubWFrZSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3MvMDAwMS1NYWtlLXVkZXYtcnVsZXMtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrcy8wMDAxLU1ha2UtdWRldi1ydWxlcy1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoCmluZGV4IDNjYzA0MDAuLjI4MjNjNTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrcy8wMDAxLU1ha2UtdWRldi1ydWxlcy1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrcy8wMDAxLU1ha2UtdWRldi1ydWxlcy1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAzMjI3ODI5NzE3MGZmYjQ5MTE2YjU3ODllNGEwNTg4Yjk5ZDAyYmQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhNmVhYjQxM2YyNzQzNzZjZjcwM2E2MDhlMjg2NjExODI5MWE2MTg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQW1hcm5hdGggVmFsbHVyaSA8YW1hcm5hdGgudmFsbHVyaUBpbnRlbC5jb20+CiBEYXRlOiBUaHUsIDkgRmViIDIwMTcgMTE6MDI6NTMgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gTWFrZSB1ZGV2IHJ1bGVzIGRpcmVjdG9yeSBjb25maWd1cmFibGUuCkBAIC05LDYgKzksNyBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW0VtYmVkZGVkIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBBbWFybmF0aCBWYWxsdXJpIDxhbWFybmF0aC52YWxsdXJpQGludGVsLmNvbT4KKwogLS0tCiAgY29uZmlndXJlLmFjICAgICAgICAgICAgfCAxNCArKystLS0tLS0tLS0tLQogIGRhdGEvTWFrZWZpbGUuYW0gICAgICAgIHwgIDEgLQpAQCAtNDksMTEgKzUwLDExIEBACiAgCiAgICAgICAgICBjb21waWxlcjogICAgICAgICAgICAgICAgICAgJHtDQ30KIGRpZmYgLS1naXQgYS9kYXRhL01ha2VmaWxlLmFtIGIvZGF0YS9NYWtlZmlsZS5hbQotaW5kZXggNDExZWEwZi4uNDgzNDk2MCAxMDA2NDQKK2luZGV4IDA4YWY1ZjQuLjkzMjkxODYgMTAwNjQ0CiAtLS0gYS9kYXRhL01ha2VmaWxlLmFtCiArKysgYi9kYXRhL01ha2VmaWxlLmFtCiBAQCAtMzQsNyArMzQsNiBAQCAkKHN5c3RlbWRzZXJ2aWNlX0RBVEEpOiAkKHN5c3RlbWRzZXJ2aWNlX2luX2ZpbGVzKSBNYWtlZmlsZQotIAlAc2VkIC1lICJzfFxAbGliZXhlY2RpclxAfCQocHJlZml4KS9saWIvdWRpc2tzfCIgJDwgPiAkQAorIAlAc2VkIC1lICJzfFxAbGliZXhlY2RpclxAfCQobGliZXhlY2Rpcil8IiAkPCA+ICRACiAgZW5kaWYKICAKIC11ZGV2cnVsZXNkaXIgPSAkKHNsYXNobGliZGlyKS91ZGV2L3J1bGVzLmQKQEAgLTg2LDYgKzg3LDMgQEAKICAKICB1bW91bnRfdWRpc2tzX1NPVVJDRVMgPSB1bW91bnQtdWRpc2tzLmMKICB1bW91bnRfdWRpc2tzX0xEQUREID0gJChEQlVTX0dMSUJfTElCUykgJChQT0xLSVRfREJVU19MSUJTKQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3MvMDAwMS1maXgtYnVpbGQtd2l0aC1uZXdlci1nbGliYy12ZXJzaW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrcy8wMDAxLWZpeC1idWlsZC13aXRoLW5ld2VyLWdsaWJjLXZlcnNpb25zLnBhdGNoCmluZGV4IDUyMDY1NWEuLjhiNGY0NDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrcy8wMDAxLWZpeC1idWlsZC13aXRoLW5ld2VyLWdsaWJjLXZlcnNpb25zLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrcy8wMDAxLWZpeC1idWlsZC13aXRoLW5ld2VyLWdsaWJjLXZlcnNpb25zLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA5ODI5MTUyYjEyYTg5MjRkMmUwOTFhMDAxMzNlZDFhM2E3YmE3NWMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwNTRhZDZhMDZjZmFjN2MzZDE3MmQ1M2NkOTAxMjA0MDc5YTUzZWMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZHJlIFJvc3RvdnRzZXYgPHRldHJvbWlub0BnZW50b28ub3JnPgogRGF0ZTogRnJpLCAyOSBNYXkgMjAxNSAyMTowOTozOSAtMDQwMAogU3ViamVjdDogW1BBVENIXSBmaXggYnVpbGQgd2l0aCBuZXdlciBnbGliYyB2ZXJzaW9ucwpAQCAtOCw2ICs4LDcgQEAKIFVwc3RyZWFtLVN0YXR1czogQXBwbGllZCBbMV0KIAogWzFdIGh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy91ZGlza3MvY29tbWl0Lz9oPXVkaXNrczEmaWQ9OTgyOTE1MmIxMmE4OTI0ZDJlMDkxYTAwMTMzZWQxYTNhN2JhNzVjMAorCiAtLS0KICBzcmMvaGVscGVycy9qb2ItZHJpdmUtZGV0YWNoLmMgfCAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKQEAgLTI0LDYgKzI1LDMgQEAKICAjaW5jbHVkZSA8c3RkaW8uaD4KICAjaW5jbHVkZSA8c3RyaW5nLmg+CiAgI2luY2x1ZGUgPGVycm5vLmg+Ci0tLSAKLTIuMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrcy9vcHRpb25hbC1kZXBlbmRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzL29wdGlvbmFsLWRlcGVuZHMucGF0Y2gKaW5kZXggNjEzMTcwMS4uYTg5MDk1NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzL29wdGlvbmFsLWRlcGVuZHMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzL29wdGlvbmFsLWRlcGVuZHMucGF0Y2gKQEAgLTEsMTIgKzEsMjkgQEAKLUZyb20gMWI3MGI3YTc5OGVlZWVjNTU0YWI1YWE5ZmNmZmY5NmEyMmU5MTc3NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZThiM2ZiZmEzZDZhMTFlZWUyNWRiMmRjMGYzMWY0MzlhYWYwYjY1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEd1c3Rhdm8gU3Zlcnp1dCBCYXJiaWVyaSA8YmFyYmllcmlAcHJvZnVzaW9uLm1vYmk+CiBEYXRlOiBUaHUsIDI2IE1heSAyMDExIDE3OjMwOjA0IC0wMzAwCiBTdWJqZWN0OiBbUEFUQ0hdIEFsbG93IGRpc2FibGluZyBhdGFzbWFydCwgbHZtMiBhbmQgZGV2aWNlbWFwcGVyIHN1cHBvcnQuCiAKIGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NjQ3CiAKKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgIHwgNTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQorIHNyYy9hZGFwdGVyLXByaXZhdGUuaCAgIHwgIDEgLQorIHNyYy9hZGFwdGVyLmMgICAgICAgICAgIHwgIDEgLQorIHNyYy9kYWVtb24uYyAgICAgICAgICAgIHwgIDQgKysrKworIHNyYy9kZXZpY2UtcHJpdmF0ZS5jICAgIHwgIDIgKy0KKyBzcmMvZGV2aWNlLXByaXZhdGUuaCAgICB8ICA1ICsrLS0tCisgc3JjL2RldmljZS5jICAgICAgICAgICAgfCAyMyArKysrKysrKysrKysrKysrKy0tLS0KKyBzcmMvZXhwYW5kZXItcHJpdmF0ZS5oICB8ICAxIC0KKyBzcmMvZXhwYW5kZXIuYyAgICAgICAgICB8ICAxIC0KKyBzcmMvaGVscGVycy9NYWtlZmlsZS5hbSB8IDIwICsrKysrKysrKysrKystLS0tLS0KKyBzcmMvaGVscGVycy9wYXJ0dXRpbC5jICB8ICAzICsrLQorIHNyYy9wb3J0LXByaXZhdGUuaCAgICAgIHwgIDEgLQorIHNyYy9wcm9iZXJzL01ha2VmaWxlLmFtIHwgIDggKysrKysrLS0KKyB0b29scy91ZGlza3MuYyAgICAgICAgICB8IDEwICsrKysrKysrLS0KKyAxNCBmaWxlcyBjaGFuZ2VkLCA5OSBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKKwogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNjJjYzM1ZC4uYjY2NDEzNSAxMDA2NDQKK2luZGV4IDk0NTQ0MjMuLjhjNGU0YzIgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwogQEAgLTE1NSwxMyArMTU1LDMzIEBAIFBLR19DSEVDS19NT0RVTEVTKFBPTEtJVF9HT0JKRUNUXzEsIFtwb2xraXQtZ29iamVjdC0xID49IDAuOTddKQpAQCAtNDksOCArNjYsOCBAQAogK0FNX0NPTkRJVElPTkFMKEhBVkVfREVWTUFQUEVSLCBbdGVzdCAiJGhhdmVfZGV2bWFwcGVyIiA9ICJ5ZXMiXSkKICAKICBoYXZlX2x2bTI9bm8KLSBBQ19BUkdfRU5BQkxFKGx2bTIsIEFTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbHZtMl0sIFtkaXNhYmxlIExWTTIgc3VwcG9ydF0pKQotQEAgLTE4NSw5ICsyMDUsMTkgQEAgaWYgdGVzdCAieCRlbmFibGVfZG1tcCIgIT0gInhubyI7IHRoZW4KKyBBQ19BUkdfRU5BQkxFKGx2bTIsIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1sdm0yXSwgW2VuYWJsZSBMVk0yIHN1cHBvcnRdKSkKK0BAIC0xODUsOSArMjA1LDE5IEBAIGlmIHRlc3QgIngkZW5hYmxlX2RtbXAiID0gInh5ZXMiOyB0aGVuCiAgZmkKICBBTV9DT05ESVRJT05BTChIQVZFX0RNTVAsIFt0ZXN0ICIkaGF2ZV9kbW1wIiA9ICJ5ZXMiXSkKICAKQEAgLTczLDcgKzkwLDcgQEAKICAKICBQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJVREVWLCBbbGlidWRldiA+PSAxNDNdKQogIEFDX1NVQlNUKExJQlVERVZfQ0ZMQUdTKQotQEAgLTI2Nyw5ICsyOTcsMTIgQEAgZWNobyAiCitAQCAtMjc4LDkgKzMwOCwxMiBAQCBlY2hvICIKICAgICAgICAgIGNwcGZsYWdzOiAgICAgICAgICAgICAgICAgICAke0NQUEZMQUdTfQogICAgICAgICAgeHNsdHByb2M6ICAgICAgICAgICAgICAgICAgICR7WFNMVFBST0N9CiAgCkBAIC05OSw3ICsxMTYsNyBAQAogICNpbmNsdWRlICJ0eXBlcy5oIgogIAogZGlmZiAtLWdpdCBhL3NyYy9hZGFwdGVyLmMgYi9zcmMvYWRhcHRlci5jCi1pbmRleCBiODVhMGVmLi44MDI0MjBiIDEwMDY0NAoraW5kZXggNjVlMDViMC4uNDVkYjhjOCAxMDA2NDQKIC0tLSBhL3NyYy9hZGFwdGVyLmMKICsrKyBiL3NyYy9hZGFwdGVyLmMKIEBAIC0zMCw3ICszMCw2IEBACkBAIC0xMTEsMTAgKzEyOCwxMCBAQAogICNpbmNsdWRlICJkYWVtb24uaCIKICAjaW5jbHVkZSAiYWRhcHRlci5oIgogZGlmZiAtLWdpdCBhL3NyYy9kYWVtb24uYyBiL3NyYy9kYWVtb24uYwotaW5kZXggNjA3MjUwMi4uZDA0M2NiMCAxMDA2NDQKK2luZGV4IGZhZmNmOWEuLjE0ZTk1MmYgMTAwNjQ0CiAtLS0gYS9zcmMvZGFlbW9uLmMKICsrKyBiL3NyYy9kYWVtb24uYwotQEAgLTE3NDUsNiArMTc0NSw3IEBAIG1kc3RhdF9jaGFuZ2VkX2V2ZW50IChHSU9DaGFubmVsICpjaGFubmVsLAorQEAgLTE3NDgsNiArMTc0OCw3IEBAIG1kc3RhdF9jaGFuZ2VkX2V2ZW50IChHSU9DaGFubmVsICpjaGFubmVsLAogICAgcmV0dXJuIFRSVUU7CiAgfQogIApAQCAtMTIyLDcgKzEzOSw3IEBACiAgc3RhdGljIGdib29sZWFuCiAgcmVmcmVzaF9hdGFfc21hcnRfZGF0YSAoRGFlbW9uICpkYWVtb24pCiAgewotQEAgLTE3NzMsNiArMTc3NCw3IEBAIHJlZnJlc2hfYXRhX3NtYXJ0X2RhdGEgKERhZW1vbiAqZGFlbW9uKQorQEAgLTE3NzYsNiArMTc3Nyw3IEBAIHJlZnJlc2hfYXRhX3NtYXJ0X2RhdGEgKERhZW1vbiAqZGFlbW9uKQogIAogICAgcmV0dXJuIEZBTFNFOwogIH0KQEAgLTEzMCw3ICsxNDcsNyBAQAogIAogIHN0YXRpYyBnYm9vbGVhbgogIHJlZ2lzdGVyX2Rpc2tzX2RhZW1vbiAoRGFlbW9uICpkYWVtb24pCi1AQCAtMTk4NCwxMiArMTk4NiwxNCBAQCBkYWVtb25fbmV3ICh2b2lkKQorQEAgLTE5ODcsMTIgKzE5ODksMTQgQEAgZGFlbW9uX25ldyAodm9pZCkKICAgIG1vdW50X2ZpbGVfY2xlYW5fc3RhbGUgKGwpOwogICAgZ19saXN0X2ZyZWUgKGwpOwogIApAQCAtMTQ2LDEwICsxNjMsMTAgQEAKICAgIFBST0ZJTEUgKCJkYWVtb25fbmV3KCk6IGVuZCIpOwogICAgcmV0dXJuIGRhZW1vbjsKIGRpZmYgLS1naXQgYS9zcmMvZGV2aWNlLXByaXZhdGUuYyBiL3NyYy9kZXZpY2UtcHJpdmF0ZS5jCi1pbmRleCAyMmEwZDM1Li5mYjk2NTI1IDEwMDY0NAoraW5kZXggNDU0MThjZS4uZmIxZDk1OSAxMDA2NDQKIC0tLSBhL3NyYy9kZXZpY2UtcHJpdmF0ZS5jCiArKysgYi9zcmMvZGV2aWNlLXByaXZhdGUuYwotQEAgLTEzNzgsNyArMTM3OCw3IEBAIGRldmljZV9zZXRfZHJpdmVfYXRhX3NtYXJ0X3RpbWVfY29sbGVjdGVkIChEZXZpY2UgKmRldmljZSwKK0BAIC0xMzkwLDcgKzEzOTAsNyBAQCBkZXZpY2Vfc2V0X2RyaXZlX2F0YV9zbWFydF90aW1lX2NvbGxlY3RlZCAoRGV2aWNlICpkZXZpY2UsCiAgCiAgdm9pZAogIGRldmljZV9zZXRfZHJpdmVfYXRhX3NtYXJ0X3N0YXR1cyAoRGV2aWNlICpkZXZpY2UsCkBAIC0xNTksNyArMTc2LDcgQEAKICAgIGlmIChHX1VOTElLRUxZIChkZXZpY2UtPnByaXYtPmRyaXZlX2F0YV9zbWFydF9zdGF0dXMgIT0gdmFsdWUpKQogICAgICB7CiBkaWZmIC0tZ2l0IGEvc3JjL2RldmljZS1wcml2YXRlLmggYi9zcmMvZGV2aWNlLXByaXZhdGUuaAotaW5kZXggYTZkYjdmMi4uNzE0NzNhNiAxMDA2NDQKK2luZGV4IDMyYTliZDAuLjhjNTdjMTMgMTAwNjQ0CiAtLS0gYS9zcmMvZGV2aWNlLXByaXZhdGUuaAogKysrIGIvc3JjL2RldmljZS1wcml2YXRlLmgKIEBAIC0yMyw3ICsyMyw2IEBACkBAIC0xNzAsNyArMTg3LDcgQEAKICAKICAjaW5jbHVkZSAidHlwZXMuaCIKICAKLUBAIC0yMjQsNyArMjIzLDcgQEAgc3RydWN0IERldmljZVByaXZhdGUKK0BAIC0yMjgsNyArMjI3LDcgQEAgc3RydWN0IERldmljZVByaXZhdGUKICAKICAgIGdib29sZWFuIGRyaXZlX2F0YV9zbWFydF9pc19hdmFpbGFibGU7CiAgICBndWludDY0IGRyaXZlX2F0YV9zbWFydF90aW1lX2NvbGxlY3RlZDsKQEAgLTE3OSw3ICsxOTYsNyBAQAogICAgdm9pZCAqZHJpdmVfYXRhX3NtYXJ0X2Jsb2I7CiAgICBnc2l6ZSBkcml2ZV9hdGFfc21hcnRfYmxvYl9zaXplOwogIAotQEAgLTM5MSw3ICszOTAsNyBAQCB2b2lkIGRldmljZV9zZXRfaG9sZGVyc19vYmpwYXRoIChEZXZpY2UgKmRldmljZSwgR1N0cnYgdmFsdWUpOworQEAgLTM5Niw3ICszOTUsNyBAQCB2b2lkIGRldmljZV9zZXRfaG9sZGVyc19vYmpwYXRoIChEZXZpY2UgKmRldmljZSwgR1N0cnYgdmFsdWUpOwogIAogIHZvaWQgZGV2aWNlX3NldF9kcml2ZV9hdGFfc21hcnRfaXNfYXZhaWxhYmxlIChEZXZpY2UgKmRldmljZSwgZ2Jvb2xlYW4gdmFsdWUpOwogIHZvaWQgZGV2aWNlX3NldF9kcml2ZV9hdGFfc21hcnRfdGltZV9jb2xsZWN0ZWQgKERldmljZSAqZGV2aWNlLCBndWludDY0IHZhbHVlKTsKQEAgLTE4OSw3ICsyMDYsNyBAQAogIAogIEdfRU5EX0RFQ0xTCiBkaWZmIC0tZ2l0IGEvc3JjL2RldmljZS5jIGIvc3JjL2RldmljZS5jCi1pbmRleCA2YTM0OTQwLi43YTVhNGE5IDEwMDY0NAoraW5kZXggMmFlN2YzOC4uZDczZjlkNiAxMDA2NDQKIC0tLSBhL3NyYy9kZXZpY2UuYwogKysrIGIvc3JjL2RldmljZS5jCiBAQCAtNTAsNyArNTAsOSBAQApAQCAtMjAyLDcgKzIxOSw3IEBACiAgCiAgI2luY2x1ZGUgImRhZW1vbi5oIgogICNpbmNsdWRlICJkZXZpY2UuaCIKLUBAIC02NTksMTAgKzY2MSwxNCBAQCBnZXRfcHJvcGVydHkgKEdPYmplY3QgKm9iamVjdCwKK0BAIC02NjQsMTAgKzY2NiwxNCBAQCBnZXRfcHJvcGVydHkgKEdPYmplY3QgKm9iamVjdCwKICAgICAgY2FzZSBQUk9QX0RSSVZFX0FUQV9TTUFSVF9TVEFUVVM6CiAgICAgICAgewogICAgICAgICAgY29uc3QgZ2NoYXIgKnN0YXR1czsKQEAgLTIxOCw3ICsyMzUsNyBAQAogICAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgc3RhdHVzKTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7Ci1AQCAtNTExNCw2ICs1MTIwLDcgQEAgZGV2aWNlX25ldyAoRGFlbW9uICpkYWVtb24sCitAQCAtNTE0NCw2ICs1MTUwLDcgQEAgZGV2aWNlX25ldyAoRGFlbW9uICpkYWVtb24sCiAgICAgICAgZ290byBvdXQ7CiAgICAgIH0KICAKQEAgLTIyNiw3ICsyNDMsNyBAQAogICAgLyogaWYganVzdCBhZGRlZCwgdXBkYXRlIHRoZSBzbWFydCBkYXRhIGlmIGFwcGxpY2FibGUgKi8KICAgIGlmIChkZXZpY2UtPnByaXYtPmRyaXZlX2F0YV9zbWFydF9pc19hdmFpbGFibGUpCiAgICAgIHsKLUBAIC01MTIxLDYgKzUxMjgsNyBAQCBkZXZpY2VfbmV3IChEYWVtb24gKmRhZW1vbiwKK0BAIC01MTUxLDYgKzUxNTgsNyBAQCBkZXZpY2VfbmV3IChEYWVtb24gKmRhZW1vbiwKICAgICAgICBnY2hhciAqYXRhX3NtYXJ0X3JlZnJlc2hfZGF0YV9vcHRpb25zW10gPSB7IE5VTEwgfTsKICAgICAgICBkZXZpY2VfZHJpdmVfYXRhX3NtYXJ0X3JlZnJlc2hfZGF0YSAoZGV2aWNlLCBhdGFfc21hcnRfcmVmcmVzaF9kYXRhX29wdGlvbnMsIE5VTEwpOwogICAgICB9CkBAIC0yMzQsNyArMjUxLDcgQEAKICAKICAgIFBST0ZJTEUgKCJkZXZpY2VfbmV3KG5hdGl2ZV9wYXRoPSVzKTogZW5kIiwgbmF0aXZlX3BhdGgpOwogICBvdXQ6Ci1AQCAtOTc5NCwxNiArOTgwMiwxOCBAQCBkcml2ZV9hdGFfc21hcnRfcmVmcmVzaF9kYXRhX2NvbXBsZXRlZF9jYiAoREJ1c0dNZXRob2RJbnZvY2F0aW9uICpjb250ZXh0LAorQEAgLTk4NDAsMTYgKzk4NDgsMTggQEAgZHJpdmVfYXRhX3NtYXJ0X3JlZnJlc2hfZGF0YV9jb21wbGV0ZWRfY2IgKERCdXNHTWV0aG9kSW52b2NhdGlvbiAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3Rkb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEpCiAgewpAQCAtMjU2LDcgKzI3Myw3IEBACiAgICBibG9iID0gTlVMTDsKICAKICAgIGlmIChqb2Jfd2FzX2NhbmNlbGxlZCB8fCBzdGRvdXQgPT0gTlVMTCkKLUBAIC05OTA3LDYgKzk5MTcsMTEgQEAgZHJpdmVfYXRhX3NtYXJ0X3JlZnJlc2hfZGF0YV9jb21wbGV0ZWRfY2IgKERCdXNHTWV0aG9kSW52b2NhdGlvbiAqY29udGV4dCwKK0BAIC05OTUzLDYgKzk5NjMsMTEgQEAgZHJpdmVfYXRhX3NtYXJ0X3JlZnJlc2hfZGF0YV9jb21wbGV0ZWRfY2IgKERCdXNHTWV0aG9kSW52b2NhdGlvbiAqY29udGV4dCwKICAgIGdfZnJlZSAoYmxvYik7CiAgICBpZiAoZCAhPSBOVUxMKQogICAgICBza19kaXNrX2ZyZWUgKGQpOwpAQCAtNDMwLDcgKzQ0Nyw3IEBACiAgdWRpc2tzX3Byb2JlX3Nhc19leHBhbmRlcl9TT1VSQ0VTID0gdWRpc2tzLXByb2JlLXNhcy1leHBhbmRlci5jCiAgdWRpc2tzX3Byb2JlX3Nhc19leHBhbmRlcl9DUFBGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpICQoR0xJQl9DRkxBR1MpCiBkaWZmIC0tZ2l0IGEvdG9vbHMvdWRpc2tzLmMgYi90b29scy91ZGlza3MuYwotaW5kZXggNmZiZDZhNi4uZTBjNGZiYiAxMDA2NDQKK2luZGV4IDk3ZTgwZDcuLmQzMDE1OWIgMTAwNjQ0CiAtLS0gYS90b29scy91ZGlza3MuYwogKysrIGIvdG9vbHMvdWRpc2tzLmMKIEBAIC00Myw3ICs0Myw5IEBACkBAIC00NDMsNyArNDYwLDcgQEAKICAKICAjaW5jbHVkZSAidWRpc2tzLWRhZW1vbi1nbHVlLmgiCiAgI2luY2x1ZGUgInVkaXNrcy1kZXZpY2UtZ2x1ZS5oIgotQEAgLTk3OSw2ICs5ODEsNyBAQCBlbmRfaGlnaGxpZ2h0ICh2b2lkKQorQEAgLTk4Myw2ICs5ODUsNyBAQCBlbmRfaGlnaGxpZ2h0ICh2b2lkKQogICAgICBnX3ByaW50ICgiXHgxQlswbSIpOwogIH0KICAKQEAgLTQ1MSw3ICs0NjgsNyBAQAogIHN0YXRpYyBjb25zdCBnY2hhciAqCiAgYXRhX3NtYXJ0X3N0YXR1c190b19kZXNjIChjb25zdCBnY2hhciAqc3RhdHVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gKm91dF9oaWdobGlnaHQpCi1AQCAtMTE1OSw2ICsxMTYyLDcgQEAgcHJpbnRfYXRhX3NtYXJ0X2F0dHIgKFNrRGlzayAqZCwKK0BAIC0xMTYzLDYgKzExNjYsNyBAQCBwcmludF9hdGFfc21hcnRfYXR0ciAoU2tEaXNrICpkLAogICAgZ19mcmVlICh0aHJlc2hvbGRfc3RyKTsKICAgIGdfZnJlZSAocHJldHR5KTsKICB9CkBAIC00NTksNyArNDc2LDcgQEAKICAKICBzdGF0aWMgdm9pZAogIGRvX3Nob3dfaW5mbyAoY29uc3QgY2hhciAqb2JqZWN0X3BhdGgpCi1AQCAtMTQ0MCw3ICsxNDQ0LDcgQEAgZG9fc2hvd19pbmZvIChjb25zdCBjaGFyICpvYmplY3RfcGF0aCkKK0BAIC0xNDQ1LDcgKzE0NDksNyBAQCBkb19zaG93X2luZm8gKGNvbnN0IGNoYXIgKm9iamVjdF9wYXRoKQogICAgICAgICAgZ19wcmludCAoIiAgICBpZiBzcGVlZDogICAgICAgICAgICAgICAgICAlIiBHX0dJTlQ2NF9GT1JNQVQgIiBiaXRzL3NcbiIsIHByb3BzLT5kcml2ZV9jb25uZWN0aW9uX3NwZWVkKTsKICAKICAgICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC00NjgsNyArNDg1LDcgQEAKICAgICAgICBpZiAoIXByb3BzLT5kcml2ZV9hdGFfc21hcnRfaXNfYXZhaWxhYmxlKQogICAgICAgICAgewogICAgICAgICAgICBnX3ByaW50ICgiICAgIEFUQSBTTUFSVDogICAgICAgICAgICAgICAgIG5vdCBhdmFpbGFibGVcbiIpOwotQEAgLTE0OTMsNyArMTQ5Nyw5IEBAIGRvX3Nob3dfaW5mbyAoY29uc3QgY2hhciAqb2JqZWN0X3BhdGgpCitAQCAtMTQ5OCw3ICsxNTAyLDkgQEAgZG9fc2hvd19pbmZvIChjb25zdCBjaGFyICpvYmplY3RfcGF0aCkKICAgICAgICAgICAgICB9CiAgCiAgICAgICAgICB9CkBAIC00NzksNiArNDk2LDMgQEAKICAgICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAgCiAgICAgIH0KLS0tIAotMS43LjUucmMzCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrcy91ZGlza3MtMS4wLjUtZml4LXNlcnZpY2UtZmlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrcy91ZGlza3MtMS4wLjUtZml4LXNlcnZpY2UtZmlsZS5wYXRjaAppbmRleCBkNWU4NGQzLi5kNGVmYTkzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3MvdWRpc2tzLTEuMC41LWZpeC1zZXJ2aWNlLWZpbGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzL3VkaXNrcy0xLjAuNS1maXgtc2VydmljZS1maWxlLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA3ZDYxYWQwNDg4NTZlZTIzOTg3MGI5MTdkNjkzM2UzYWQ2M2YwNzg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhNGY2YWE1YmUzN2FlNmUyMTk0YzlkZWQyZWE4YzFkYTMzMGY1Njk0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRGF2aWQgS2luZyA8YW1pZ2FkYXZlQGFtaWdhZGF2ZS5jb20+CiBEYXRlOiBUaHUsIDIgSnVsIDIwMTUgMTM6NDk6MjIgKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gRml4IHN5c3RlbWQgc2VydmljZSBmaWxlCkBAIC0xMiw2ICsxMiw3IEBACiBbMV0gaHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcvY2dpdC91ZGlza3MuZ2l0L3RyZWUvdWRpc2tzLTEuMC41LWZpeC1zZXJ2aWNlLWZpbGUucGF0Y2gKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKIC0tLQogIGRhdGEvTWFrZWZpbGUuYW0gfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCkBAIC0yOSw1ICszMCwzIEBACiAgZW5kaWYKICAKICB1ZGV2cnVsZXNkaXIgPSAkKHNsYXNobGliZGlyKS91ZGV2L3J1bGVzLmQKLS0tIAotMi40LjUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrczIvMDAwMS1kYXRhLWZpeC1vdXQtb2YtdHJlZS1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrczIvMDAwMS1kYXRhLWZpeC1vdXQtb2YtdHJlZS1idWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2JkODc3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzMi8wMDAxLWRhdGEtZml4LW91dC1vZi10cmVlLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gN2ZkZDRhY2RmNmRhZjk1YzVjYzc0ZTk2OGY0NzEwNTEzYzhkZGFlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIzIE1hciAyMDE4IDE4OjMzOjUyICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGRhdGE6IGZpeCBvdXQgb2YgdHJlZSBidWlsZAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCit8IHNlZDogY2FuJ3QgcmVhZCB1ZGlza3MyLnNlcnZpY2UuaW46IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWzFdCisKK1sxXSBodHRwczovL2dpdGh1Yi5jb20vc3RvcmFnZWQtcHJvamVjdC91ZGlza3MvcHVsbC81MTAKKworU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKy0tLQorIGRhdGEvTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9kYXRhL01ha2VmaWxlLmFtIGIvZGF0YS9NYWtlZmlsZS5hbQoraW5kZXggZGRmOWUzZDYuLmIzODkyOGM4IDEwMDY0NAorLS0tIGEvZGF0YS9NYWtlZmlsZS5hbQorKysrIGIvZGF0YS9NYWtlZmlsZS5hbQorQEAgLTIyLDcgKzIyLDcgQEAgc3lzdGVtZHNlcnZpY2VkaXIgICAgICAgPSAkKHN5c3RlbWRzeXN0ZW11bml0ZGlyKQorIHN5c3RlbWRzZXJ2aWNlX0RBVEEgICAgID0gJChzeXN0ZW1kc2VydmljZV9pbl9maWxlczouc2VydmljZS5pbj0uc2VydmljZSkKKyAKKyAkKHN5c3RlbWRzZXJ2aWNlX0RBVEEpOiB1ZGlza3MyLnNlcnZpY2UuaW4gTWFrZWZpbGUKKy0JQHNlZCAtZSAic3xcQHVkaXNrc2Rwcml2ZGlyXEB8JChsaWJleGVjZGlyKS91ZGlza3MyfCIgdWRpc2tzMi5zZXJ2aWNlLmluID4gdWRpc2tzMi5zZXJ2aWNlCisrCUBzZWQgLWUgInN8XEB1ZGlza3NkcHJpdmRpclxAfCQobGliZXhlY2RpcikvdWRpc2tzMnwiICQoc3JjZGlyKS91ZGlza3MyLnNlcnZpY2UuaW4gPiB1ZGlza3MyLnNlcnZpY2UKKyBlbmRpZgorIAorIHVkZXZydWxlc2RpciA9ICQodWRldmRpcikvcnVsZXMuZAorLS0gCisyLjE0LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzMl8yLjEuOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrczJfMi4xLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzZWZjNTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzMl8yLjEuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLVNVTU1BUlkgPSAidWRpc2tzIHByb3ZpZGVzIGRidXMgaW50ZXJmYWNlcyBmb3IgZGlza3MgYW5kIHN0b3JhZ2UgZGV2aWNlcyIKLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRkNzlmNmRiYmZmZGJjOGU4NmIwODZhOGYwYzBlZjQzIgotCi1ERVBFTkRTID0gImFjbCBsaWJhdGFzbWFydCBwb2xraXQgbGliZ3VkZXYgZGJ1cy1nbGliIGdsaWItMi4wIGludGx0b29sLW5hdGl2ZSBnbm9tZS1jb21tb24tbmF0aXZlIGxpYnhzbHQtbmF0aXZlIgotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKLQotUkRFUEVORFNfJHtQTn0gPSAiYWNsIgotCi1TUkNfVVJJID0gImh0dHA6Ly91ZGlza3MuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL3VkaXNrcy0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL25vbi1nbnUtbGliYy5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNTAxZDExYzI0M2JkOGM2YzAwNjUwNDc0Y2QyYWZhYWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGE0MTY5MTQ4MTJhNzdlNWY0ZDgyYjgxZGViOGMyNTc5OWZkMzIyOGQyN2Q1MmY3YmY4OWE1MDFiMTg1N2RkYSIKLQotQ1ZFX1BST0RVQ1QgPSAidWRpc2tzIgotCi1pbmhlcml0IGF1dG90b29scyBzeXN0ZW1kIGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVMgPSAiJHtXT1JLRElSfS91ZGlza3MtJHtQVn0iCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbWFuIC0tZGlzYWJsZS1ndGstZG9jIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3BvbGtpdC0xL2V4dGVuc2lvbnMvKi5zbyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvKiBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkaXNrczIvKiBcCi0iCi0KLVBBQ0tBR0VTID0rICIke1BOfS1saWJzIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24iCi1GSUxFU18ke1BOfS1saWJzID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9IgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7ZXhlY19wcmVmaXh9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGlza3MyLy5kZWJ1ZyIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QlBOfS5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzMl8yLjcuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrczJfMi43LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQyMmFmZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrczJfMi43LjYuYmIKQEAgLTAsMCArMSw0OSBAQAorU1VNTUFSWSA9ICJ1ZGlza3MgcHJvdmlkZXMgZGJ1cyBpbnRlcmZhY2VzIGZvciBkaXNrcyBhbmQgc3RvcmFnZSBkZXZpY2VzIgorTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGQ3OWY2ZGJiZmZkYmM4ZTg2YjA4NmE4ZjBjMGVmNDMiCisKK0RFUEVORFMgPSAiIFwKKyAgICBhY2wgXAorICAgIGxpYmF0YXNtYXJ0IFwKKyAgICBwb2xraXQgXAorICAgIGxpYmd1ZGV2IFwKKyAgICBkYnVzLWdsaWIgXAorICAgIGdsaWItMi4wIFwKKyAgICBsaWJibG9ja2RldiBcCisgICAgaW50bHRvb2wtbmF0aXZlIFwKKyAgICBnbm9tZS1jb21tb24tbmF0aXZlIFwKKyAgICBsaWJ4c2x0LW5hdGl2ZSBcCisiCitERVBFTkRTICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgorCitSREVQRU5EU18ke1BOfSA9ICJhY2wiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBnaXQ6Ly9naXRodWIuY29tL3N0b3JhZ2VkLXByb2plY3QvdWRpc2tzLmdpdCBcCisgICAgZmlsZTovLzAwMDEtZGF0YS1maXgtb3V0LW9mLXRyZWUtYnVpbGQucGF0Y2ggXAorICAgIGZpbGU6Ly9ub24tZ251LWxpYmMucGF0Y2ggXAorIgorU1JDUkVWID0gImI2NDcxZjJlOTlmNmFhMTEzM2FmMGRlNjU4ZjFmYTA1Yzc0ODkzMmMiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitDVkVfUFJPRFVDVCA9ICJ1ZGlza3MiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1tYW4gLS1kaXNhYmxlLWd0ay1kb2MiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vZGJ1cy0xLyBcCisgICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCisgICAgJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24gXAorICAgICR7bGliZGlyfS9wb2xraXQtMS9leHRlbnNpb25zLyouc28gXAorICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi8qIFwKKyAgICAke2V4ZWNfcHJlZml4fSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRpc2tzMi8qIFwKKyAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IFwKKyIKKworUEFDS0FHRVMgPSsgIiR7UE59LWxpYnMiCitGSUxFU18ke1BOfS1saWJzID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9IgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtCUE59LnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VpbS91aW0vMDAwMS1BZGQtc3VwcG9ydC1mb3ItYWFyY2g2NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWltL3VpbS8wMDAxLUFkZC1zdXBwb3J0LWZvci1hYXJjaDY0LnBhdGNoCmluZGV4IDRiMTI0OTQuLjM5MWIwZTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWltL3VpbS8wMDAxLUFkZC1zdXBwb3J0LWZvci1hYXJjaDY0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWltL3VpbS8wMDAxLUFkZC1zdXBwb3J0LWZvci1hYXJjaDY0LnBhdGNoCkBAIC0xLDkgKzEsMTAgQEAKLUZyb20gMjRmZDUyY2M0NWY3YjVmZjQ1YWZlMDcyZjVmYmU2NjQ4NWRmOGM4ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gODJmNDRmNTNiOWE5NzY2YzJlYzgxNmYyMzc1MDZiZWI5NTNlYjMzMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFuZHJlYXMgU2Nod2FiIDxzY2h3YWJAc3VzZS5kZT4KIERhdGU6IFdlZCwgMjkgT2N0IDIwMTQgMTQ6MTg6MjggKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gQWRkIHN1cHBvcnQgZm9yIGFhcmNoNjQKIAogKiBpbmNsdWRlL3ByaXZhdGUvZ2Njb25maWcuaDogQWRkIHN1cHBvcnQgZm9yIGFhcmNoNjQuCisKIC0tLQogIHNpZ3NjaGVtZS9saWJnY3Jvb3RzL2luY2x1ZGUvcHJpdmF0ZS9nY2NvbmZpZy5oIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKwogIDEgZmlsZSBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspCkBAIC03Nyw2ICs3OCwzIEBACiAgIyBpZmRlZiBBUk0zMgogICMgICBkZWZpbmUgQ1BQX1dPUkRTWiAzMgogICMgICBkZWZpbmUgTUFDSF9UWVBFICJBUk0zMiIKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWltL3VpbS8wMDAxLWZpeC1idWctZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VpbS91aW0vMDAwMS1maXgtYnVnLWZvci1jcm9zcy1jb21waWxlLnBhdGNoCmluZGV4IGRmODJiMDcuLjBjOGYwMmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWltL3VpbS8wMDAxLWZpeC1idWctZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91aW0vdWltLzAwMDEtZml4LWJ1Zy1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaApAQCAtMSw5ICsxLDEwIEBACi1Gcm9tIDI5MTgxOTZiYTc4MmRmYTQ0MDFiZGNhOTE3YWQ0ZGUxOTEwNTA1ZTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDA4YjVlNTEyMjRlZDk1YjFlNzZlOTk4NzNiNWY5ZjU5ODQwYjBhNzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBMZWkgTWFvaHVpIDxsZWltYW9odWlAY24uZnVqaXRzdS5jb20+CiBEYXRlOiBGcmksIDIxIEF1ZyAyMDE1IDE1OjU4OjQyICswOTAwCiBTdWJqZWN0OiBbUEFUQ0hdIGZpeCBidWcgZm9yIGNyb3NzIGNvbXBpbGUKIAogU2lnbmVkLW9mZi1ieTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgorCiAtLS0KICBjb25maWd1cmUuYWMgfCA0ICsrLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQpAQCAtMjMsNiArMjQsMyBAQAogICAgICBBQ19DSEVDS19MSUIoY3Vyc2VzLCB0Z2V0ZW50LCBMSUJFRElUX0xJQlM9Ii1sY3Vyc2VzIiwKICAgICAgICAgIFtBQ19DSEVDS19MSUIobmN1cnNlcywgdGdldGVudCwgTElCRURJVF9MSUJTPSItbG5jdXJzZXMiLAogICAgICAgICAgICAgIEFDX01TR19XQVJOKCJsaWJlZGl0IG5lZWRzIGxpYmN1cnNlcyBvciBsaWJuY3Vyc2VzLiBkaXNhYmxlZC4uLiIpCi0tLSAKLTEuOC40LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91aW0vdWltL3VpbS1tb2R1bGUtbWFuYWdlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWltL3VpbS91aW0tbW9kdWxlLW1hbmFnZXIucGF0Y2gKaW5kZXggODU2OWJmMy4uMzA3OGFmMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91aW0vdWltL3VpbS1tb2R1bGUtbWFuYWdlci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VpbS91aW0vdWltLW1vZHVsZS1tYW5hZ2VyLnBhdGNoCkBAIC0xLDExICsxLDIxIEBACi0tLS0gdWltLTEuMS4wL3NjbS9NYWtlZmlsZS5hbX4JMjAwNi0wNi0wOSAxMDo0NjoxMi4wMDAwMDAwMDAgKzA5MDAKLSsrKyB1aW0tMS4xLjAvc2NtL01ha2VmaWxlLmFtCTIwMDYtMDYtMTkgMjM6MDA6MTUuNjIwMDAwMDAwICswOTAwCi1AQCAtNTgsNyArNTgsNyBAQAotICAgbW9kdWxlX25hbWVzICs9ICJzY2ltIgorRnJvbSBkNjE0OTVkM2ZiMDM5ODQyYjgyZGY0NDE4NGM2N2ViM2MxMjU2MTM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQmlhbiBOYWltZW5nIDxiaWFubm1AY24uZnVqaXRzdS5jb20+CitEYXRlOiBGcmksIDI2IEp1biAyMDE1IDEyOjU3OjQ4ICswOTAwCisKKy0tLQorIHNjbS9NYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NjbS9NYWtlZmlsZS5hbSBiL3NjbS9NYWtlZmlsZS5hbQoraW5kZXggMTRkOTM5My4uZThhMTA4MyAxMDA2NDQKKy0tLSBhL3NjbS9NYWtlZmlsZS5hbQorKysrIGIvc2NtL01ha2VmaWxlLmFtCitAQCAtMTE5LDcgKzExOSw3IEBAIGlmIEVYUEFUCisgICBtb2R1bGVfbmFtZXMgKz0gInlhaG9vLWpwIgogIGVuZGlmCiAgCiAtVUlNX01PRFVMRV9NQU5BR0VSID0gJCh0b3BfYnVpbGRkaXIpL3VpbS91aW0tbW9kdWxlLW1hbmFnZXIKICtVSU1fTU9EVUxFX01BTkFHRVIgPSB1aW0tbW9kdWxlLW1hbmFnZXIKICBVSU1fTU9EVUxFX01BTkFHRVJfRU5WID0gXAorICAgICAgICAgTElCVUlNX1NZU1RFTV9TQ01fRklMRVM9JChhYnNfdG9wX3NyY2Rpcikvc2lnc2NoZW1lL2xpYiBcCiAgICAgICAgICBMSUJVSU1fU0NNX0ZJTEVTPSQoYWJzX3NyY2RpcikgXAotICAgICAgICAgTElCVUlNX1BMVUdJTl9MSUJfRElSPSQoYWJzX3RvcF9idWlsZGRpcikvdWltLy5saWJzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VpbS91aW1fMS44LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VpbS91aW1fMS44LjYuYmIKaW5kZXggMjcxNzE4ZS4uYWYyODg5NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91aW0vdWltXzEuOC42LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWltL3VpbV8xLjguNi5iYgpAQCAtMTcsMTEgKzE3LDE1IEBACiBERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGludGx0b29sLW5hdGl2ZSBndGsrIGd0ayszIHVpbS1uYXRpdmUgdGFrYW8tZm9udHMiCiAKIFJERVBFTkRTX3VpbSA9ICJsaWJ1aW0wIGxpYmVkaXQiCi1SREVQRU5EU191aW0tYW50aHkgPSAidGFrYW8tZm9udHMgYW50aHkgbGliYW50aHkwIGdsaWJjLXV0aWxzIGdsaWJjLWdjb252LWV1Yy1qcCIKK1JERVBFTkRTX3VpbS1hbnRoeSA9ICJ0YWthby1mb250cyBhbnRoeSBsaWJhbnRoeTAiCitSREVQRU5EU191aW0tYW50aHlfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLXV0aWxzIGdsaWJjLWdjb252LWV1Yy1qcCIKIAogTEVBRF9TT05BTUUgPSAibGlidWltLnNvLjEiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHFlbXUgZ3RrLWltbW9kdWxlcy1jYWNoZQoraW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHFlbXUgZ3RrLWltbW9kdWxlcy1jYWNoZQorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCiBHVEtJTU1PRFVMRVNfUEFDS0FHRVMgPSAidWltLWd0azIuMCB1aW0tZ3RrMyIKIAogRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtZW1hY3MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91bml4b2RiYy9maWxlcy9kby1ub3QtdXNlLWxpYmx0ZGwtc291cmNlLWRpcmVjdG9yeS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdW5peG9kYmMvZmlsZXMvZG8tbm90LXVzZS1saWJsdGRsLXNvdXJjZS1kaXJlY3RvcnkucGF0Y2gKaW5kZXggNjlkMjZhZC4uMjQ5OWNmZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91bml4b2RiYy9maWxlcy9kby1ub3QtdXNlLWxpYmx0ZGwtc291cmNlLWRpcmVjdG9yeS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VuaXhvZGJjL2ZpbGVzL2RvLW5vdC11c2UtbGlibHRkbC1zb3VyY2UtZGlyZWN0b3J5LnBhdGNoCkBAIC0xMywyMiArMTMsMjIgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBlODgxY2NhLi4xMzIxODAyIDEwMDY0NAoraW5kZXggNDYyODQwMS4uZTg5ODliZiAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLmFtCiArKysgYi9NYWtlZmlsZS5hbQotQEAgLTUsNyArNSw2IEBAIFNVQkRJUlMgPSBcCitAQCAtMTEsNyArMTEsNiBAQCBTVUJESVJTID0gXAogIAlsb2cgXAogIAlsc3QgXAogIAlpbmkgXAotLSAgICBsaWJsdGRsIFwKKy0JbGlibHRkbCBcCiAgCW9kYmNpbnN0IFwKICAJRHJpdmVyTWFuYWdlciBcCiAgCWV4ZSBcCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyMTg1MDJmLi5kNTBiN2FmIDEwMDY0NAoraW5kZXggZTRiY2RhZi4uNThhYTVjNSAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTM2LDkgKzEzNiw3IEBAIGRubCBBQ19DT05GSUdfTUFDUk9fRElSKFtsaWJsdGRsL200XSkKK0BAIC0xNDQsOSArMTQ0LDcgQEAgZG5sIEFDX0NPTkZJR19NQUNST19ESVIoW2xpYmx0ZGwvbTRdKQogIGRubCBMVF9DT05GSUdfTFRETF9ESVIoW2xpYmx0ZGxdKQogIGRubCBMVERMX0lOSVQKICAKQEAgLTM5LDUgKzM5LDUgQEAKICBkbmwgU3Vic3RpdHV0ZSBJTkNMVERMIGFuZCBMSUJMVERMIGluIHRoZSBNYWtlZmlsZXMKICBBQ19TVUJTVChMVERMSU5DTCkKIC0tIAotMi44LjEKKzIuMTIuMwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VuaXhvZGJjL3VuaXhvZGJjXzIuMy40LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91bml4b2RiYy91bml4b2RiY18yLjMuNi5iYgpzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VuaXhvZGJjL3VuaXhvZGJjXzIuMy40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VuaXhvZGJjL3VuaXhvZGJjXzIuMy42LmJiCmluZGV4IDZmNTdmMzcuLjYyZDlkYjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdW5peG9kYmMvdW5peG9kYmNfMi4zLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91bml4b2RiYy91bml4b2RiY18yLjMuNi5iYgpAQCAtMTEsOCArMTEsOCBAQAogU1JDX1VSSSA9ICJmdHA6Ly9mdHAudW5peG9kYmMub3JnL3B1Yi91bml4T0RCQy91bml4T0RCQy0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vZG8tbm90LXVzZS1saWJsdGRsLXNvdXJjZS1kaXJlY3RvcnkucGF0Y2ggXAogIgotU1JDX1VSSVttZDVzdW1dID0gImJkMjVkMjYxY2ExODA4Yzk0N2NiNjg3ZTIwMzRiZTgxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJlMTUwOWE5NmJiMThkMjQ4YmYwOGVhZDBkNzQ4MDQ5NTczMDRmZjdjNmY4YjJlNTk2NTMwOWM2MzI0MjFlMzkiCitTUkNfVVJJW21kNXN1bV0gPSAiYTg2MjlmZDI5NTNiMDRiNDYzOWQwYTlkOGE1Y2Y5ZDEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODhiNjM3ZjY0N2MwNTJlY2MzODYxYTNiYWEyNzVjM2I1MDNiMTkzYjZhNDlmZjhjMjhiMjU2ODY1NmQxNGQ2OSIKIAogaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXBvd2VyL3Vwb3dlcl8wLjk5LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Vwb3dlci91cG93ZXJfMC45OS43LmJiCnNpbWlsYXJpdHkgaW5kZXggODYlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXBvd2VyL3Vwb3dlcl8wLjk5LjUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXBvd2VyL3Vwb3dlcl8wLjk5LjcuYmIKaW5kZXggOTMxNDUzNC4uOTczZmJlNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91cG93ZXIvdXBvd2VyXzAuOTkuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Vwb3dlci91cG93ZXJfMC45OS43LmJiCkBAIC01LDggKzUsOCBAQAogREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgbGlidXNiMSBsaWJndWRldiBnbGliLTIuMCBkYnVzLWdsaWIgcG9sa2l0IgogCiBTUkNfVVJJID0gImh0dHA6Ly91cG93ZXIuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiZWM1N2I0YjdiZjBhZjU2OGY5YTdhNTYwM2M5MjFkOTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzg2MDU2NjRkMDI3Yzc4OGY2YWI2M2M1MDk1MGJlNmU4NmM2YmE1ZDAzMGM0Y2YzNWE2NjY0MzM3ZDg3ZjNiMiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMzZiYjQzOWQ5ZmYxMTUxNDUwYjNkODU4MjM5OTUzMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNGJjYzJmNmFiMjVhMjUzM2JhYzcwYjU4N2JjYjAxOWU1OTEyOTMwNzY5MjBmNWI1ZTA0YmRlZGMxNDBhNDAxIgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBnb2JqZWN0LWludHJvc3BlY3Rpb24gc3lzdGVtZAogCkBAIC0zMiw4ICszMiwzIEBACiAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMS8gXAogICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9L3VkZXYvKiBcCiAiCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtiYXNlX2xpYmRpcn0vdWRldi8uZGVidWciCi0KLQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VyaXBhcnNlci91cmlwYXJzZXJfMC44LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VyaXBhcnNlci91cmlwYXJzZXJfMC44LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRiZTg1MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXJpcGFyc2VyL3VyaXBhcnNlcl8wLjguNC5iYgpAQCAtMCwwICsxLDE0IEBACitTVU1NQVJZID0gIlJGQyAzOTg2IGNvbXBsaWFudCBVUkkgcGFyc2luZyBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly91cmlwYXJzZXIuZ2l0aHViLmlvIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTcyYjBmOWM3NGFlOTZlZWFiOGNmMWJmM2VmZTA4ZGEyIgorCitTUkNfVVJJIDo9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC91cmlwYXJzZXIvU291cmNlcy8ke1BWfS91cmlwYXJzZXItJHtQVn0udGFyLmJ6MiIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS10ZXN0IC0tZGlzYWJsZS1kb2MiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5YWFiZGMzNjExNTQ2ZjU1M2Y0YWYzNzIxNjdkZTZkNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjZTdjY2RhNDEzNjk3NDg4OTIzMWU4NDI2YTc4NWU3NTc4ZTY2YTYyODMwMDljZmQxM2YxYjI0YTVlNjU3YjIzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91c2ItbW9kZXN3aXRjaC91c2ItbW9kZXN3aXRjaF8yLjUuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXNiLW1vZGVzd2l0Y2gvdXNiLW1vZGVzd2l0Y2hfMi41LjAuYmIKaW5kZXggZmY0MzlmMy4uYWMwZGY4YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91c2ItbW9kZXN3aXRjaC91c2ItbW9kZXN3aXRjaF8yLjUuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VzYi1tb2Rlc3dpdGNoL3VzYi1tb2Rlc3dpdGNoXzIuNS4wLmJiCkBAIC04LDcgKzgsOSBAQAogU1JDX1VSSVttZDVzdW1dID0gIjM4YWQ1YzlkNzBlMDYyMjdhMDAzNjFiZGMyYjFlNTY4IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMxYzBiZTI4MGQ0OWE5OWVjM2RjMGJlMzMyNWJlZjMyMGQ5YzA0YjUwNzE0ZWYwY2UxZTM2YTYxNGQ2ODc2MzMiCiAKLWluaGVyaXQgcGtnY29uZmlnCitpbmhlcml0IHBrZ2NvbmZpZyBzeXN0ZW1kCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ1c2JfbW9kZXN3aXRjaEAuc2VydmljZSIKIAogRVhUUkFfT0VNQUtFID0gIlRDTD0ke2JpbmRpcn0vdGNsc2giCiAKQEAgLTE4LDQgKzIwLDggQEAKIAogZG9faW5zdGFsbCgpIHsKICAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1N9L3VzYl9tb2Rlc3dpdGNoQC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGZpCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3V0aGFzaC91dGhhc2gvcnVuLXB0ZXN0IGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91dGhhc2gvdXRoYXNoL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xNDA3MWE2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91dGhhc2gvdXRoYXNoL3J1bi1wdGVzdApAQCAtMCwwICsxLDEwIEBACisjIS9iaW4vc2gKKworY2QgdGVzdHMKK2ZvciBpIGluIHRlc3QqWzAtOV0gOyBkbworICAgIGlmIC4vJHtpfSB8IGNtcCAtcyAiJHtpfS5hbnMiIC0gOyB0aGVuCisgICAgICAgIGVjaG8gIlBBU1M6ICR7aX0iCisgICAgZWxzZQorICAgICAgICBlY2hvICJGQUlMOiAke2l9IgorICAgIGZpCitkb25lCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3V0aGFzaC91dGhhc2hfMS45LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3V0aGFzaC91dGhhc2hfMS45LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyYTlmMmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91dGhhc2gvdXRoYXNoXzEuOS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotU1VNTUFSWSA9ICJIYXNoIHRhYmxlIGZvciBDIHN0cnVjdHVyZXMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTY0ZjljNDQ5MjdmNjI0N2RjODEwYmY1NTdlMmIyNDAiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuYnoyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWYxNGJiZWU3ZWU3M2VkMGNlYjM1NDlmOGNmMzc4YjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTU2ZjVjOTk3OTgzNDljNDEzMjc1ZmU0YzlmZjEyOGQ3MmUyODA2NTVkYWRiZTQzNjVmOGU5ZmJkYTkxMzkzZiIKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgaW5zdGFsbCAtZG03NTUgJHtEfSR7aW5jbHVkZWRpcn0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zcmMvKi5oICR7RH0ke2luY2x1ZGVkaXJ9Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91dGhhc2gvdXRoYXNoXzIuMC4yLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91dGhhc2gvdXRoYXNoXzIuMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjZGQxM2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3V0aGFzaC91dGhhc2hfMi4wLjIuYmIKQEAgLTAsMCArMSw0NiBAQAorU1VNTUFSWSA9ICJIYXNoIHRhYmxlIGFuZCBsaW5rZWQgbGlzdCBmb3IgQyBzdHJ1Y3R1cmVzIgorREVTQ1JJUFRJT04gPSAiIHV0aGFzaC1kZXYgcHJvdmlkZXMgYSBoYXNoIHRhYmxlIGltcGxlbWVudGF0aW9uIHVzaW5nIEMgcHJlcHJvY2Vzc29yIG1hY3Jvcy5cblwKKyBUaGlzIHBhY2thZ2UgYWxzbyBpbmNsdWRlczpcblwKKyAgKiB1dGxpc3QuaCBwcm92aWRlcyBsaW5rZWQgbGlzdCBtYWNyb3MgZm9yIEMgc3RydWN0dXJlc1xuXAorICAqIHV0YXJyYXkuaCBpbXBsZW1lbnRzIGR5bmFtaWMgYXJyYXlzIHVzaW5nIG1hY3Jvc1xuXAorICAqIHV0c3RyaW5nLmggaW1wbGVtZW50cyBhIGJhc2ljIGR5bmFtaWMgc3RyaW5nXG5cCisiCitIT01FUEFHRSA9ICJodHRwczovL3Ryb3lkaGFuc29uLmdpdGh1Yi5pby91dGhhc2gvIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJCU0QtMS1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01Y2MxZjFlNGM3MWYxOWY1ODA0NTg1ODY3NTZjMDJiNCIKKworU1JDX1VSSSA9ICJcCisgICAgaHR0cHM6Ly9naXRodWIuY29tL3Ryb3lkaGFuc29uLyR7QlBOfS9hcmNoaXZlL3Yke1BWfS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS50YXIuZ3ogXAorICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS90cm95ZGhhbnNvbi8ke0JQTn0vcmVsZWFzZXMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMDg2MzJhNTg2NzQyNzRjOWNkODdlMjkzMGY1Njk2YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzNGEzMWQ1MWRkN2E4Mzk4MTljZWNkNmY0NjA0OWI0ZmZlMDMxZDdmMzE0N2Q5YTA0MmY1NTA0ZmRiMTM0OGQxIgorCitpbmhlcml0IHB0ZXN0CisKK2RvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgIG9lX3J1bm1ha2UgLUMgdGVzdHMgdGVzdHNfb25seSBURVNUX1RBUkdFVD0KK30KKworZG9faW5zdGFsbCAoKSB7CisgICAgaW5zdGFsbCAtZG03NTUgJHtEfSR7aW5jbHVkZWRpcn0KKyAgICBpbnN0YWxsIC1tMDY0NCBzcmMvKi5oICR7RH0ke2luY2x1ZGVkaXJ9Cit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgaW5zdGFsbCAtZG03NTUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBpbnN0YWxsIC1tMDc1NSB0ZXN0cy90ZXN0KlswLTldICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgaW5zdGFsbCAtbTA2NDQgdGVzdHMvdGVzdCpbMC05XS5hbnMgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBpbnN0YWxsIC1tMDY0NCB0ZXN0cy90ZXN0KlswLTldLmRhdCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworfQorCisjIFRoZSBtYWluIHBhY2thZ2UgaXMgZW1wdHkgYW5kIG5vbi1leGlzdGVudCwgc28gLWRldgorIyBzaG91bGQgbm90IGRlcGVuZCBvbiBpdC4uLgorUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Zib3hndWVzdGRyaXZlcnMvdmJveGd1ZXN0ZHJpdmVyc181LjEuMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Zib3hndWVzdGRyaXZlcnMvdmJveGd1ZXN0ZHJpdmVyc181LjIuOC5iYgpzaW1pbGFyaXR5IGluZGV4IDcxJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Zib3hndWVzdGRyaXZlcnMvdmJveGd1ZXN0ZHJpdmVyc181LjEuMjYuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmJveGd1ZXN0ZHJpdmVycy92Ym94Z3Vlc3Rkcml2ZXJzXzUuMi44LmJiCmluZGV4IGZkZWZlMDMuLmUwMGRiNGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmJveGd1ZXN0ZHJpdmVycy92Ym94Z3Vlc3Rkcml2ZXJzXzUuMS4yNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Zib3hndWVzdGRyaXZlcnMvdmJveGd1ZXN0ZHJpdmVyc181LjIuOC5iYgpAQCAtMTIsMjIgKzEyLDI0IEBACiBWQk9YX05BTUUgPSAiVmlydHVhbEJveC0ke1BWfSIKIAogU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQudmlydHVhbGJveC5vcmcvdmlydHVhbGJveC8ke1BWfS8ke1ZCT1hfTkFNRX0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS51dGlscyBcCisgICAgZmlsZTovL01ha2VmaWxlLnV0aWxzIFwKICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkM2FlYzgxOTBjNjQ5ZDdlMGQ5MmJhMzc0Nzc5ZGZlMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNTcxNTAzNWU2ODFhMTFlZjE0NzVmODNmOTUwM2QzNGEwMGYwMjc2Yjg5YzU3MmVlYmVjMzYzZGRhODBjOGE5IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTczMWVhOWM1YzMxMDk2ZWM0YzJhM2JmYmEyNjY2NWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWUyNzU5ZDQ3YjBiNGFjODFiOGI2NzFjOTQ4NWM4N2ZiMmRiMTJjMDk3YjNlN2U2OWI5NGMxMjkxYTgwODRlOCIKIAogUyA9ICIke1dPUktESVJ9L3Zib3hfbW9kdWxlIgogCiBleHBvcnQgQlVJTERfVEFSR0VUX0FSQ0g9IiR7QVJDSH0iCiBleHBvcnQgQlVJTERfVEFSR0VUX0FSQ0hfeDg2LTY0PSJhbWQ2NCIKLWV4cG9ydCBLRVJOX0RJUj0iJHtTVEFHSU5HX0tFUk5FTF9ESVJ9IgorCitFWFRSQV9PRU1BS0UgKz0gIktFUk5fRElSPScke1dPUktESVJ9LyR7S0VSTkVMX1ZFUlNJT059L2J1aWxkJyIKIAogYWRkdGFzayBleHBvcnRfc291cmNlcyBiZWZvcmUgZG9fcGF0Y2ggYWZ0ZXIgZG9fdW5wYWNrCiAKIGRvX2V4cG9ydF9zb3VyY2VzKCkgewogICAgIG1rZGlyIC1wICIke1N9IgotICAgICR7V09SS0RJUn0vJHtWQk9YX05BTUV9L3NyYy9WQm94L0FkZGl0aW9ucy9saW51eC9leHBvcnRfbW9kdWxlcyAke1R9L3Zib3hfbW9kdWxlcy50YXIuZ3oKKyAgICAke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9zcmMvVkJveC9BZGRpdGlvbnMvbGludXgvZXhwb3J0X21vZHVsZXMuc2ggJHtUfS92Ym94X21vZHVsZXMudGFyLmd6CiAgICAgdGFyIC1DICIke1N9IiAteHpmICR7VH0vdmJveF9tb2R1bGVzLnRhci5negogCiAgICAgIyBhZGQgYSBtb3VudCB1dGlsaXR5IHRvIHVzZSBzaGFyZWQgZm9sZGVyIGZyb20gVkJveCBBZGRpdGlvbiBTb3VyY2UgQ29kZQpAQCAtMzgsNiArNDAsMTMgQEAKIAogfQogCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAjIHZib3hndWVzdGRyaXZlcnMvNS4yLjYtcjAvdmJveF9tb2R1bGUvdmJveGd1ZXN0L01ha2VmaWxlLmluY2x1ZGUuaGVhZGVyOjk5OiAqKiogVGhlIHZhcmlhYmxlIEtFUk5fRElSIG11c3QgYmUgYSBrZXJuZWwgYnVpbGQgZm9sZGVyIGFuZCBlbmQgd2l0aCAvYnVpbGQgd2l0aG91dCBhIHRyYWlsaW5nIHNsYXNoLCBvciBLRVJOX1ZFUiBtdXN0IGJlIHNldC4gIFN0b3AuCisgICAgIyB2Ym94Z3Vlc3Rkcml2ZXJzLzUuMi42LXIwL3Zib3hfbW9kdWxlL3Zib3hndWVzdC9NYWtlZmlsZS5pbmNsdWRlLmhlYWRlcjoxMDg6ICoqKiBUaGUga2VybmVsIGJ1aWxkIGZvbGRlciBwYXRoIG11c3QgZW5kIGluIDx2ZXJzaW9uPi9idWlsZCwgb3IgdGhlIHZhcmlhYmxlIEtFUk5fVkVSIG11c3QgYmUgc2V0LiAgU3RvcC4KKyAgICBta2RpciAtcCAke1dPUktESVJ9LyR7S0VSTkVMX1ZFUlNJT059CisgICAgbG4gLXNuZiAke1NUQUdJTkdfS0VSTkVMX0RJUn0gJHtXT1JLRElSfS8ke0tFUk5FTF9WRVJTSU9OfS9idWlsZAorfQorCiAjIGNvbXBpbGUgYW5kIGluc3RhbGwgbW91bnQgdXRpbGl0eQogZG9fY29tcGlsZV9hcHBlbmQoKSB7CiAgICAgb2VfcnVubWFrZSAnTEQ9JHtDQ30nICdMREZMQUdTPSR7TERGTEFHU30nIC1DICR7U30vdXRpbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmltL2ZpbGVzL0NWRS0yMDE3LTE3MDg3LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92aW0vZmlsZXMvQ1ZFLTIwMTctMTcwODcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM3YjliYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmltL2ZpbGVzL0NWRS0yMDE3LTE3MDg3LnBhdGNoCkBAIC0wLDAgKzEsNzAgQEAKK0Zyb20gOWMxMWY4MDMzOTM3MmI3YWEyZjQzMTUzZDU3NGYyYjVhYmI3OTcwOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IExpIFpob3UgPGxpLnpob3VAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFN1biwgMTcgRGVjIDIwMTcgMjM6MDk6MzUgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gdmltOiBwYXRjaCA4LjAuMTI2Mzogb3RoZXJzIGNhbiByZWFkIHRoZSBzd2FwIGZpbGUgaWYgYSB1c2VyCisgaXMgY2FyZWxlc3MKKworUHJvYmxlbTogICAgT3RoZXJzIGNhbiByZWFkIHRoZSBzd2FwIGZpbGUgaWYgYSB1c2VyIGlzIGNhcmVsZXNzIHdpdGggaGlzCisgICAgICAgICAgICBwcmltYXJ5IGdyb3VwLgorU29sdXRpb246ICAgSWYgdGhlIGdyb3VwIHBlcm1pc3Npb24gYWxsb3dzIGZvciByZWFkaW5nIGJ1dCB0aGUgd29ybGQKKyAgICAgICAgICAgIHBlcm1pc3Npb25zIGRvZXNuJ3QsIG1ha2Ugc3VyZSB0aGUgZ3JvdXAgaXMgcmlnaHQuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK0NWRTogQ1ZFLTIwMTctMTcwODcKK1NpZ25lZC1vZmYtYnk6IExpIFpob3UgPGxpLnpob3VAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9maWxlaW8uYyAgfCAyNCArKysrKysrKysrKysrKysrKysrKysrKy0KKyBzcmMvdmVyc2lvbi5jIHwgIDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9maWxlaW8uYyBiL3NyYy9maWxlaW8uYworaW5kZXggZjU0ZmI4NDY1Li4yYzc3NDBhZjkgMTAwNjQ0CistLS0gYS9zcmMvZmlsZWlvLmMKKysrKyBiL3NyYy9maWxlaW8uYworQEAgLTcxNiw3ICs3MTYsMjkgQEAgcmVhZGZpbGUoCisgCS8qIFNldCBzd2FwIGZpbGUgcHJvdGVjdGlvbiBiaXRzIGFmdGVyIGNyZWF0aW5nIGl0LiAqLworIAlpZiAoc3dhcF9tb2RlID4gMCAmJiBjdXJidWYtPmJfbWwubWxfbWZwICE9IE5VTEwKKyAJCQkgICYmIGN1cmJ1Zi0+Yl9tbC5tbF9tZnAtPm1mX2ZuYW1lICE9IE5VTEwpCistCSAgICAodm9pZCltY2hfc2V0cGVybShjdXJidWYtPmJfbWwubWxfbWZwLT5tZl9mbmFtZSwgKGxvbmcpc3dhcF9tb2RlKTsKKysJeworKwkgICAgY2hhcl91ICpzd2FwX2ZuYW1lID0gY3VyYnVmLT5iX21sLm1sX21mcC0+bWZfZm5hbWU7CisrCisrCSAgICAvKgorKwkgICAgICogSWYgdGhlIGdyb3VwLXJlYWQgYml0IGlzIHNldCBidXQgbm90IHRoZSB3b3JsZC1yZWFkIGJpdCwgdGhlbgorKwkgICAgICogdGhlIGdyb3VwIG11c3QgYmUgZXF1YWwgdG8gdGhlIGdyb3VwIG9mIHRoZSBvcmlnaW5hbCBmaWxlLiAgSWYKKysJICAgICAqIHdlIGNhbid0IG1ha2UgdGhhdCBoYXBwZW4gdGhlbiByZXNldCB0aGUgZ3JvdXAtcmVhZCBiaXQuICBUaGlzCisrCSAgICAgKiBhdm9pZHMgbWFraW5nIHRoZSBzd2FwIGZpbGUgcmVhZGFibGUgdG8gbW9yZSB1c2VycyB3aGVuIHRoZQorKwkgICAgICogcHJpbWFyeSBncm91cCBvZiB0aGUgdXNlciBpcyB0b28gcGVybWlzc2l2ZS4KKysJICAgICAqLworKwkgICAgaWYgKChzd2FwX21vZGUgJiAwNDQpID09IDA0MCkKKysJICAgIHsKKysJCXN0YXRfVAlzd2FwX3N0OworKworKwkJaWYgKG1jaF9zdGF0KChjaGFyICopc3dhcF9mbmFtZSwgJnN3YXBfc3QpID49IDAKKysJCQkmJiBzdC5zdF9naWQgIT0gc3dhcF9zdC5zdF9naWQKKysJCQkmJiBmY2hvd24oY3VyYnVmLT5iX21sLm1sX21mcC0+bWZfZmQsIC0xLCBzdC5zdF9naWQpCisrCQkJCQkJCQkJID09IC0xKQorKwkJICAgIHN3YXBfbW9kZSAmPSAwNjAwOworKwkgICAgfQorKworKwkgICAgKHZvaWQpbWNoX3NldHBlcm0oc3dhcF9mbmFtZSwgKGxvbmcpc3dhcF9tb2RlKTsKKysJfQorICNlbmRpZgorICAgICB9CisgCitkaWZmIC0tZ2l0IGEvc3JjL3ZlcnNpb24uYyBiL3NyYy92ZXJzaW9uLmMKK2luZGV4IGE1Y2IwNzhmMC4uNWMwZGY0NzVmIDEwMDY0NAorLS0tIGEvc3JjL3ZlcnNpb24uYworKysrIGIvc3JjL3ZlcnNpb24uYworQEAgLTc3MCw2ICs3NzAsOCBAQCBzdGF0aWMgY2hhciAqKGZlYXR1cmVzW10pID0KKyBzdGF0aWMgaW50IGluY2x1ZGVkX3BhdGNoZXNbXSA9CisgeyAgIC8qIEFkZCBuZXcgcGF0Y2ggbnVtYmVyIGJlbG93IHRoaXMgbGluZSAqLworIC8qKi8KKysgICAgMTI2MywKKysvKiovCisgICAgIDk4MywKKyAvKiovCisgICAgIDk4MiwKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbV84LjAuMDk4My5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbV84LjAuMDk4My5iYgppbmRleCA0MDdjZTVlLi40NGM4NjhjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1fOC4wLjA5ODMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltXzguMC4wOTgzLmJiCkBAIC05LDYgKzksNyBAQAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3ZpbS92aW0uZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfYWNsX2hlYWRlcl9jaGVjay5wYXRjaDtwYXRjaGRpcj0uLiBcCiAgICAgICAgICAgIGZpbGU6Ly92aW0tYWRkLWtub2Itd2hldGhlci1lbGYuaC1hcmUtY2hlY2tlZC5wYXRjaDtwYXRjaGRpcj0uLiBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNzA4Ny5wYXRjaDtwYXRjaGRpcj0uLiBcCiAiCiBTUkNSRVYgPSAiM2Y5YTFmZjE0MTQxMmU5ZTg1ZjdkZmY0N2QwMjk0NmNiOWJlOTIyOCIKIApAQCAtMTYsOCArMTcsOSBAQAogCiBWSU1ESVIgPSAidmltJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKIAotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcwotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLWFsdGVybmF0aXZlcworCitDTEVBTkJST0tFTiA9ICIxIgogCiAjIHZpbSBjb25maWd1cmUuaW4gY29udGFpbnMgZnVuY3Rpb25zIHdoaWNoIGdvdCAnZHJvcHBlZCcgYnkgYXV0b3Rvb2xzLmJiY2xhc3MKIGRvX2NvbmZpZ3VyZSAoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuNy4wLzAwMDEtRml4LWlzc3VlLTU5OS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC43LjAvMDAwMS1GaXgtaXNzdWUtNTk5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhOWVhNzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuNy4wLzAwMDEtRml4LWlzc3VlLTU5OS5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDFkZDA3MTEzZjJhNzQ4OTQ0NGE4OTkwYTk1YmU0MmUwMzVmOGU5ZGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLdXJ0IFJvZWNreCA8a3JvZWNreEBkZWJpYW4ub3JnPgorRGF0ZTogVHVlLCAxIE5vdiAyMDE2IDEyOjU3OjM1ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBpc3N1ZSAjNTk5CitGb3J3YXJkZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS96YXBob3lkL3dlYnNvY2tldHBwL3B1bGwvNjAwCisKKy0tLQorIHdlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL3NlY3VyaXR5L3Rscy5ocHAgfCA0IC0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3dlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL3NlY3VyaXR5L3Rscy5ocHAgYi93ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9zZWN1cml0eS90bHMuaHBwCitpbmRleCA3YjMyZGI4Li5hOGFhZmVjIDEwMDY0NAorLS0tIGEvd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vc2VjdXJpdHkvdGxzLmhwcAorKysrIGIvd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vc2VjdXJpdHkvdGxzLmhwcAorQEAgLTM1NSwxMyArMzU1LDkgQEAgcHJvdGVjdGVkOgorICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRXJyb3JDb2RlVHlwZT4KKyAgICAgbGliOjplcnJvcl9jb2RlIHRyYW5zbGF0ZV9lYyhFcnJvckNvZGVUeXBlIGVjKSB7CisgICAgICAgICBpZiAoZWMuY2F0ZWdvcnkoKSA9PSBsaWI6OmFzaW86OmVycm9yOjpnZXRfc3NsX2NhdGVnb3J5KCkpIHsKKy0gICAgICAgICAgICBpZiAoRVJSX0dFVF9SRUFTT04oZWMudmFsdWUoKSkgPT0gU1NMX1JfU0hPUlRfUkVBRCkgeworLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9lcnJvcl9jb2RlKHRyYW5zcG9ydDo6ZXJyb3I6OnRsc19zaG9ydF9yZWFkKTsKKy0gICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAvLyBXZSBrbm93IGl0IGlzIGEgVExTIHJlbGF0ZWQgZXJyb3IsIGJ1dCBvdGhlcndpc2UgZG9uJ3Qga25vdworICAgICAgICAgICAgICAgICAvLyBtb3JlLiBQYXNzIHRocm91Z2ggYXMgVExTIGdlbmVyaWMuCisgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2Vycm9yX2NvZGUodHJhbnNwb3J0OjplcnJvcjo6dGxzX2Vycm9yKTsKKy0gICAgICAgICAgICB9CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIC8vIFdlIGRvbid0IGtub3cgYW55IG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBlcnJvciBzbyBwYXNzCisgICAgICAgICAgICAgLy8gdGhyb3VnaAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuNy4wLzRjYWI1ZTVjMGM1ZjE5ZmNlZTdkMzdiNGEzOGIxNTZkNjNhMTUwZDQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuNy4wLzRjYWI1ZTVjMGM1ZjE5ZmNlZTdkMzdiNGEzOGIxNTZkNjNhMTUwZDQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTMwYzk2MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC43LjAvNGNhYjVlNWMwYzVmMTlmY2VlN2QzN2I0YTM4YjE1NmQ2M2ExNTBkNC5wYXRjaApAQCAtMCwwICsxLDE1NSBAQAorRnJvbSA0Y2FiNWU1YzBjNWYxOWZjZWU3ZDM3YjRhMzhiMTU2ZDYzYTE1MGQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGV0ZXIgVGhvcnNvbiA8Z2l0QHphcGhveWQuY29tPgorRGF0ZTogU3VuLCAxMSBKdW4gMjAxNyAxNjoxMzoyNSAtMDUwMAorU3ViamVjdDogW1BBVENIXSBtaW5vciBhZGp1c3RtZW50cyB0byByZWNlbnQgZXh0ZW5zaW9uIG5lZ290aWF0aW9uIHJlbGF0ZWQKKyBmaXhlcywgcmVmYWN0b3IgYSBiaXQgbW9yZSBleHRlbnNpb24gbmVnb3RpYXRpb24gY29kZSB0byBiZSBzaW1wbGVyCisKKy0tLQorIHdlYnNvY2tldHBwL2ltcGwvY29ubmVjdGlvbl9pbXBsLmhwcCB8ICA2ICstLQorIHdlYnNvY2tldHBwL3Byb2Nlc3NvcnMvaHliaTEzLmhwcCAgICB8IDkyICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRpb25zKC0pCisKK0luZGV4OiB3ZWJzb2NrZXRwcC0wLjcuMC93ZWJzb2NrZXRwcC9pbXBsL2Nvbm5lY3Rpb25faW1wbC5ocHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3ZWJzb2NrZXRwcC0wLjcuMC5vcmlnL3dlYnNvY2tldHBwL2ltcGwvY29ubmVjdGlvbl9pbXBsLmhwcAorKysrIHdlYnNvY2tldHBwLTAuNy4wL3dlYnNvY2tldHBwL2ltcGwvY29ubmVjdGlvbl9pbXBsLmhwcAorQEAgLTEyMjIsMTcgKzEyMjIsMTcgQEAKKyAgICAgc3RkOjpwYWlyPGxpYjo6ZXJyb3JfY29kZSxzdGQ6OnN0cmluZz4gbmVnX3Jlc3VsdHM7CisgICAgIG5lZ19yZXN1bHRzID0gbV9wcm9jZXNzb3ItPm5lZ290aWF0ZV9leHRlbnNpb25zKG1fcmVxdWVzdCk7CisgCistICAgIGlmIChuZWdfcmVzdWx0cy5maXJzdCA9PSBlcnJvcjo6bWFrZV9lcnJvcl9jb2RlKGVycm9yOjpleHRlbnNpb25fcGFyc2VfZXJyb3IpKSB7CisrICAgIGlmIChuZWdfcmVzdWx0cy5maXJzdCA9PSBwcm9jZXNzb3I6OmVycm9yOjptYWtlX2Vycm9yX2NvZGUocHJvY2Vzc29yOjplcnJvcjo6ZXh0ZW5zaW9uX3BhcnNlX2Vycm9yKSkgeworICAgICAgICAgLy8gVGhlcmUgd2FzIGEgZmF0YWwgZXJyb3IgaW4gZXh0ZW5zaW9uIHBhcnNpbmcgdGhhdCBzaG91bGQgcmVzdWx0IGluCisgICAgICAgICAvLyBhIGZhaWxlZCBjb25uZWN0aW9uIGF0dGVtcHQuCistICAgICAgICBtX2Fsb2cud3JpdGUobG9nOjphbGV2ZWw6OmluZm8sICJCYWQgcmVxdWVzdDogIiArIG5lZ19yZXN1bHRzLmZpcnN0Lm1lc3NhZ2UoKSk7CisrICAgICAgICBtX2Vsb2cud3JpdGUobG9nOjplbGV2ZWw6OmluZm8sICJCYWQgcmVxdWVzdDogIiArIG5lZ19yZXN1bHRzLmZpcnN0Lm1lc3NhZ2UoKSk7CisgICAgICAgICBtX3Jlc3BvbnNlLnNldF9zdGF0dXMoaHR0cDo6c3RhdHVzX2NvZGU6OmJhZF9yZXF1ZXN0KTsKKyAgICAgICAgIHJldHVybiBuZWdfcmVzdWx0cy5maXJzdDsKKyAgICAgfSBlbHNlIGlmIChuZWdfcmVzdWx0cy5maXJzdCkgeworICAgICAgICAgLy8gVGhlcmUgd2FzIGEgZmF0YWwgZXJyb3IgaW4gZXh0ZW5zaW9uIHByb2Nlc3NpbmcgdGhhdCBpcyBwcm9iYWJseSBvdXIKKyAgICAgICAgIC8vIGZhdWx0LiBDb25zaWRlciBleHRlbnNpb24gbmVnb3RpYXRpb24gdG8gaGF2ZSBmYWlsZWQgYW5kIGNvbnRpbnVlIGFzCisgICAgICAgICAvLyBpZiBleHRlbnNpb25zIHdlcmUgbm90IHN1cHBvcnRlZAorLSAgICAgICAgbV9hbG9nLndyaXRlKGxvZzo6YWxldmVsOjppbmZvLCAKKysgICAgICAgIG1fZWxvZy53cml0ZShsb2c6OmVsZXZlbDo6aW5mbywgCisgICAgICAgICAgICAgIkV4dGVuc2lvbiBuZWdvdGlhdGlvbiBmYWlsZWQ6ICIgKyBuZWdfcmVzdWx0cy5maXJzdC5tZXNzYWdlKCkpOworICAgICB9IGVsc2UgeworICAgICAgICAgLy8gZXh0ZW5zaW9uIG5lZ290aWF0aW9uIHN1Y2NlZWRlZCwgc2V0IHJlc3BvbnNlIGhlYWRlciBhY2NvcmRpbmdseQorSW5kZXg6IHdlYnNvY2tldHBwLTAuNy4wL3dlYnNvY2tldHBwL3Byb2Nlc3NvcnMvaHliaTEzLmhwcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHdlYnNvY2tldHBwLTAuNy4wLm9yaWcvd2Vic29ja2V0cHAvcHJvY2Vzc29ycy9oeWJpMTMuaHBwCisrKysgd2Vic29ja2V0cHAtMC43LjAvd2Vic29ja2V0cHAvcHJvY2Vzc29ycy9oeWJpMTMuaHBwCitAQCAtOTcsMTEgKzk3LDYgQEAKKyAgICAgLyoqCisgICAgICAqIFRoaXMgZXhpc3RzIG1vc3RseSBiZWNhdXNlIHRoZSBjb2RlIGZvciByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzIGlzCisgICAgICAqIGlkZW50aWNhbCBhbmQgSSBjYW4ndCBoYXZlIHZpcnR1YWwgdGVtcGxhdGUgbWV0aG9kcy4KKy0gICAgICoKKy0gICAgICogTk9URTogdGhpcyBtZXRob2QgbWFrZXMgYXNzdW1wdGlvbnMgdGhhdCB0aGUgcGVybWVzc2FnZS1kZWZsYXRlCistICAgICAqIGV4dGVuc2lvbiBpcyB0aGUgb25seSBvbmUgc3VwcG9ydGVkLiBJZiBhZGRpdGlvbmFsIGV4dGVuc2lvbnMgYXJlCistICAgICAqIGV2ZXIgc3VwcG9ydGVkIGl0IHNob3VsZCBiZSByZXZpZXdlZCBjYXJlZnVsbHkuIE1vc3QgY2FzZXMgd2hlcmUKKy0gICAgICogdGhhdCBhc3N1bXB0aW9uIGlzIG1hZGUgYXJlIGV4cGxpY2l0bHkgbm90ZWQuCisgICAgICAqLworICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgaGVhZGVyX3R5cGU+CisgICAgIGVycl9zdHJfcGFpciBuZWdvdGlhdGVfZXh0ZW5zaW9uc19oZWxwZXIoaGVhZGVyX3R5cGUgY29uc3QgJiBoZWFkZXIpIHsKK0BAIC0xMzAsNTUgKzEyNSw2MCBAQAorIAorICAgICAgICAgaHR0cDo6cGFyYW1ldGVyX2xpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0OworIAorKyAgICAgICAgLy8gbG9vayB0aHJvdWdoIHRoZSBsaXN0IG9mIGV4dGVuc2lvbiByZXF1ZXN0cyB0byBmaW5kIHRoZSBmaXJzdAorKyAgICAgICAgLy8gb25lIHRoYXQgd2UgY2FuIGFjY2VwdC4KKyAgICAgICAgIGlmIChtX3Blcm1lc3NhZ2VfZGVmbGF0ZS5pc19pbXBsZW1lbnRlZCgpKSB7CisgICAgICAgICAgICAgZXJyX3N0cl9wYWlyIG5lZ19yZXQ7CisgICAgICAgICAgICAgZm9yIChpdCA9IHAuYmVnaW4oKTsgaXQgIT0gcC5lbmQoKTsgKytpdCkgeworLSAgICAgICAgICAgICAgICAvLyBsb29rIHRocm91Z2ggZWFjaCBleHRlbnNpb24sIGlmIHRoZSBrZXkgaXMgcGVybWVzc2FnZS1kZWZsYXRlCistICAgICAgICAgICAgICAgIGlmIChpdC0+Zmlyc3QgPT0gInBlcm1lc3NhZ2UtZGVmbGF0ZSIpIHsKKy0gICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlIGhhdmUgYWxyZWFkeSBzdWNjZXNzZnVsbHkgbmVnb3RpYXRlZCB0aGlzIGV4dGVuc2lvbgorLSAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiBza2lwIGFueSBvdGhlciByZXF1ZXN0cyB0byBuZWdvdGlhdGUgdGhlIHNhbWUgb25lCistICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzIAorLSAgICAgICAgICAgICAgICAgICAgaWYgKG1fcGVybWVzc2FnZV9kZWZsYXRlLmlzX2VuYWJsZWQoKSkgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworLSAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAgICAgCistICAgICAgICAgICAgICAgICAgICAKKy0gICAgICAgICAgICAgICAgICAgIG5lZ19yZXQgPSBtX3Blcm1lc3NhZ2VfZGVmbGF0ZS5uZWdvdGlhdGUoaXQtPnNlY29uZCk7CistCistICAgICAgICAgICAgICAgICAgICBpZiAobmVnX3JldC5maXJzdCkgeworLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBhbiBlcnJvciB0aGF0IHNob3VsZCBoYWx0IGFsbAorLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV4dGVuc2lvbiBuZWdvdGlhdGlvbnMgb3Igc2ltcGx5IGNhdXNlIG5lZ290aWF0aW9uIG9mCistICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBzcGVjaWZpYyBleHRlbnNpb24gdG8gZmFpbC4KKy0gICAgICAgICAgICAgICAgICAgICAgICAvL3N0ZDo6Y291dCA8PCAicGVybWVzc2FnZS1jb21wcmVzcyBuZWdvdGlhdGlvbiBmYWlsZWQ6ICIKKy0gICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICA8PCBuZWdfcmV0LmZpcnN0Lm1lc3NhZ2UoKSA8PCBzdGQ6OmVuZGw7CistICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGU6IHRoaXMgbGlzdCB3aWxsIG5lZWQgY29tbWFzIGlmIFdlYlNvY2tldCsrIGV2ZXIKKy0gICAgICAgICAgICAgICAgICAgICAgICAvLyBzdXBwb3J0cyBtb3JlIHRoYW4gb25lIGV4dGVuc2lvbgorLSAgICAgICAgICAgICAgICAgICAgICAgIAorLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFjdHVhbGx5IHRyeSB0byBpbml0aWFsaXplIHRoZSBleHRlbnNpb24gYmVmb3JlIHdlCistICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVlbSBuZWdvdGlhdGlvbiBjb21wbGV0ZQorLSAgICAgICAgICAgICAgICAgICAgICAgIHJldC5maXJzdCA9IG1fcGVybWVzc2FnZV9kZWZsYXRlLmluaXQoYmFzZTo6bV9zZXJ2ZXIpOworLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmV0LmZpcnN0KSB7CistCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHN1cHBvcnQgbXVsdGlwbGUgZXh0ZW5zaW9ucy4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmlnaHQgbm93LCBiZWNhdXNlIHRoZXJlIGlzIG9ubHkgb25lIGV4dGVuc2lvbiAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3VwcG9ydGVkLCBpdCBmYWlsaW5nIHRvIG5lZ290aWF0ZSBtZWFucyB3ZSBhcmUKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9uZSB3aXRoIGFsbCBuZWdvdGlhdGluZy4gSW4gdGhlIGZ1dHVyZSBpZiBtb3JlCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV4dGVuc2lvbnMgYXJlIHN1cHBvcnRlZCBhIGJldHRlciBzb2x1dGlvbiB3aWxsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlIG5lZWRlZCBoZXJlLgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQuc2Vjb25kICs9IG5lZ19yZXQuc2Vjb25kOworLQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250aW51ZSBsb29raW5nIGZvciBtb3JlIGV4dGVuc2lvbnMKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CistICAgICAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAgICAgICAgIAorLSAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAvLyBub3QgYSBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9uIHJlcXVlc3QsIGlnbm9yZQorKyAgICAgICAgICAgICAgICBpZiAoaXQtPmZpcnN0ICE9ICJwZXJtZXNzYWdlLWRlZmxhdGUiKSB7CisrICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgICAgICAvLyBpZiB3ZSBoYXZlIGFscmVhZHkgc3VjY2Vzc2Z1bGx5IG5lZ290aWF0ZWQgdGhpcyBleHRlbnNpb24KKysgICAgICAgICAgICAgICAgLy8gdGhlbiBza2lwIGFueSBvdGhlciByZXF1ZXN0cyB0byBuZWdvdGlhdGUgdGhlIHNhbWUgb25lCisrICAgICAgICAgICAgICAgIC8vIHdpdGggZGlmZmVyZW50IHBhcmFtZXRlcnMgCisrICAgICAgICAgICAgICAgIGlmIChtX3Blcm1lc3NhZ2VfZGVmbGF0ZS5pc19lbmFibGVkKCkpIHsKKysgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIAorKyAgICAgICAgICAgICAgICAvLyBhdHRlbXB0IHRvIG5lZ290aWF0ZSB0aGlzIG9mZmVyCisrICAgICAgICAgICAgICAgIG5lZ19yZXQgPSBtX3Blcm1lc3NhZ2VfZGVmbGF0ZS5uZWdvdGlhdGUoaXQtPnNlY29uZCk7CisrCisrICAgICAgICAgICAgICAgIGlmIChuZWdfcmV0LmZpcnN0KSB7CisrICAgICAgICAgICAgICAgICAgICAvLyBuZWdvdGlhdGlvbiBvZmZlciBmYWlsZWQuIERvIG5vdGhpbmcuIFdlIHdpbGwgY29udGludWUKKysgICAgICAgICAgICAgICAgICAgIC8vIHNlYXJjaGluZyBmb3IgYSBwZXJtZXNzYWdlLWRlZmxhdGUgY29uZmlnIHRoYXQgc3VjY2VlZHMKKysgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgICAgIC8vIE5lZ290aWF0aW9uIHRlbnRhdGl2ZWx5IHN1Y2NlZWRlZAorKworKyAgICAgICAgICAgICAgICAvLyBBY3R1YWxseSB0cnkgdG8gaW5pdGlhbGl6ZSB0aGUgZXh0ZW5zaW9uIGJlZm9yZSB3ZQorKyAgICAgICAgICAgICAgICAvLyBkZWVtIG5lZ290aWF0aW9uIGNvbXBsZXRlCisrICAgICAgICAgICAgICAgIGxpYjo6ZXJyb3JfY29kZSBlYyA9IG1fcGVybWVzc2FnZV9kZWZsYXRlLmluaXQoYmFzZTo6bV9zZXJ2ZXIpOworKworKyAgICAgICAgICAgICAgICBpZiAoZWMpIHsKKysgICAgICAgICAgICAgICAgICAgIC8vIE5lZ290aWF0aW9uIHN1Y2NlZWRlZCBidXQgaW5pdGlhbGl6YXRpb24gZmFpbGVkIHRoaXMgaXMgCisrICAgICAgICAgICAgICAgICAgICAvLyBhbiBlcnJvciB0aGF0IHNob3VsZCBzdG9wIG5lZ290aWF0aW9uIG9mIHBlcm1lc3NhZ2UgCisrICAgICAgICAgICAgICAgICAgICAvLyBkZWZsYXRlLiBSZXR1cm4gdGhlIHJlYXNvbiBmb3IgdGhlIGluaXQgZmFpbHVyZQorKworKyAgICAgICAgICAgICAgICAgICAgcmV0LmZpcnN0ID0gZWM7CisrICAgICAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgICAgIC8vIFN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCwgcHVzaCB0aGUgbmVnb3RpYXRlZCByZXNwb25zZSBpbnRvCisrICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcmVwbHkgYW5kIHN0b3AgbG9va2luZyBmb3IgYWRkaXRpb25hbCBwZXJtZXNzYWdlLWRlZmxhdGUKKysgICAgICAgICAgICAgICAgICAgIC8vIGV4dGVuc2lvbnMKKysgICAgICAgICAgICAgICAgICAgIHJldC5zZWNvbmQgKz0gbmVnX3JldC5zZWNvbmQ7CisrICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAKKysgICAgICAgIC8vIHN1cHBvcnQgZm9yIGZ1dHVyZSBleHRlbnNpb25zIHdvdWxkIGdvIGhlcmUuIFNob3VsZCBjaGVjayB0aGUgdmFsdWUgb2YgCisrICAgICAgICAvLyByZXQuZmlyc3QgYmVmb3JlIGNvbnRpbnVpbmcuIE1pZ2h0IG5lZWQgdG8gY29uc2lkZXIgd2hldGhlciBmYWlsdXJlIG9mCisrICAgICAgICAvLyBuZWdvdGlhdGlvbiBvZiBhbiBlYXJsaWVyIGV4dGVuc2lvbiBzaG91bGQgc3RvcCBuZWdvdGlhdGlvbiBvZiBzdWJzZXF1ZW50CisrICAgICAgICAvLyBvbmVzCisrCisgICAgICAgICByZXR1cm4gcmV0OworICAgICB9CisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuNy4wLzlkZGIzMDBkODc0YTMwZGIzNWUzYWQ1OGYxODg5NDRiZWYwYmYzMWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuNy4wLzlkZGIzMDBkODc0YTMwZGIzNWUzYWQ1OGYxODg5NDRiZWYwYmYzMWIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRiZmViMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC43LjAvOWRkYjMwMGQ4NzRhMzBkYjM1ZTNhZDU4ZjE4ODk0NGJlZjBiZjMxYi5wYXRjaApAQCAtMCwwICsxLDYwMCBAQAorIyMgRGVzY3JpcHRpb246IGFkZCBzb21lIGRlc2NyaXB0aW9uCisjIyBPcmlnaW4vQXV0aG9yOiBhZGQgc29tZSBvcmlnaW4gb3IgYXV0aG9yCisjIyBCdWc6IGJ1ZyBVUkwKK0Zyb20gOWRkYjMwMGQ4NzRhMzBkYjM1ZTNhZDU4ZjE4ODk0NGJlZjBiZjMxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBldGVyIFRob3Jzb24gPGdpdEB6YXBob3lkLmNvbT4KK0RhdGU6IFN1biwgMTEgSnVuIDIwMTcgMTU6MjQ6NDMgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXBkYXRlIHBlcm1lc3NhZ2UtZGVmbGF0ZSBzdXBwb3J0IHRvIHJlZmxlY3QgdGhhdCB6bGliCisgZG9lc24ndCBzdXBwb3J0IGEgMjU2IGJpdCB3aW5kb3cuIEltcHJvdmUgZXh0ZW5zaW9uIG5lZ290aWF0aW9uIGVycm9yCisgY2hlY2tpbmcgYW5kIGRvY3VtZW50YXRpb24uIGZpeGVzICM1OTYgZml4ZXMgIzY1MworCistLS0KKyBjaGFuZ2Vsb2cubWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArKworIHRlc3QvZXh0ZW5zaW9uL3Blcm1lc3NhZ2VfZGVmbGF0ZS5jcHAgICAgICAgICAgICAgIHwgMTUzICsrKysrKysrKysrKysrKysrLS0tLQorIC4uLi9leHRlbnNpb25zL3Blcm1lc3NhZ2VfZGVmbGF0ZS9lbmFibGVkLmhwcCAgICAgIHwgIDk0ICsrKysrKysrKystLS0KKyB3ZWJzb2NrZXRwcC9pbXBsL2Nvbm5lY3Rpb25faW1wbC5ocHAgICAgICAgICAgICAgICB8ICAxMCArLQorIHdlYnNvY2tldHBwL3Byb2Nlc3NvcnMvaHliaTEzLmhwcCAgICAgICAgICAgICAgICAgIHwgIDI4ICsrKy0KKyA1IGZpbGVzIGNoYW5nZWQsIDI0NyBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NoYW5nZWxvZy5tZCBiL2NoYW5nZWxvZy5tZAoraW5kZXggYmJhNzUzY2IuLmRlOThlZGQyIDEwMDY0NAorIy0tLSBhL2NoYW5nZWxvZy5tZAorIysrKyBiL2NoYW5nZWxvZy5tZAorI0BAIC0xNyw2ICsxNywxNCBAQCBIRUFECisjIC0gQ29tcGF0aWJpbGl0eTogVXBkYXRlIGB0ZWxlbWV0cnlfY2xpZW50YCB0byB1c2UgYSBzbGlnaHRseSBtb3JlIGNyb3NzIHBsYXRmb3JtCisjICAgbWV0aG9kIG9mIHNsZWVwaW5nLiBTaG91bGQgd29yayBvbiB3aW5kb3dzIG5vdy4gVGhhbmsgeW91IE1laXIgWWFub3ZpY2ggZm9yCisjICAgcmVwb3J0aW5nLgorIystIENvbXBhdGliaWxpdHk6IFVwZGF0ZWQgcGVybWVzc2FnZS1kZWZsYXRlIHN1cHBvcnQgdG8gcmVmbGVjdCB0aGF0IHRoZSB6bGliCisjKyAgbGlicmFyeSBkb2VzIG5vdCBhY3R1YWxseSBzdXBwb3J0IGEgc2xpZGluZyB3aW5kb3cgc2l6ZSBvZiAyNTYgYml0cy4gCisjKyAgV2ViU29ja2V0Kysgd2lsbCBubyBsb25nZXIgbmVnb3RpYXRlIDI1NiBiaXQgZGVmbGF0ZSB3aW5kb3dzLiBJZiB0aGUgdXNlcgorIysgIG9mIHRoZSBsaWJyYXJ5IHRyaWVzIHRvIHJlcXVlc3QgYSAyNTYgYml0IHdpbmRvdyBhIDUxMiBiaXQgd2luZG93IHdpbGwgYmUKKyMrICBzcGVjaWZpZWQgaW5zdGVhZCAoVGhpcyB3YXMgdGhlIHByZXZpb3VzIGJlaGF2aW9yKS4gIzU5NiAjNjUzIFRoYW5rIHlvdSAKKyMrICBWaW5uaWUgRmFsY28gYW5kIEdpYW5mcmFuY28gQ29zdGFtYWduYSBmb3IgcmVwb3J0aW5nLgorIystIENvbXBhdGliaWxpdHk6IEJldHRlciBlcnJvciBoYW5kbGluZyBhbmQgbG9nZ2luZyBpbiBjYXNlcyB3aGVyZSBleHRlbnNpb24KKyMrICByZXF1ZXN0cyBwYXJzZSBjb3JyZWN0bHkgYnV0IG5lZ290aWF0aW9uIGZhaWxzLiAKKyMgLSBCdWc6IFN0b3JlIGxvZ2dlcnMgaW4gc2hhcmVkIHBvaW50ZXJzIHRvIGF2b2lkIGNyYXNoZXMgcmVsYXRlZCB0byBjb25uZWN0aW9ucworIyAgIHRyeWluZyB0byB3cml0ZSBsb2dzIGVudHJpZXMgYWZ0ZXIgdGhlaXIgcmVzcGVjdGl2ZSBlbmRwb2ludCBoYXMgYmVlbgorIyAgIGRlYWxsb2NhdGVkLiBUaGFuayB5b3UgVGhhbGhhbW1lciBmb3IgcmVwb3J0aW5nIGFuZCBKdXBwIE3DvGxsZXIgZm9yIHRoZSAKK2RpZmYgLS1naXQgYS90ZXN0L2V4dGVuc2lvbi9wZXJtZXNzYWdlX2RlZmxhdGUuY3BwIGIvdGVzdC9leHRlbnNpb24vcGVybWVzc2FnZV9kZWZsYXRlLmNwcAoraW5kZXggNGNkM2U3YjYuLjgwNWFmY2MzIDEwMDY0NAorLS0tIGEvdGVzdC9leHRlbnNpb24vcGVybWVzc2FnZV9kZWZsYXRlLmNwcAorKysrIGIvdGVzdC9leHRlbnNpb24vcGVybWVzc2FnZV9kZWZsYXRlLmNwcAorQEAgLTE4NiwxNSArMTg2LDIyIEBAIEJPT1NUX0FVVE9fVEVTVF9DQVNFKCBuZWdvdGlhdGVfc2VydmVyX21heF93aW5kb3dfYml0c19pbnZhbGlkICkgeworIAorIEJPT1NUX0FVVE9fVEVTVF9DQVNFKCBuZWdvdGlhdGVfc2VydmVyX21heF93aW5kb3dfYml0c192YWxpZCApIHsKKyAgICAgZXh0X3ZhcnMgdjsKKysgICAgCisrICAgIC8vIGNvbmZpcm0gdGhhdCBhIHJlcXVlc3QgZm9yIGEgdmFsdWUgb2YgOCBpcyBpbnRlcnByZXRlZCBhcyA5CisgICAgIHYuYXR0clsic2VydmVyX21heF93aW5kb3dfYml0cyJdID0gIjgiOworKyAgICB2LmVzcCA9IHYuZXh0cy5uZWdvdGlhdGUodi5hdHRyKTsKKysgICAgQk9PU1RfQ0hFQ0soIHYuZXh0cy5pc19lbmFibGVkKCkgKTsKKysgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLmZpcnN0LCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKKysgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLnNlY29uZCwgInBlcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93aW5kb3dfYml0cz05Iik7CisgCisrICAgIHYuYXR0clsic2VydmVyX21heF93aW5kb3dfYml0cyJdID0gIjkiOworICAgICB2LmVzcCA9IHYuZXh0cy5uZWdvdGlhdGUodi5hdHRyKTsKKyAgICAgQk9PU1RfQ0hFQ0soIHYuZXh0cy5pc19lbmFibGVkKCkgKTsKKyAgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLmZpcnN0LCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKKy0gICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLnNlY29uZCwgInBlcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93aW5kb3dfYml0cz04Iik7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9OSIpOworIAorLSAgICB2LmF0dHJbInNlcnZlcl9tYXhfd2luZG93X2JpdHMiXSA9ICIxNSI7CisgCisrICAgIHYuYXR0clsic2VydmVyX21heF93aW5kb3dfYml0cyJdID0gIjE1IjsKKyAgICAgdi5lc3AgPSB2LmV4dHMubmVnb3RpYXRlKHYuYXR0cik7CisgICAgIEJPT1NUX0NIRUNLKCB2LmV4dHMuaXNfZW5hYmxlZCgpICk7CisgICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5maXJzdCwgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CitAQCAtMjEzLDcgKzIyMCw3IEBAIEJPT1NUX0FVVE9fVEVTVF9DQVNFKCBpbnZhbGlkX3NldF9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzICkgeworIAorIEJPT1NUX0FVVE9fVEVTVF9DQVNFKCBuZWdvdGlhdGVfc2VydmVyX21heF93aW5kb3dfYml0c19kZWNsaW5lICkgeworICAgICBleHRfdmFycyB2OworLSAgICB2LmF0dHJbInNlcnZlcl9tYXhfd2luZG93X2JpdHMiXSA9ICI4IjsKKysgICAgdi5hdHRyWyJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIl0gPSAiOSI7CisgCisgICAgIHYuZWMgPSB2LmV4dHMuc2V0X3NlcnZlcl9tYXhfd2luZG93X2JpdHMoMTUscG1kX21vZGU6OmRlY2xpbmUpOworICAgICB2LmVzcCA9IHYuZXh0cy5uZWdvdGlhdGUodi5hdHRyKTsKK0BAIC0yMjMsNyArMjMwLDcgQEAgQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzX2RlY2xpbmUgKSB7CisgICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGUiKTsKKyB9CisgCistQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzX2FjY2VwdCApIHsKKytCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX3NlcnZlcl9tYXhfd2luZG93X2JpdHNfYWNjZXB0XzggKSB7CisgICAgIGV4dF92YXJzIHY7CisgICAgIHYuYXR0clsic2VydmVyX21heF93aW5kb3dfYml0cyJdID0gIjgiOworIAorQEAgLTIzMiwxMCArMjM5LDIyIEBAIEJPT1NUX0FVVE9fVEVTVF9DQVNFKCBuZWdvdGlhdGVfc2VydmVyX21heF93aW5kb3dfYml0c19hY2NlcHQgKSB7CisgICAgIEJPT1NUX0NIRUNLKCB2LmV4dHMuaXNfZW5hYmxlZCgpICk7CisgICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVjLCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKKyAgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLmZpcnN0LCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKKy0gICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLnNlY29uZCwgInBlcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93aW5kb3dfYml0cz04Iik7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9OSIpOworIH0KKyAKKy1CT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX3NlcnZlcl9tYXhfd2luZG93X2JpdHNfbGFyZ2VzdCApIHsKKytCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX3NlcnZlcl9tYXhfd2luZG93X2JpdHNfYWNjZXB0ICkgeworKyAgICBleHRfdmFycyB2OworKyAgICB2LmF0dHJbInNlcnZlcl9tYXhfd2luZG93X2JpdHMiXSA9ICI5IjsKKysKKysgICAgdi5lYyA9IHYuZXh0cy5zZXRfc2VydmVyX21heF93aW5kb3dfYml0cygxNSxwbWRfbW9kZTo6YWNjZXB0KTsKKysgICAgdi5lc3AgPSB2LmV4dHMubmVnb3RpYXRlKHYuYXR0cik7CisrICAgIEJPT1NUX0NIRUNLKCB2LmV4dHMuaXNfZW5hYmxlZCgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVjLCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKKysgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLmZpcnN0LCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKKysgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLnNlY29uZCwgInBlcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93aW5kb3dfYml0cz05Iik7CisrfQorKworK0JPT1NUX0FVVE9fVEVTVF9DQVNFKCBuZWdvdGlhdGVfc2VydmVyX21heF93aW5kb3dfYml0c19sYXJnZXN0XzggKSB7CisgICAgIGV4dF92YXJzIHY7CisgICAgIHYuYXR0clsic2VydmVyX21heF93aW5kb3dfYml0cyJdID0gIjgiOworIAorQEAgLTI0NCwxMCArMjYzLDIyIEBAIEJPT1NUX0FVVE9fVEVTVF9DQVNFKCBuZWdvdGlhdGVfc2VydmVyX21heF93aW5kb3dfYml0c19sYXJnZXN0ICkgeworICAgICBCT09TVF9DSEVDSyggdi5leHRzLmlzX2VuYWJsZWQoKSApOworICAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisgICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5maXJzdCwgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CistICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9OCIpOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3Auc2Vjb25kLCAicGVybWVzc2FnZS1kZWZsYXRlOyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTkiKTsKKyB9CisgCistQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzX3NtYWxsZXN0ICkgeworK0JPT1NUX0FVVE9fVEVTVF9DQVNFKCBuZWdvdGlhdGVfc2VydmVyX21heF93aW5kb3dfYml0c19sYXJnZXN0ICkgeworKyAgICBleHRfdmFycyB2OworKyAgICB2LmF0dHJbInNlcnZlcl9tYXhfd2luZG93X2JpdHMiXSA9ICI5IjsKKysKKysgICAgdi5lYyA9IHYuZXh0cy5zZXRfc2VydmVyX21heF93aW5kb3dfYml0cygxNSxwbWRfbW9kZTo6bGFyZ2VzdCk7CisrICAgIHYuZXNwID0gdi5leHRzLm5lZ290aWF0ZSh2LmF0dHIpOworKyAgICBCT09TVF9DSEVDSyggdi5leHRzLmlzX2VuYWJsZWQoKSApOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5maXJzdCwgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9OSIpOworK30KKysKKytCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX3NlcnZlcl9tYXhfd2luZG93X2JpdHNfc21hbGxlc3RfOCApIHsKKyAgICAgZXh0X3ZhcnMgdjsKKyAgICAgdi5hdHRyWyJzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIl0gPSAiOCI7CisgCitAQCAtMjU2LDcgKzI4NywxOSBAQCBCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX3NlcnZlcl9tYXhfd2luZG93X2JpdHNfc21hbGxlc3QgKSB7CisgICAgIEJPT1NUX0NIRUNLKCB2LmV4dHMuaXNfZW5hYmxlZCgpICk7CisgICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVjLCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKKyAgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLmZpcnN0LCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKKy0gICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLnNlY29uZCwgInBlcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93aW5kb3dfYml0cz04Iik7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9OSIpOworK30KKysKKytCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX3NlcnZlcl9tYXhfd2luZG93X2JpdHNfc21hbGxlc3QgKSB7CisrICAgIGV4dF92YXJzIHY7CisrICAgIHYuYXR0clsic2VydmVyX21heF93aW5kb3dfYml0cyJdID0gIjkiOworKworKyAgICB2LmVjID0gdi5leHRzLnNldF9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzKDE1LHBtZF9tb2RlOjpzbWFsbGVzdCk7CisrICAgIHYuZXNwID0gdi5leHRzLm5lZ290aWF0ZSh2LmF0dHIpOworKyAgICBCT09TVF9DSEVDSyggdi5leHRzLmlzX2VuYWJsZWQoKSApOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5maXJzdCwgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9OSIpOworIH0KKyAKKyAvLyBOZWdvdGlhdGUgc2VydmVyX21heF93aW5kb3dfYml0cworQEAgLTI5Miw3ICszMzUsMTMgQEAgQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9jbGllbnRfbWF4X3dpbmRvd19iaXRzX3ZhbGlkICkgeworICAgICB2LmVzcCA9IHYuZXh0cy5uZWdvdGlhdGUodi5hdHRyKTsKKyAgICAgQk9PU1RfQ0hFQ0soIHYuZXh0cy5pc19lbmFibGVkKCkgKTsKKyAgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLmZpcnN0LCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKKy0gICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLnNlY29uZCwgInBlcm1lc3NhZ2UtZGVmbGF0ZTsgY2xpZW50X21heF93aW5kb3dfYml0cz04Iik7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IGNsaWVudF9tYXhfd2luZG93X2JpdHM9OSIpOworKworKyAgICB2LmF0dHJbImNsaWVudF9tYXhfd2luZG93X2JpdHMiXSA9ICI5IjsKKysgICAgdi5lc3AgPSB2LmV4dHMubmVnb3RpYXRlKHYuYXR0cik7CisrICAgIEJPT1NUX0NIRUNLKCB2LmV4dHMuaXNfZW5hYmxlZCgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5maXJzdCwgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IGNsaWVudF9tYXhfd2luZG93X2JpdHM9OSIpOworIAorICAgICB2LmF0dHJbImNsaWVudF9tYXhfd2luZG93X2JpdHMiXSA9ICIxNSI7CisgICAgIHYuZXNwID0gdi5leHRzLm5lZ290aWF0ZSh2LmF0dHIpOworQEAgLTMxMSw3ICszNjAsNyBAQCBCT09TVF9BVVRPX1RFU1RfQ0FTRSggaW52YWxpZF9zZXRfY2xpZW50X21heF93aW5kb3dfYml0cyApIHsKKyAgICAgQk9PU1RfQ0hFQ0tfRVFVQUwodi5lYyxwbWRlOjptYWtlX2Vycm9yX2NvZGUocG1kZTo6aW52YWxpZF9tYXhfd2luZG93X2JpdHMpKTsKKyB9CisgCistQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9jbGllbnRfbWF4X3dpbmRvd19iaXRzX2RlY2xpbmUgKSB7CisrQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9jbGllbnRfbWF4X3dpbmRvd19iaXRzX2RlY2xpbmVfOCApIHsKKyAgICAgZXh0X3ZhcnMgdjsKKyAgICAgdi5hdHRyWyJjbGllbnRfbWF4X3dpbmRvd19iaXRzIl0gPSAiOCI7CisgCitAQCAtMzIzLDcgKzM3MiwxOSBAQCBCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX2NsaWVudF9tYXhfd2luZG93X2JpdHNfZGVjbGluZSApIHsKKyAgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLnNlY29uZCwgInBlcm1lc3NhZ2UtZGVmbGF0ZSIpOworIH0KKyAKKy1CT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX2NsaWVudF9tYXhfd2luZG93X2JpdHNfYWNjZXB0ICkgeworK0JPT1NUX0FVVE9fVEVTVF9DQVNFKCBuZWdvdGlhdGVfY2xpZW50X21heF93aW5kb3dfYml0c19kZWNsaW5lICkgeworKyAgICBleHRfdmFycyB2OworKyAgICB2LmF0dHJbImNsaWVudF9tYXhfd2luZG93X2JpdHMiXSA9ICI5IjsKKysKKysgICAgdi5lYyA9IHYuZXh0cy5zZXRfY2xpZW50X21heF93aW5kb3dfYml0cyg5LHBtZF9tb2RlOjpkZWNsaW5lKTsKKysgICAgdi5lc3AgPSB2LmV4dHMubmVnb3RpYXRlKHYuYXR0cik7CisrICAgIEJPT1NUX0NIRUNLKCB2LmV4dHMuaXNfZW5hYmxlZCgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVjLCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKKysgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLmZpcnN0LCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKKysgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLnNlY29uZCwgInBlcm1lc3NhZ2UtZGVmbGF0ZSIpOworK30KKysKKytCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX2NsaWVudF9tYXhfd2luZG93X2JpdHNfYWNjZXB0XzggKSB7CisgICAgIGV4dF92YXJzIHY7CisgICAgIHYuYXR0clsiY2xpZW50X21heF93aW5kb3dfYml0cyJdID0gIjgiOworIAorQEAgLTMzMiwxMCArMzkzLDIyIEBAIEJPT1NUX0FVVE9fVEVTVF9DQVNFKCBuZWdvdGlhdGVfY2xpZW50X21heF93aW5kb3dfYml0c19hY2NlcHQgKSB7CisgICAgIEJPT1NUX0NIRUNLKCB2LmV4dHMuaXNfZW5hYmxlZCgpICk7CisgICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVjLCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKKyAgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLmZpcnN0LCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKKy0gICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLnNlY29uZCwgInBlcm1lc3NhZ2UtZGVmbGF0ZTsgY2xpZW50X21heF93aW5kb3dfYml0cz04Iik7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IGNsaWVudF9tYXhfd2luZG93X2JpdHM9OSIpOworIH0KKyAKKy1CT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX2NsaWVudF9tYXhfd2luZG93X2JpdHNfbGFyZ2VzdCApIHsKKytCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX2NsaWVudF9tYXhfd2luZG93X2JpdHNfYWNjZXB0ICkgeworKyAgICBleHRfdmFycyB2OworKyAgICB2LmF0dHJbImNsaWVudF9tYXhfd2luZG93X2JpdHMiXSA9ICI5IjsKKysKKysgICAgdi5lYyA9IHYuZXh0cy5zZXRfY2xpZW50X21heF93aW5kb3dfYml0cygxNSxwbWRfbW9kZTo6YWNjZXB0KTsKKysgICAgdi5lc3AgPSB2LmV4dHMubmVnb3RpYXRlKHYuYXR0cik7CisrICAgIEJPT1NUX0NIRUNLKCB2LmV4dHMuaXNfZW5hYmxlZCgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVjLCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKKysgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLmZpcnN0LCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKKysgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLnNlY29uZCwgInBlcm1lc3NhZ2UtZGVmbGF0ZTsgY2xpZW50X21heF93aW5kb3dfYml0cz05Iik7CisrfQorKworK0JPT1NUX0FVVE9fVEVTVF9DQVNFKCBuZWdvdGlhdGVfY2xpZW50X21heF93aW5kb3dfYml0c19sYXJnZXN0XzggKSB7CisgICAgIGV4dF92YXJzIHY7CisgICAgIHYuYXR0clsiY2xpZW50X21heF93aW5kb3dfYml0cyJdID0gIjgiOworIAorQEAgLTM0NCwxMCArNDE3LDIyIEBAIEJPT1NUX0FVVE9fVEVTVF9DQVNFKCBuZWdvdGlhdGVfY2xpZW50X21heF93aW5kb3dfYml0c19sYXJnZXN0ICkgeworICAgICBCT09TVF9DSEVDSyggdi5leHRzLmlzX2VuYWJsZWQoKSApOworICAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisgICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5maXJzdCwgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CistICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IGNsaWVudF9tYXhfd2luZG93X2JpdHM9OCIpOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lc3Auc2Vjb25kLCAicGVybWVzc2FnZS1kZWZsYXRlOyBjbGllbnRfbWF4X3dpbmRvd19iaXRzPTkiKTsKKyB9CisgCistQk9PU1RfQVVUT19URVNUX0NBU0UoIG5lZ290aWF0ZV9jbGllbnRfbWF4X3dpbmRvd19iaXRzX3NtYWxsZXN0ICkgeworK0JPT1NUX0FVVE9fVEVTVF9DQVNFKCBuZWdvdGlhdGVfY2xpZW50X21heF93aW5kb3dfYml0c19sYXJnZXN0ICkgeworKyAgICBleHRfdmFycyB2OworKyAgICB2LmF0dHJbImNsaWVudF9tYXhfd2luZG93X2JpdHMiXSA9ICI5IjsKKysKKysgICAgdi5lYyA9IHYuZXh0cy5zZXRfY2xpZW50X21heF93aW5kb3dfYml0cygxNSxwbWRfbW9kZTo6bGFyZ2VzdCk7CisrICAgIHYuZXNwID0gdi5leHRzLm5lZ290aWF0ZSh2LmF0dHIpOworKyAgICBCT09TVF9DSEVDSyggdi5leHRzLmlzX2VuYWJsZWQoKSApOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5maXJzdCwgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IGNsaWVudF9tYXhfd2luZG93X2JpdHM9OSIpOworK30KKysKKytCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX2NsaWVudF9tYXhfd2luZG93X2JpdHNfc21hbGxlc3RfOCApIHsKKyAgICAgZXh0X3ZhcnMgdjsKKyAgICAgdi5hdHRyWyJjbGllbnRfbWF4X3dpbmRvd19iaXRzIl0gPSAiOCI7CisgCitAQCAtMzU2LDcgKzQ0MSwxOSBAQCBCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX2NsaWVudF9tYXhfd2luZG93X2JpdHNfc21hbGxlc3QgKSB7CisgICAgIEJPT1NUX0NIRUNLKCB2LmV4dHMuaXNfZW5hYmxlZCgpICk7CisgICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVjLCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKKyAgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLmZpcnN0LCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKKy0gICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZXNwLnNlY29uZCwgInBlcm1lc3NhZ2UtZGVmbGF0ZTsgY2xpZW50X21heF93aW5kb3dfYml0cz04Iik7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IGNsaWVudF9tYXhfd2luZG93X2JpdHM9OSIpOworK30KKysKKytCT09TVF9BVVRPX1RFU1RfQ0FTRSggbmVnb3RpYXRlX2NsaWVudF9tYXhfd2luZG93X2JpdHNfc21hbGxlc3QgKSB7CisrICAgIGV4dF92YXJzIHY7CisrICAgIHYuYXR0clsiY2xpZW50X21heF93aW5kb3dfYml0cyJdID0gIjkiOworKworKyAgICB2LmVjID0gdi5leHRzLnNldF9jbGllbnRfbWF4X3dpbmRvd19iaXRzKDE1LHBtZF9tb2RlOjpzbWFsbGVzdCk7CisrICAgIHYuZXNwID0gdi5leHRzLm5lZ290aWF0ZSh2LmF0dHIpOworKyAgICBCT09TVF9DSEVDSyggdi5leHRzLmlzX2VuYWJsZWQoKSApOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5maXJzdCwgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVzcC5zZWNvbmQsICJwZXJtZXNzYWdlLWRlZmxhdGU7IGNsaWVudF9tYXhfd2luZG93X2JpdHM9OSIpOworIH0KKyAKKyAKK0BAIC01MDcsNyArNjA0LDggQEAgQk9PU1RfQVVUT19URVNUX0NBU0UoIGNvbXByZXNzX2RhdGEgKSB7CisgICAgIHN0ZDo6c3RyaW5nIGNvbXByZXNzX291dDsKKyAgICAgc3RkOjpzdHJpbmcgZGVjb21wcmVzc19vdXQ7CisgCistICAgIHYuZXh0cy5pbml0KHRydWUpOworKyAgICB2LmVjID0gdi5leHRzLmluaXQodHJ1ZSk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVjLCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKKyAKKyAgICAgdi5lYyA9IHYuZXh0cy5jb21wcmVzcyhjb21wcmVzc19pbixjb21wcmVzc19vdXQpOworICAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CitAQCAtNTIwLDcgKzYxOCw4IEBAIEJPT1NUX0FVVE9fVEVTVF9DQVNFKCBjb21wcmVzc19kYXRhICkgeworIEJPT1NUX0FVVE9fVEVTVF9DQVNFKCBjb21wcmVzc19kYXRhX211bHRpcGxlICkgeworICAgICBleHRfdmFycyB2OworIAorLSAgICB2LmV4dHMuaW5pdCh0cnVlKTsKKysgICAgdi5lYyA9IHYuZXh0cy5pbml0KHRydWUpOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisgCisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKSB7CisgICAgICAgICBzdGQ6OnN0cmluZyBjb21wcmVzc19pbiA9ICJIZWxsbyI7CitAQCAtNTQ1LDExICs2NDQsMTIgQEAgQk9PU1RfQVVUT19URVNUX0NBU0UoIGNvbXByZXNzX2RhdGFfbGFyZ2UgKSB7CisgCisgICAgIHdlYnNvY2tldHBwOjpodHRwOjphdHRyaWJ1dGVfbGlzdCBhbGlzdDsKKyAKKy0gICAgYWxpc3RbInNlcnZlcl9tYXhfd2luZG93X2JpdHMiXSA9ICI4IjsKKy0gICAgdi5leHRzLnNldF9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzKDgsd2Vic29ja2V0cHA6OmV4dGVuc2lvbnM6OnBlcm1lc3NhZ2VfZGVmbGF0ZTo6bW9kZTo6c21hbGxlc3QpOworKyAgICBhbGlzdFsic2VydmVyX21heF93aW5kb3dfYml0cyJdID0gIjkiOworKyAgICB2LmV4dHMuc2V0X3NlcnZlcl9tYXhfd2luZG93X2JpdHMoOSx3ZWJzb2NrZXRwcDo6ZXh0ZW5zaW9uczo6cGVybWVzc2FnZV9kZWZsYXRlOjptb2RlOjpzbWFsbGVzdCk7CisgCisgICAgIHYuZXh0cy5uZWdvdGlhdGUoYWxpc3QpOworLSAgICB2LmV4dHMuaW5pdCh0cnVlKTsKKysgICAgdi5lYyA9IHYuZXh0cy5pbml0KHRydWUpOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisgCisgICAgIHYuZWMgPSB2LmV4dHMuY29tcHJlc3MoY29tcHJlc3NfaW4sY29tcHJlc3Nfb3V0KTsKKyAgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZWMsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworQEAgLTU3Myw3ICs2NzMsOCBAQCBCT09TVF9BVVRPX1RFU1RfQ0FTRSggY29tcHJlc3NfZGF0YV9ub19jb250ZXh0X3Rha2VvdmVyICkgeworICAgICB2LmV4dHMuZW5hYmxlX3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyKCk7CisgCisgICAgIHYuZXh0cy5uZWdvdGlhdGUoYWxpc3QpOworLSAgICB2LmV4dHMuaW5pdCh0cnVlKTsKKysgICAgdi5lYyA9IHYuZXh0cy5pbml0KHRydWUpOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisgCisgICAgIHYuZWMgPSB2LmV4dHMuY29tcHJlc3MoY29tcHJlc3NfaW4sY29tcHJlc3Nfb3V0MSk7CisgICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVjLCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKK0BAIC02MDksNyArNzEwLDggQEAgQk9PU1RfQVVUT19URVNUX0NBU0UoIGNvbXByZXNzX2VtcHR5ICkgeworICAgICBzdGQ6OnN0cmluZyBjb21wcmVzc19vdXQ7CisgICAgIHN0ZDo6c3RyaW5nIGRlY29tcHJlc3Nfb3V0OworIAorLSAgICB2LmV4dHMuaW5pdCh0cnVlKTsKKysgICAgdi5lYyA9IHYuZXh0cy5pbml0KHRydWUpOworKyAgICBCT09TVF9DSEVDS19FUVVBTCggdi5lYywgd2Vic29ja2V0cHA6OmxpYjo6ZXJyb3JfY29kZSgpICk7CisgCisgICAgIHYuZWMgPSB2LmV4dHMuY29tcHJlc3MoY29tcHJlc3NfaW4sY29tcHJlc3Nfb3V0KTsKKyAgICAgQk9PU1RfQ0hFQ0tfRVFVQUwoIHYuZWMsIHdlYnNvY2tldHBwOjpsaWI6OmVycm9yX2NvZGUoKSApOworQEAgLTY0MCw3ICs3NDIsOCBAQCBCT09TVF9BVVRPX1RFU1RfQ0FTRSggZGVjb21wcmVzc19kYXRhICkgeworICAgICBzdGQ6OnN0cmluZyBvdXQ7CisgICAgIHN0ZDo6c3RyaW5nIHJlZmVyZW5jZSA9ICJIZWxsbyI7CisgCistICAgIHYuZXh0cy5pbml0KHRydWUpOworKyAgICB2LmVjID0gdi5leHRzLmluaXQodHJ1ZSk7CisrICAgIEJPT1NUX0NIRUNLX0VRVUFMKCB2LmVjLCB3ZWJzb2NrZXRwcDo6bGliOjplcnJvcl9jb2RlKCkgKTsKKyAKKyAgICAgdi5lYyA9IHYuZXh0cy5kZWNvbXByZXNzKGluLDExLG91dCk7CisgCitkaWZmIC0tZ2l0IGEvd2Vic29ja2V0cHAvZXh0ZW5zaW9ucy9wZXJtZXNzYWdlX2RlZmxhdGUvZW5hYmxlZC5ocHAgYi93ZWJzb2NrZXRwcC9leHRlbnNpb25zL3Blcm1lc3NhZ2VfZGVmbGF0ZS9lbmFibGVkLmhwcAoraW5kZXggMTU4MWYxNGMuLmYyMGExYjFkIDEwMDY0NAorLS0tIGEvd2Vic29ja2V0cHAvZXh0ZW5zaW9ucy9wZXJtZXNzYWdlX2RlZmxhdGUvZW5hYmxlZC5ocHAKKysrKyBiL3dlYnNvY2tldHBwL2V4dGVuc2lvbnMvcGVybWVzc2FnZV9kZWZsYXRlL2VuYWJsZWQuaHBwCitAQCAtNDYsNyArNDYsNyBAQAorIG5hbWVzcGFjZSB3ZWJzb2NrZXRwcCB7CisgbmFtZXNwYWNlIGV4dGVuc2lvbnMgeworIAorLS8vLyBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZHJhZnQgcGVybWVzc2FnZS1kZWZsYXRlIFdlYlNvY2tldCBleHRlbnNpb24KKysvLy8gSW1wbGVtZW50YXRpb24gb2YgUkZDIDc2OTIsIHRoZSBwZXJtZXNzYWdlLWRlZmxhdGUgV2ViU29ja2V0IGV4dGVuc2lvbgorIC8qKgorICAqICMjIyBwZXJtZXNzYWdlLWRlZmxhdGUgaW50ZXJmYWNlCisgICoKK0BAIC0xNzQsMTggKzE3NCwzMCBAQCBuYW1lc3BhY2Ugd2Vic29ja2V0cHAgeworIG5hbWVzcGFjZSBleHRlbnNpb25zIHsKKyBuYW1lc3BhY2UgcGVybWVzc2FnZV9kZWZsYXRlIHsKKyAKKy0vLy8gRGVmYXVsdCB2YWx1ZSBmb3Igc2VydmVyX21heF93aW5kb3dfYml0cyBhcyBkZWZpbmVkIGJ5IGRyYWZ0IDE3CisrLy8vIERlZmF1bHQgdmFsdWUgZm9yIHNlcnZlcl9tYXhfd2luZG93X2JpdHMgYXMgZGVmaW5lZCBieSBSRkMgNzY5MgorIHN0YXRpYyB1aW50OF90IGNvbnN0IGRlZmF1bHRfc2VydmVyX21heF93aW5kb3dfYml0cyA9IDE1OworLS8vLyBNaW5pbXVtIHZhbHVlIGZvciBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIGFzIGRlZmluZWQgYnkgZHJhZnQgMTcKKysvLy8gTWluaW11bSB2YWx1ZSBmb3Igc2VydmVyX21heF93aW5kb3dfYml0cyBhcyBkZWZpbmVkIGJ5IFJGQyA3NjkyCisrLyoqCisrICogTk9URTogQSB2YWx1ZSBvZiA4IGlzIG5vdCBhY3R1YWxseSBzdXBwb3J0ZWQgYnkgemxpYiwgdGhlIGRlZmxhdGUKKysgKiBsaWJyYXJ5IHRoYXQgV2ViU29ja2V0KysgdXNlcy4gVG8gcHJlc2VydmUgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKKysgKiB3aXRoIFJGQyA3NjkyIGFuZCBwcmV2aW91cyB2ZXJzaW9ucyBvZiB0aGUgbGlicmFyeSBhIHZhbHVlIG9mIDgKKysgKiBpcyBhY2NlcHRlZCBieSB0aGUgbGlicmFyeSBidXQgd2lsbCBhbHdheXMgYmUgbmVnb3RpYXRlZCBhcyA5LgorKyAqLworIHN0YXRpYyB1aW50OF90IGNvbnN0IG1pbl9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzID0gODsKKy0vLy8gTWF4aW11bSB2YWx1ZSBmb3Igc2VydmVyX21heF93aW5kb3dfYml0cyBhcyBkZWZpbmVkIGJ5IGRyYWZ0IDE3CisrLy8vIE1heGltdW0gdmFsdWUgZm9yIHNlcnZlcl9tYXhfd2luZG93X2JpdHMgYXMgZGVmaW5lZCBieSBSRkMgNzY5MgorIHN0YXRpYyB1aW50OF90IGNvbnN0IG1heF9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzID0gMTU7CisgCistLy8vIERlZmF1bHQgdmFsdWUgZm9yIGNsaWVudF9tYXhfd2luZG93X2JpdHMgYXMgZGVmaW5lZCBieSBkcmFmdCAxNworKy8vLyBEZWZhdWx0IHZhbHVlIGZvciBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGFzIGRlZmluZWQgYnkgUkZDIDc2OTIKKyBzdGF0aWMgdWludDhfdCBjb25zdCBkZWZhdWx0X2NsaWVudF9tYXhfd2luZG93X2JpdHMgPSAxNTsKKy0vLy8gTWluaW11bSB2YWx1ZSBmb3IgY2xpZW50X21heF93aW5kb3dfYml0cyBhcyBkZWZpbmVkIGJ5IGRyYWZ0IDE3CisrLy8vIE1pbmltdW0gdmFsdWUgZm9yIGNsaWVudF9tYXhfd2luZG93X2JpdHMgYXMgZGVmaW5lZCBieSBSRkMgNzY5MgorKy8qKgorKyAqIE5PVEU6IEEgdmFsdWUgb2YgOCBpcyBub3QgYWN0dWFsbHkgc3VwcG9ydGVkIGJ5IHpsaWIsIHRoZSBkZWZsYXRlCisrICogbGlicmFyeSB0aGF0IFdlYlNvY2tldCsrIHVzZXMuIFRvIHByZXNlcnZlIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CisrICogd2l0aCBSRkMgNzY5MiBhbmQgcHJldmlvdXMgdmVyc2lvbnMgb2YgdGhlIGxpYnJhcnkgYSB2YWx1ZSBvZiA4CisrICogaXMgYWNjZXB0ZWQgYnkgdGhlIGxpYnJhcnkgYnV0IHdpbGwgYWx3YXlzIGJlIG5lZ290aWF0ZWQgYXMgOS4KKysgKi8KKyBzdGF0aWMgdWludDhfdCBjb25zdCBtaW5fY2xpZW50X21heF93aW5kb3dfYml0cyA9IDg7CistLy8vIE1heGltdW0gdmFsdWUgZm9yIGNsaWVudF9tYXhfd2luZG93X2JpdHMgYXMgZGVmaW5lZCBieSBkcmFmdCAxNworKy8vLyBNYXhpbXVtIHZhbHVlIGZvciBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGFzIGRlZmluZWQgYnkgUkZDIDc2OTIKKyBzdGF0aWMgdWludDhfdCBjb25zdCBtYXhfY2xpZW50X21heF93aW5kb3dfYml0cyA9IDE1OworIAorIG5hbWVzcGFjZSBtb2RlIHsKK0BAIC0zNzIsNyArMzg0LDcgQEAgY2xhc3MgZW5hYmxlZCB7CisgICAgIC8qKgorICAgICAgKiBUaGUgYml0cyBzZXR0aW5nIGlzIHRoZSBiYXNlIDIgbG9nYXJpdGhtIG9mIHRoZSBtYXhpbXVtIHdpbmRvdyBzaXplIHRoYXQKKyAgICAgICogdGhlIHNlcnZlciBtdXN0IHVzZSB0byBjb21wcmVzcyBvdXRnb2luZyBtZXNzYWdlcy4gVGhlIHBlcm1pdHRlZCByYW5nZQorLSAgICAgKiBpcyA4IHRvIDE1IGluY2x1c2l2ZS4gOCByZXByZXNlbnRzIGEgMjU2IGJ5dGUgd2luZG93IGFuZCAxNSBhIDMyS2lCCisrICAgICAqIGlzIDkgdG8gMTUgaW5jbHVzaXZlLiA5IHJlcHJlc2VudHMgYSA1MTIgYnl0ZSB3aW5kb3cgYW5kIDE1IGEgMzJLaUIKKyAgICAgICogd2luZG93LiBUaGUgZGVmYXVsdCBzZXR0aW5nIGlzIDE1LgorICAgICAgKgorICAgICAgKiBNb2RlIE9wdGlvbnM6CitAQCAtMzg2LDYgKzM5OCwxNCBAQCBjbGFzcyBlbmFibGVkIHsKKyAgICAgICogYWRqdXN0ZWQgYnkgdGhlIHNlcnZlci4gQSBzZXJ2ZXIgbWF5IHVuaWxhdGVyYWxseSBzZXQgdGhpcyB2YWx1ZSB3aXRob3V0CisgICAgICAqIGNsaWVudCBzdXBwb3J0LgorICAgICAgKgorKyAgICAgKiBOT1RFOiBUaGUgcGVybWVzc2FnZS1kZWZsYXRlIHNwZWMgc3BlY2lmaWVzIHRoYXQgYSB2YWx1ZSBvZiA4IGlzIGFsbG93ZWQuCisrICAgICAqIFByaW9yIHRvIHZlcnNpb24gMC44LjAgYSB2YWx1ZSBvZiA4IHdhcyBhbHNvIGFsbG93ZWQgYnkgdGhpcyBsaWJyYXJ5LgorKyAgICAgKiB6bGliLCB0aGUgZGVmbGF0ZSBjb21wcmVzc2lvbiBsaWJyYXJ5IHRoYXQgV2ViU29ja2V0KysgdXNlcyBoYXMgYWx3YXlzCisrICAgICAqIHNpbGVudGx5IGFkanVzdGVkIGEgdmFsdWUgb2YgOCB0byA5LiBJbiByZWNlbnQgdmVyc2lvbnMgb2YgemxpYiAoMS4yLjkgCisrICAgICAqIGFuZCBncmVhdGVyKSBhIHZhbHVlIG9mIDggaXMgbm93IGV4cGxpY2l0bHkgcmVqZWN0ZWQuIFdlYlNvY2tldCsrIDAuOC4wCisrICAgICAqIGNvbnRpbnVlcyB0byBwZXJmb3JtIHRoZSA4LT45IGNvbnZlcnNpb24gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CisrICAgICAqIHB1cnBvc2VzIGJ1dCB0aGlzIHNob3VsZCBiZSBjb25zaWRlcmVkIGRlcHJlY2F0ZWQgZnVuY3Rpb25hbGl0eS4KKysgICAgICoKKyAgICAgICogQHBhcmFtIGJpdHMgVGhlIHNpemUgdG8gcmVxdWVzdCBmb3IgdGhlIG91dGdvaW5nIHdpbmRvdyBzaXplCisgICAgICAqIEBwYXJhbSBtb2RlIFRoZSBtb2RlIHRvIHVzZSBmb3IgbmVnb3RpYXRpbmcgdGhpcyBwYXJhbWV0ZXIKKyAgICAgICogQHJldHVybiBBIHN0YXR1cyBjb2RlCitAQCAtMzk0LDYgKzQxNCwxMiBAQCBjbGFzcyBlbmFibGVkIHsKKyAgICAgICAgIGlmIChiaXRzIDwgbWluX3NlcnZlcl9tYXhfd2luZG93X2JpdHMgfHwgYml0cyA+IG1heF9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzKSB7CisgICAgICAgICAgICAgcmV0dXJuIGVycm9yOjptYWtlX2Vycm9yX2NvZGUoZXJyb3I6OmludmFsaWRfbWF4X3dpbmRvd19iaXRzKTsKKyAgICAgICAgIH0KKysKKysgICAgICAgIC8vIFNlZSBub3RlIGluIGRvYyBjb21tZW50IGFib3ZlIGFib3V0IHdoYXQgaXMgaGFwcGVuaW5nIGhlcmUKKysgICAgICAgIGlmIChiaXRzID09IDgpIHsKKysgICAgICAgICAgICBiaXRzID0gOTsKKysgICAgICAgIH0KKysKKyAgICAgICAgIG1fc2VydmVyX21heF93aW5kb3dfYml0cyA9IGJpdHM7CisgICAgICAgICBtX3NlcnZlcl9tYXhfd2luZG93X2JpdHNfbW9kZSA9IG1vZGU7CisgCitAQCAtNDAzLDggKzQyOSw4IEBAIGNsYXNzIGVuYWJsZWQgeworICAgICAvLy8gTGltaXQgY2xpZW50IExaNzcgc2xpZGluZyB3aW5kb3cgc2l6ZQorICAgICAvKioKKyAgICAgICogVGhlIGJpdHMgc2V0dGluZyBpcyB0aGUgYmFzZSAyIGxvZ2FyaXRobSBvZiB0aGUgd2luZG93IHNpemUgdGhhdCB0aGUKKy0gICAgICogY2xpZW50IG11c3QgdXNlIHRvIGNvbXByZXNzIG91dGdvaW5nIG1lc3NhZ2VzLiBUaGUgcGVybWl0dGVkIHJhbmdlIGlzIDgKKy0gICAgICogdG8gMTUgaW5jbHVzaXZlLiA4IHJlcHJlc2VudHMgYSAyNTYgYnl0ZSB3aW5kb3cgYW5kIDE1IGEgMzJLaUIgd2luZG93LgorKyAgICAgKiBjbGllbnQgbXVzdCB1c2UgdG8gY29tcHJlc3Mgb3V0Z29pbmcgbWVzc2FnZXMuIFRoZSBwZXJtaXR0ZWQgcmFuZ2UgaXMgOQorKyAgICAgKiB0byAxNSBpbmNsdXNpdmUuIDkgcmVwcmVzZW50cyBhIDUxMiBieXRlIHdpbmRvdyBhbmQgMTUgYSAzMktpQiB3aW5kb3cuCisgICAgICAqIFRoZSBkZWZhdWx0IHNldHRpbmcgaXMgMTUuCisgICAgICAqCisgICAgICAqIE1vZGUgT3B0aW9uczoKK0BAIC00MTcsNiArNDQzLDE0IEBAIGNsYXNzIGVuYWJsZWQgeworICAgICAgKiBvdXRnb2luZyB3aW5kb3cgc2l6ZSB1bmlsYXRlcmFsbHkuIEEgc2VydmVyIG1heSBvbmx5IGxpbWl0IHRoZSBjbGllbnQncworICAgICAgKiB3aW5kb3cgc2l6ZSBpZiB0aGUgcmVtb3RlIGNsaWVudCBzdXBwb3J0cyB0aGF0IGZlYXR1cmUuCisgICAgICAqCisrICAgICAqIE5PVEU6IFRoZSBwZXJtZXNzYWdlLWRlZmxhdGUgc3BlYyBzcGVjaWZpZXMgdGhhdCBhIHZhbHVlIG9mIDggaXMgYWxsb3dlZC4KKysgICAgICogUHJpb3IgdG8gdmVyc2lvbiAwLjguMCBhIHZhbHVlIG9mIDggd2FzIGFsc28gYWxsb3dlZCBieSB0aGlzIGxpYnJhcnkuCisrICAgICAqIHpsaWIsIHRoZSBkZWZsYXRlIGNvbXByZXNzaW9uIGxpYnJhcnkgdGhhdCBXZWJTb2NrZXQrKyB1c2VzIGhhcyBhbHdheXMKKysgICAgICogc2lsZW50bHkgYWRqdXN0ZWQgYSB2YWx1ZSBvZiA4IHRvIDkuIEluIHJlY2VudCB2ZXJzaW9ucyBvZiB6bGliICgxLjIuOSAKKysgICAgICogYW5kIGdyZWF0ZXIpIGEgdmFsdWUgb2YgOCBpcyBub3cgZXhwbGljaXRseSByZWplY3RlZC4gV2ViU29ja2V0KysgMC44LjAKKysgICAgICogY29udGludWVzIHRvIHBlcmZvcm0gdGhlIDgtPjkgY29udmVyc2lvbiBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKKysgICAgICogcHVycG9zZXMgYnV0IHRoaXMgc2hvdWxkIGJlIGNvbnNpZGVyZWQgZGVwcmVjYXRlZCBmdW5jdGlvbmFsaXR5LgorKyAgICAgKgorICAgICAgKiBAcGFyYW0gYml0cyBUaGUgc2l6ZSB0byByZXF1ZXN0IGZvciB0aGUgb3V0Z29pbmcgd2luZG93IHNpemUKKyAgICAgICogQHBhcmFtIG1vZGUgVGhlIG1vZGUgdG8gdXNlIGZvciBuZWdvdGlhdGluZyB0aGlzIHBhcmFtZXRlcgorICAgICAgKiBAcmV0dXJuIEEgc3RhdHVzIGNvZGUKK0BAIC00MjUsNiArNDU5LDEyIEBAIGNsYXNzIGVuYWJsZWQgeworICAgICAgICAgaWYgKGJpdHMgPCBtaW5fY2xpZW50X21heF93aW5kb3dfYml0cyB8fCBiaXRzID4gbWF4X2NsaWVudF9tYXhfd2luZG93X2JpdHMpIHsKKyAgICAgICAgICAgICByZXR1cm4gZXJyb3I6Om1ha2VfZXJyb3JfY29kZShlcnJvcjo6aW52YWxpZF9tYXhfd2luZG93X2JpdHMpOworICAgICAgICAgfQorKworKyAgICAgICAgLy8gU2VlIG5vdGUgaW4gZG9jIGNvbW1lbnQgYWJvdmUgYWJvdXQgd2hhdCBpcyBoYXBwZW5pbmcgaGVyZQorKyAgICAgICAgaWYgKGJpdHMgPT0gOCkgeworKyAgICAgICAgICAgIGJpdHMgPSA5OworKyAgICAgICAgfQorKworICAgICAgICAgbV9jbGllbnRfbWF4X3dpbmRvd19iaXRzID0gYml0czsKKyAgICAgICAgIG1fY2xpZW50X21heF93aW5kb3dfYml0c19tb2RlID0gbW9kZTsKKyAKK0BAIC02NDIsMTEgKzY4MiwxNyBAQCBjbGFzcyBlbmFibGVkIHsKKyAgICAgICogY2xpZW50IHJlcXVlc3RlZCB0aGF0IHdlIHVzZS4KKyAgICAgICoKKyAgICAgICogb3B0aW9uczoKKy0gICAgICogLSBkZWNsaW5lIChyZWZ1c2UgdG8gdXNlIHRoZSBhdHRyaWJ1dGUpCistICAgICAqIC0gYWNjZXB0ICh1c2Ugd2hhdGV2ZXIgdGhlIGNsaWVudCBzYXlzKQorLSAgICAgKiAtIGxhcmdlc3QgKHVzZSBsYXJnZXN0IHBvc3NpYmxlIHZhbHVlKQorKyAgICAgKiAtIGRlY2xpbmUgKGlnbm9yZSB2YWx1ZSwgb2ZmZXIgb3VyIGRlZmF1bHQgaW5zdGVhZCkKKysgICAgICogLSBhY2NlcHQgKHVzZSB0aGUgdmFsdWUgcmVxdWVzdGVkIGJ5IHRoZSBjbGllbnQpCisrICAgICAqIC0gbGFyZ2VzdCAodXNlIGxhcmdlc3QgdmFsdWUgYWNjZXB0YWJsZSB0byBib3RoKQorICAgICAgKiAtIHNtYWxsZXN0ICh1c2Ugc21hbGxlc3QgcG9zc2libGUgdmFsdWUpCisgICAgICAqCisrICAgICAqIE5PVEU6IEFzIGEgdmFsdWUgb2YgOCBpcyBubyBsb25nZXIgZXhwbGljaXRseSBzdXBwb3J0ZWQgYnkgemxpYiBidXQgbWlnaHQKKysgICAgICogYmUgcmVxdWVzdGVkIGZvciBuZWdvdGlhdGlvbiBieSBhbiBvbGRlciBjbGllbnQvc2VydmVyLCBpZiB0aGUgcmVzdWx0IG9mCisrICAgICAqIHRoZSBuZWdvdGlhdGlvbiB3b3VsZCBiZSB0byBzZW5kIGEgdmFsdWUgb2YgOCwgYSB2YWx1ZSBvZiA5IGlzIG9mZmVyZWQKKysgICAgICogaW5zdGVhZC4gVGhpcyBlbnN1cmVzIHRoYXQgV2ViU29ja2V0Kysgd2lsbCBvbmx5IGV2ZXIgbmVnb3RpYXRlIGNvbm5lY3Rpb25zCisrICAgICAqIHdpdGggY29tcHJlc3Npb24gc2V0dGluZ3MgZXhwbGljaXRseSBzdXBwb3J0ZWQgYnkgemxpYi4KKysgICAgICoKKyAgICAgICogQHBhcmFtIFtpbl0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgZnJvbSB0aGUgb2ZmZXIKKyAgICAgICogQHBhcmFtIFtvdXRdIGVjIEEgcmVmZXJlbmNlIHRvIHRoZSBlcnJvciBjb2RlIHRvIHJldHVybiBlcnJvcnMgdmlhCisgICAgICAqLworQEAgLTY3OCw2ICs3MjQsMTEgQEAgY2xhc3MgZW5hYmxlZCB7CisgICAgICAgICAgICAgICAgIGVjID0gbWFrZV9lcnJvcl9jb2RlKGVycm9yOjppbnZhbGlkX21vZGUpOworICAgICAgICAgICAgICAgICBtX3NlcnZlcl9tYXhfd2luZG93X2JpdHMgPSBkZWZhdWx0X3NlcnZlcl9tYXhfd2luZG93X2JpdHM7CisgICAgICAgICB9CisrCisrICAgICAgICAvLyBTZWUgbm90ZSBpbiBkb2MgY29tbWVudAorKyAgICAgICAgaWYgKG1fc2VydmVyX21heF93aW5kb3dfYml0cyA9PSA4KSB7CisrICAgICAgICAgICAgbV9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzID0gOTsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICAvLy8gTmVnb3RpYXRlIGNsaWVudF9tYXhfd2luZG93X2JpdHMgYXR0cmlidXRlCitAQCAtNjg3LDExICs3MzgsMTcgQEAgY2xhc3MgZW5hYmxlZCB7CisgICAgICAqIG5lZ290aWF0aW9uIG1vZGUuCisgICAgICAqCisgICAgICAqIG9wdGlvbnM6CistICAgICAqIC0gZGVjbGluZSAocmVmdXNlIHRvIHVzZSB0aGUgYXR0cmlidXRlKQorLSAgICAgKiAtIGFjY2VwdCAodXNlIHdoYXRldmVyIHRoZSBjbGllbnQgc2F5cykKKy0gICAgICogLSBsYXJnZXN0ICh1c2UgbGFyZ2VzdCBwb3NzaWJsZSB2YWx1ZSkKKysgICAgICogLSBkZWNsaW5lIChpZ25vcmUgdmFsdWUsIG9mZmVyIG91ciBkZWZhdWx0IGluc3RlYWQpCisrICAgICAqIC0gYWNjZXB0ICh1c2UgdGhlIHZhbHVlIHJlcXVlc3RlZCBieSB0aGUgY2xpZW50KQorKyAgICAgKiAtIGxhcmdlc3QgKHVzZSBsYXJnZXN0IHZhbHVlIGFjY2VwdGFibGUgdG8gYm90aCkKKyAgICAgICogLSBzbWFsbGVzdCAodXNlIHNtYWxsZXN0IHBvc3NpYmxlIHZhbHVlKQorICAgICAgKgorKyAgICAgKiBOT1RFOiBBcyBhIHZhbHVlIG9mIDggaXMgbm8gbG9uZ2VyIGV4cGxpY2l0bHkgc3VwcG9ydGVkIGJ5IHpsaWIgYnV0IG1pZ2h0CisrICAgICAqIGJlIHJlcXVlc3RlZCBmb3IgbmVnb3RpYXRpb24gYnkgYW4gb2xkZXIgY2xpZW50L3NlcnZlciwgaWYgdGhlIHJlc3VsdCBvZgorKyAgICAgKiB0aGUgbmVnb3RpYXRpb24gd291bGQgYmUgdG8gc2VuZCBhIHZhbHVlIG9mIDgsIGEgdmFsdWUgb2YgOSBpcyBvZmZlcmVkCisrICAgICAqIGluc3RlYWQuIFRoaXMgZW5zdXJlcyB0aGF0IFdlYlNvY2tldCsrIHdpbGwgb25seSBldmVyIG5lZ290aWF0ZSBjb25uZWN0aW9ucworKyAgICAgKiB3aXRoIGNvbXByZXNzaW9uIHNldHRpbmdzIGV4cGxpY2l0bHkgc3VwcG9ydGVkIGJ5IHpsaWIuCisrICAgICAqCisgICAgICAqIEBwYXJhbSBbaW5dIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIGZyb20gdGhlIG9mZmVyCisgICAgICAqIEBwYXJhbSBbb3V0XSBlYyBBIHJlZmVyZW5jZSB0byB0aGUgZXJyb3IgY29kZSB0byByZXR1cm4gZXJyb3JzIHZpYQorICAgICAgKi8KK0BAIC03MjcsNiArNzg0LDExIEBAIGNsYXNzIGVuYWJsZWQgeworICAgICAgICAgICAgICAgICBlYyA9IG1ha2VfZXJyb3JfY29kZShlcnJvcjo6aW52YWxpZF9tb2RlKTsKKyAgICAgICAgICAgICAgICAgbV9jbGllbnRfbWF4X3dpbmRvd19iaXRzID0gZGVmYXVsdF9jbGllbnRfbWF4X3dpbmRvd19iaXRzOworICAgICAgICAgfQorKworKyAgICAgICAgLy8gU2VlIG5vdGUgaW4gZG9jIGNvbW1lbnQKKysgICAgICAgIGlmIChtX2NsaWVudF9tYXhfd2luZG93X2JpdHMgPT0gOCkgeworKyAgICAgICAgICAgIG1fY2xpZW50X21heF93aW5kb3dfYml0cyA9IDk7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgYm9vbCBtX2VuYWJsZWQ7CitkaWZmIC0tZ2l0IGEvd2Vic29ja2V0cHAvaW1wbC9jb25uZWN0aW9uX2ltcGwuaHBwIGIvd2Vic29ja2V0cHAvaW1wbC9jb25uZWN0aW9uX2ltcGwuaHBwCitpbmRleCAxMDU5MTFkYi4uYWU1NWMzMzggMTAwNjQ0CistLS0gYS93ZWJzb2NrZXRwcC9pbXBsL2Nvbm5lY3Rpb25faW1wbC5ocHAKKysrKyBiL3dlYnNvY2tldHBwL2ltcGwvY29ubmVjdGlvbl9pbXBsLmhwcAorQEAgLTEyMjIsMTIgKzEyMjIsMTggQEAgbGliOjplcnJvcl9jb2RlIGNvbm5lY3Rpb248Y29uZmlnPjo6cHJvY2Vzc19oYW5kc2hha2VfcmVxdWVzdCgpIHsKKyAgICAgc3RkOjpwYWlyPGxpYjo6ZXJyb3JfY29kZSxzdGQ6OnN0cmluZz4gbmVnX3Jlc3VsdHM7CisgICAgIG5lZ19yZXN1bHRzID0gbV9wcm9jZXNzb3ItPm5lZ290aWF0ZV9leHRlbnNpb25zKG1fcmVxdWVzdCk7CisgCistICAgIGlmIChuZWdfcmVzdWx0cy5maXJzdCkgeworKyAgICBpZiAobmVnX3Jlc3VsdHMuZmlyc3QgPT0gZXJyb3I6Om1ha2VfZXJyb3JfY29kZShlcnJvcjo6ZXh0ZW5zaW9uX3BhcnNlX2Vycm9yKSkgeworICAgICAgICAgLy8gVGhlcmUgd2FzIGEgZmF0YWwgZXJyb3IgaW4gZXh0ZW5zaW9uIHBhcnNpbmcgdGhhdCBzaG91bGQgcmVzdWx0IGluCisgICAgICAgICAvLyBhIGZhaWxlZCBjb25uZWN0aW9uIGF0dGVtcHQuCistICAgICAgICBtX2Fsb2cud3JpdGUobG9nOjphbGV2ZWw6OmRldmVsLCAiQmFkIHJlcXVlc3Q6ICIgKyBuZWdfcmVzdWx0cy5maXJzdC5tZXNzYWdlKCkpOworKyAgICAgICAgbV9hbG9nLndyaXRlKGxvZzo6YWxldmVsOjppbmZvLCAiQmFkIHJlcXVlc3Q6ICIgKyBuZWdfcmVzdWx0cy5maXJzdC5tZXNzYWdlKCkpOworICAgICAgICAgbV9yZXNwb25zZS5zZXRfc3RhdHVzKGh0dHA6OnN0YXR1c19jb2RlOjpiYWRfcmVxdWVzdCk7CisgICAgICAgICByZXR1cm4gbmVnX3Jlc3VsdHMuZmlyc3Q7CisrICAgIH0gZWxzZSBpZiAobmVnX3Jlc3VsdHMuZmlyc3QpIHsKKysgICAgICAgIC8vIFRoZXJlIHdhcyBhIGZhdGFsIGVycm9yIGluIGV4dGVuc2lvbiBwcm9jZXNzaW5nIHRoYXQgaXMgcHJvYmFibHkgb3VyCisrICAgICAgICAvLyBmYXVsdC4gQ29uc2lkZXIgZXh0ZW5zaW9uIG5lZ290aWF0aW9uIHRvIGhhdmUgZmFpbGVkIGFuZCBjb250aW51ZSBhcworKyAgICAgICAgLy8gaWYgZXh0ZW5zaW9ucyB3ZXJlIG5vdCBzdXBwb3J0ZWQKKysgICAgICAgIG1fYWxvZy53cml0ZShsb2c6OmFsZXZlbDo6aW5mbywgCisrICAgICAgICAgICAgIkV4dGVuc2lvbiBuZWdvdGlhdGlvbiBmYWlsZWQ6ICIgKyBuZWdfcmVzdWx0cy5maXJzdC5tZXNzYWdlKCkpOworICAgICB9IGVsc2UgeworICAgICAgICAgLy8gZXh0ZW5zaW9uIG5lZ290aWF0aW9uIHN1Y2NlZWRlZCwgc2V0IHJlc3BvbnNlIGhlYWRlciBhY2NvcmRpbmdseQorICAgICAgICAgLy8gd2UgZG9uJ3Qgc2VuZCBhbiBlbXB0eSBleHRlbnNpb25zIGhlYWRlciBiZWNhdXNlIGl0IGJyZWFrcyBtYW55CitkaWZmIC0tZ2l0IGEvd2Vic29ja2V0cHAvcHJvY2Vzc29ycy9oeWJpMTMuaHBwIGIvd2Vic29ja2V0cHAvcHJvY2Vzc29ycy9oeWJpMTMuaHBwCitpbmRleCA3OTQ4NjY1NC4uYTk1YmM2NDkgMTAwNjQ0CistLS0gYS93ZWJzb2NrZXRwcC9wcm9jZXNzb3JzL2h5YmkxMy5ocHAKKysrKyBiL3dlYnNvY2tldHBwL3Byb2Nlc3NvcnMvaHliaTEzLmhwcAorQEAgLTk3LDYgKzk3LDExIEBAIGNsYXNzIGh5YmkxMyA6IHB1YmxpYyBwcm9jZXNzb3I8Y29uZmlnPiB7CisgICAgIC8qKgorICAgICAgKiBUaGlzIGV4aXN0cyBtb3N0bHkgYmVjYXVzZSB0aGUgY29kZSBmb3IgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyBpcworICAgICAgKiBpZGVudGljYWwgYW5kIEkgY2FuJ3QgaGF2ZSB2aXJ0dWFsIHRlbXBsYXRlIG1ldGhvZHMuCisrICAgICAqCisrICAgICAqIE5PVEU6IHRoaXMgbWV0aG9kIG1ha2VzIGFzc3VtcHRpb25zIHRoYXQgdGhlIHBlcm1lc3NhZ2UtZGVmbGF0ZQorKyAgICAgKiBleHRlbnNpb24gaXMgdGhlIG9ubHkgb25lIHN1cHBvcnRlZC4gSWYgYWRkaXRpb25hbCBleHRlbnNpb25zIGFyZQorKyAgICAgKiBldmVyIHN1cHBvcnRlZCBpdCBzaG91bGQgYmUgcmV2aWV3ZWQgY2FyZWZ1bGx5LiBNb3N0IGNhc2VzIHdoZXJlCisrICAgICAqIHRoYXQgYXNzdW1wdGlvbiBpcyBtYWRlIGFyZSBleHBsaWNpdGx5IG5vdGVkLgorICAgICAgKi8KKyAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIGhlYWRlcl90eXBlPgorICAgICBlcnJfc3RyX3BhaXIgbmVnb3RpYXRlX2V4dGVuc2lvbnNfaGVscGVyKGhlYWRlcl90eXBlIGNvbnN0ICYgaGVhZGVyKSB7CitAQCAtMTQ5LDkgKzE1NCwyNiBAQCBjbGFzcyBoeWJpMTMgOiBwdWJsaWMgcHJvY2Vzc29yPGNvbmZpZz4geworICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiB0aGlzIGxpc3Qgd2lsbCBuZWVkIGNvbW1hcyBpZiBXZWJTb2NrZXQrKyBldmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3VwcG9ydHMgbW9yZSB0aGFuIG9uZSBleHRlbnNpb24KKy0gICAgICAgICAgICAgICAgICAgICAgICByZXQuc2Vjb25kICs9IG5lZ19yZXQuc2Vjb25kOworLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGVybWVzc2FnZV9kZWZsYXRlLmluaXQoYmFzZTo6bV9zZXJ2ZXIpOworLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICAgICAgICAgIAorKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFjdHVhbGx5IHRyeSB0byBpbml0aWFsaXplIHRoZSBleHRlbnNpb24gYmVmb3JlIHdlCisrICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVlbSBuZWdvdGlhdGlvbiBjb21wbGV0ZQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldC5maXJzdCA9IG1fcGVybWVzc2FnZV9kZWZsYXRlLmluaXQoYmFzZTo6bV9zZXJ2ZXIpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmV0LmZpcnN0KSB7CisrCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHN1cHBvcnQgbXVsdGlwbGUgZXh0ZW5zaW9ucy4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmlnaHQgbm93LCBiZWNhdXNlIHRoZXJlIGlzIG9ubHkgb25lIGV4dGVuc2lvbiAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3VwcG9ydGVkLCBpdCBmYWlsaW5nIHRvIG5lZ290aWF0ZSBtZWFucyB3ZSBhcmUKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9uZSB3aXRoIGFsbCBuZWdvdGlhdGluZy4gSW4gdGhlIGZ1dHVyZSBpZiBtb3JlCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV4dGVuc2lvbnMgYXJlIHN1cHBvcnRlZCBhIGJldHRlciBzb2x1dGlvbiB3aWxsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlIG5lZWRlZCBoZXJlLgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQuc2Vjb25kICs9IG5lZ19yZXQuc2Vjb25kOworKworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250aW51ZSBsb29raW5nIGZvciBtb3JlIGV4dGVuc2lvbnMKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjcuMC9kaXNhYmxlLXRlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjcuMC9kaXNhYmxlLXRlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0Mjk4MWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuNy4wL2Rpc2FibGUtdGVzdHMucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorRGVzY3JpcHRpb246IERpc2FibGUgZmFpbGluZyB0ZXN0X3RyYW5zcG9ydF9hc2lvX3RpbWVycy4KK0JlY2F1c2Ugb2YgImFkZHJlc3MgYWxyZWFkeSBpbiB1c2UiIGVycm9yCisvwqtQS0dCVUlMRERJUsK7L3Rlc3QvdHJhbnNwb3J0L2FzaW8vdGltZXJzLmNwcCgxMjkpOiBlcnJvciBpbiAidGxzX2hhbmRzaGFrZV90aW1lb3V0IjogY2hlY2sgZWMgPT0gbWFrZV9lcnJvcl9jb2RlKHRsc19oYW5kc2hha2VfdGltZW91dCkgZmFpbGVkIFt3ZWJzb2NrZXRwcC50cmFuc3BvcnQuYXNpby5zb2NrZXQ6OCAhPSB3ZWJzb2NrZXRwcC50cmFuc3BvcnQuYXNpby5zb2NrZXQ6NV0KK0F1dGhvcjogR2lhbmZyYW5jbyBDb3N0YW1hZ25hIDxsb2N1dHVzb2Zib3JnQGRlYmlhbi5vcmc+CisKKy0tLSB3ZWJzb2NrZXRwcC0wLjcuMC5vcmlnL3Rlc3QvdHJhbnNwb3J0L0NNYWtlTGlzdHMudHh0CisrKysgd2Vic29ja2V0cHAtMC43LjAvdGVzdC90cmFuc3BvcnQvQ01ha2VMaXN0cy50eHQKK0BAIC0xLDI0ICsxLDI0IEBACisgaWYgKE9QRU5TU0xfRk9VTkQpCisgCistIyBUZXN0IHRyYW5zcG9ydCBpbnRlZ3JhdGlvbgorLWZpbGUgKEdMT0IgU09VUkNFIGludGVncmF0aW9uLmNwcCkKKy0KKy1pbml0X3RhcmdldCAodGVzdF90cmFuc3BvcnQpCistYnVpbGRfdGVzdCAoJHtUQVJHRVRfTkFNRX0gJHtTT1VSQ0V9KQorLWxpbmtfYm9vc3QgKCkKKy1saW5rX29wZW5zc2woKQorLWZpbmFsX3RhcmdldCAoKQorLXNldF90YXJnZXRfcHJvcGVydGllcygke1RBUkdFVF9OQU1FfSBQUk9QRVJUSUVTIEZPTERFUiAidGVzdCIpCistCistIyBUZXN0IHRyYW5zcG9ydCBhc2lvIHRpbWVycworLWZpbGUgKEdMT0IgU09VUkNFIGFzaW8vdGltZXJzLmNwcCkKKy0KKy1pbml0X3RhcmdldCAodGVzdF90cmFuc3BvcnRfYXNpb190aW1lcnMpCistYnVpbGRfdGVzdCAoJHtUQVJHRVRfTkFNRX0gJHtTT1VSQ0V9KQorLWxpbmtfYm9vc3QgKCkKKy1saW5rX29wZW5zc2woKQorLWZpbmFsX3RhcmdldCAoKQorLXNldF90YXJnZXRfcHJvcGVydGllcygke1RBUkdFVF9OQU1FfSBQUk9QRVJUSUVTIEZPTERFUiAidGVzdCIpCisrIyMgVGVzdCB0cmFuc3BvcnQgaW50ZWdyYXRpb24KKysjZmlsZSAoR0xPQiBTT1VSQ0UgaW50ZWdyYXRpb24uY3BwKQorKyMKKysjaW5pdF90YXJnZXQgKHRlc3RfdHJhbnNwb3J0KQorKyNidWlsZF90ZXN0ICgke1RBUkdFVF9OQU1FfSAke1NPVVJDRX0pCisrI2xpbmtfYm9vc3QgKCkKKysjbGlua19vcGVuc3NsKCkKKysjZmluYWxfdGFyZ2V0ICgpCisrI3NldF90YXJnZXRfcHJvcGVydGllcygke1RBUkdFVF9OQU1FfSBQUk9QRVJUSUVTIEZPTERFUiAidGVzdCIpCisrIworKyMjIFRlc3QgdHJhbnNwb3J0IGFzaW8gdGltZXJzCisrI2ZpbGUgKEdMT0IgU09VUkNFIGFzaW8vdGltZXJzLmNwcCkKKysjCisrI2luaXRfdGFyZ2V0ICh0ZXN0X3RyYW5zcG9ydF9hc2lvX3RpbWVycykKKysjYnVpbGRfdGVzdCAoJHtUQVJHRVRfTkFNRX0gJHtTT1VSQ0V9KQorKyNsaW5rX2Jvb3N0ICgpCisrI2xpbmtfb3BlbnNzbCgpCisrI2ZpbmFsX3RhcmdldCAoKQorKyNzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtUQVJHRVRfTkFNRX0gUFJPUEVSVElFUyBGT0xERVIgInRlc3QiKQorIAorICMgVGVzdCB0cmFuc3BvcnQgYXNpbyBzZWN1cml0eQorIGZpbGUgKEdMT0IgU09VUkNFIGFzaW8vc2VjdXJpdHkuY3BwKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcF8wLjcuMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHBfMC43LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVmYzk3NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHBfMC43LjAuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJDKysvQm9vc3QgQXNpbyBiYXNlZCB3ZWJzb2NrZXQgY2xpZW50L3NlcnZlciBsaWJyYXJ5LiIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3phcGhveWQvd2Vic29ja2V0cHAiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7U30vQ09QWUlORzttZDU9NGQxNjhkNzYzYzExMWY0ZmZjNjIyNDk4NzBlNGUwZWEiCitERVBFTkRTID0gIm9wZW5zc2wgYm9vc3QgemxpYiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3phcGhveWQvd2Vic29ja2V0cHAuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD1tYXN0ZXIiCisKKyMgdGFnIDAuNy4wCitTUkNSRVY9ICIzNzg0MzdhZWNkY2IxZGZlNjIwOTZmZmQ1ZDk0NGJmMWY2NDBjY2MzIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1GaXgtaXNzdWUtNTk5LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly85ZGRiMzAwZDg3NGEzMGRiMzVlM2FkNThmMTg4OTQ0YmVmMGJmMzFiLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly80Y2FiNWU1YzBjNWYxOWZjZWU3ZDM3YjRhMzhiMTU2ZDYzYTE1MGQ0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLXRlc3RzLnBhdGNoIFwKKyAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveGRnLXVzZXItZGlycy9maWxlcy8wMDAxLWV4cGxpY2l0bHktZGlzYWJsZS1tYW4tZ2VuZXJhdGlvbi1kaXNhYmxlLWRvY3VtZW50YXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hkZy11c2VyLWRpcnMvZmlsZXMvMDAwMS1leHBsaWNpdGx5LWRpc2FibGUtbWFuLWdlbmVyYXRpb24tZGlzYWJsZS1kb2N1bWVudGF0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmIwZTQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveGRnLXVzZXItZGlycy9maWxlcy8wMDAxLWV4cGxpY2l0bHktZGlzYWJsZS1tYW4tZ2VuZXJhdGlvbi1kaXNhYmxlLWRvY3VtZW50YXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDQxMDkzZDk2MzRiZmVkZGNhZWM4NjY3NDVkOGQ0MDIyZjRjNmY4YzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDE5IEZlYiAyMDE3IDIxOjAxOjM5ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGV4cGxpY2l0bHkgZGlzYWJsZSBtYW4gZ2VuZXJhdGlvbiAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiBpcwotIG5vdCBlbm91Z2gKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmFtIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggYzAxYzU0Zi4uZGNkZjdhMiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTEsNiArMSw2IEBACi0gTlVMTCA9Ci0gCi0tU1VCRElSUz1wbyBtYW4KLStTVUJESVJTPXBvCi0gCi0gSU5DTFVERVMgPQkJCQkJXAotIAktSSQodG9wX3NyY2RpcikJCQkJXAotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hkZy11c2VyLWRpcnMvZmlsZXMveGRnLXVzZXItZGlycy5kZXNrdG9wIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94ZGctdXNlci1kaXJzL2ZpbGVzL3hkZy11c2VyLWRpcnMuZGVza3RvcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTlhMjJkMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hkZy11c2VyLWRpcnMvZmlsZXMveGRnLXVzZXItZGlycy5kZXNrdG9wCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1bRGVza3RvcCBFbnRyeV0KLVR5cGU9QXBwbGljYXRpb24KLU5hbWU9VXNlciBmb2xkZXJzIHVwZGF0ZQotRXhlYz14ZGctdXNlci1kaXJzLXVwZGF0ZQotU3RhcnR1cE5vdGlmeT1mYWxzZQotTm9EaXNwbGF5PXRydWUKLVgtR05PTUUtQXV0b3N0YXJ0LVBoYXNlPUluaXRpYWxpemF0aW9uCi1YLUtERS1hdXRvc3RhcnQtcGhhc2U9MQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hkZy11c2VyLWRpcnMveGRnLXVzZXItZGlyc18wLjE1LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94ZGctdXNlci1kaXJzL3hkZy11c2VyLWRpcnNfMC4xNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA1Njc1OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hkZy11c2VyLWRpcnMveGRnLXVzZXItZGlyc18wLjE1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAieGRnLXVzZXItZGlycyBpcyBhIHRvb2wgdG8gaGVscCBtYW5hZ2UgdXNlciBkaXJlY3RvcmllcyBsaWtlIHRoZSBkZXNrdG9wIGZvbGRlciBhbmQgdGhlIG11c2ljIGZvbGRlciIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly91c2VyLWRpcnMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgIGZpbGU6Ly8wMDAxLWV4cGxpY2l0bHktZGlzYWJsZS1tYW4tZ2VuZXJhdGlvbi1kaXNhYmxlLWRvY3VtZW50YXQucGF0Y2ggXAotICAgIGZpbGU6Ly94ZGctdXNlci1kaXJzLmRlc2t0b3AgXAotIgotU1JDX1VSSVttZDVzdW1dID0gImY1YWFmNTY4NmFkN2Q4ODA5YTY2NGJmYjQ1NjZhNTRkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIwYjRhNzUxZjQxZDA1NTRiY2UzZTBjZTVlOGQ5MzRiZTk4Y2M2MmQ0OGYwYjkwYTg5NGMzZTE5MTY1NTI3ODYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS94ZGcvYXV0b3N0YXJ0Ci0gICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS94ZGctdXNlci1kaXJzLmRlc2t0b3AgJHtEfSR7c3lzY29uZmRpcn0veGRnL2F1dG9zdGFydAotfQotCi1DT05GRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtzeXNjb25mZGlyfS94ZGcvdXNlci1kaXJzLmNvbmYgXAotICAgICR7c3lzY29uZmRpcn0veGRnL3VzZXItZGlycy5kZWZhdWx0cyBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hkZy11c2VyLWRpcnMveGRnLXVzZXItZGlyc18wLjE3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94ZGctdXNlci1kaXJzL3hkZy11c2VyLWRpcnNfMC4xNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2NlOTI2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94ZGctdXNlci1kaXJzL3hkZy11c2VyLWRpcnNfMC4xNy5iYgpAQCAtMCwwICsxLDE2IEBACitERVNDUklQVElPTiA9ICJ4ZGctdXNlci1kaXJzIGlzIGEgdG9vbCB0byBoZWxwIG1hbmFnZSB1c2VyIGRpcmVjdG9yaWVzIGxpa2UgdGhlIGRlc2t0b3AgZm9sZGVyIGFuZCB0aGUgbXVzaWMgZm9sZGVyIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorCitTUkNfVVJJID0gImh0dHA6Ly91c2VyLWRpcnMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiZTA1NjRlYzZkODM4ZTZlNDE4NjRkODcyYTI5YjM1NzUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmEwNzA1MjgyMzc4OGU4NjE0OTI1YzVhMTllZjViOTY4ZDhkYjczNGZkZWU2NTY2OTllYTRmOTdkMTMyNDE4YyIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dAorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRvY3VtZW50YXRpb24iCisKK0NPTkZGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke3N5c2NvbmZkaXJ9L3hkZy91c2VyLWRpcnMuY29uZiBcCisgICAgJHtzeXNjb25mZGlyfS94ZGcvdXNlci1kaXJzLmRlZmF1bHRzIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveG9yZy14cmRwL3hvcmd4cmRwXzAuMi41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94b3JnLXhyZHAveG9yZ3hyZHBfMC4yLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGJkYWZkZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveG9yZy14cmRwL3hvcmd4cmRwXzAuMi41LmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiWG9yZyBkcml2ZXJzIGZvciB4cmRwLiIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hMjUyMzY2MDMyOWZkY2EzZDk1NGMwYTg3MzkwZTAwNyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIAorCitERVBFTkRTID0gInZpcnR1YWwvbGlieDExIHhzZXJ2ZXIteG9yZyB4cmRwIG5hc20tbmF0aXZlIgorCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSBwYW0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9uZXV0cmlub2xhYnMveG9yZ3hyZHAuZ2l0IgorCitTUkNSRVYgPSAiYzEyMjU0NGYxODRkNDAzMWJiYWUxYWQ4MGZiYWI1NTRjMzRhOTQyNyIKKworUFYgPSAiMC4yLjUiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0veG9yZy9tb2R1bGVzLyoiCisKK0lOU0FORV9TS0lQXyR7UE59ICs9ICJ4b3JnLWRyaXZlci1hYmkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hyZHAveHJkcC8wMDAxLUFkZGVkLXJlcV9kaXN0aW5ndWlzaGVkX25hbWUtaW4tZXRjLXhyZHAtb3BlbnNzbC5jb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hyZHAveHJkcC8wMDAxLUFkZGVkLXJlcV9kaXN0aW5ndWlzaGVkX25hbWUtaW4tZXRjLXhyZHAtb3BlbnNzbC5jb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU3ZmNhMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveHJkcC94cmRwLzAwMDEtQWRkZWQtcmVxX2Rpc3Rpbmd1aXNoZWRfbmFtZS1pbi1ldGMteHJkcC1vcGVuc3NsLmNvbi5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIGQ3MDViMWQ2NjZjYjg3MTNkODZlYTZmYjJmYzQ1YzQyNDEyODI4NWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMZWkgTWFvaHVpIDxsZWltYW9odWlAY24uZnVqaXRzdS5jb20+CitEYXRlOiBGcmksIDEgRGVjIDIwMTcgMTA6MjQ6NTAgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkZWQgIHJlcV9kaXN0aW5ndWlzaGVkX25hbWUgaW4gL2V0Yy94cmRwL29wZW5zc2wuY29uZiwKKyBvdGhlcndpc2UsIGNlcnQucGVtIGNhbid0IGJlIGNyZWF0ZWQuCisKK1NpZ25lZC1vZmYtYnk6IExlaSBNYW9odWkgPGxlaW1hb2h1aUBjbi5mdWppdHN1LmNvbT4KKy0tLQorIGtleWdlbi9vcGVuc3NsLmNvbmYgfCA4ICsrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEva2V5Z2VuL29wZW5zc2wuY29uZiBiL2tleWdlbi9vcGVuc3NsLmNvbmYKK2luZGV4IDA5ZGI2YzIuLmYwNzdkNzIgMTAwNjQ0CistLS0gYS9rZXlnZW4vb3BlbnNzbC5jb25mCisrKysgYi9rZXlnZW4vb3BlbnNzbC5jb25mCitAQCAtNCw2ICs0LDE0IEBAIGRpc3Rpbmd1aXNoZWRfbmFtZSA9IHJlcV9kaXN0aW5ndWlzaGVkX25hbWUKKyB4NTA5X2V4dGVuc2lvbnMgPSB2M19jYQorIAorIFtyZXFfZGlzdGluZ3Vpc2hlZF9uYW1lXQorKyMgQ2VydGlmaWNhdGUgc3ViamVjdAorKyNjb3VudHJ5TmFtZSA9IFVTCisrI3N0YXRlT3JQcm92aW5jZU5hbWUgPSBDQQorKyNsb2NhbGl0eU5hbWUgPSBTdW5ueXZhbGUKKysjb3JnYW5pemF0aW9uTmFtZSA9IHhyZHAKKysjb3JnYW5pemF0aW9uYWxVbml0TmFtZSA9CisrY29tbW9uTmFtZSA9IFhSRFAKKysjZW1haWxBZGRyZXNzID0KKyAKKyBbdjNfY2FdCisgIyBFeHRlbnNpb25zIGZvciBhIHR5cGljYWwgQ0EgLSBQS0lYIHJlY29tbWVuZGF0aW9uLgorLS0gCisxLjguNC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveHJkcC94cmRwLzAwMDEtRml4LW9mLUNWRS0yMDE3LTE2OTI3LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94cmRwL3hyZHAvMDAwMS1GaXgtb2YtQ1ZFLTIwMTctMTY5MjcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM5MzY0NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveHJkcC94cmRwLzAwMDEtRml4LW9mLUNWRS0yMDE3LTE2OTI3LnBhdGNoCkBAIC0wLDAgKzEsMTQ4IEBACitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBDVkUtMjAxNy0xNjkyNworCitzZXNtYW46IHNjcHYwLCBhY2NlcHQgdmFyaWFibGUgbGVuZ3RoIGRhdGEgZmllbGRzCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgCisKKy0tLQorIHNlc21hbi9saWJzY3AvbGlic2NwX3YwLmMgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2VzbWFuL2xpYnNjcC9saWJzY3BfdjAuYyBiL3Nlc21hbi9saWJzY3AvbGlic2NwX3YwLmMKK2luZGV4IDVhMGM4YmYuLjU2OTM0MDcgMTAwNjQ0CistLS0gYS9zZXNtYW4vbGlic2NwL2xpYnNjcF92MC5jCisrKysgYi9zZXNtYW4vbGlic2NwL2xpYnNjcF92MC5jCitAQCAtMTYxLDcgKzE2MSw3IEBAIHNjcF92MHNfYWNjZXB0KHN0cnVjdCBTQ1BfQ09OTkVDVElPTiAqYywgc3RydWN0IFNDUF9TRVNTSU9OICoqcywgaW50IHNraXBWY2hrKQorICAgICBzdHJ1Y3QgU0NQX1NFU1NJT04gKnNlc3Npb24gPSAwOworICAgICB0dWkxNiBzejsKKyAgICAgdHVpMzIgY29kZSA9IDA7CistICAgIGNoYXIgYnVmWzI1N107CisrICAgIGNoYXIgKmJ1ZiA9IDA7CisgCisgICAgIGlmICghc2tpcFZjaGspCisgICAgIHsKK0BAIC0yMjYsMjcgKzIyNiwzMSBAQCBzY3BfdjBzX2FjY2VwdChzdHJ1Y3QgU0NQX0NPTk5FQ1RJT04gKmMsIHN0cnVjdCBTQ1BfU0VTU0lPTiAqKnMsIGludCBza2lwVmNoaykKKyAKKyAgICAgICAgIC8qIHJlYWRpbmcgdXNlcm5hbWUgKi8KKyAgICAgICAgIGluX3VpbnQxNl9iZShjLT5pbl9zLCBzeik7CistICAgICAgICBidWZbc3pdID0gJ1wwJzsKKysgICAgICAgIGJ1ZiA9IGdfbmV3MChjaGFyLCBzeik7CisgICAgICAgICBpbl91aW50OGEoYy0+aW5fcywgYnVmLCBzeik7CistCisrICAgICAgICBidWZbc3pdID0gJ1wwJzsKKyAgICAgICAgIGlmICgwICE9IHNjcF9zZXNzaW9uX3NldF91c2VybmFtZShzZXNzaW9uLCBidWYpKQorICAgICAgICAgeworICAgICAgICAgICAgIHNjcF9zZXNzaW9uX2Rlc3Ryb3koc2Vzc2lvbik7CisgICAgICAgICAgICAgbG9nX21lc3NhZ2UoTE9HX0xFVkVMX1dBUk5JTkcsICJbdjA6JWRdIGNvbm5lY3Rpb24gYWJvcnRlZDogZXJyb3Igc2V0dGluZyB1c2VybmFtZSIsIF9fTElORV9fKTsKKysgICAgICAgICAgICBnX2ZyZWUoYnVmKTsKKyAgICAgICAgICAgICByZXR1cm4gU0NQX1NFUlZFUl9TVEFURV9JTlRFUk5BTF9FUlI7CisgICAgICAgICB9CisrICAgICAgICBnX2ZyZWUoYnVmKTsKKyAKKyAgICAgICAgIC8qIHJlYWRpbmcgcGFzc3dvcmQgKi8KKyAgICAgICAgIGluX3VpbnQxNl9iZShjLT5pbl9zLCBzeik7CistICAgICAgICBidWZbc3pdID0gJ1wwJzsKKysgICAgICAgIGJ1ZiA9IGdfbmV3MChjaGFyLCBzeik7CisgICAgICAgICBpbl91aW50OGEoYy0+aW5fcywgYnVmLCBzeik7CistCisrICAgICAgICBidWZbc3pdID0gJ1wwJzsKKyAgICAgICAgIGlmICgwICE9IHNjcF9zZXNzaW9uX3NldF9wYXNzd29yZChzZXNzaW9uLCBidWYpKQorICAgICAgICAgeworICAgICAgICAgICAgIHNjcF9zZXNzaW9uX2Rlc3Ryb3koc2Vzc2lvbik7CisgICAgICAgICAgICAgbG9nX21lc3NhZ2UoTE9HX0xFVkVMX1dBUk5JTkcsICJbdjA6JWRdIGNvbm5lY3Rpb24gYWJvcnRlZDogZXJyb3Igc2V0dGluZyBwYXNzd29yZCIsIF9fTElORV9fKTsKKysgICAgICAgICAgICBnX2ZyZWUoYnVmKTsKKyAgICAgICAgICAgICByZXR1cm4gU0NQX1NFUlZFUl9TVEFURV9JTlRFUk5BTF9FUlI7CisgICAgICAgICB9CisrICAgICAgICBnX2ZyZWUoYnVmKTsKKyAKKyAgICAgICAgIC8qIHdpZHRoICovCisgICAgICAgICBpbl91aW50MTZfYmUoYy0+aW5fcywgc3opOworQEAgLTI3Miw5ICsyNzYsMTEgQEAgc2NwX3Ywc19hY2NlcHQoc3RydWN0IFNDUF9DT05ORUNUSU9OICpjLCBzdHJ1Y3QgU0NQX1NFU1NJT04gKipzLCBpbnQgc2tpcFZjaGspCisgCisgICAgICAgICAgICAgaWYgKHN6ID4gMCkKKyAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGJ1ZiA9IGdfbmV3MChjaGFyLCBzeik7CisgICAgICAgICAgICAgICAgIGluX3VpbnQ4YShjLT5pbl9zLCBidWYsIHN6KTsKKyAgICAgICAgICAgICAgICAgYnVmW3N6XSA9ICdcMCc7CisgICAgICAgICAgICAgICAgIHNjcF9zZXNzaW9uX3NldF9kb21haW4oc2Vzc2lvbiwgYnVmKTsKKysgICAgICAgICAgICAgICAgZ19mcmVlKGJ1Zik7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorIAorQEAgLTI4NSw5ICsyOTEsMTEgQEAgc2NwX3Ywc19hY2NlcHQoc3RydWN0IFNDUF9DT05ORUNUSU9OICpjLCBzdHJ1Y3QgU0NQX1NFU1NJT04gKipzLCBpbnQgc2tpcFZjaGspCisgCisgICAgICAgICAgICAgaWYgKHN6ID4gMCkKKyAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGJ1ZiA9IGdfbmV3MChjaGFyLCBzeik7CisgICAgICAgICAgICAgICAgIGluX3VpbnQ4YShjLT5pbl9zLCBidWYsIHN6KTsKKyAgICAgICAgICAgICAgICAgYnVmW3N6XSA9ICdcMCc7CisgICAgICAgICAgICAgICAgIHNjcF9zZXNzaW9uX3NldF9wcm9ncmFtKHNlc3Npb24sIGJ1Zik7CisrICAgICAgICAgICAgICAgIGdfZnJlZShidWYpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAKK0BAIC0yOTgsOSArMzA2LDExIEBAIHNjcF92MHNfYWNjZXB0KHN0cnVjdCBTQ1BfQ09OTkVDVElPTiAqYywgc3RydWN0IFNDUF9TRVNTSU9OICoqcywgaW50IHNraXBWY2hrKQorIAorICAgICAgICAgICAgIGlmIChzeiA+IDApCisgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBidWYgPSBnX25ldzAoY2hhciwgc3opOworICAgICAgICAgICAgICAgICBpbl91aW50OGEoYy0+aW5fcywgYnVmLCBzeik7CisgICAgICAgICAgICAgICAgIGJ1Zltzel0gPSAnXDAnOworICAgICAgICAgICAgICAgICBzY3Bfc2Vzc2lvbl9zZXRfZGlyZWN0b3J5KHNlc3Npb24sIGJ1Zik7CisrICAgICAgICAgICAgICAgIGdfZnJlZShidWYpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAKK0BAIC0zMTEsOSArMzIxLDExIEBAIHNjcF92MHNfYWNjZXB0KHN0cnVjdCBTQ1BfQ09OTkVDVElPTiAqYywgc3RydWN0IFNDUF9TRVNTSU9OICoqcywgaW50IHNraXBWY2hrKQorIAorICAgICAgICAgICAgIGlmIChzeiA+IDApCisgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBidWYgPSBnX25ldzAoY2hhciwgc3opOworICAgICAgICAgICAgICAgICBpbl91aW50OGEoYy0+aW5fcywgYnVmLCBzeik7CisgICAgICAgICAgICAgICAgIGJ1Zltzel0gPSAnXDAnOworICAgICAgICAgICAgICAgICBzY3Bfc2Vzc2lvbl9zZXRfY2xpZW50X2lwKHNlc3Npb24sIGJ1Zik7CisrICAgICAgICAgICAgICAgIGdfZnJlZShidWYpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfQorQEAgLTMzMiwyOSArMzQ0LDM1IEBAIHNjcF92MHNfYWNjZXB0KHN0cnVjdCBTQ1BfQ09OTkVDVElPTiAqYywgc3RydWN0IFNDUF9TRVNTSU9OICoqcywgaW50IHNraXBWY2hrKQorICAgICAgICAgc2NwX3Nlc3Npb25fc2V0X3R5cGUoc2Vzc2lvbiwgU0NQX0dXX0FVVEhFTlRJQ0FUSU9OKTsKKyAgICAgICAgIC8qIHJlYWRpbmcgdXNlcm5hbWUgKi8KKyAgICAgICAgIGluX3VpbnQxNl9iZShjLT5pbl9zLCBzeik7CistICAgICAgICBidWZbc3pdID0gJ1wwJzsKKysgICAgICAgIGJ1ZiA9IGdfbmV3MChjaGFyLCBzeik7CisgICAgICAgICBpbl91aW50OGEoYy0+aW5fcywgYnVmLCBzeik7CisrICAgICAgICBidWZbc3pdID0gJ1wwJzsKKyAKKyAgICAgICAgIC8qIGdfd3JpdGVsbigiUmVjZWl2ZWQgdXNlciBuYW1lOiAlcyIsYnVmKTsgKi8KKyAgICAgICAgIGlmICgwICE9IHNjcF9zZXNzaW9uX3NldF91c2VybmFtZShzZXNzaW9uLCBidWYpKQorICAgICAgICAgeworICAgICAgICAgICAgIHNjcF9zZXNzaW9uX2Rlc3Ryb3koc2Vzc2lvbik7CisgICAgICAgICAgICAgLyogdW50aWwgc3lzbG9nIG1lcmdlIGxvZ19tZXNzYWdlKHNfbG9nLCBMT0dfTEVWRUxfV0FSTklORywgIlt2MDolZF0gY29ubmVjdGlvbiBhYm9ydGVkOiBlcnJvciBzZXR0aW5nICAgICAgICB1c2VybmFtZSIsIF9fTElORV9fKTsqLworKyAgICAgICAgICAgIGdfZnJlZShidWYpOworICAgICAgICAgICAgIHJldHVybiBTQ1BfU0VSVkVSX1NUQVRFX0lOVEVSTkFMX0VSUjsKKyAgICAgICAgIH0KKysgICAgICAgIGdfZnJlZShidWYpOworIAorICAgICAgICAgLyogcmVhZGluZyBwYXNzd29yZCAqLworICAgICAgICAgaW5fdWludDE2X2JlKGMtPmluX3MsIHN6KTsKKy0gICAgICAgIGJ1Zltzel0gPSAnXDAnOworKyAgICAgICAgYnVmID0gZ19uZXcwKGNoYXIsIHN6KTsKKyAgICAgICAgIGluX3VpbnQ4YShjLT5pbl9zLCBidWYsIHN6KTsKKysgICAgICAgIGJ1Zltzel0gPSAnXDAnOworIAorICAgICAgICAgLyogZ193cml0ZWxuKCJSZWNlaXZlZCBwYXNzd29yZDogJXMiLGJ1Zik7ICovCisgICAgICAgICBpZiAoMCAhPSBzY3Bfc2Vzc2lvbl9zZXRfcGFzc3dvcmQoc2Vzc2lvbiwgYnVmKSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBzY3Bfc2Vzc2lvbl9kZXN0cm95KHNlc3Npb24pOworICAgICAgICAgICAgIC8qIHVudGlsIHN5c2xvZyBtZXJnZSBsb2dfbWVzc2FnZShzX2xvZywgTE9HX0xFVkVMX1dBUk5JTkcsICJbdjA6JWRdIGNvbm5lY3Rpb24gYWJvcnRlZDogZXJyb3Igc2V0dGluZyBwYXNzd29yZCIsIF9fTElORV9fKTsgKi8KKysgICAgICAgICAgICBnX2ZyZWUoYnVmKTsKKyAgICAgICAgICAgICByZXR1cm4gU0NQX1NFUlZFUl9TVEFURV9JTlRFUk5BTF9FUlI7CisgICAgICAgICB9CisrICAgICAgICBnX2ZyZWUoYnVmKTsKKyAgICAgfQorICAgICBlbHNlCisgICAgIHsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94cmRwL3hyZHAvMDAwMS1GaXgtc2VzbWFuLmluaS1hbmQteHJkcC5pbmkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hyZHAveHJkcC8wMDAxLUZpeC1zZXNtYW4uaW5pLWFuZC14cmRwLmluaS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWFhZGRlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94cmRwL3hyZHAvMDAwMS1GaXgtc2VzbWFuLmluaS1hbmQteHJkcC5pbmkucGF0Y2gKQEAgLTAsMCArMSw3NSBAQAorRnJvbSBhOWM0NjBmMTU4ZDY4YzFiM2RlNmEzMWNlODUzZGU1Mzc5OTc3Njk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgorRGF0ZTogVGh1LCAzMCBOb3YgMjAxNyAxMToxMDowNCArMDkwMAorU3ViamVjdDogW1BBVENIXSBGaXggc2VzbWFuLmluaSBhbmQgeHJkcC5pbmkKKworU2lnbmVkLW9mZi1ieTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgorLS0tCisgc2VzbWFuL3Nlc21hbi5pbmkgfCAyMCArKysrKystLS0tLS0tLS0tLS0tLQorIHhyZHAveHJkcC5pbmkgICAgIHwgMTAgLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Nlc21hbi9zZXNtYW4uaW5pIGIvc2VzbWFuL3Nlc21hbi5pbmkKK2luZGV4IDgyMjVlZTQuLmMwOTE4OWUgMTAwNjQ0CistLS0gYS9zZXNtYW4vc2VzbWFuLmluaQorKysrIGIvc2VzbWFuL3Nlc21hbi5pbmkKK0BAIC01NCwxMiArNTQsMTQgQEAgTG9nTGV2ZWw9REVCVUcKKyBFbmFibGVTeXNsb2c9MQorIFN5c2xvZ0xldmVsPURFQlVHCisgCistW1gxMXJkcF0KKy1wYXJhbT1YMTFyZHAKKy1wYXJhbT0tYnMKKytbWG9yZ10KKytwYXJhbT1Yb3JnCisrcGFyYW09LWNvbmZpZworK3BhcmFtPXhyZHAveG9yZy5jb25mCisrcGFyYW09LW5vcmVzZXQKKyBwYXJhbT0tbm9saXN0ZW4KKyBwYXJhbT10Y3AKKy1wYXJhbT0tdWRzCisrCisgCisgW1h2bmNdCisgcGFyYW09WHZuYworQEAgLTcwLDE2ICs3Miw2IEBAIHBhcmFtPS1sb2NhbGhvc3QKKyBwYXJhbT0tZHBpCisgcGFyYW09OTYKKyAKKy1bWG9yZ10KKy1wYXJhbT1Yb3JnCistcGFyYW09LWNvbmZpZworLXBhcmFtPXhyZHAveG9yZy5jb25mCistcGFyYW09LW5vcmVzZXQKKy1wYXJhbT0tbm9saXN0ZW4KKy1wYXJhbT10Y3AKKy1wYXJhbT0tbG9nZmlsZQorLXBhcmFtPS54b3JneHJkcC4lcy5sb2cKKy0KKyBbQ2hhbnNydl0KKyA7IGRyaXZlIHJlZGlyZWN0aW9uLCBkZWZhdWx0cyB0byB4cmRwX2NsaWVudCBpZiBub3Qgc2V0CisgRnVzZU1vdW50TmFtZT10aGluY2xpZW50X2RyaXZlcworZGlmZiAtLWdpdCBhL3hyZHAveHJkcC5pbmkgYi94cmRwL3hyZHAuaW5pCitpbmRleCBjYjZkN2MzLi45ZjYzYTY5IDEwMDY0NAorLS0tIGEveHJkcC94cmRwLmluaQorKysrIGIveHJkcC94cmRwLmluaQorQEAgLTE1NywxNiArMTU3LDYgQEAgaXA9MTI3LjAuMC4xCisgcG9ydD0tMQorIGNvZGU9MjAKKyAKKy1bWDExcmRwXQorLW5hbWU9WDExcmRwCistbGliPWxpYnh1cC5zbworLXVzZXJuYW1lPWFzaworLXBhc3N3b3JkPWFzaworLWlwPTEyNy4wLjAuMQorLXBvcnQ9LTEKKy14c2VydmVyYnBwPTI0CistY29kZT0xMAorLQorIFtYdm5jXQorIG5hbWU9WHZuYworIGxpYj1saWJ2bmMuc28KKy0tIAorMS44LjQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hyZHAveHJkcC8wMDAxLUZpeC10aGUtY29tcGlsZS1lcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveHJkcC94cmRwLzAwMDEtRml4LXRoZS1jb21waWxlLWVycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyYjI3OTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hyZHAveHJkcC8wMDAxLUZpeC10aGUtY29tcGlsZS1lcnJvci5wYXRjaApAQCAtMCwwICsxLDM1IEBACitTdWJqZWN0OiBbUEFUQ0hdIEZpeCB0aGUgbWFrZSBlcnJvcgorCitGaXggdGhlIGNvbXBpbGUgZXJyb3I6CisgKioqIE5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQgJy4uL2xpYnJmeGNvZGVjL3NyYy8ubGlicy9saWJyZnhlbmNvZGUuYScsIG5lZWRlZCBieSAneHJkcCcuICBTdG9wLi4KKworU2lnbmVkLW9mZi1ieTogWmhlbmcgUnVvcWluIDx6aGVuZ3JxLmZuc3RAY24uZnVqaXRzdS5jb20+CistLS0KKyB4cmRwL01ha2VmaWxlLmFtIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3hyZHAvTWFrZWZpbGUuYW0gYi94cmRwL01ha2VmaWxlLmFtCitpbmRleCBhMjU5ZWYzLi5kNTUwNWIyIDEwMDY0NAorLS0tIGEveHJkcC9NYWtlZmlsZS5hbQorKysrIGIveHJkcC9NYWtlZmlsZS5hbQorQEAgLTIzLDcgKzIzLDcgQEAgZW5kaWYKKyBpZiBYUkRQX1JGWENPREVDCisgQU1fQ1BQRkxBR1MgKz0gLURYUkRQX1JGWENPREVDCisgQU1fQ1BQRkxBR1MgKz0gLUkkKHRvcF9zcmNkaXIpL2xpYnJmeGNvZGVjL2luY2x1ZGUKKy1YUkRQX0VYVFJBX0xJQlMgKz0gJCh0b3BfYnVpbGRkaXIpL2xpYnJmeGNvZGVjL3NyYy8ubGlicy9saWJyZnhlbmNvZGUuYQorK1hSRFBfRVhUUkFfTElCUyArPSAkKHRvcF9idWlsZGRpcikvbGlicmZ4Y29kZWMvc3JjLy5saWJzL2xpYnJmeGVuY29kZS5sYQorIGVuZGlmCisgCisgaWYgWFJEUF9QSVhNQU4KK0BAIC0zNSw3ICszNSw3IEBAIGVuZGlmCisgaWYgWFJEUF9QQUlOVEVSCisgQU1fQ1BQRkxBR1MgKz0gLURYUkRQX1BBSU5URVIKKyBBTV9DUFBGTEFHUyArPSAtSSQodG9wX3NyY2RpcikvbGlicGFpbnRlci9pbmNsdWRlCistWFJEUF9FWFRSQV9MSUJTICs9ICQodG9wX2J1aWxkZGlyKS9saWJwYWludGVyL3NyYy8ubGlicy9saWJwYWludGVyLmEKKytYUkRQX0VYVFJBX0xJQlMgKz0gJCh0b3BfYnVpbGRkaXIpL2xpYnBhaW50ZXIvc3JjLy5saWJzL2xpYnBhaW50ZXIubGEKKyBlbmRpZgorIAorIHNiaW5fUFJPR1JBTVMgPSBcCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveHJkcC94cmRwL3hyZHAuc3lzY29uZmlnIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94cmRwL3hyZHAveHJkcC5zeXNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzlmNTAwYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveHJkcC94cmRwL3hyZHAuc3lzY29uZmlnCkBAIC0wLDAgKzEsNCBAQAorIyBwdXQgc29tZSBvcHRpb25zIGhlcmUKKworWFJEUF9PUFRJT05TPSIiCitTRVNNQU5fT1BUSU9OUz0iIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94cmRwL3hyZHBfMC45LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3hyZHAveHJkcF8wLjkuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWY3Yzk4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94cmRwL3hyZHBfMC45LjQuYmIKQEAgLTAsMCArMSw5OSBAQAorU1VNTUFSWSA9ICJBbiBvcGVuIHNvdXJjZSByZW1vdGUgZGVza3RvcCBwcm90b2NvbChyZHApIHNlcnZlci4iCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTcyY2ZiZTRlN2JkMzNhMGExZGU5NjMwYzkxMTk1YzIxIFwKKyIKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1c2VyYWRkIHN5c3RlbWQKKworREVQRU5EUyA9ICJvcGVuc3NsIHZpcnR1YWwvbGlieDExIGxpYnhmaXhlcyBsaWJ4cmFuZHIgbGlicGFtIG5hc20tbmF0aXZlIgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIHBhbSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL25ldXRyaW5vbGFicy94cmRwLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly94cmRwLnN5c2NvbmZpZyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1zZXNtYW4uaW5pLWFuZC14cmRwLmluaS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZGVkLXJlcV9kaXN0aW5ndWlzaGVkX25hbWUtaW4tZXRjLXhyZHAtb3BlbnNzbC5jb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtdGhlLWNvbXBpbGUtZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtb2YtQ1ZFLTIwMTctMTY5MjcucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ1JFViA9ICJjMjk1ZGQ2MWI4ODJlOGI1NjY3N2NmMTI3OTFmNDM2MzRmOTE5MGI1IgorCitQViA9ICIwLjkuNCtnaXQke1NSQ1BWfSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbZnVzZV0gPSAiIC0tZW5hYmxlLWZ1c2UsIC0tZGlzYWJsZS1mdXNlLCBmdXNlIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0geHJkcCIKK1VTRVJBRERfUEFSQU1fJHtQTn0gID0gIi0tc3lzdGVtIC0taG9tZSAvdmFyL3J1bi94cmRwIC1nIHhyZHAgXAorICAgICAgICAgICAgICAgICAgICAgICAgLS1uby1jcmVhdGUtaG9tZSAtLXNoZWxsIC9iaW4vZmFsc2UgeHJkcCIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyouc2VydmljZSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvYWNjZXNzaWJpbGl0eS1zZXJ2aWNlcy8qLnNlcnZpY2UgIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS94cmRwL2xpYmNvbW1vbi5zbyBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS94cmRwL2xpYnhyZHAuc28gXAorICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0veHJkcC9saWJzY3Auc28gXAorICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0veHJkcC9saWJ4cmRwYXBpLnNvICIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXBhbS1jb25maWc9c3VzZSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgY2QgJHtTfQorICAgIC4vYm9vdHN0cmFwCisgICAgY2QgLQorfQorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgc2VkIC1pICdzLyhNQUtFKSAkKEFNX01BS0VGTEFHUykgaW5zdGFsbC1leGVjLWFtIGluc3RhbGwtZGF0YS1hbS8oTUFLRSkgJChBTV9NQUtFRkxBR1MpIGluc3RhbGwtZXhlYy1hbS9nJyAke1N9L2tleWdlbi9NYWtlZmlsZS5pbgorfQorCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0gCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS94cmRwCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS94cmRwL3BhbS5kCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcveHJkcAorICAgCisJIyBkZWFsIHdpdGggc3lzdGVtZCB1bml0IGZpbGVzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLW0gMDY0NCAke1N9L2luc3RmaWxlcy94cmRwLnNlcnZpY2UuaW4gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0veHJkcC5zZXJ2aWNlCisJaW5zdGFsbCAtbSAwNjQ0ICR7U30vaW5zdGZpbGVzL3hyZHAtc2VzbWFuLnNlcnZpY2UuaW4gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0veHJkcC1zZXNtYW4uc2VydmljZSAKKwlzZWQgLWkgLWUgJ3MsQGxvY2Fsc3RhdGVkaXJALCR7bG9jYWxzdGF0ZWRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0veHJkcC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3hyZHAtc2VzbWFuLnNlcnZpY2UKKwlzZWQgLWkgLWUgJ3MsQHN5c2NvbmZkaXJALCR7c3lzY29uZmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0veHJkcC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3hyZHAtc2VzbWFuLnNlcnZpY2UKKwlzZWQgLWkgLWUgJ3MsQHNiaW5kaXJALCR7c2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0veHJkcC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3hyZHAtc2VzbWFuLnNlcnZpY2UKKworCWluc3RhbGwgLW0gMDY0NCAke1N9L2luc3RmaWxlcy8qLmluaSAke0R9JHtzeXNjb25mZGlyfS94cmRwLworCWluc3RhbGwgLW0gMDY0NCAke1N9L3Nlc21hbi9zZXNtYW4uaW5pICR7RH0ke3N5c2NvbmZkaXJ9L3hyZHAvCisJaW5zdGFsbCAtbSAwNjQ0ICR7U30vc2VzbWFuL3N0YXJ0d20uc2ggJHtEfSR7c3lzY29uZmRpcn0veHJkcC8KKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS94cmRwL3hyZHAuaW5pICR7RH0ke3N5c2NvbmZkaXJ9L3hyZHAvCisJaW5zdGFsbCAtbSAwNjQ0ICR7U30veHJkcC94cmRwX2tleWJvYXJkLmluaSAke0R9JHtzeXNjb25mZGlyfS94cmRwLworCWluc3RhbGwgLW0gMDY0NCAke1N9L2luc3RmaWxlcy94cmRwLnNoICR7RH0ke3N5c2NvbmZkaXJ9L3hyZHAvCisJaW5zdGFsbCAtbSAwNjQ0ICR7U30va2V5Z2VuL29wZW5zc2wuY29uZiAke0R9JHtzeXNjb25mZGlyfS94cmRwLworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3hyZHAuc3lzY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy94cmRwLworCWNob3duIHhyZHA6eHJkcCAke0R9JHtzeXNjb25mZGlyfS94cmRwCit9CisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ4cmRwLnNlcnZpY2UgeHJkcC1zZXNtYW4uc2VydmljZSIKKworcGtnX3Bvc3RpbnN0XyR7UE59KCkgeworCWlmIHRlc3QgLXogIiREIgorCXRoZW4KKwkJaWYgdGVzdCAteCAke2JpbmRpcn0veHJkcC1rZXlnZW4KKwkJdGhlbgorCQkJJHtiaW5kaXJ9L3hyZHAta2V5Z2VuIHhyZHAgJHtzeXNjb25mZGlyfS94cmRwL3JzYWtleXMuaW5pID4vZGV2L251bGwKKyAgICAgICAgICAgICAgICBmaQorCQlpZiB0ZXN0ICEgLXMgJHtzeXNjb25mZGlyfS94cmRwL2NlcnQucGVtCisJCXRoZW4KKwkJCW9wZW5zc2wgcmVxIC14NTA5IC1uZXdrZXkgcnNhOjIwNDggLXNoYTI1NiAtbm9kZXMgLWRheXMgMzY1MiBcCisJCQkta2V5b3V0ICR7c3lzY29uZmRpcn0veHJkcC9rZXkucGVtIFwKKwkJCS1vdXQgJHtzeXNjb25mZGlyfS94cmRwL2NlcnQucGVtIFwKKwkJCS1jb25maWcgJHtzeXNjb25mZGlyfS94cmRwL29wZW5zc2wuY29uZiA+L2Rldi9udWxsIDI+JjEKKwkJCWNobW9kIDQwMCAke3N5c2NvbmZkaXJ9L3hyZHAva2V5LnBlbQorCQlmaQkJCQorICAgICAgICBmaQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC96aWxlL3ppbGVfMi40LjExLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC96aWxlL3ppbGVfMi40LjE0LmJiCnNpbWlsYXJpdHkgaW5kZXggNzAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvemlsZS96aWxlXzIuNC4xMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC96aWxlL3ppbGVfMi40LjE0LmJiCmluZGV4IGQ2NjNmNDQuLjUxNWNmNDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvemlsZS96aWxlXzIuNC4xMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ppbGUvemlsZV8yLjQuMTQuYmIKQEAgLTMsMTQgKzMsMTQgQEAKIERFUEVORFMgPSAibmN1cnNlcyBiZHdnYyIKIAogTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWViYmQzZTM0MjM3YWYyNmRhNWRjMDhhNGU0NDA0NjQiCiAKIFNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbnUub3JnL2dudS96aWxlLyR7QlB9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtaGVscDJtYW4ucGF0Y2ggXAogIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiN2E0NjBjY2VjNjRlM2JlYzI4MzU2OTdiMmVhZTUzM2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWZkMjdiYmRkYzYxNDkxYjFmYmIyOWEzNDVkMGQzNDQ3MzRhYTllODBjZmEwN2IwMjg5MmVlZGY4MzFmYTljYyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjN2Q3ZWVjOTMyMzFjNjg3OGYyNTU5NzhkOTc0N2E3MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3YTc4NzQyNzk1Y2EzMjQ4MGYyYmFiNjk3ZmQ1ZTMyODYxOGQ5OTk3ZDZmNDE3Y2YxYjE0ZTlkYTlhZjI2Yjc0IgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3BwdW5pdC9jcHB1bml0XzEuMTMuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY3BwdW5pdC9jcHB1bml0XzEuMTMuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3BwdW5pdC9jcHB1bml0XzEuMTMuMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9jcHB1bml0L2NwcHVuaXRfMS4xMy4yLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jcHB1bml0L2ZpbGVzLzAwMDEtZG9jLU1ha2VmaWxlLmFtLWRvLW5vdC1wcmVzZXJ2ZS1maWxlLWZsYWdzLXdoZW4tY29weS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY3BwdW5pdC9maWxlcy8wMDAxLWRvYy1NYWtlZmlsZS5hbS1kby1ub3QtcHJlc2VydmUtZmlsZS1mbGFncy13aGVuLWNvcHkucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NwcHVuaXQvZmlsZXMvMDAwMS1kb2MtTWFrZWZpbGUuYW0tZG8tbm90LXByZXNlcnZlLWZpbGUtZmxhZ3Mtd2hlbi1jb3B5LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2NwcHVuaXQvZmlsZXMvMDAwMS1kb2MtTWFrZWZpbGUuYW0tZG8tbm90LXByZXNlcnZlLWZpbGUtZmxhZ3Mtd2hlbi1jb3B5LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jdW5pdC9jdW5pdF8yLjEtMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY3VuaXQvY3VuaXRfMi4xLTMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2N1bml0L2N1bml0XzIuMS0zLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2N1bml0L2N1bml0XzIuMS0zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jdW5pdC9maWxlcy9maXh1cC1pbnN0YWxsLWRvY2Rpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY3VuaXQvZmlsZXMvZml4dXAtaW5zdGFsbC1kb2NkaXIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2N1bml0L2ZpbGVzL2ZpeHVwLWluc3RhbGwtZG9jZGlyLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2N1bml0L2ZpbGVzL2ZpeHVwLWluc3RhbGwtZG9jZGlyLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jeHh0ZXN0L2N4eHRlc3RfNC4zLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9jeHh0ZXN0L2N4eHRlc3RfNC4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jeHh0ZXN0L2N4eHRlc3RfNC4zLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2N4eHRlc3QvY3h4dGVzdF80LjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXZ0ZXN0L2V2dGVzdF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2V2dGVzdC9ldnRlc3RfZ2l0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2V2dGVzdC9ldnRlc3RfZ2l0LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2V2dGVzdC9ldnRlc3RfZ2l0LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZidGVzdC9mYi10ZXN0X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZmJ0ZXN0L2ZiLXRlc3RfZ2l0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZidGVzdC9mYi10ZXN0X2dpdC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9mYnRlc3QvZmItdGVzdF9naXQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZ3Rlc3QvZ3Rlc3RfMS44LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2d0ZXN0L2d0ZXN0XzEuOC4wLmJiCmluZGV4IDQ4M2RjMWYuLjQ4Y2Y0ZTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZ3Rlc3QvZ3Rlc3RfMS44LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9ndGVzdC9ndGVzdF8xLjguMC5iYgpAQCAtNywxNiArNywxMyBAQAogCiBQUk9WSURFUyArPSAiZ21vY2siCiAKK1MgPSAiJHtXT1JLRElSfS9naXQiCitTUkNSRVYgPSAiZWM0NGM2YzE2NzVjMjViOTgyN2FhY2QwOGMwMjQzM2NjY2RlNzc4MCIKIFNSQ19VUkkgPSAiXAotICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC9hcmNoaXZlL3JlbGVhc2UtJHtQVn0udGFyLmd6IFwKKyAgICBnaXQ6Ly9naXRodWIuY29tL2dvb2dsZS9nb29nbGV0ZXN0LmdpdDtwcm90b2NvbD1odHRwczsgXAogICAgIGZpbGU6Ly9BZGQtcGtnLWNvbmZpZy1zdXBwb3J0LnBhdGNoIFwKICIKIAotU1JDX1VSSVttZDVzdW1dID0gIjE2ODc3MDk4ODIzNDAxZDFiZjJlZDc4OTFkN2RjZTM2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU4YTZmNDI3N2NhMmJjODU2NTIyMmIzYmJkNThhMTc3NjA5ZTljNDg4ZThhNzI2NDkzNTliYTUxNDUwZGI3ZDgiCi0KLVMgPSAiJHtXT1JLRElSfS9nb29nbGV0ZXN0LXJlbGVhc2UtJHtQVn0iCi0KIGluaGVyaXQgY21ha2UKIAogQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BtLXFhL3BtLXFhX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvcG0tcWEvcG0tcWFfZ2l0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wbS1xYS9wbS1xYV9naXQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvcG0tcWEvcG0tcWFfZ2l0LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3N0cmVzcy1uZy9zdHJlc3MtbmcvMDAwMS1TZXZlcmFsLWNoYW5nZXMtdG8tZml4LW11c2wtYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3N0cmVzcy1uZy9zdHJlc3MtbmcvMDAwMS1TZXZlcmFsLWNoYW5nZXMtdG8tZml4LW11c2wtYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDYwNGY4NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3Qvc3RyZXNzLW5nL3N0cmVzcy1uZy8wMDAxLVNldmVyYWwtY2hhbmdlcy10by1maXgtbXVzbC1idWlsZC5wYXRjaApAQCAtMCwwICsxLDE0MSBAQAorRnJvbSA3ODRkY2QwOWQzZjI2NmUyNzFkMDA3ZjRmZDI1N2U4NTAzNjg3MmNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuPUMzPUFEYmFsPTIwTGltPUMzPUIzbj89IDxhbmliYWwubGltb25AbGluYXJvLm9yZz4KK0RhdGU6IFR1ZSwgMTcgT2N0IDIwMTcgMTA6MTM6MjAgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gU2V2ZXJhbCBjaGFuZ2VzIHRvIGZpeCBtdXNsIGJ1aWxkCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK3N0cmVzcy17Y29udGV4dCwgc3RhY2ttbWFwfS5jOiBTZXQgdGVzdHMgdG8gbm9uLWltcGxlbWVudGVkIGJlY2F1c2UgdXNlcworc3dhcGNvbnRleHQsIG11c2wgcHJvdmlkZSB0aGUgZGVmaW5pdGlvbiBidXQgbm90IHRoZSBpbXBsZW1lbnRhdGlvbiBkdWUKKyAgdG8gdGhhdCBmdW5jdGlvbnMgYXJlIHByZS1QT1NJWCBhbmQgc2V0IHRvIGJlIGRlcHJlY2F0ZWQuCisgIHN0cmVzcy17cmVzb3VyY2VzLCBwdHl9LmM6IERvZXNuJ3QgaW5jbHVkZSB0ZXJtaW8uaCBhbmQgcmVtb3ZlIHN0cmVzcworICBvcGVyYXRpb25zIHRoYXQgdXNlcyBzdHJ1Y3QgdGVybWlvLCBtdXNsIGRvZXNuJ3QgcHJvdmlkZSB0aGF0IHN0cnVjdC4KK3N0cmVzcy1tYWxsb2MuYzogQ2hlY2sgZm9yIGRlZmluaXRpb24gb2YgTV9NTUFQX1RIUkVTSE9MRCBtdXNsIGRvZXNuJ3QKKyAgcHRvdmlkZSB0aGF0IGNvbnN0YW50Lgorc3RyZXNzLW1hZHZpc2UuYzogQWRkIHN0YXRpYyBwb2lzaW9uX2NvdW50IGludGVnZXIsIGRlZmluaXRpb24gb2YKKyAgTUFEVl9TT0ZUX09GRkxJTkUgZG9lc24ndCBncmF1bnRlZSBNQURWX0hXUE9JU09OIHRvIGJlIGRlZmluZWQuCitjYWNoZS5jOiBEZWZpbmUgR0xPQl9PTkxZRElSIG5vdCBhdmFpbGFibGUgb24gTVVTTC4KKworU2lnbmVkLW9mZi1ieTogQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW5hcm8ub3JnPgorU2lnbmVkLW9mZi1ieTogVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+CisKK1Vwc3RyZWFtLXN0YXR1czogUGVuZGluZworCistLS0KKyBjYWNoZS5jICAgICAgICAgICAgfCAgNCArKysrCisgc3RyZXNzLW1hZHZpc2UuYyAgIHwgIDEgKworIHN0cmVzcy1tYWxsb2MuYyAgICB8ICAyICstCisgc3RyZXNzLXB0eS5jICAgICAgIHwgMTggLS0tLS0tLS0tLS0tLS0tLS0tCisgc3RyZXNzLXJlc291cmNlcy5jIHwgIDEgLQorIHN0cmVzcy1zdGFja21tYXAuYyB8ICAyICstCisgNiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2FjaGUuYyBiL2NhY2hlLmMKK2luZGV4IGZiZjc2NzQuLjkzNmMxZmYgMTAwNjQ0CistLS0gYS9jYWNoZS5jCisrKysgYi9jYWNoZS5jCitAQCAtMjgsNiArMjgsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgeworIAorICNpbmNsdWRlIDxnbG9iLmg+CisgCisrI2lmbmRlZiBHTE9CX09OTFlESVIKKysjZGVmaW5lIEdMT0JfT05MWURJUiAgICAweDEwMAorKyNlbmRpZgorKworICNpZiBkZWZpbmVkKF9fbGludXhfXykKKyAjZGVmaW5lIFNZU19DUFVfUFJFRklYICAgICAgICAgICAgICAgIi9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1IgorICNkZWZpbmUgR0xPQl9QQVRURVJOIFNZU19DUFVfUFJFRklYICAiL2NwdVswLTldKiIKK2RpZmYgLS1naXQgYS9zdHJlc3MtbWFkdmlzZS5jIGIvc3RyZXNzLW1hZHZpc2UuYworaW5kZXggOWU3MWUxMS4uZGRmOGQyZCAxMDA2NDQKKy0tLSBhL3N0cmVzcy1tYWR2aXNlLmMKKysrKyBiL3N0cmVzcy1tYWR2aXNlLmMKK0BAIC0xNDcsNiArMTQ3LDcgQEAgc3RhdGljIGludCBzdHJlc3NfcmFuZG9tX2FkdmlzZShjb25zdCBhcmdzX3QgKmFyZ3MpCisgI2lmIGRlZmluZWQoTUFEVl9TT0ZUX09GRkxJTkUpCisgCWlmIChhZHZpc2UgPT0gTUFEVl9TT0ZUX09GRkxJTkUpIHsKKyAJCXN0YXRpYyBpbnQgc29mdF9vZmZsaW5lX2NvdW50OworKwkJc3RhdGljIGludCBwb2lzb25fY291bnQ7CisgCisgCQkvKiAuLmFuZCBtaW5pbWl6ZSBudW1iZXIgb2Ygc29mdCBvZmZsaW5lIHBhZ2VzICovCisgCQlpZiAoKHNvZnRfb2ZmbGluZV9jb3VudCA+PSBOVU1fU09GVF9PRkZMSU5FX01BWCkgfHwKK2RpZmYgLS1naXQgYS9zdHJlc3MtbWFsbG9jLmMgYi9zdHJlc3MtbWFsbG9jLmMKK2luZGV4IGE0NmI4YzYuLjQyNzgyN2EgMTAwNjQ0CistLS0gYS9zdHJlc3MtbWFsbG9jLmMKKysrKyBiL3N0cmVzcy1tYWxsb2MuYworQEAgLTk5LDcgKzk5LDcgQEAgaW50IHN0cmVzc19tYWxsb2MoY29uc3QgYXJnc190ICphcmdzKQorIAkJCW1hbGxvY19tYXggPSBNSU5fTUFMTE9DX01BWDsKKyAJfQorIAorLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fbGludXhfXykKKysjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2xpbnV4X18pICYmIGRlZmluZWQoTV9NTUFQX1RIUkVTSE9MRCkKKyAJaWYgKGdldF9zZXR0aW5nKCJtYWxsb2MtdGhyZXNob2xkIiwgJm1hbGxvY190aHJlc2hvbGQpKQorIAkJKHZvaWQpbWFsbG9wdChNX01NQVBfVEhSRVNIT0xELCAoaW50KW1hbGxvY190aHJlc2hvbGQpOworICNlbmRpZgorZGlmZiAtLWdpdCBhL3N0cmVzcy1wdHkuYyBiL3N0cmVzcy1wdHkuYworaW5kZXggMWJkMWZiZC4uYjFmZTU3MyAxMDA2NDQKKy0tLSBhL3N0cmVzcy1wdHkuYworKysrIGIvc3RyZXNzLXB0eS5jCitAQCAtMjYsNyArMjYsNiBAQAorIAorICNpZiBkZWZpbmVkKF9fbGludXhfXykKKyAKKy0jaW5jbHVkZSA8dGVybWlvLmg+CisgI2luY2x1ZGUgPHRlcm1pb3MuaD4KKyAKKyB0eXBlZGVmIHN0cnVjdCB7CitAQCAtMTA4LDcgKzEwNyw2IEBAIGludCBzdHJlc3NfcHR5KGNvbnN0IGFyZ3NfdCAqYXJncykKKyAJCSAqLworIAkJZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworIAkJCXN0cnVjdCB0ZXJtaW9zIGlvczsKKy0JCQlzdHJ1Y3QgdGVybWlvIGlvOworIAkJCXN0cnVjdCB3aW5zaXplIHdzOworIAkJCWludCBhcmc7CisgCitAQCAtMTMwLDIyICsxMjgsNiBAQCBpbnQgc3RyZXNzX3B0eShjb25zdCBhcmdzX3QgKmFyZ3MpCisgCQkJaWYgKGlvY3RsKHB0eXNbaV0uc2xhdmUsIFRDU0VUU0YsICZpb3MpIDwgMCkKKyAJCQkJcHJfZmFpbF9lcnIoImlvY3RsIFRDU0VUU0Ygb24gc2xhdmUgcHR5Iik7CisgI2VuZGlmCistI2lmIGRlZmluZWQoVENHRVRBKQorLQkJCWlmIChpb2N0bChwdHlzW2ldLnNsYXZlLCBUQ0dFVEEsICZpbykgPCAwKQorLQkJCQlwcl9mYWlsX2VycigiaW9jdGwgVENHRVRBIG9uIHNsYXZlIHB0eSIpOworLSNlbmRpZgorLSNpZiBkZWZpbmVkKFRDU0VUQSkKKy0JCQlpZiAoaW9jdGwocHR5c1tpXS5zbGF2ZSwgVENTRVRBLCAmaW8pIDwgMCkKKy0JCQkJcHJfZmFpbF9lcnIoImlvY3RsIFRDU0VUQSBvbiBzbGF2ZSBwdHkiKTsKKy0jZW5kaWYKKy0jaWYgZGVmaW5lZChUQ1NFVEFXKQorLQkJCWlmIChpb2N0bChwdHlzW2ldLnNsYXZlLCBUQ1NFVEFXLCAmaW8pIDwgMCkKKy0JCQkJcHJfZmFpbF9lcnIoImlvY3RsIFRDU0VUQVcgb24gc2xhdmUgcHR5Iik7CistI2VuZGlmCistI2lmIGRlZmluZWQoVENTRVRBRikKKy0JCQlpZiAoaW9jdGwocHR5c1tpXS5zbGF2ZSwgVENTRVRBRiwgJmlvKSA8IDApCistCQkJCXByX2ZhaWxfZXJyKCJpb2N0bCBUQ1NFVEFGIG9uIHNsYXZlIHB0eSIpOworLSNlbmRpZgorICNpZiBkZWZpbmVkKFRJT0NHTENLVFJNSU9TKQorIAkJCWlmIChpb2N0bChwdHlzW2ldLnNsYXZlLCBUSU9DR0xDS1RSTUlPUywgJmlvcykgPCAwKQorIAkJCQlwcl9mYWlsX2VycigiaW9jdGwgVElPQ0dMQ0tUUk1JT1Mgb24gc2xhdmUgcHR5Iik7CitkaWZmIC0tZ2l0IGEvc3RyZXNzLXJlc291cmNlcy5jIGIvc3RyZXNzLXJlc291cmNlcy5jCitpbmRleCA5NThjOTlhLi5hZjc5YWJkIDEwMDY0NAorLS0tIGEvc3RyZXNzLXJlc291cmNlcy5jCisrKysgYi9zdHJlc3MtcmVzb3VyY2VzLmMKK0BAIC0zMSw3ICszMSw2IEBACisgI2luY2x1ZGUgPHN5cy9pbm90aWZ5Lmg+CisgI2VuZGlmCisgI2lmIGRlZmluZWQoX19saW51eF9fKQorLSNpbmNsdWRlIDx0ZXJtaW8uaD4KKyAjaW5jbHVkZSA8dGVybWlvcy5oPgorICNlbmRpZgorICNpZiBkZWZpbmVkKEhBVkVfTElCX1BUSFJFQUQpICYmIGRlZmluZWQoX19saW51eF9fKQorZGlmZiAtLWdpdCBhL3N0cmVzcy1zdGFja21tYXAuYyBiL3N0cmVzcy1zdGFja21tYXAuYworaW5kZXggOWM4M2E2OS4uMjk4NGYwOSAxMDA2NDQKKy0tLSBhL3N0cmVzcy1zdGFja21tYXAuYworKysrIGIvc3RyZXNzLXN0YWNrbW1hcC5jCitAQCAtMjQsNyArMjQsNyBAQAorICAqLworICNpbmNsdWRlICJzdHJlc3MtbmcuaCIKKyAKKy0jaWYgZGVmaW5lZChfX2xpbnV4X18pCisrI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiBGYWxzZQorIAorICNpbmNsdWRlIDx1Y29udGV4dC5oPgorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9zdHJlc3Mtbmcvc3RyZXNzLW5nLzAwMDItc3RyZXNzLWZjbnRsLWZpeC1idWlsZC1mb3ItbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3Qvc3RyZXNzLW5nL3N0cmVzcy1uZy8wMDAyLXN0cmVzcy1mY250bC1maXgtYnVpbGQtZm9yLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQzMjg3ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3Qvc3RyZXNzLW5nL3N0cmVzcy1uZy8wMDAyLXN0cmVzcy1mY250bC1maXgtYnVpbGQtZm9yLW11c2wucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSBmYWFkYmMxNDczOTRjZWE5Mjc4YmMyNDk0ZjMzZTM1MjFkODhlNzQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+CitEYXRlOiBUdWUsIDkgSmFuIDIwMTggMTg6Mzg6NDUgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3RyZXNzLWZjbnRsOiBmaXggYnVpbGQgZm9yIG11c2wKKworU2lnbmVkLW9mZi1ieTogVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+CisKK1Vwc3RyZWFtLXN0YXR1czogUGVuZGluZworCistLS0KKyBzdHJlc3MtZmNudGwuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3RyZXNzLWZjbnRsLmMgYi9zdHJlc3MtZmNudGwuYworaW5kZXggMmVhODY3Yi4uZTkxYjM0NSAxMDA2NDQKKy0tLSBhL3N0cmVzcy1mY250bC5jCisrKysgYi9zdHJlc3MtZmNudGwuYworQEAgLTQxNSw2ICs0MTUsNyBAQCBvZmRfbG9ja19hYm9ydDoJeyAvKiBOb3d0ICovIH0KKyAjaWYgKGRlZmluZWQoRl9HRVRfRklMRV9SV19ISU5UKSAmJiBkZWZpbmVkKEZfU0VUX0ZJTEVfUldfSElOVCkpIHwgXAorICAgICAoZGVmaW5lZChGX0dFVF9SV19ISU5UKSAmJiBkZWZpbmVkKEZfU0VUX1JXX0hJTlQpKQorIAl7CisrCQlpbnQgcmV0OworIAkJc2l6ZV90IGk7CisgCQl1bnNpZ25lZCBsb25nIGhpbnQ7CisgCQlzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBoaW50c1tdID0gewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9zdHJlc3Mtbmcvc3RyZXNzLW5nXzAuMDkuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3N0cmVzcy1uZy9zdHJlc3MtbmdfMC4wOS4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmFiNDMwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9zdHJlc3Mtbmcvc3RyZXNzLW5nXzAuMDkuMTQuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJBIHRvb2wgdG8gbG9hZCBhbmQgc3RyZXNzIGEgY29tcHV0ZXIgc3lzdGVtIgorSE9NRVBBR0UgPSAiaHR0cDovL2tlcm5lbC51YnVudHUuY29tL35ja2luZy9zdHJlc3MtbmcvIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitERVBFTkRTID0gInpsaWIgbGliYWlvIgorCitTUkNfVVJJID0gImh0dHA6Ly9rZXJuZWwudWJ1bnR1LmNvbS9+Y2tpbmcvdGFyYmFsbHMvJHtCUE59LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXN0cmVzcy1mY250bC1maXgtYnVpbGQtZm9yLW11c2wucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAorICAgIGZpbGU6Ly8wMDAxLVNldmVyYWwtY2hhbmdlcy10by1maXgtbXVzbC1idWlsZC5wYXRjaCBcCisgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjFmOGI2YzJjMjgzMDcwNGQyYTI4MTRjMTYwODJkNDhlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAyY2FjMzRhNWNiMDQxMTk3YWY2MGMxODY3ODQ0YzZjYmIwODlhNmQxMGEzOGNkY2Y3YjhmMjdiZmFhNmVmOGYiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA/PSAiaHR0cDovL2tlcm5lbC51YnVudHUuY29tL35ja2luZy90YXJiYWxscy8ke0JQTn0vIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPz0gIig/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitDRkxBR1MgKz0gIi1XYWxsIC1XZXh0cmEgLURWRVJTSU9OPSciJChWRVJTSU9OKSInIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDc1NSAke1N9L3N0cmVzcy1uZyAke0R9JHtiaW5kaXJ9L3N0cmVzcy1uZworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGVzdGZsb2F0L2ZpbGVzLzAwMDEtTWFrZWZpbGUtZm9yLWNyb3NzLWNvbXBpbGUtU29mdEZsb2F0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC90ZXN0ZmxvYXQvZmlsZXMvMDAwMS1NYWtlZmlsZS1mb3ItY3Jvc3MtY29tcGlsZS1Tb2Z0RmxvYXQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Rlc3RmbG9hdC9maWxlcy8wMDAxLU1ha2VmaWxlLWZvci1jcm9zcy1jb21waWxlLVNvZnRGbG9hdC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC90ZXN0ZmxvYXQvZmlsZXMvMDAwMS1NYWtlZmlsZS1mb3ItY3Jvc3MtY29tcGlsZS1Tb2Z0RmxvYXQucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Rlc3RmbG9hdC9maWxlcy8wMDAyLU1ha2VmaWxlLWZvci1jcm9zcy1jb21waWxlLVRlc3RGbG9hdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvdGVzdGZsb2F0L2ZpbGVzLzAwMDItTWFrZWZpbGUtZm9yLWNyb3NzLWNvbXBpbGUtVGVzdEZsb2F0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90ZXN0ZmxvYXQvZmlsZXMvMDAwMi1NYWtlZmlsZS1mb3ItY3Jvc3MtY29tcGlsZS1UZXN0RmxvYXQucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvdGVzdGZsb2F0L2ZpbGVzLzAwMDItTWFrZWZpbGUtZm9yLWNyb3NzLWNvbXBpbGUtVGVzdEZsb2F0LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90ZXN0ZmxvYXQvdGVzdGZsb2F0XzNhLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC90ZXN0ZmxvYXQvdGVzdGZsb2F0XzNhLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90ZXN0ZmxvYXQvdGVzdGZsb2F0XzNhLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3Rlc3RmbG9hdC90ZXN0ZmxvYXRfM2EuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9zaXRlL2VuZGlhbi1iaWcgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2Uvc2l0ZS9lbmRpYW4tYmlnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTk2OGUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9zaXRlL2VuZGlhbi1iaWcKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSMgcnAtcHBwb2UKLXJwcHBvZV9jdl9wYWNrX2JpdGZpZWxkcz0ke3JwcHBvZV9jdl9wYWNrX2JpdGZpZWxkcz1ub3JtYWx9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2Uvc2l0ZS9lbmRpYW4tbGl0dGxlIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3NpdGUvZW5kaWFuLWxpdHRsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJjZDk2Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2Uvc2l0ZS9lbmRpYW4tbGl0dGxlCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0jIHJwLXBwcG9lCi1ycHBwb2VfY3ZfcGFja19iaXRmaWVsZHM9JHtycHBwb2VfY3ZfcGFja19iaXRmaWVsZHM9cmV2fQo=