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+PSBvcHRzLm1heGRlcHRoIHRoZW5cblwKLSsJCQllcnJvcignc2VyaWFsaXplOiBtYXggZGVwdGgnKVxuXAotKwkJZW5kXG5cCi0rCQlpZiBub3Qgc2VlbiB0aGVuXG5cCi0rCQkJc2Vlbj17fVxuXAotKwkJZWxzZWlmIHNlZW5bdl0gdGhlblxuXAotKwkJCWlmIG9wdHMuZXJyX2N5Y2xlIHRoZW5cblwKLSsJCQkJZXJyb3IoJ3NlcmlhbGl6ZTogY3ljbGUnKVxuXAotKwkJCWVsc2VcblwKLSsJCQkJdGFibGUuaW5zZXJ0KHIsJ1wiY3ljbGU6Jy4udG9zdHJpbmcodikuLidcIicpXG5cCi0rCQkJCXJldHVyblxuXAotKwkJCWVuZFxuXAotKwkJZW5kXG5cCi0rCQlzZWVuW3ZdID0gdHJ1ZTtcblwKLSsJCXRhYmxlLmluc2VydChyLCd7JylcblwKLSsJCWZvciBrLHYxIGluIHBhaXJzKHYpIGRvXG5cCi0rCQkJaWYgb3B0cy5wcmV0dHkgdGhlblxuXAotKwkJCQl0YWJsZS5pbnNlcnQociwnXFxuJy4uc3RyaW5nLnJlcCgnICcsZGVwdGgpKVxuXAotKwkJCWVuZFxuXAotKwkJCWlmIHR5cGUoaykgPT0gJ3N0cmluZycgYW5kIHN0cmluZy5tYXRjaChrLCdeW18lYV1bJWElZF9dKiQnKSB0aGVuXG5cCi0rCQkJCXRhYmxlLmluc2VydChyLGspXG5cCi0rCQkJZWxzZVxuXAotKwkJCQl0YWJsZS5pbnNlcnQociwnWycpXG5cCi0rCQkJCXNlcmlhbGl6ZV9yKGssb3B0cyxyLHNlZW4sZGVwdGgrMSlcblwKLSsJCQkJdGFibGUuaW5zZXJ0KHIsJ10nKVxuXAotKwkJCWVuZFxuXAotKwkJCXRhYmxlLmluc2VydChyLCc9JylcblwKLSsJCQlzZXJpYWxpemVfcih2MSxvcHRzLHIsc2VlbixkZXB0aCsxKVxuXAotKwkJCXRhYmxlLmluc2VydChyLCcsJylcblwKLSsJCWVuZFxuXAotKwkJaWYgb3B0cy5wcmV0dHkgdGhlblxuXAotKwkJCXRhYmxlLmluc2VydChyLCdcXG4nLi5zdHJpbmcucmVwKCcgJyxkZXB0aC0xKSlcblwKLSsJCWVuZFxuXAotKwkJdGFibGUuaW5zZXJ0KHIsJ30nKVxuXAotKwkJcmV0dXJuXG5cCi0rCWVuZFxuXAotKwlpZiBvcHRzLmVycl90eXBlIHRoZW5cblwKLSsJCWVycm9yKCdzZXJpYWxpemU6IHVuc3VwcG9ydGVkIHR5cGUgJyAuLiB2dCwgMilcblwKLSsJZWxzZVxuXAotKwkJdGFibGUuaW5zZXJ0KHIsJ1wiJy4udG9zdHJpbmcodikuLidcIicpXG5cCi0rCWVuZFxuXAotK2VuZFxuXAotK3NlcmlhbGl6ZV9kZWZhdWx0cyA9IHtcblwKLSsJbWF4ZGVwdGg9MTAsXG5cCi0rCWVycl90eXBlPXRydWUsXG5cCi0rCWVycl9jeWNsZT10cnVlLFxuXAotKwlwcmV0dHk9ZmFsc2UsXG5cCi0rfVxuXAotK2Z1bmN0aW9uIHNlcmlhbGl6ZSh2LG9wdHMpXG5cCi0rCWlmIG9wdHMgdGhlblxuXAotKwkJZm9yIGssdiBpbiBwYWlycyhzZXJpYWxpemVfZGVmYXVsdHMpIGRvXG5cCi0rCQkJaWYgbm90IG9wdHNba10gdGhlblxuXAotKwkJCQlvcHRzW2tdPXZcblwKLSsJCQllbmRcblwKLSsJCWVuZFxuXAotKwllbHNlXG5cCi0rCQlvcHRzPXNlcmlhbGl6ZV9kZWZhdWx0c1xuXAotKwllbmRcblwKLSsJbG9jYWwgcj17fVxuXAotKwlzZXJpYWxpemVfcih2LG9wdHMscilcblwKLSsJcmV0dXJuIHRhYmxlLmNvbmNhdChyKVxuXAotK2VuZFxuIgotKwotICNkZWZpbmUgUFRQX0NIREtfTFVBX1NFUklBTElaRV9NU0dTIFwKLSBQVFBfQ0hES19MVUFfU0VSSUFMSVpFXAotICJ1c2JfbXNnX3RhYmxlX3RvX3N0cmluZz1zZXJpYWxpemVcbiIKLSAKLSsjZGVmaW5lIFBUUF9DSERLX0xVQV9TRVJJQUxJWkVfTVNHU19TSU1QTEVRVU9URSBcCi0rUFRQX0NIREtfTFVBX1NFUklBTElaRV9TSU1QTEVRVU9URVwKLSsidXNiX21zZ190YWJsZV90b19zdHJpbmc9c2VyaWFsaXplXG4iCi0rCi0gI2RlZmluZSBQVFBfQ0hES19MVUFfRVhURU5EX1RBQkxFIFwKLSAiZnVuY3Rpb24gZXh0ZW5kX3RhYmxlKHRhcmdldCxzb3VyY2UsZGVlcClcblwKLSAJaWYgdHlwZSh0YXJnZXQpIH49ICd0YWJsZScgdGhlblxuXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLTIuNS44LzAwMDEtY29uZmlndXJlLmFjLXJlbW92ZS1BTV9QT19TVUJESVJTLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLzAwMDEtY29uZmlndXJlLmFjLXJlbW92ZS1BTV9QT19TVUJESVJTLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzItMi41LjgvMDAwMS1jb25maWd1cmUuYWMtcmVtb3ZlLUFNX1BPX1NVQkRJUlMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMi8wMDAxLWNvbmZpZ3VyZS5hYy1yZW1vdmUtQU1fUE9fU1VCRElSUy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLTIuNS44LzEwLWNhbWVyYS1saWJncGhvdG8yLWRldmljZS5mZGkgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzIvMTAtY2FtZXJhLWxpYmdwaG90bzItZGV2aWNlLmZkaQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLTIuNS44LzEwLWNhbWVyYS1saWJncGhvdG8yLWRldmljZS5mZGkKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMi8xMC1jYW1lcmEtbGliZ3Bob3RvMi1kZXZpY2UuZmRpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzItMi41LjgvMTAtY2FtZXJhLWxpYmdwaG90bzIuZmRpIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLzEwLWNhbWVyYS1saWJncGhvdG8yLmZkaQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLTIuNS44LzEwLWNhbWVyYS1saWJncGhvdG8yLmZkaQpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLzEwLWNhbWVyYS1saWJncGhvdG8yLmZkaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLTIuNS44LzQwLWxpYmdwaG90bzIucnVsZXMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzIvNDAtbGliZ3Bob3RvMi5ydWxlcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yLTIuNS44LzQwLWxpYmdwaG90bzIucnVsZXMKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMi80MC1saWJncGhvdG8yLnJ1bGVzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzJfMi41LjguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzJfMi41LjE2LmJiCnNpbWlsYXJpdHkgaW5kZXggODUlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMl8yLjUuOC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yXzIuNS4xNi5iYgppbmRleCA0NDM0YWY5Li43YTY5MWM2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzJfMi41LjguYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yXzIuNS4xNi5iYgpAQCAtMTQsMTMgKzE0LDEwIEBACiAgICAgICAgICAgIGZpbGU6Ly8xMC1jYW1lcmEtbGliZ3Bob3RvMi5mZGkgXAogICAgICAgICAgICBmaWxlOi8vNDAtbGliZ3Bob3RvMi5ydWxlcyBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1yZW1vdmUtQU1fUE9fU1VCRElSUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvcnJlY3QtanBlZy1tZW1zcmNkZXN0LXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYXZvaWRfdXNpbmdfc3ByaW50Zi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXNjcmlwdHMtcmVtb3ZlLWJhc2hpc21zLnBhdGNoIFwKICIKIAotU1JDX1VSSVtsaWJncGhvdG8yLm1kNXN1bV0gPSAiODczYWIwMWFjZWQ0OWM2YjkyYTk4ZTUxNWRiNWRjZWYiCi1TUkNfVVJJW2xpYmdwaG90bzIuc2hhMjU2c3VtXSA9ICIwMzFhMjYyZTM0MmZhZTQzZjcyNGFmZTY2Nzg3OTQ3Y2UxZmI0ODMyNzdkZmU1YThjZjFmYmU5MmM1OGUyN2I2IgorU1JDX1VSSVtsaWJncGhvdG8yLm1kNXN1bV0gPSAiMDg0ZDIyMGQwNzhkMjhjMGM3YTNiYTEzZjQ0NzYxMjgiCitTUkNfVVJJW2xpYmdwaG90bzIuc2hhMjU2c3VtXSA9ICJlNzU3NDE2ZDE2MjNlMDFhOWQwZDI5NGIyZTc5MDE2MmU0MzRjMDk2NGY1MGQzYjdmZjFhMzQyNGI2MmEyOTA2IgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBsaWJfcGFja2FnZQogCkBAIC01NCwzICs1MSw0IEBACiBGSUxFU18ke1BOfSArPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2LyogJHtkYXRhZGlyfS9oYWwiCiBGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS8qLyovLmRlYnVnIgogRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vKi8qLyoubGEiCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vbGliZ3Bob3RvMl9wb3J0LzAuMTIuMC92Y2FtZXJhL1JFQURNRS50eHQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ndGtwZXJmL2d0a3BlcmZfMC40MC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2d0a3BlcmYvZ3RrcGVyZl8wLjQwLmJiCmluZGV4IDJkYjkxOTA0Li40MDk0NTEzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ndGtwZXJmL2d0a3BlcmZfMC40MC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ndGtwZXJmL2d0a3BlcmZfMC40MC5iYgpAQCAtMTYsNyArMTYsOSBAQAogCiBTID0gIiR7V09SS0RJUn0vJHtCUE59IgogCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWcgcGtnY29uZmlnIGdldHRleHQKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBiaW5jb25maWcgcGtnY29uZmlnIGdldHRleHQKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewogICAgIHJtIC1mICR7U30vbTQvaW5pdC5tNApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlidm5jc2VydmVyL2xpYnZuY3NlcnZlcl8wLjkuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ2bmNzZXJ2ZXIvbGlidm5jc2VydmVyXzAuOS4xMS5iYgppbmRleCA0NTdkNzIxLi4zOGRhYzA2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ2bmNzZXJ2ZXIvbGlidm5jc2VydmVyXzAuOS4xMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ2bmNzZXJ2ZXIvbGlidm5jc2VydmVyXzAuOS4xMS5iYgpAQCAtMTIsNyArMTIsOSBAQAogCiBSREVQRU5EU18ke1BOfSArPSAibGlicG5nIGd0aysgbGliZ2NyeXB0IgogCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWcgcGtnY29uZmlnCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBhdXRvdG9vbHMgYmluY29uZmlnIHBrZ2NvbmZpZworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9MaWJWTkMvbGlidm5jc2VydmVyL2FyY2hpdmUvTGliVk5DU2VydmVyLSR7UFZ9LnRhci5neiIKIFNSQ19VUklbbWQ1c3VtXSA9ICI3ZjA2MTA0ZDVjMDA5ODEzZTk1MTQyOTMyYzRkZGIwNiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWktbmN1cnNlcy8wMDAxLUZpeC10aGUtZXJyb3Itb2YtY2FuLXQtZmluZC1oZWFkZXItZmlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWktbmN1cnNlcy8wMDAxLUZpeC10aGUtZXJyb3Itb2YtY2FuLXQtZmluZC1oZWFkZXItZmlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDVmM2NhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS1uY3Vyc2VzLzAwMDEtRml4LXRoZS1lcnJvci1vZi1jYW4tdC1maW5kLWhlYWRlci1maWxlLnBhdGNoCkBAIC0wLDAgKzEsMTAxIEBACitGcm9tIGViMDA4NmRjNGVhOGZlOWNkYTA2OTQ1NjI4N2IzYTI5YTI2MzFkMzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBaaGVuZyBSdW9xaW4gPHpoZW5ncnEuZm5zdEBjbi5mdWppdHN1LmNvbT4KK0RhdGU6IFdlZCwgMTMgRGVjIDIwMTcgMTY6MTg6NDUgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IHRoZSBlcnJvciBvZiBjYW4ndCBmaW5kIGhlYWRlciBmaWxlCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCitUaGlzIGZpeCBpcyBqdXN0IGZvciB5b2N0by4KKworU2lnbmVkLW9mZi1ieTogWmhlbmcgUnVvcWluIDx6aGVuZ3JxLmZuc3RAY24uZnVqaXRzdS5jb20+CistLS0KKyBzcmMvTkNBcHBsaWNhdGlvbi5jYyB8IDIgKy0KKyBzcmMvTkNzdHlsZS5oICAgICAgICB8IDIgKy0KKyBzcmMvTkN1cnNlcy5oICAgICAgICB8IDIgKy0KKyBzcmMvbmN1cnNlc3AuaCAgICAgICB8IDIgKy0KKyBzcmMvbmN1cnNlc3cuY2MgICAgICB8IDIgKy0KKyBzcmMvbmN1cnNlc3cuaCAgICAgICB8IDQgKystLQorIDYgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL05DQXBwbGljYXRpb24uY2MgYi9zcmMvTkNBcHBsaWNhdGlvbi5jYworaW5kZXggNWJjZjk2OS4uNTEwZjAzNCAxMDA2NDQKKy0tLSBhL3NyYy9OQ0FwcGxpY2F0aW9uLmNjCisrKysgYi9zcmMvTkNBcHBsaWNhdGlvbi5jYworQEAgLTIzLDcgKzIzLDcgQEAKKyAKKyAvLSovCisgCistI2luY2x1ZGUgPG5jdXJzZXN3L2N1cnNlcy5oPgorKyNpbmNsdWRlIDxjdXJzZXMuaD4KKyAKKyAjZGVmaW5lICBZVUlMb2dDb21wb25lbnQgIm5jdXJzZXMiCisgI2luY2x1ZGUgPHl1aS9ZVUlMb2cuaD4KK2RpZmYgLS1naXQgYS9zcmMvTkNzdHlsZS5oIGIvc3JjL05Dc3R5bGUuaAoraW5kZXggYTQwZDVhOC4uMzY1NzkxNyAxMDA2NDQKKy0tLSBhL3NyYy9OQ3N0eWxlLmgKKysrKyBiL3NyYy9OQ3N0eWxlLmgKK0BAIC0yNSw3ICsyNSw3IEBACisgI2lmbmRlZiBOQ3N0eWxlX2gKKyAjZGVmaW5lIE5Dc3R5bGVfaAorIAorLSNpbmNsdWRlIDxuY3Vyc2Vzdy9uY3Vyc2VzLmg+CisrI2luY2x1ZGUgPG5jdXJzZXMuaD4KKyAKKyAjaW5jbHVkZSA8aW9zZndkPgorICNpbmNsdWRlIDxzdHJpbmc+CitkaWZmIC0tZ2l0IGEvc3JjL05DdXJzZXMuaCBiL3NyYy9OQ3Vyc2VzLmgKK2luZGV4IGEwN2M2YmYuLmQxN2QzYzMgMTAwNjQ0CistLS0gYS9zcmMvTkN1cnNlcy5oCisrKysgYi9zcmMvTkN1cnNlcy5oCitAQCAtMzQsNyArMzQsNyBAQAorICNpbmNsdWRlIDx5dWkvWVdpZGdldC5oPgorICNpbmNsdWRlIDx5dWkvWU1lbnVJdGVtLmg+CisgCistI2luY2x1ZGUgPG5jdXJzZXN3L2N1cnNlcy5oPgkvKiBjdXJzZXMuaDogI2RlZmluZSAgTkNVUlNFU19DSF9UIGNjaGFyX3QgKi8KKysjaW5jbHVkZSA8Y3Vyc2VzLmg+CS8qIGN1cnNlcy5oOiAjZGVmaW5lICBOQ1VSU0VTX0NIX1QgY2NoYXJfdCAqLworICNpbmNsdWRlIDx3Y2hhci5oPgorIAorICNpbmNsdWRlICJuY3Vyc2Vzdy5oIgorZGlmZiAtLWdpdCBhL3NyYy9uY3Vyc2VzcC5oIGIvc3JjL25jdXJzZXNwLmgKK2luZGV4IGQ0NzgzNDcuLjJmY2ZlYTUgMTAwNjQ0CistLS0gYS9zcmMvbmN1cnNlc3AuaAorKysrIGIvc3JjL25jdXJzZXNwLmgKK0BAIC0yOCw3ICsyOCw3IEBACisgI2luY2x1ZGUgPGlvc2Z3ZD4KKyAKKyAjaW5jbHVkZSAibmN1cnNlc3cuaCIKKy0jaW5jbHVkZSA8bmN1cnNlc3cvcGFuZWwuaD4KKysjaW5jbHVkZSA8cGFuZWwuaD4KKyAKKyBjbGFzcyBOQ3Vyc2VzUGFuZWwgOiBwdWJsaWMgTkN1cnNlc1dpbmRvdworIHsKK2RpZmYgLS1naXQgYS9zcmMvbmN1cnNlc3cuY2MgYi9zcmMvbmN1cnNlc3cuY2MKK2luZGV4IDNjNzcxYWYuLmJiODMyMTAgMTAwNjQ0CistLS0gYS9zcmMvbmN1cnNlc3cuY2MKKysrKyBiL3NyYy9uY3Vyc2Vzdy5jYworQEAgLTQ3LDcgKzQ3LDcgQEAKKyAjaW5jbHVkZSA8aW9zdHJlYW0+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8bmN1cnNlc3cvdGVybS5oPgorKyNpbmNsdWRlIDx0ZXJtLmg+CisgI3VuZGVmIGxpbmUKKyAjdW5kZWYgY29sdW1ucworIAorZGlmZiAtLWdpdCBhL3NyYy9uY3Vyc2Vzdy5oIGIvc3JjL25jdXJzZXN3LmgKK2luZGV4IGQyNTkyM2EuLmMxNDBkMzcgMTAwNjQ0CistLS0gYS9zcmMvbmN1cnNlc3cuaAorKysrIGIvc3JjL25jdXJzZXN3LmgKK0BAIC0yNyw4ICsyNyw4IEBACisgCisgI2luY2x1ZGUgPGlvc2Z3ZD4KKyAKKy0jaW5jbHVkZSA8bmN1cnNlc3cvY3Vyc2VzLmg+CistI2luY2x1ZGUgPG5jdXJzZXN3L2V0aXAuaD4KKysjaW5jbHVkZSA8Y3Vyc2VzLmg+CisrI2luY2x1ZGUgPGV0aXAuaD4KKyAjaW5jbHVkZSA8Y3N0ZGlvPgorICNpbmNsdWRlIDxjc3RkYXJnPgorICNpbmNsdWRlIDxjbGltaXRzPgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLW5jdXJzZXMvMDAwMS11c2UtX25sX21zZ19jYXRfY250ci1vbmx5LXdpdGgtZ2xpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLW5jdXJzZXMvMDAwMS11c2UtX25sX21zZ19jYXRfY250ci1vbmx5LXdpdGgtZ2xpYmMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUzNzc0YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWktbmN1cnNlcy8wMDAxLXVzZS1fbmxfbXNnX2NhdF9jbnRyLW9ubHktd2l0aC1nbGliYy5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDRiODRmMjQzYTcwYThjMDdmNmEzOGRhZDNjOTQxMWZhNzA3ZjI1YzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCA0IE1hciAyMDE4IDE3OjA4OjQzIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIHVzZSBfbmxfbXNnX2NhdF9jbnRyIG9ubHkgd2l0aCBnbGliYworCitUaGUgbXVzbCBsaWJjIHByb3ZpZGVzIGxpYmludGwgKHNpbWlsYXIgdG8gZ2xpYmMpCitidXQgZG9lcyBub3QgdXNlIHRoZSBzYW1lIGludGVybmFscywKK3NvIGV2ZW4gdGhvdWdoIHdlIGFyZSB1c2luZyB0aGUgR05VIGdldHRleHQKK3RoZSBsaWJpbnRsIGluY2x1ZGVkIHdpdGggdGhlIGxpYmMgZG9lcyBub3QgZGVmaW5lCitfbmxfbXNnX2NhdF9jbnRyIGFuZCBpdCBkb2VzIG5vdCBuZWVkIHRvLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9OQ2kxOG4uaCB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL05DaTE4bi5oIGIvc3JjL05DaTE4bi5oCitpbmRleCAxNjViMGU3Li5iZmM0ZWQ3IDEwMDY0NAorLS0tIGEvc3JjL05DaTE4bi5oCisrKysgYi9zcmMvTkNpMThuLmgKK0BAIC01OSwxMiArNTksMTMgQEAgaW5saW5lIHZvaWQgc2V0VGV4dGRvbWFpbiggY29uc3QgY2hhciAqIGRvbWFpbiApCisgICAgIGJpbmR0ZXh0ZG9tYWluKCBkb21haW4sICBZU2V0dGluZ3M6OmxvY2FsZURpcigpLmNfc3RyKCkgKTsKKyAgICAgYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQoIGRvbWFpbiwgIlVURi04IiApOworICAgICB0ZXh0ZG9tYWluKCBkb21haW4gKTsKKy0KKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgICAgIC8vIE1ha2UgY2hhbmdlIGtub3duCisgICAgIHsKKyAJZXh0ZXJuIGludCBfbmxfbXNnX2NhdF9jbnRyOworIAkrK19ubF9tc2dfY2F0X2NudHI7CisgICAgIH0KKysjZW5kaWYKKyB9CisgCisgCistLSAKKzIuMTYuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLW5jdXJzZXNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS1uY3Vyc2VzX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzhjNzEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS1uY3Vyc2VzX2dpdC5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIkNoYXJhY3RlciBCYXNlZCBVc2VyIEludGVyZmFjZSBmb3IgbGlieXVpIgorTElDRU5TRSA9ICJMR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLmxncGwtMzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIgXAorICAgIGZpbGU6Ly9DT1BZSU5HLmxncGwtMi4xO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saWJ5dWkvbGlieXVpLW5jdXJzZXMuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdXNlLV9ubF9tc2dfY2F0X2NudHItb25seS13aXRoLWdsaWJjLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZmlsZTovLzAwMDEtRml4LXRoZS1lcnJvci1vZi1jYW4tdC1maW5kLWhlYWRlci1maWxlLnBhdGNoIgorCitQViA9ICIyLjQ4LjMrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiNzliODA0YjQ1ZmZjNmEwZDkyZTI4ZTc5M2ZmMzg5YTIwYjYzYjU0YiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZSBnZXR0ZXh0IHBrZ2NvbmZpZworCitERVBFTkRTICs9ICJib29zdCBsaWJ5dWkgbmN1cnNlcyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKyAgICBjZCAke1N9CisgICAgZ2l0IGNoZWNrb3V0IGJvb3RzdHJhcC5zaAorICAgIHNlZCAtaSAicyMvdXNyIyR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2Jhc2VfcHJlZml4fSYjIiBib290c3RyYXAuc2gKKyAgICAuL2Jvb3RzdHJhcC5zaAorICAgIG1rZGlyIC1wICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2Jhc2VfcHJlZml4fS91c3IvbGliNjQvCisgICAgY3AgJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSR7YmFzZV9wcmVmaXh9L3Vzci9saWIvbGlieXVpLnNvKiAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9JHtiYXNlX3ByZWZpeH0vdXNyL2xpYjY0LworICAgIGNkIC0KKyAgICBzZWQgLWkgInMjXCR7WVBSRUZJWH0jXCR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2Jhc2VfcHJlZml4fSYjIiAke1N9L0NNYWtlTGlzdHMudHh0CisgICAgc2VkIC1pICJzIy91c3IjJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSR7YmFzZV9wcmVmaXh9JiMiICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2xpYmRpcn0vY21ha2UvbGlieXVpL0xpYnl1aUxpYnJhcnlEZXBlbmRzLXJlbGVhc2UuY21ha2UKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIGlmIFsgIiR7bGliZGlyfSIgPSAiJHtiYXNlX3ByZWZpeH0vdXNyL2xpYiIgXSAmJiBbIC1kICR7RH0vdXNyL2xpYjY0IF07IHRoZW4KKyAgICAgICAgbXYgJHtEfS91c3IvbGliNjQgJHtEfS91c3IvbGliCisgICAgZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKKyAgICBta2RpciAtcCAke0R9LyR7YmFzZV9wcmVmaXh9CisgICAgbXYgJHtEfS91c3IgJHtEfS8ke2Jhc2VfcHJlZml4fQorfQorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS8qIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS8wMDAxLUZpeC1HQ0MtOC13YXJuaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS8wMDAxLUZpeC1HQ0MtOC13YXJuaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxYmE0MmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLzAwMDEtRml4LUdDQy04LXdhcm5pbmcucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSAxZTZkNDBmZWMxNmE5NGQxYTRiZDQwNjM0NDA1MjY3MjAwYjdlOTY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogbWFyeGluIDxtbGlza2FAc3VzZS5jej4KK0RhdGU6IFR1ZSwgMTAgQXByIDIwMTggMTU6MjE6NDAgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IEdDQyA4IHdhcm5pbmc6CitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKKy9ob21lL21hcnhpbi9Qcm9ncmFtbWluZy9saWJ5dWkvc3JjL1lEaWFsb2cuY2M6IEluIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24g4oCYc3RhdGljIHZvaWQgWURpYWxvZzo6c2hvd1RleHQoY29uc3Qgc3RyaW5nJiwgYm9vbCnigJk6CisvaG9tZS9tYXJ4aW4vUHJvZ3JhbW1pbmcvbGlieXVpL3NyYy9ZRGlhbG9nLmNjOjY5MDoyNjogZXJyb3I6IGNhdGNoaW5nIHBvbHltb3JwaGljIHR5cGUg4oCYY2xhc3MgWVVJRXhjZXB0aW9u4oCZIGJ5IHZhbHVlIFstV2Vycm9yPWNhdGNoLXZhbHVlPV0KKyAgICAgY2F0Y2ggKCBZVUlFeGNlcHRpb24gZXhjZXB0aW9uICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+CisvaG9tZS9tYXJ4aW4vUHJvZ3JhbW1pbmcvbGlieXVpL3NyYy9ZRGlhbG9nLmNjOiBJbiBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uIOKAmHN0YXRpYyBib29sIFlEaWFsb2c6OnNob3dSZWxOb3Rlc1RleHQoKeKAmToKKy9ob21lL21hcnhpbi9Qcm9ncmFtbWluZy9saWJ5dWkvc3JjL1lEaWFsb2cuY2M6ODE0OjI2OiBlcnJvcjogY2F0Y2hpbmcgcG9seW1vcnBoaWMgdHlwZSDigJhjbGFzcyBZVUlFeGNlcHRpb27igJkgYnkgdmFsdWUgWy1XZXJyb3I9Y2F0Y2gtdmFsdWU9XQorICAgICBjYXRjaCAoIFlVSUV4Y2VwdGlvbiBleGNlcHRpb24gKQorICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJ5dWkvbGlieXVpL3B1bGwvMTIyXQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworIHNyYy9ZRGlhbG9nLmNjIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9ZRGlhbG9nLmNjIGIvc3JjL1lEaWFsb2cuY2MKK2luZGV4IDkyZTUwMzEuLjhlY2ZmOTAgMTAwNjQ0CistLS0gYS9zcmMvWURpYWxvZy5jYworKysrIGIvc3JjL1lEaWFsb2cuY2MKK0BAIC02ODcsNyArNjg3LDcgQEAgWURpYWxvZzo6c2hvd1RleHQoIGNvbnN0IHN0ZDo6c3RyaW5nICYgdGV4dCwgYm9vbCB1c2VSaWNoVGV4dCApCisgCWRpYWxvZy0+d2FpdEZvckV2ZW50KCk7CisgCWRpYWxvZy0+ZGVzdHJveSgpOworICAgICB9CistICAgIGNhdGNoICggWVVJRXhjZXB0aW9uIGV4Y2VwdGlvbiApCisrICAgIGNhdGNoICggWVVJRXhjZXB0aW9uICZleGNlcHRpb24gKQorICAgICB7CisgCS8vIERvbid0IGxldCB0aGUgYXBwbGljYXRpb24gZGllIGp1c3QgYmVjYXVzZSBoZWxwIGNvdWxkbid0IGJlIGRpc3BsYXllZC4KKyAKK0BAIC04MTEsNyArODExLDcgQEAgWURpYWxvZzo6c2hvd1JlbE5vdGVzVGV4dCgpCisgCX0KKyAgICAgICAgIGRpYWxvZy0+ZGVzdHJveSgpOworICAgICB9CistICAgIGNhdGNoICggWVVJRXhjZXB0aW9uIGV4Y2VwdGlvbiApCisrICAgIGNhdGNoICggWVVJRXhjZXB0aW9uICZleGNlcHRpb24gKQorICAgICB7CisgICAgICAgICAvLyBEb24ndCBsZXQgdGhlIGFwcGxpY2F0aW9uIGRpZSBqdXN0IGJlY2F1c2UgUk4gY291bGRuJ3QgYmUgZGlzcGxheWVkLgorIAorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyNjkwMTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmcucGF0Y2gKQEAgLTAsMCArMSw2ODcgQEAKK0Zyb20gMTg1NjI2NzE5ODJhZDk3NTQ5YmNjYjQ0NGZkYmI1OTA1YjZlOTMzNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI0IEFwciAyMDE4IDE1OjA2OjE0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIGNsYW5nCisKK0ZpeCB3YXJuaW5ncyBmb3VuZCB3aXRoIGNsYW5nCisKK2Vycm9yOiBjbGFzcyAnWUJ1dHRvbkJveFByaXZhdGUnIHdhcyBwcmV2aW91c2x5IGRlY2xhcmVkIGFzIGEgc3RydWN0IFstV2Vycm9yLC1XbWlzbWF0Y2hlZC10YWdzXQorfCAgICAgZnJpZW5kIGNsYXNzIFlCdXR0b25Cb3hQcml2YXRlOworCitZVGltZXpvbmVTZWxlY3Rvci5jYzozNTo5OiBlcnJvcjogcHJpdmF0ZSBmaWVsZCAnZHVtbXknIGlzIG5vdCB1c2VkIFstV2Vycm9yLC1XdW51c2VkLXByaXZhdGUtZmllbGRdCisgICBib29sIGR1bW15OworICAgICAgICBeCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbGlieXVpL2xpYnl1aS9wdWxsLzEyM10KKworIHNyYy9ZQWxpZ25tZW50LmggICAgICAgICAgfCAyICstCisgc3JjL1lCYXJHcmFwaC5oICAgICAgICAgICB8IDIgKy0KKyBzcmMvWUJ1c3lJbmRpY2F0b3IuaCAgICAgIHwgMiArLQorIHNyYy9ZQnV0dG9uQm94LmggICAgICAgICAgfCA0ICsrLS0KKyBzcmMvWUNoZWNrQm94LmggICAgICAgICAgIHwgMiArLQorIHNyYy9ZQ2hlY2tCb3hGcmFtZS5oICAgICAgfCAyICstCisgc3JjL1lDb21ib0JveC5oICAgICAgICAgICB8IDIgKy0KKyBzcmMvWUNvbW1hbmRMaW5lLmggICAgICAgIHwgMiArLQorIHNyYy9ZQ29udGV4dE1lbnUuaCAgICAgICAgfCAyICstCisgc3JjL1lEYXRlRmllbGQuaCAgICAgICAgICB8IDIgKy0KKyBzcmMvWURpYWxvZy5oICAgICAgICAgICAgIHwgMiArLQorIHNyYy9ZRG93bmxvYWRQcm9ncmVzcy5oICAgfCAyICstCisgc3JjL1lEdW1iVGFiLmggICAgICAgICAgICB8IDIgKy0KKyBzcmMvWUVtcHR5LmggICAgICAgICAgICAgIHwgMiArLQorIHNyYy9ZRXZlbnRGaWx0ZXIuaCAgICAgICAgfCAyICstCisgc3JjL1lGcmFtZS5oICAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvWUdyYXBoLmggICAgICAgICAgICAgIHwgMiArLQorIHNyYy9ZSW1hZ2UuaCAgICAgICAgICAgICAgfCAyICstCisgc3JjL1lJbnB1dEZpZWxkLmggICAgICAgICB8IDIgKy0KKyBzcmMvWUludEZpZWxkLmggICAgICAgICAgIHwgMiArLQorIHNyYy9ZTGFiZWwuaCAgICAgICAgICAgICAgfCAyICstCisgc3JjL1lMYXlvdXRCb3guaCAgICAgICAgICB8IDIgKy0KKyBzcmMvWUxvZ1ZpZXcuaCAgICAgICAgICAgIHwgMiArLQorIHNyYy9ZTWVudUJ1dHRvbi5oICAgICAgICAgfCAyICstCisgc3JjL1lNdWx0aUxpbmVFZGl0LmggICAgICB8IDIgKy0KKyBzcmMvWU11bHRpUHJvZ3Jlc3NNZXRlci5oIHwgMiArLQorIHNyYy9ZTXVsdGlTZWxlY3Rpb25Cb3guaCAgfCAyICstCisgc3JjL1lQYXJ0aXRpb25TcGxpdHRlci5oICB8IDIgKy0KKyBzcmMvWVByb2dyZXNzQmFyLmggICAgICAgIHwgMiArLQorIHNyYy9ZUHVzaEJ1dHRvbi5oICAgICAgICAgfCAyICstCisgc3JjL1lSYWRpb0J1dHRvbi5oICAgICAgICB8IDIgKy0KKyBzcmMvWVJhZGlvQnV0dG9uR3JvdXAuaCAgIHwgMiArLQorIHNyYy9ZUmljaFRleHQuaCAgICAgICAgICAgfCAyICstCisgc3JjL1lTZWxlY3Rpb25Cb3guaCAgICAgICB8IDIgKy0KKyBzcmMvWVNlbGVjdGlvbldpZGdldC5oICAgIHwgMiArLQorIHNyYy9ZU2ltcGxlSW5wdXRGaWVsZC5oICAgfCAyICstCisgc3JjL1lTbGlkZXIuaCAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvWVNwYWNpbmcuaCAgICAgICAgICAgIHwgMiArLQorIHNyYy9ZU3F1YXNoLmggICAgICAgICAgICAgfCAyICstCisgc3JjL1lUYWJsZS5oICAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvWVRhYmxlSGVhZGVyLmggICAgICAgIHwgMiArLQorIHNyYy9ZVGltZUZpZWxkLmggICAgICAgICAgfCAyICstCisgc3JjL1lUaW1lem9uZVNlbGVjdG9yLmNjICB8IDIgKy0KKyBzcmMvWVRyZWUuaCAgICAgICAgICAgICAgIHwgMiArLQorIHNyYy9ZVUlMb2cuaCAgICAgICAgICAgICAgfCAyICstCisgc3JjL1lXaWRnZXQuaCAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvWVdpemFyZC5oICAgICAgICAgICAgIHwgMiArLQorIDQ3IGZpbGVzIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL1lBbGlnbm1lbnQuaCBiL3NyYy9ZQWxpZ25tZW50LmgKK2luZGV4IGQ3MTZjNzcuLjcyNzY5NDQgMTAwNjQ0CistLS0gYS9zcmMvWUFsaWdubWVudC5oCisrKysgYi9zcmMvWUFsaWdubWVudC5oCitAQCAtMjgsNyArMjgsNyBAQAorICNpbmNsdWRlICJZU2luZ2xlQ2hpbGRDb250YWluZXJXaWRnZXQuaCIKKyAKKyAKKy1jbGFzcyBZQWxpZ25tZW50UHJpdmF0ZTsKKytzdHJ1Y3QgWUFsaWdubWVudFByaXZhdGU7CisgCisgLyoqCisgICogSW1wbGVtZW50YXRpb24gb2YgYWxsIHRoZSBhbGlnbm1lbnQgd2lkZ2V0czoKK2RpZmYgLS1naXQgYS9zcmMvWUJhckdyYXBoLmggYi9zcmMvWUJhckdyYXBoLmgKK2luZGV4IDI5ZjdmMjYuLmQ3ZWFhZDIgMTAwNjQ0CistLS0gYS9zcmMvWUJhckdyYXBoLmgKKysrKyBiL3NyYy9ZQmFyR3JhcGguaAorQEAgLTI5LDcgKzI5LDcgQEAKKyAjaW5jbHVkZSAiWUNvbG9yLmgiCisgCisgCistY2xhc3MgWUJhckdyYXBoUHJpdmF0ZTsKKytzdHJ1Y3QgWUJhckdyYXBoUHJpdmF0ZTsKKyBjbGFzcyBZQmFyR3JhcGhTZWdtZW50OworIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZQnVzeUluZGljYXRvci5oIGIvc3JjL1lCdXN5SW5kaWNhdG9yLmgKK2luZGV4IDk1MzBmYTUuLjc1Mjk3ZDggMTAwNjQ0CistLS0gYS9zcmMvWUJ1c3lJbmRpY2F0b3IuaAorKysrIGIvc3JjL1lCdXN5SW5kaWNhdG9yLmgKK0BAIC0yNyw3ICsyNyw3IEBACisgCisgI2luY2x1ZGUgIllXaWRnZXQuaCIKKyAKKy1jbGFzcyBZQnVzeUluZGljYXRvclByaXZhdGU7Cisrc3RydWN0IFlCdXN5SW5kaWNhdG9yUHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWUJ1dHRvbkJveC5oIGIvc3JjL1lCdXR0b25Cb3guaAoraW5kZXggODRmOGRiYi4uY2E1MWY1NyAxMDA2NDQKKy0tLSBhL3NyYy9ZQnV0dG9uQm94LmgKKysrKyBiL3NyYy9ZQnV0dG9uQm94LmgKK0BAIC0zMCw3ICszMCw3IEBACisgI2luY2x1ZGUgIllXaWRnZXQuaCIKKyAjaW5jbHVkZSAiWVB1c2hCdXR0b24uaCIKKyAKKy1jbGFzcyBZQnV0dG9uQm94UHJpdmF0ZTsKKytzdHJ1Y3QgWUJ1dHRvbkJveFByaXZhdGU7CisgY2xhc3MgWVB1c2hCdXR0b247CisgCisgCitAQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0cnVjdCBZQnV0dG9uQm94TWFyZ2lucworICAqKi8KKyBjbGFzcyBZQnV0dG9uQm94IDogcHVibGljIFlXaWRnZXQKKyB7CistICAgIGZyaWVuZCBjbGFzcyBZQnV0dG9uQm94UHJpdmF0ZTsKKysgICAgZnJpZW5kIHN0cnVjdCBZQnV0dG9uQm94UHJpdmF0ZTsKKyAKKyBwcm90ZWN0ZWQ6CisgICAgIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZQ2hlY2tCb3guaCBiL3NyYy9ZQ2hlY2tCb3guaAoraW5kZXggNzkzY2M3Ny4uMDNmM2ZhYSAxMDA2NDQKKy0tLSBhL3NyYy9ZQ2hlY2tCb3guaAorKysrIGIvc3JjL1lDaGVja0JveC5oCitAQCAtMzAsNyArMzAsNyBAQAorICNpbmNsdWRlICJZV2lkZ2V0LmgiCisgI2luY2x1ZGUgIkltcGxQdHIuaCIKKyAKKy1jbGFzcyBZQ2hlY2tCb3hQcml2YXRlOworK3N0cnVjdCBZQ2hlY2tCb3hQcml2YXRlOworIAorIGVudW0gWUNoZWNrQm94U3RhdGUKKyB7CitkaWZmIC0tZ2l0IGEvc3JjL1lDaGVja0JveEZyYW1lLmggYi9zcmMvWUNoZWNrQm94RnJhbWUuaAoraW5kZXggMjQzZjFhMC4uNzAxNzExMCAxMDA2NDQKKy0tLSBhL3NyYy9ZQ2hlY2tCb3hGcmFtZS5oCisrKysgYi9zcmMvWUNoZWNrQm94RnJhbWUuaAorQEAgLTI5LDcgKzI5LDcgQEAKKyAjaW5jbHVkZSAiWVNpbmdsZUNoaWxkQ29udGFpbmVyV2lkZ2V0LmgiCisgI2luY2x1ZGUgIkltcGxQdHIuaCIKKyAKKy1jbGFzcyBZQ2hlY2tCb3hGcmFtZVByaXZhdGU7Cisrc3RydWN0IFlDaGVja0JveEZyYW1lUHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWUNvbWJvQm94LmggYi9zcmMvWUNvbWJvQm94LmgKK2luZGV4IDQxNjM1OWEuLmFkMGU1NTAgMTAwNjQ0CistLS0gYS9zcmMvWUNvbWJvQm94LmgKKysrKyBiL3NyYy9ZQ29tYm9Cb3guaAorQEAgLTI3LDcgKzI3LDcgQEAKKyAKKyAjaW5jbHVkZSAiWVNlbGVjdGlvbldpZGdldC5oIgorIAorLWNsYXNzIFlDb21ib0JveFByaXZhdGU7Cisrc3RydWN0IFlDb21ib0JveFByaXZhdGU7CisgCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lDb21tYW5kTGluZS5oIGIvc3JjL1lDb21tYW5kTGluZS5oCitpbmRleCA3MGNiNGZlLi5mMzQ0YTNiIDEwMDY0NAorLS0tIGEvc3JjL1lDb21tYW5kTGluZS5oCisrKysgYi9zcmMvWUNvbW1hbmRMaW5lLmgKK0BAIC0yOCw3ICsyOCw3IEBACisgI2luY2x1ZGUgPHN0cmluZz4KKyAjaW5jbHVkZSAiSW1wbFB0ci5oIgorIAorLWNsYXNzIFlDb21tYW5kTGluZVByaXZhdGU7Cisrc3RydWN0IFlDb21tYW5kTGluZVByaXZhdGU7CisgCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lDb250ZXh0TWVudS5oIGIvc3JjL1lDb250ZXh0TWVudS5oCitpbmRleCBhNGFjYjFjLi4xMjUzMDAyIDEwMDY0NAorLS0tIGEvc3JjL1lDb250ZXh0TWVudS5oCisrKysgYi9zcmMvWUNvbnRleHRNZW51LmgKK0BAIC0yOSw3ICsyOSw3IEBACisgI2luY2x1ZGUgIllNZW51SXRlbS5oIgorIAorIGNsYXNzIFlNZW51SXRlbTsKKy1jbGFzcyBZQ29udGV4dE1lbnVQcml2YXRlOworK3N0cnVjdCBZQ29udGV4dE1lbnVQcml2YXRlOworIAorIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZRGF0ZUZpZWxkLmggYi9zcmMvWURhdGVGaWVsZC5oCitpbmRleCBlNWE0NjhkLi42MTY0ZmJhIDEwMDY0NAorLS0tIGEvc3JjL1lEYXRlRmllbGQuaAorKysrIGIvc3JjL1lEYXRlRmllbGQuaAorQEAgLTI3LDcgKzI3LDcgQEAKKyAKKyAjaW5jbHVkZSAiWVNpbXBsZUlucHV0RmllbGQuaCIKKyAKKy1jbGFzcyBZRGF0ZUZpZWxkUHJpdmF0ZTsKKytzdHJ1Y3QgWURhdGVGaWVsZFByaXZhdGU7CisgCisgLyoqCisgICogSW5wdXQgZmllbGQgZm9yIGVudGVyaW5nIGEgZGF0ZS4KK2RpZmYgLS1naXQgYS9zcmMvWURpYWxvZy5oIGIvc3JjL1lEaWFsb2cuaAoraW5kZXggNjZjMjVjMC4uMzcxMjA5YiAxMDA2NDQKKy0tLSBhL3NyYy9ZRGlhbG9nLmgKKysrKyBiL3NyYy9ZRGlhbG9nLmgKK0BAIC0zMiw3ICszMiw3IEBACisgCisgY2xhc3MgWVNob3J0Y3V0TWFuYWdlcjsKKyBjbGFzcyBZUHVzaEJ1dHRvbjsKKy1jbGFzcyBZRGlhbG9nUHJpdmF0ZTsKKytzdHJ1Y3QgWURpYWxvZ1ByaXZhdGU7CisgY2xhc3MgWUV2ZW50OworIGNsYXNzIFlFdmVudEZpbHRlcjsKKyAKK2RpZmYgLS1naXQgYS9zcmMvWURvd25sb2FkUHJvZ3Jlc3MuaCBiL3NyYy9ZRG93bmxvYWRQcm9ncmVzcy5oCitpbmRleCBjNDdlYzRmLi5mZTA5YTlkIDEwMDY0NAorLS0tIGEvc3JjL1lEb3dubG9hZFByb2dyZXNzLmgKKysrKyBiL3NyYy9ZRG93bmxvYWRQcm9ncmVzcy5oCitAQCAtMjgsNyArMjgsNyBAQAorICNpbmNsdWRlICJZV2lkZ2V0LmgiCisgCisgCistY2xhc3MgWURvd25sb2FkUHJvZ3Jlc3NQcml2YXRlOworK3N0cnVjdCBZRG93bmxvYWRQcm9ncmVzc1ByaXZhdGU7CisgCisgLyoqCisgICogRG93bmxvYWRQcm9ncmVzczogQSBwcm9ncmVzcyBiYXIgdGhhdCBtb25pdG9ycyBkb3dubG9hZGluZyBhIGZpbGUgYnkKK2RpZmYgLS1naXQgYS9zcmMvWUR1bWJUYWIuaCBiL3NyYy9ZRHVtYlRhYi5oCitpbmRleCBhZWMxN2EzLi5mOGZiMjUwIDEwMDY0NAorLS0tIGEvc3JjL1lEdW1iVGFiLmgKKysrKyBiL3NyYy9ZRHVtYlRhYi5oCitAQCAtMjcsNyArMjcsNyBAQAorIAorICNpbmNsdWRlICJZU2VsZWN0aW9uV2lkZ2V0LmgiCisgCistY2xhc3MgWUR1bWJUYWJQcml2YXRlOworK3N0cnVjdCBZRHVtYlRhYlByaXZhdGU7CisgCisgLyoqCisgICogRHVtYlRhYjogQSB2ZXJ5IHNpbXBsZSB0YWIgd2lkZ2V0IHRoYXQgY2FuIGRpc3BsYXkgYW5kIHN3aXRjaCBiZXR3ZWVuIGEKK2RpZmYgLS1naXQgYS9zcmMvWUVtcHR5LmggYi9zcmMvWUVtcHR5LmgKK2luZGV4IDlhM2NiMzYuLjliODhmYmMgMTAwNjQ0CistLS0gYS9zcmMvWUVtcHR5LmgKKysrKyBiL3NyYy9ZRW1wdHkuaAorQEAgLTI5LDcgKzI5LDcgQEAKKyAjaW5jbHVkZSAiSW1wbFB0ci5oIgorIAorIAorLWNsYXNzIFlFbXB0eVByaXZhdGU7Cisrc3RydWN0IFlFbXB0eVByaXZhdGU7CisgCisgLyoqCisgICogQSB3aWRnZXQgd2l0aCB6ZXJvIHNpemUsIHVzZWZ1bCBhcyBhIHBsYWNlaG9sZGVyLgorZGlmZiAtLWdpdCBhL3NyYy9ZRXZlbnRGaWx0ZXIuaCBiL3NyYy9ZRXZlbnRGaWx0ZXIuaAoraW5kZXggM2RjMTgwMy4uNzRhYTYyZCAxMDA2NDQKKy0tLSBhL3NyYy9ZRXZlbnRGaWx0ZXIuaAorKysrIGIvc3JjL1lFdmVudEZpbHRlci5oCitAQCAtMzIsNyArMzIsNyBAQAorIGNsYXNzIFlFdmVudDsKKyBjbGFzcyBZRGlhbG9nOworIAorLWNsYXNzIFlFdmVudEZpbHRlclByaXZhdGU7Cisrc3RydWN0IFlFdmVudEZpbHRlclByaXZhdGU7CisgCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lGcmFtZS5oIGIvc3JjL1lGcmFtZS5oCitpbmRleCAxMTFlOGVjLi40ZjhjNjFlIDEwMDY0NAorLS0tIGEvc3JjL1lGcmFtZS5oCisrKysgYi9zcmMvWUZyYW1lLmgKK0BAIC0yOSw3ICsyOSw3IEBACisgI2luY2x1ZGUgIllTaW5nbGVDaGlsZENvbnRhaW5lcldpZGdldC5oIgorICNpbmNsdWRlICJJbXBsUHRyLmgiCisgCistY2xhc3MgWUZyYW1lUHJpdmF0ZTsKKytzdHJ1Y3QgWUZyYW1lUHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWUdyYXBoLmggYi9zcmMvWUdyYXBoLmgKK2luZGV4IGQ5MGQxYWUuLjI4N2Q4MDAgMTAwNjQ0CistLS0gYS9zcmMvWUdyYXBoLmgKKysrKyBiL3NyYy9ZR3JhcGguaAorQEAgLTM3LDcgKzM3LDcgQEAKKyAgKiBGb3IgdGhhdCByZWFzb24gYSBsb3Qgb2YgZnVuY3Rpb25zIHNpbXBseSB0YWtlIGEgdm9pZCogaW5zdGVhZCBvZiBncmFwaF90Ki4KKyAgKi8KKyAKKy1jbGFzcyBZR3JhcGhQcml2YXRlOworK3N0cnVjdCBZR3JhcGhQcml2YXRlOworIAorIC8qKgorICAqIEEgZ3JhcGggd2l0aCBub2RlcyBhbmQgZWRnZXMsIHJlbmRlcmVkIHdpdGggR3JhcGh2aXouCitkaWZmIC0tZ2l0IGEvc3JjL1lJbWFnZS5oIGIvc3JjL1lJbWFnZS5oCitpbmRleCAxN2JlYTIxLi44NGViNjc0IDEwMDY0NAorLS0tIGEvc3JjL1lJbWFnZS5oCisrKysgYi9zcmMvWUltYWdlLmgKK0BAIC0yOSw3ICsyOSw3IEBACisgI2luY2x1ZGUgPHN0cmluZz4KKyAKKyAKKy1jbGFzcyBZSW1hZ2VQcml2YXRlOworK3N0cnVjdCBZSW1hZ2VQcml2YXRlOworIAorIC8qKgorICAqIEEgcGljdHVyZSwgcG9zc2libHkgYW5pbWF0ZWQsIGxvYWRlZCBmcm9tIGEgZmlsZS4KK2RpZmYgLS1naXQgYS9zcmMvWUlucHV0RmllbGQuaCBiL3NyYy9ZSW5wdXRGaWVsZC5oCitpbmRleCA3MDY0MWNlLi5mYTI5YjQyIDEwMDY0NAorLS0tIGEvc3JjL1lJbnB1dEZpZWxkLmgKKysrKyBiL3NyYy9ZSW5wdXRGaWVsZC5oCitAQCAtMjgsNyArMjgsNyBAQAorICNpbmNsdWRlIDxzdHJpbmc+CisgI2luY2x1ZGUgIllXaWRnZXQuaCIKKyAKKy1jbGFzcyBZSW5wdXRGaWVsZFByaXZhdGU7Cisrc3RydWN0IFlJbnB1dEZpZWxkUHJpdmF0ZTsKKyAKKyAKKyAKK2RpZmYgLS1naXQgYS9zcmMvWUludEZpZWxkLmggYi9zcmMvWUludEZpZWxkLmgKK2luZGV4IDlkYTA1MzcuLjhhZDI5NDkgMTAwNjQ0CistLS0gYS9zcmMvWUludEZpZWxkLmgKKysrKyBiL3NyYy9ZSW50RmllbGQuaAorQEAgLTI3LDcgKzI3LDcgQEAKKyAKKyAjaW5jbHVkZSAiWVdpZGdldC5oIgorIAorLWNsYXNzIFlJbnRGaWVsZFByaXZhdGU7Cisrc3RydWN0IFlJbnRGaWVsZFByaXZhdGU7CisgCisgCisgCitkaWZmIC0tZ2l0IGEvc3JjL1lMYWJlbC5oIGIvc3JjL1lMYWJlbC5oCitpbmRleCBkMmZmZjYxLi5iZjA2ZDhiIDEwMDY0NAorLS0tIGEvc3JjL1lMYWJlbC5oCisrKysgYi9zcmMvWUxhYmVsLmgKK0BAIC0zMCw3ICszMCw3IEBACisgI2luY2x1ZGUgIkltcGxQdHIuaCIKKyAKKyAKKy1jbGFzcyBZTGFiZWxQcml2YXRlOworK3N0cnVjdCBZTGFiZWxQcml2YXRlOworIAorIC8qKgorICAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBMYWJlbCwgSGVhZGluZyBhbmQgT3V0cHV0RmllbGQgd2lkZ2V0cworZGlmZiAtLWdpdCBhL3NyYy9ZTGF5b3V0Qm94LmggYi9zcmMvWUxheW91dEJveC5oCitpbmRleCBlNjUyYTQ1Li4wNzBlYWZmIDEwMDY0NAorLS0tIGEvc3JjL1lMYXlvdXRCb3guaAorKysrIGIvc3JjL1lMYXlvdXRCb3guaAorQEAgLTI5LDcgKzI5LDcgQEAKKyAjaW5jbHVkZSAiWVdpZGdldC5oIgorIAorIAorLWNsYXNzIFlMYXlvdXRCb3hQcml2YXRlOworK3N0cnVjdCBZTGF5b3V0Qm94UHJpdmF0ZTsKKyAKKyAvKioKKyAgKiBBIHZlcnRpY2FsIG9yIGhvcml6b250YWwgc3RhY2tpbmcgb2Ygd2lkZ2V0cywgaW1wbGVtZW50aW5nIEhCb3ggYW5kIFZCb3guCitkaWZmIC0tZ2l0IGEvc3JjL1lMb2dWaWV3LmggYi9zcmMvWUxvZ1ZpZXcuaAoraW5kZXggNTNmYjllZS4uNWI0NDIyOSAxMDA2NDQKKy0tLSBhL3NyYy9ZTG9nVmlldy5oCisrKysgYi9zcmMvWUxvZ1ZpZXcuaAorQEAgLTI3LDcgKzI3LDcgQEAKKyAKKyAjaW5jbHVkZSAiWVdpZGdldC5oIgorIAorLWNsYXNzIFlMb2dWaWV3UHJpdmF0ZTsKKytzdHJ1Y3QgWUxvZ1ZpZXdQcml2YXRlOworIAorIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZTWVudUJ1dHRvbi5oIGIvc3JjL1lNZW51QnV0dG9uLmgKK2luZGV4IDIwNWU3MzAuLjVkZjdlZmIgMTAwNjQ0CistLS0gYS9zcmMvWU1lbnVCdXR0b24uaAorKysrIGIvc3JjL1lNZW51QnV0dG9uLmgKK0BAIC0yOSw3ICsyOSw3IEBACisgI2luY2x1ZGUgIllNZW51SXRlbS5oIgorIAorIGNsYXNzIFlNZW51SXRlbTsKKy1jbGFzcyBZTWVudUJ1dHRvblByaXZhdGU7Cisrc3RydWN0IFlNZW51QnV0dG9uUHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWU11bHRpTGluZUVkaXQuaCBiL3NyYy9ZTXVsdGlMaW5lRWRpdC5oCitpbmRleCBjNTJhNmFlLi4xZjc5MmY4IDEwMDY0NAorLS0tIGEvc3JjL1lNdWx0aUxpbmVFZGl0LmgKKysrKyBiL3NyYy9ZTXVsdGlMaW5lRWRpdC5oCitAQCAtMjcsNyArMjcsNyBAQAorIAorICNpbmNsdWRlICJZV2lkZ2V0LmgiCisgCistY2xhc3MgWU11bHRpTGluZUVkaXRQcml2YXRlOworK3N0cnVjdCBZTXVsdGlMaW5lRWRpdFByaXZhdGU7CisgCisgLyoqCisgICogQSBtdWx0aS1saW5lIHBsYWluLXRleHQgYXJlYQorZGlmZiAtLWdpdCBhL3NyYy9ZTXVsdGlQcm9ncmVzc01ldGVyLmggYi9zcmMvWU11bHRpUHJvZ3Jlc3NNZXRlci5oCitpbmRleCA1N2M3NThkLi5mNmJlYzkxIDEwMDY0NAorLS0tIGEvc3JjL1lNdWx0aVByb2dyZXNzTWV0ZXIuaAorKysrIGIvc3JjL1lNdWx0aVByb2dyZXNzTWV0ZXIuaAorQEAgLTI4LDcgKzI4LDcgQEAKKyAjaW5jbHVkZSAiWVdpZGdldC5oIgorICNpbmNsdWRlIDx2ZWN0b3I+CisgCistY2xhc3MgWU11bHRpUHJvZ3Jlc3NNZXRlclByaXZhdGU7Cisrc3RydWN0IFlNdWx0aVByb2dyZXNzTWV0ZXJQcml2YXRlOworIAorIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZTXVsdGlTZWxlY3Rpb25Cb3guaCBiL3NyYy9ZTXVsdGlTZWxlY3Rpb25Cb3guaAoraW5kZXggYmJlNWEyMC4uZjNhMjk0NyAxMDA2NDQKKy0tLSBhL3NyYy9ZTXVsdGlTZWxlY3Rpb25Cb3guaAorKysrIGIvc3JjL1lNdWx0aVNlbGVjdGlvbkJveC5oCitAQCAtMjcsNyArMjcsNyBAQAorIAorICNpbmNsdWRlICJZU2VsZWN0aW9uV2lkZ2V0LmgiCisgCistY2xhc3MgWU11bHRpU2VsZWN0aW9uQm94UHJpdmF0ZTsKKytzdHJ1Y3QgWU11bHRpU2VsZWN0aW9uQm94UHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWVBhcnRpdGlvblNwbGl0dGVyLmggYi9zcmMvWVBhcnRpdGlvblNwbGl0dGVyLmgKK2luZGV4IDI4MzliYmMuLjlkZTExNzQgMTAwNjQ0CistLS0gYS9zcmMvWVBhcnRpdGlvblNwbGl0dGVyLmgKKysrKyBiL3NyYy9ZUGFydGl0aW9uU3BsaXR0ZXIuaAorQEAgLTI4LDcgKzI4LDcgQEAKKyAjaW5jbHVkZSAiWVdpZGdldC5oIgorIAorIAorLWNsYXNzIFlQYXJ0aXRpb25TcGxpdHRlclByaXZhdGU7Cisrc3RydWN0IFlQYXJ0aXRpb25TcGxpdHRlclByaXZhdGU7CisgCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lQcm9ncmVzc0Jhci5oIGIvc3JjL1lQcm9ncmVzc0Jhci5oCitpbmRleCA3MTgzNTJmLi5iYWFiNjYyIDEwMDY0NAorLS0tIGEvc3JjL1lQcm9ncmVzc0Jhci5oCisrKysgYi9zcmMvWVByb2dyZXNzQmFyLmgKK0BAIC0yNyw3ICsyNyw3IEBACisgCisgI2luY2x1ZGUgIllXaWRnZXQuaCIKKyAKKy1jbGFzcyBZUHJvZ3Jlc3NCYXJQcml2YXRlOworK3N0cnVjdCBZUHJvZ3Jlc3NCYXJQcml2YXRlOworIAorIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZUHVzaEJ1dHRvbi5oIGIvc3JjL1lQdXNoQnV0dG9uLmgKK2luZGV4IDViNjVjOTguLmUyODgyNTIgMTAwNjQ0CistLS0gYS9zcmMvWVB1c2hCdXR0b24uaAorKysrIGIvc3JjL1lQdXNoQnV0dG9uLmgKK0BAIC0yNyw3ICsyNyw3IEBACisgCisgI2luY2x1ZGUgIllXaWRnZXQuaCIKKyAKKy1jbGFzcyBZUHVzaEJ1dHRvblByaXZhdGU7Cisrc3RydWN0IFlQdXNoQnV0dG9uUHJpdmF0ZTsKKyAKKyAKKyAKK2RpZmYgLS1naXQgYS9zcmMvWVJhZGlvQnV0dG9uLmggYi9zcmMvWVJhZGlvQnV0dG9uLmgKK2luZGV4IDlkYzYyZGUuLjVhN2MwZGQgMTAwNjQ0CistLS0gYS9zcmMvWVJhZGlvQnV0dG9uLmgKKysrKyBiL3NyYy9ZUmFkaW9CdXR0b24uaAorQEAgLTI4LDcgKzI4LDcgQEAKKyAjaW5jbHVkZSAiWVdpZGdldC5oIgorIAorIGNsYXNzIFlSYWRpb0J1dHRvbkdyb3VwOworLWNsYXNzIFlSYWRpb0J1dHRvblByaXZhdGU7Cisrc3RydWN0IFlSYWRpb0J1dHRvblByaXZhdGU7CisgCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lSYWRpb0J1dHRvbkdyb3VwLmggYi9zcmMvWVJhZGlvQnV0dG9uR3JvdXAuaAoraW5kZXggMDYzYTUyZS4uNjcxYTI1NyAxMDA2NDQKKy0tLSBhL3NyYy9ZUmFkaW9CdXR0b25Hcm91cC5oCisrKysgYi9zcmMvWVJhZGlvQnV0dG9uR3JvdXAuaAorQEAgLTI4LDcgKzI4LDcgQEAKKyAjaW5jbHVkZSAiWVNpbmdsZUNoaWxkQ29udGFpbmVyV2lkZ2V0LmgiCisgCisgY2xhc3MgWVJhZGlvQnV0dG9uOworLWNsYXNzIFlSYWRpb0J1dHRvbkdyb3VwUHJpdmF0ZTsKKytzdHJ1Y3QgWVJhZGlvQnV0dG9uR3JvdXBQcml2YXRlOworIAorIHR5cGVkZWYgc3RkOjpsaXN0PFlSYWRpb0J1dHRvbiAqPiAJCVlSYWRpb0J1dHRvbkxpc3Q7CisgdHlwZWRlZiBZUmFkaW9CdXR0b25MaXN0OjppdGVyYXRvcgkJWVJhZGlvQnV0dG9uTGlzdEl0ZXJhdG9yOworZGlmZiAtLWdpdCBhL3NyYy9ZUmljaFRleHQuaCBiL3NyYy9ZUmljaFRleHQuaAoraW5kZXggMTQ5YmZiMy4uODZiM2Y4MCAxMDA2NDQKKy0tLSBhL3NyYy9ZUmljaFRleHQuaAorKysrIGIvc3JjL1lSaWNoVGV4dC5oCitAQCAtMzAsNyArMzAsNyBAQAorICNpbmNsdWRlICJJbXBsUHRyLmgiCisgCisgCistY2xhc3MgWVJpY2hUZXh0UHJpdmF0ZTsKKytzdHJ1Y3QgWVJpY2hUZXh0UHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWVNlbGVjdGlvbkJveC5oIGIvc3JjL1lTZWxlY3Rpb25Cb3guaAoraW5kZXggN2ZjNGZiOC4uOWJiZjlmMyAxMDA2NDQKKy0tLSBhL3NyYy9ZU2VsZWN0aW9uQm94LmgKKysrKyBiL3NyYy9ZU2VsZWN0aW9uQm94LmgKK0BAIC0yNyw3ICsyNyw3IEBACisgCisgI2luY2x1ZGUgIllTZWxlY3Rpb25XaWRnZXQuaCIKKyAKKy1jbGFzcyBZU2VsZWN0aW9uQm94UHJpdmF0ZTsKKytzdHJ1Y3QgWVNlbGVjdGlvbkJveFByaXZhdGU7CisgCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lTZWxlY3Rpb25XaWRnZXQuaCBiL3NyYy9ZU2VsZWN0aW9uV2lkZ2V0LmgKK2luZGV4IGFiYmRmYjQuLmNmMDVhZmQgMTAwNjQ0CistLS0gYS9zcmMvWVNlbGVjdGlvbldpZGdldC5oCisrKysgYi9zcmMvWVNlbGVjdGlvbldpZGdldC5oCitAQCAtMjksNyArMjksNyBAQAorICNpbmNsdWRlICJZSXRlbS5oIgorICNpbmNsdWRlICJJbXBsUHRyLmgiCisgCistY2xhc3MgWVNlbGVjdGlvbldpZGdldFByaXZhdGU7Cisrc3RydWN0IFlTZWxlY3Rpb25XaWRnZXRQcml2YXRlOworIAorIC8qKgorICAqIEJhc2UgY2xhc3MgZm9yIHZhcmlvdXMga2luZHMgb2YgbXVsdGktdmFsdWUgd2lkZ2V0cy4KK2RpZmYgLS1naXQgYS9zcmMvWVNpbXBsZUlucHV0RmllbGQuaCBiL3NyYy9ZU2ltcGxlSW5wdXRGaWVsZC5oCitpbmRleCA2ZDkyNmQ0Li5iOTNmZTZiIDEwMDY0NAorLS0tIGEvc3JjL1lTaW1wbGVJbnB1dEZpZWxkLmgKKysrKyBiL3NyYy9ZU2ltcGxlSW5wdXRGaWVsZC5oCitAQCAtMjcsNyArMjcsNyBAQAorIAorICNpbmNsdWRlICJZV2lkZ2V0LmgiCisgCistY2xhc3MgWVNpbXBsZUlucHV0RmllbGRQcml2YXRlOworK3N0cnVjdCBZU2ltcGxlSW5wdXRGaWVsZFByaXZhdGU7CisgCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lTbGlkZXIuaCBiL3NyYy9ZU2xpZGVyLmgKK2luZGV4IGQyOWY2YjguLjRiY2Q3ZDMgMTAwNjQ0CistLS0gYS9zcmMvWVNsaWRlci5oCisrKysgYi9zcmMvWVNsaWRlci5oCitAQCAtMjcsNyArMjcsNyBAQAorIAorICNpbmNsdWRlICJZSW50RmllbGQuaCIKKyAKKy1jbGFzcyBZU2xpZGVyUHJpdmF0ZTsKKytzdHJ1Y3QgWVNsaWRlclByaXZhdGU7CisgCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lTcGFjaW5nLmggYi9zcmMvWVNwYWNpbmcuaAoraW5kZXggZThhYWZkMy4uMDY2Y2Q2OCAxMDA2NDQKKy0tLSBhL3NyYy9ZU3BhY2luZy5oCisrKysgYi9zcmMvWVNwYWNpbmcuaAorQEAgLTI4LDcgKzI4LDcgQEAKKyAjaW5jbHVkZSAiWVdpZGdldC5oIgorICNpbmNsdWRlICJJbXBsUHRyLmgiCisgCistY2xhc3MgWVNwYWNpbmdQcml2YXRlOworK3N0cnVjdCBZU3BhY2luZ1ByaXZhdGU7CisgCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lTcXVhc2guaCBiL3NyYy9ZU3F1YXNoLmgKK2luZGV4IDRiZDBmYjYuLjM4MDRjYzQgMTAwNjQ0CistLS0gYS9zcmMvWVNxdWFzaC5oCisrKysgYi9zcmMvWVNxdWFzaC5oCitAQCAtMjksNyArMjksNyBAQAorICNpbmNsdWRlICJJbXBsUHRyLmgiCisgCisgCistY2xhc3MgWVNxdWFzaFByaXZhdGU7Cisrc3RydWN0IFlTcXVhc2hQcml2YXRlOworIAorIC8qKgorICAqIEhTcXVhc2gsIFZTcXVhc2ggSFZTcXVhc2g6IHJlZHVjZSBjaGlsZCB0byBpdHMgcHJlZmVycmVkIHNpemUuCitkaWZmIC0tZ2l0IGEvc3JjL1lUYWJsZS5oIGIvc3JjL1lUYWJsZS5oCitpbmRleCA2Njk0ZjEwLi40NjliOGNhIDEwMDY0NAorLS0tIGEvc3JjL1lUYWJsZS5oCisrKysgYi9zcmMvWVRhYmxlLmgKK0BAIC0zMCw3ICszMCw3IEBACisgI2luY2x1ZGUgIllUYWJsZUl0ZW0uaCIKKyAjaW5jbHVkZSAiWVRhYmxlSGVhZGVyLmgiCisgCistY2xhc3MgWVRhYmxlUHJpdmF0ZTsKKytzdHJ1Y3QgWVRhYmxlUHJpdmF0ZTsKKyAKKyAKKyAKK2RpZmYgLS1naXQgYS9zcmMvWVRhYmxlSGVhZGVyLmggYi9zcmMvWVRhYmxlSGVhZGVyLmgKK2luZGV4IDcwMTY2YzIuLjRhZTk5YjQgMTAwNjQ0CistLS0gYS9zcmMvWVRhYmxlSGVhZGVyLmgKKysrKyBiL3NyYy9ZVGFibGVIZWFkZXIuaAorQEAgLTMxLDcgKzMxLDcgQEAKKyAKKyAKKyAKKy1jbGFzcyBZVGFibGVIZWFkZXJQcml2YXRlOworK3N0cnVjdCBZVGFibGVIZWFkZXJQcml2YXRlOworIAorIC8qKgorICAqIEhlbHBlciBjbGFzcyBmb3IgWVRhYmxlIGZvciB0YWJsZSBjb2x1bW4gcHJvcGVydGllczoKK2RpZmYgLS1naXQgYS9zcmMvWVRpbWVGaWVsZC5oIGIvc3JjL1lUaW1lRmllbGQuaAoraW5kZXggYWIyZjlhMy4uZjNhN2I5NCAxMDA2NDQKKy0tLSBhL3NyYy9ZVGltZUZpZWxkLmgKKysrKyBiL3NyYy9ZVGltZUZpZWxkLmgKK0BAIC0yNyw3ICsyNyw3IEBACisgCisgI2luY2x1ZGUgIllTaW1wbGVJbnB1dEZpZWxkLmgiCisgCistY2xhc3MgWVRpbWVGaWVsZFByaXZhdGU7Cisrc3RydWN0IFlUaW1lRmllbGRQcml2YXRlOworIAorIAorIC8qKgorZGlmZiAtLWdpdCBhL3NyYy9ZVGltZXpvbmVTZWxlY3Rvci5jYyBiL3NyYy9ZVGltZXpvbmVTZWxlY3Rvci5jYworaW5kZXggOTI1OWI2NC4uZTJmOWI2ZiAxMDA2NDQKKy0tLSBhL3NyYy9ZVGltZXpvbmVTZWxlY3Rvci5jYworKysrIGIvc3JjL1lUaW1lem9uZVNlbGVjdG9yLmNjCitAQCAtMzIsNyArMzIsNyBAQAorIAorIGNsYXNzIFlUaW1lem9uZVNlbGVjdG9yUHJpdmF0ZQorIHsKKy0gICBib29sIGR1bW15OworKy8vICAgYm9vbCBkdW1teTsKKyB9OworIAorIAorZGlmZiAtLWdpdCBhL3NyYy9ZVHJlZS5oIGIvc3JjL1lUcmVlLmgKK2luZGV4IDE0ZmEyNzkuLjcwZTEzNjQgMTAwNjQ0CistLS0gYS9zcmMvWVRyZWUuaAorKysrIGIvc3JjL1lUcmVlLmgKK0BAIC0yOCw3ICsyOCw3IEBACisgI2luY2x1ZGUgIllTZWxlY3Rpb25XaWRnZXQuaCIKKyAKKyBjbGFzcyBZVHJlZUl0ZW07CistY2xhc3MgWVRyZWVQcml2YXRlOworK3N0cnVjdCBZVHJlZVByaXZhdGU7CisgCisgCisgLyoqCitkaWZmIC0tZ2l0IGEvc3JjL1lVSUxvZy5oIGIvc3JjL1lVSUxvZy5oCitpbmRleCAwODkwYmM1Li40YTkyN2E3IDEwMDY0NAorLS0tIGEvc3JjL1lVSUxvZy5oCisrKysgYi9zcmMvWVVJTG9nLmgKK0BAIC02NCw3ICs2NCw3IEBACisgCisgCisgCistY2xhc3MgWVVJTG9nUHJpdmF0ZTsKKytzdHJ1Y3QgWVVJTG9nUHJpdmF0ZTsKKyAKKyBlbnVtIFlVSUxvZ0xldmVsX3QKKyB7CitkaWZmIC0tZ2l0IGEvc3JjL1lXaWRnZXQuaCBiL3NyYy9ZV2lkZ2V0LmgKK2luZGV4IDViMjg1ZDAuLjYzNmE0MWIgMTAwNjQ0CistLS0gYS9zcmMvWVdpZGdldC5oCisrKysgYi9zcmMvWVdpZGdldC5oCitAQCAtNDUsNyArNDUsNyBAQCB0eXBlZGVmIFlDaGlsZHJlbk1hbmFnZXI8WVdpZGdldD4JWVdpZGdldENoaWxkcmVuTWFuYWdlcjsKKyB0eXBlZGVmIFlTaW5nbGVDaGlsZE1hbmFnZXI8WVdpZGdldD4JWVNpbmdsZVdpZGdldENoaWxkTWFuYWdlcjsKKyB0eXBlZGVmIFlDaGlsZHJlblJlamVjdG9yPFlXaWRnZXQ+CVlXaWRnZXRDaGlsZHJlblJlamVjdG9yOworIAorLWNsYXNzIFlXaWRnZXRQcml2YXRlOworK3N0cnVjdCBZV2lkZ2V0UHJpdmF0ZTsKKyAKKyAKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvWVdpemFyZC5oIGIvc3JjL1lXaXphcmQuaAoraW5kZXggNzY3MWNiZi4uOTc1YjU5NyAxMDA2NDQKKy0tLSBhL3NyYy9ZV2l6YXJkLmgKKysrKyBiL3NyYy9ZV2l6YXJkLmgKK0BAIC0yOCw3ICsyOCw3IEBACisgI2luY2x1ZGUgIllXaWRnZXQuaCIKKyAKKyBjbGFzcyBZTWFjcm9SZWNvcmRlcjsKKy1jbGFzcyBZV2l6YXJkUHJpdmF0ZTsKKytzdHJ1Y3QgWVdpemFyZFByaXZhdGU7CisgY2xhc3MgWVB1c2hCdXR0b247CisgY2xhc3MgWVJlcGxhY2VQb2ludDsKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWlfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aV9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI5NDUyOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWlfZ2l0LmJiCkBAIC0wLDAgKzEsNDEgQEAKK1NVTU1BUlkgPSAiTGlieXVpIGlzIGEgd2lkZ2V0IGFic3RyYWN0aW9uIGxpYnJhcnkgcHJvdmlkaW5nIFF0LCBHVEsgYW5kIG5jdXJzZXMgZnJvbnRlbmRzLiIKK0xJQ0VOU0UgPSAiTEdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5ncGwtMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5sZ3BsLTIuMTttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5sZ3BsLTM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIFwKKyAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saWJ5dWkvbGlieXVpLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1HQ0MtOC13YXJuaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmcucGF0Y2ggXAorICAgICAgICAgICAiCisKK1BWID0gIjMuMy4zK2dpdCIKK1NSQ1JFViA9ICIyYjYzNGNiNzgyMWUyZTc5ZGQ0YjdhNzNjYWY4ZTY3YzUwMTg5Mzc2IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIGdldHRleHQgcGtnY29uZmlnCisKK0RFUEVORFMgKz0gImJvb3N0IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKyAgICAgICAgY2QgJHtTfQorICAgICAgICAuL2Jvb3RzdHJhcC5zaAorICAgICAgICBjZCAtCit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICAgICAgaWYgWyAiJHtsaWJkaXJ9IiA9ICIke2Jhc2VfcHJlZml4fS91c3IvbGliIiBdICYmIFsgLWQgJHtEfS91c3IvbGliNjQgXTsgdGhlbgorICAgICAgICAgICAgbXYgJHtEfS91c3IvbGliNjQgJHtEfS91c3IvbGliCisgICAgICAgIGZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7CisgICAgICAgIG1rZGlyIC1wICR7RH0vJHtiYXNlX3ByZWZpeH0KKyAgICAgICAgbXYgJHtEfS91c3IgJHtEfS8ke2Jhc2VfcHJlZml4fQorfQorCitGSUxFU18ke1BOfS1kZXYgPSAiJHtsaWJkaXJ9LyogJHtpbmNsdWRlZGlyfS95dWkqIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmJveC9vcGVuYm94XzMuNi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmJveC9vcGVuYm94XzMuNi4xLmJiCmluZGV4IGIzNTRhZTcuLmMzNWEwYzcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5ib3gvb3BlbmJveF8zLjYuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuYm94L29wZW5ib3hfMy42LjEuYmIKQEAgLTE2LDkgKzE2LDExIEBACiAjIGRlcGVuZHMgb24gdmlydHVhbC9saWJ4MTEKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKLUFMVEVSTkFUSVZFXyR7UE59LWNvcmUgPSAieC13aW5kb3ctbWFuYWdlciIKK0FMVEVSTkFUSVZFXyR7UE59LWNvcmUgPSAieC13aW5kb3ctbWFuYWdlciB4LXNlc3Npb24tbWFuYWdlciIKIEFMVEVSTkFUSVZFX1RBUkdFVFt4LXdpbmRvdy1tYW5hZ2VyXSA9ICIke2JpbmRpcn0vb3BlbmJveCIKIEFMVEVSTkFUSVZFX1BSSU9SSVRZW3gtd2luZG93LW1hbmFnZXJdID0gIjEwIgorQUxURVJOQVRJVkVfVEFSR0VUW3gtc2Vzc2lvbi1tYW5hZ2VyXSA9ICIke2JpbmRpcn0vb3BlbmJveC1zZXNzaW9uIgorQUxURVJOQVRJVkVfUFJJT1JJVFlbeC1zZXNzaW9uLW1hbmFnZXJdID0gIjEwMCIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiIKIFBBQ0tBR0VDT05GSUdbaW1saWIyXSA9ICItLWVuYWJsZS1pbWxpYjIsLS1kaXNhYmxlLWltbGliMixpbWxpYjIiCkBAIC0zOCw3ICs0MCw3IEBACiB9CiAKIFJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1jb3JlICR7UE59LWNvbmZpZyAke1BOfS10aGVtZS1jbGVhcmxvb2tzIgotRklMRVNfJHtQTn0tY29yZSA9ICIke2JpbmRpcn0vb3BlbmJveCAke2xpYmRpcn0vKiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWNvcmUgPSAiJHtiaW5kaXJ9L29wZW5ib3ggJHtiaW5kaXJ9L29wZW5ib3gtc2Vzc2lvbiAke2xpYmRpcn0vKiR7U09MSUJTfSIKIAogRklMRVNfJHtQTn0tbHhkZSArPSAiJHtkYXRhZGlyfS9seGRlLyBcCiAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2x4cGFuZWwgXApAQCAtNDYsNiArNDgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9pY29ucyIKIAogRklMRVNfJHtQTn0tZ25vbWUgKz0gIiBcCisgICAgJHtiaW5kaXJ9L29wZW5ib3gtZ25vbWUtc2Vzc2lvbiBcCiAgICAgJHtkYXRhZGlyfS9nbm9tZSBcCiAgICAgJHtkYXRhZGlyfS9nbm9tZS1zZXNzaW9uIFwKICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWZvbnRzLXRydWV0eXBlLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZm9udHMtdHJ1ZXR5cGUuYmIKaW5kZXggNjMyZTdkNC4uMzA2OWQyZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZm9udHMtdHJ1ZXR5cGUuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZm9udHMtdHJ1ZXR5cGUuYmIKQEAgLTUsNyArNSw3IEBACiBQViA9ICIxLjAiCiBQUiA9ICJyMiIKIAotaW5oZXJpdCBwYWNrYWdlZ3JvdXAgYWxsYXJjaAoraW5oZXJpdCBwYWNrYWdlZ3JvdXAKIAogUEFDS0FHRVMgKz0gIlwKICAgICAke1BOfS1jb3JlIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvbW1fMi40MC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29tbV8yLjQwLjEuYmIKaW5kZXggMDJiYjFjYy4uZTBmNzJjZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29tbV8yLjQwLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29tbV8yLjQwLjEuYmIKQEAgLTEyLDcgKzEyLDkgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICI4NzRlYWRkOTQzNDYxM2RiYWNmMDI3MmM4MmMzYWMyMyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NzYyZWUyYTJkNTc4MWJlNjc5NzQ0OGQ0ZGQyMzgzY2UxNDkwNzE1OWIzMGJjMTJiZjZiMDhlNzIyN2JlM2FmIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBwa2djb25maWcKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAogRVhUUkFfT0VDT05GID0gIiAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3FyZW5jb2RlL3FyZW5jb2RlX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3FyZW5jb2RlL3FyZW5jb2RlX2dpdC5iYgppbmRleCA2YTE1OWE3Li5mNTM5Nzc1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9xcmVuY29kZS9xcmVuY29kZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcXJlbmNvZGUvcXJlbmNvZGVfZ2l0LmJiCkBAIC00LDkgKzQsOSBAQAogU0VDVElPTiA9ICJsaWJzIgogTElDRU5TRSA9ICJMR1BMdjIuMSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgotUFYgPSAiMy40LjQrZ2l0JHtTUkNQVn0iCitQViA9ICI0LjAuMCtnaXQke1NSQ1BWfSIKIAotU1JDUkVWID0gIjFiNTY1YzdiNTk5MDI5ODE4ZmM1OTZlN2RhNDM3MWEzMDgzZGEzNmMiCitTUkNSRVYgPSAiMDdmM2M1ZDRiZjkxMzY3MTE0MjJjYzdkYmYyOGFmZjQ2OWRhMjIwYSIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9mdWt1Y2hpL2xpYnFyZW5jb2RlLmdpdCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS9NYWtlZmlsZS5vZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS9NYWtlZmlsZS5vZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmVlNjkzNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vTWFrZWZpbGUub2UKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0jIE1ha2VmaWxlIGZvciBzbGltIC0gT3BlbkVtYmVkZGVkCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLQotU0xJTUxERkxBR1M9LWxYZnQgLWxYMTEgLWxmcmVldHlwZSAtbFhyZW5kZXIgLWxmb250Y29uZmlnIC1scG5nMTIgLWx6IC1sbSAtbGNyeXB0IC1sWG11IC1scG5nIC1sanBlZyAtbHJ0IC1scHRocmVhZAotQ1VTVE9NPS1ESEFWRV9TSEFET1cKLQotVVNFX1BBTT0xCi1pZmRlZiBVU0VfUEFNCi1TTElNTERGTEFHUys9IC1scGFtCi1DVVNUT00rPSAtRFVTRV9QQU0KLWVuZGlmCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotTkFNRT1zbGltCi1WRVJTSU9OPTEuMy4yCi0KLURFRklORVM9LURQQUNLQUdFPVwiJChOQU1FKVwiIC1EVkVSU0lPTj1cIiQoVkVSU0lPTilcIiBcCi0JCS1EUEtHREFUQURJUj1cIiQoUFJFRklYKS9zaGFyZS9zbGltXCIgLURTWVNDT05GRElSPVwiJChDRkdESVIpXCIKLQotT0JKRUNUUz1qcGVnLm8gcG5nLm8gbWFpbi5vIGltYWdlLm8gbnVtbG9jay5vIGNmZy5vIHN3aXRjaHVzZXIubyBhcHAubyBcCi0JcGFuZWwubyB1dGlsLm8KLWlmZGVmIFVTRV9QQU0KLU9CSkVDVFMrPVBBTS5vCi1lbmRpZgotCi1hbGw6IHNsaW0KLQotc2xpbTogJChPQkpFQ1RTKQotCSQoQ1hYKSAkKE9CSkVDVFMpICQoTERGTEFHUykgJChTTElNTERGTEFHUykgLW8gJChOQU1FKQotCi0uY3BwLm86Ci0JJChDWFgpICQoQ1hYRkxBR1MpICQoREVGSU5FUykgJChDVVNUT00pIC1jICQ8IC1vICRACi0KLS5jLm86Ci0JJChDQykgJChDRkxBR1MpICQoREVGSU5FUykgJChDVVNUT00pIC1jICQ8IC1vICRACi0KLWluc3RhbGw6IHNsaW0gaW5zdGFsbC10aGVtZQotCWluc3RhbGwgLUQgLW0gNzU1IHNsaW0gJChERVNURElSKSQoUFJFRklYKS9iaW4vc2xpbQotCWluc3RhbGwgLUQgLW0gNjQ0IHNsaW0uMSAkKERFU1RESVIpJChNQU5ESVIpL21hbjEvc2xpbS4xCi0JdGVzdCAtZSAkKERFU1RESVIpJChDRkdESVIpL3NsaW0uY29uZiB8fCBcCi0JCWluc3RhbGwgLUQgLW0gNjQ0IHNsaW0uY29uZiAkKERFU1RESVIpJChDRkdESVIpL3NsaW0uY29uZgotCi1jbGVhbjoKLQlAcm0gLWYgc2xpbSAqLm8KLQotZGlzdDoKLQlAcm0gLXJmICQoTkFNRSktJChWRVJTSU9OKQotCUBta2RpciAkKE5BTUUpLSQoVkVSU0lPTikKLQlAY3AgLXIgKi5jcHAgKi5oICouYyBNYWtlZmlsZSBNYWtlZmlsZS4qIENPUFlJTkcgQ2hhbmdlTG9nIElOU1RBTEwgUkVBRE1FIFRPRE8gXAotCQl4aW5pdHJjLnNhbXBsZSBzbGltLjEgVEhFTUVTIHRoZW1lcyBzbGltLmNvbmYgJChOQU1FKS0kKFZFUlNJT04pCi0JQHJtIC1yZiAkKE5BTUUpLSQoVkVSU0lPTikvdGhlbWVzLy5zdm4JJChOQU1FKS0kKFZFUlNJT04pL3RoZW1lcy9kZWZhdWx0Ly5zdm4KLQlAdGFyIGN2emYgJChOQU1FKS0kKFZFUlNJT04pLnRhci5neiAkKE5BTUUpLSQoVkVSU0lPTikKLQlAcm0gLXJmICQoTkFNRSktJChWRVJTSU9OKQotCi0KLWluc3RhbGwtdGhlbWU6Ci0JaW5zdGFsbCAtRCAtbSA2NDQgdGhlbWVzL2RlZmF1bHQvc2xpbS50aGVtZSBcCi0JCSAkKERFU1RESVIpJChQUkVGSVgpL3NoYXJlL3NsaW0vdGhlbWVzL2RlZmF1bHQvc2xpbS50aGVtZQotCWluc3RhbGwgLUQgLW0gNjQ0IHRoZW1lcy9kZWZhdWx0L3BhbmVsLnBuZyBcCi0JCSAkKERFU1RESVIpJChQUkVGSVgpL3NoYXJlL3NsaW0vdGhlbWVzL2RlZmF1bHQvcGFuZWwucG5nCi0JaW5zdGFsbCAtRCAtbSA2NDQgdGhlbWVzL2RlZmF1bHQvYmFja2dyb3VuZC5qcGcgXAotCQkgJChERVNURElSKSQoUFJFRklYKS9zaGFyZS9zbGltL3RoZW1lcy9kZWZhdWx0L2JhY2tncm91bmQuanBnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vc2xpbS1keW53bSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS9zbGltLWR5bndtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OWM5ZDQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS9zbGltLWR5bndtCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0jIS9iaW4vc2gKLXVwZGF0ZV9zbGltX3dtbGlzdAotaWYgWyAieCQxIiA9ICJ4LW5vZGFlbW9uIiBdOyB0aGVuCi0gIHNoaWZ0Ci0gIGV4ZWMgc2xpbSAiJEAiCi1lbHNlCi0gIHNsaW0gLWQgIiRAIgotZmkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS9zbGltLnBhbWQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vc2xpbS5wYW1kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGMzNGIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS9zbGltLnBhbWQKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jIEJlZ2luIC9ldGMvcGFtLmQvc2xpbQotCi1hdXRoICAgICAgIHJlcXVpcmVkICAgICBwYW1fc2hlbGxzLnNvCi1hdXRoICAgICAgIGluY2x1ZGUgICAgICBjb21tb24tYXV0aAotYXV0aCAgICAgICBvcHRpb25hbCAgICAgcGFtX3NlY3VyZXR0eS5zbwotYXV0aCAgICAgICBvcHRpb25hbCAgICAgcGFtX2dub21lX2tleXJpbmcuc28KLQotYWNjb3VudCAgICByZXF1aXJlZCAgICAgcGFtX25vbG9naW4uc28KLWFjY291bnQgICAgaW5jbHVkZSAgICAgIGNvbW1vbi1hY2NvdW50Ci0KLXBhc3N3b3JkICAgaW5jbHVkZSAgICAgIGNvbW1vbi1wYXNzd29yZAotCi1zZXNzaW9uICAgIGluY2x1ZGUgICAgICBjb21tb24tc2Vzc2lvbgotc2Vzc2lvbiAgICByZXF1aXJlZCAgICAgcGFtX21raG9tZWRpci5zbyBza2VsPS9ldGMvc2tlbC8gdW1hc2s9MDAyMgotc2Vzc2lvbiAgICBvcHRpb25hbCAgICAgcGFtX2xhc3Rsb2cuc28gbm93dG1wCi1zZXNzaW9uICAgIG9wdGlvbmFsICAgICBwYW1fbWFpbC5zbyBkaXI9L3Zhci9tYWlsIHN0YW5kYXJkCi1zZXNzaW9uICAgIG9wdGlvbmFsICAgICBwYW1fZ25vbWVfa2V5cmluZy5zbyAgYXV0b19zdGFydAotCi0jIEVuZCAvZXRjL3BhbS5kL3NsaW0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS9zbGltLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vc2xpbS5zZXJ2aWNlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDEzNTFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3NsaW0vc2xpbS9zbGltLnNlcnZpY2UKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1bVW5pdF0KLURlc2NyaXB0aW9uPVNMaU0gU2ltcGxlIExvZ2luIE1hbmFnZXIKLVJlcXVpcmVzPWRldi10dHk3LmRldmljZQotQWZ0ZXI9ZGV2LXR0eTcuZGV2aWNlIHN5c3RlbWQtdXNlci1zZXNzaW9ucy5zZXJ2aWNlCi0KLVtTZXJ2aWNlXQotRXhlY1N0YXJ0PS91c3IvYmluL3NsaW0gLW5vZGFlbW9uCi1TdGFuZGFyZE91dHB1dD1zeXNsb2cKLQotW0luc3RhbGxdCi1XYW50ZWRCeT1ncmFwaGljYWwudGFyZ2V0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vdXBkYXRlX3NsaW1fd21saXN0IGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvc2xpbS9zbGltL3VwZGF0ZV9zbGltX3dtbGlzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYxMTY1My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9zbGltL3NsaW0vdXBkYXRlX3NsaW1fd21saXN0CisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotIyEvdXNyL2Jpbi9wZXJsIC13Ci0jCi0jIHVwZGF0ZV9zbGltX3dtbGlzdCwgYmFzZWQgb246Ci0jIHVwZGF0ZV93ZG1fd21saXN0LCAoYykgMTk5OCBNYXJjZWxvIE1hZ2FsbPNuIDxtbWFnYWxsb0BkZWJpYW4ub3JnPgotIyByZXdyaXRlbiB0byB1c2UgdGhlIHgtd2luZG93LW1hbmFnZXIgYWx0ZXJuYXRpdmUKLSMgbW9kaWZpZWQgdG8gYWxzbyB1c2UgdGhlIHgtc2Vzc2lvbi1tYW5hZ2VyIGFsdGVybmF0aXZlIGJ5IEFydGh1ciBLb3JuCi0jIENvcHlyaWdodCAyMDAwIFdpY2hlcnQgQWtrZXJtYW4gPHdha2tlcm1hQGRlYmlhbi5vcmc+Ci0jIE1vZGlmaWVkIHRvIHVzZSB0aGUgZnJlZWRlc2t0b3Aub3JnIC5kZXNrdG9wIGxpa2Uga2RtIGFuZCBnZG0KLSMKLSMgVGhpcyBzY3JpcHQgd2lsbCByZWFkIHRoZSBsaXN0IG9mIGluc3RhbGxlZCB3aW5kb3cgbWFuYWdlcnMgZnJvbQotIyB0aGUgZnJlZWRlc2t0b3AgLmRlc2t0b3AgZmlsZXMgaW4gPGV0Yz4vWDExL3Nlc3Npb25zLzo8ZXRjPi9kbS9TZXNzaW9ucy86Ci0jIDxzaGFyZT4veHNlc3Npb25zLwotIyBhbmQgdXBkYXRlIHRoZSBzZXNzaW9ucyBsaW5lIGluIC9ldGMvc2xpbS5jb25mLgotIyBCRVdBUkU6IEl0IGRvZXNuJ3QgYXNrIGFueSBxdWVzdGlvbnMgYWJvdXQgdGhpcy4gSXQganVzdCBkb2VzIGl0LiBJdAotIyB0YWtlcyBhbiBvcHRpb25hbCBsaXN0IG9mIHdpbmRvdyBtYW5hZ2Vycy4KLQotdXNlIHN0cmljdDsKLXVzZSBGaWxlOjpEZXNrdG9wRW50cnk7Ci0KLW15ICR3bV9saXN0PScnOwotbXkgJWRlc2t0b3BfZmlsZXM7Ci0KLXVubGVzcyAoQEFSR1YpIHsKLSAgICAjbXkgQHdtX2xpc3QgPSAoJ2RlZmF1bHQnKTsKLSAgICBteSBAd21fbGlzdDsKLSAgICBmb3JlYWNoIG15ICRkaXIgKCcvZXRjL1gxMS9zZXNzaW9ucy8nLCcvZXRjL2RtL1Nlc3Npb25zLycsJy91c3Ivc2hhcmUveHNlc3Npb25zLycpIHsKLQkgICAgbmV4dCB1bmxlc3MgKG9wZW5kaXIgRElSLCAkZGlyKTsKLQkgICAgbXkgQGZpbGVzOwotCSAgICBAZmlsZXMgPSBncmVwIHsgL1wuZGVza3RvcCQvICYmIC1yICIkZGlyLyRfIiB9IHJlYWRkaXIoRElSKTsKLQkgICAgZm9yZWFjaCBteSAkZmlsZSAoQGZpbGVzKSB7Ci0JCSAgIHB1c2ggQHskZGVza3RvcF9maWxlc3skZmlsZX19LCAiJGRpci8kZmlsZSI7Ci0JICAgIH0KLSAgICB9Ci0gICAgREVTS1RPUDogZm9yZWFjaCBteSAkZGVza3RvcF9maWxlIChrZXlzKCVkZXNrdG9wX2ZpbGVzKSkgewotCSAgICBmb3JlYWNoIG15ICRmaWxlIChAeyRkZXNrdG9wX2ZpbGVzeyRkZXNrdG9wX2ZpbGV9fSkgewotCQkgICAgbXkgJGVudHJ5ID0gRmlsZTo6RGVza3RvcEVudHJ5LT5uZXdfZnJvbV9maWxlKCRmaWxlKTsKLQkJICAgIG5leHQgREVTS1RPUCBpZiAoZGVmaW5lZCgkZW50cnktPmdldF92YWx1ZSgnSGlkZGVuJykpCi0JCQlhbmQgJGVudHJ5LT5nZXRfdmFsdWUoJ0hpZGRlbicpIGVxICd0cnVlJyk7Ci0JCSAgICBpZiAoJGVudHJ5LT5nZXRfdmFsdWUoJ05hbWUnKSA9fiAvXmdub21lJC9pKSB7Ci0JCQkgICAgcHVzaCAoQHdtX2xpc3QsICdnbm9tZScpOwotCQkgICAgfQotCQkgICAgZWxzaWYgKCRlbnRyeS0+Z2V0X3ZhbHVlKCdOYW1lJykgPX4gL15rZGUkL2kpIHsKLQkJCSAgICBwdXNoIChAd21fbGlzdCwgJ2tkZScpOwotCQkgICAgfQotCQkgICAgZWxzaWYgKGRlZmluZWQoJGVudHJ5LT5nZXRfdmFsdWUoJ0V4ZWMnKSkpIHsKLQkJCSAgICBwdXNoIChAd21fbGlzdCwgJGVudHJ5LT5nZXRfdmFsdWUoJ0V4ZWMnKSk7Ci0JCSAgICB9Ci0JCSAgICBlbHNlIHsgIyBub3QgZm91bmQsIGdvIHRvIG5leHQgZmlsZQotCQkJICAgIG5leHQ7Ci0JCSAgICB9Ci0JCSAgICAjIGZvdW5kLCBwcm9jZWVkIHRvIG5leHQgZGVzdG9wIGZpbGUKLQkJICAgIG5leHQgREVTS1RPUDsKLQkgICAgfQotICAgIH0KLSAgICR3bV9saXN0ID0gam9pbiAoJywnLCBzb3J0IEB3bV9saXN0KSAuICcsY3VzdG9tJzsKLX0gZWxzZSB7Ci0gICAgJHdtX2xpc3QgPSBqb2luICgnLCcsIHNvcnQgQEFSR1YpOwotfQotCi1vcGVuIChTTElNX0NPTkZJR19GSUxFLCAnPC9ldGMvc2xpbS5jb25mJykKLSAgICBvciBkaWUgIkNhbid0IG9wZW4gL2V0Yy9zbGltLmNvbmYgZm9yIHJlYWRpbmc6ICQhIjsKLW9wZW4gKE5FV19TTElNX0NPTkZJR19GSUxFLCAnPi9ldGMvc2xpbS5jb25mLm5ldycpCi0gICAgb3IgZGllICJDYW4ndCBvcGVuIC9ldGMvc2xpbS5jb25mLm5ldyBmb3Igd3JpdGluZzogJCEiOwotCi13aGlsZSAoPFNMSU1fQ09ORklHX0ZJTEU+KSB7Ci0gICAgc3xeKHNlc3Npb25zXHMqKS4qfCQxJHdtX2xpc3R8OwotICAgIHByaW50IE5FV19TTElNX0NPTkZJR19GSUxFOwotfQotCi1jbG9zZShTTElNX0NPTkZJR19GSUxFKTsKLWNsb3NlKE5FV19TTElNX0NPTkZJR19GSUxFKTsKLQotcmVuYW1lICcvZXRjL3NsaW0uY29uZi5uZXcnLCAnL2V0Yy9zbGltLmNvbmYnCi0gICAgb3IgZGllICJDYW4ndCByZW5hbWUgL2V0Yy9zbGltLmNvbmYubmV3OiAkISI7Ci0KLWV4aXQgMDsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliXzEuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliXzEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdjNDhmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90c2xpYi90c2xpYl8xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1TVU1NQVJZID0gIkFuIGFic3RyYWN0aW9uIGxheWVyIGZvciB0b3VjaHNjcmVlbiBwYW5lbCBldmVudHMiCi1ERVNDUklQVElPTiA9ICJUc2xpYiBpcyBhbiBhYnN0cmFjdGlvbiBsYXllciBmb3IgdG91Y2hzY3JlZW4gcGFuZWwgXAotZXZlbnRzLCBhcyB3ZWxsIGFzIGEgZmlsdGVyIHN0YWNrIGZvciB0aGUgbWFuaXB1bGF0aW9uIG9mIHRob3NlIGV2ZW50cy4gXAotVHNsaWIgaXMgZ2VuZXJhbGx5IHVzZWQgb24gZW1iZWRkZWQgZGV2aWNlcyB0byBwcm92aWRlIGEgY29tbW9uIHVzZXIgXAotc3BhY2UgaW50ZXJmYWNlIHRvIHRvdWNoc2NyZWVuIGZ1bmN0aW9uYWxpdHkuIgotSE9NRVBBR0UgPSAiaHR0cDovL3RzbGliLm9yZy8iCi0KLUFVVEhPUiA9ICJSdXNzZWxsIEtpbmcgdy8gcGx1Z2lucyBieSBDaHJpcyBMYXJzb24gZXQuIGFsLiIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjMwYTk3MTZlZjM3NjJlMzQ2N2EyZjYyYmY3OTBmMGEiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2tlcmdvdGgvdHNsaWIvcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vdHNsaWItJHtQVn0udGFyLnh6O2Rvd25sb2FkZmlsZW5hbWU9dHNsaWItJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3RzLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vdHNsaWIuc2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTQ3NzFmODYwN2IzNDFiYjRiMjk3ODE5ZDM3ZTgzN2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmUzNWU1ZjcxMGVhOTMzYjExOGY3MTBlMmNlNDQwM2FjMDc2ZmU2OTkyNmI1NzAzMzM4NjdkNGRlMDgyYTUxYyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9rZXJnb3RoL3RzbGliL3JlbGVhc2VzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNoYXJlZCAtLWRpc2FibGUtaDM2MDAgLS1lbmFibGUtaW5wdXQgLS1kaXNhYmxlLWNvcmdpIC0tZGlzYWJsZS1jb2xsaWUgLS1kaXNhYmxlLW1rNzEyIC0tZGlzYWJsZS1hcmN0aWMyIC0tZGlzYWJsZS11Y2IxeDAwIgotCi1kb19pbnN0YWxsX3ByZXBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdHMuY29uZiAke1N9L2V0Yy90cy5jb25mCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vcHJvZmlsZS5kLwotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3RzbGliLnNoICR7RH0ke3N5c2NvbmZkaXJ9L3Byb2ZpbGUuZC8KLX0KLQotIyBQZW9wbGUgc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHVkZXYncyAvZGV2L2lucHV0L3RvdWNoc2NyZWVuMCBzeW1saW5rCi0jIGluc3RlYWQgb2YgZGV0ZWN0LXN0eWx1cwotI1JERVBFTkRTX3RzbGliLWNvbmZfd2VpcmQtbWFjaGluZSA9ICJkZXRlY3Qtc3R5bHVzIgotUlBST1ZJREVTX3RzbGliLWNvbmYgPSAibGlidHMtMC4wLWNvbmYiCi0KLVBBQ0tBR0VTID0rICJ0c2xpYi1jb25mIHRzbGliLXRlc3RzIHRzbGliLWNhbGlicmF0ZSIKLURFQklBTl9OT0FVVE9OQU1FX3RzbGliLWNvbmYgPSAiMSIKLURFQklBTl9OT0FVVE9OQU1FX3RzbGliLXRlc3RzID0gIjEiCi1ERUJJQU5fTk9BVVRPTkFNRV90c2xpYi1jYWxpYnJhdGUgPSAiMSIKLQotUkRFUEVORFNfJHtQTn0gPSAidHNsaWItY29uZiIKLVJSRUNPTU1FTkRTXyR7UE59ID0gInBvaW50ZXJjYWwiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3RzLyoubGEiCi1GSUxFU190c2xpYi1jb25mID0gIiR7c3lzY29uZmRpcn0vdHMuY29uZiAke3N5c2NvbmZkaXJ9L3Byb2ZpbGUuZC90c2xpYi5zaCAke2RhdGFkaXJ9L3RzbGliIgotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9Lyouc28uKiAke2xpYmRpcn0vdHMvKi5zbyoiCi1GSUxFU190c2xpYi1jYWxpYnJhdGUgKz0gIiR7YmluZGlyfS90c19jYWxpYnJhdGUiCi1GSUxFU190c2xpYi10ZXN0cyA9ICIke2JpbmRpcn0vdHNfaGFydmVzdCAke2JpbmRpcn0vdHNfcHJpbnQgJHtiaW5kaXJ9L3RzX3ByaW50X3JhdyAke2JpbmRpcn0vdHNfdGVzdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliXzEuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90c2xpYi90c2xpYl8xLjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZTk0MWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90c2xpYi90c2xpYl8xLjE1LmJiCkBAIC0wLDAgKzEsODIgQEAKK1NVTU1BUlkgPSAiQW4gYWJzdHJhY3Rpb24gbGF5ZXIgZm9yIHRvdWNoc2NyZWVuIHBhbmVsIGV2ZW50cyIKK0RFU0NSSVBUSU9OID0gIlRzbGliIGlzIGFuIGFic3RyYWN0aW9uIGxheWVyIGZvciB0b3VjaHNjcmVlbiBwYW5lbCBcCitldmVudHMsIGFzIHdlbGwgYXMgYSBmaWx0ZXIgc3RhY2sgZm9yIHRoZSBtYW5pcHVsYXRpb24gb2YgdGhvc2UgZXZlbnRzLiBcCitUc2xpYiBpcyBnZW5lcmFsbHkgdXNlZCBvbiBlbWJlZGRlZCBkZXZpY2VzIHRvIHByb3ZpZGUgYSBjb21tb24gdXNlciBcCitzcGFjZSBpbnRlcmZhY2UgdG8gdG91Y2hzY3JlZW4gZnVuY3Rpb25hbGl0eS4iCitIT01FUEFHRSA9ICJodHRwOi8vdHNsaWIub3JnLyIKKworQVVUSE9SID0gIk1hcnRpbiBLZXBwbGluZ2VyIDxtYXJ0aW5rQHBvc3Rlby5kZT4iCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkxHUEx2MisgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gIlwKKyAgICBmaWxlOi8vQ09QWUlORzttZDU9ZmMxNzhiY2Q0MjUwOTA5MzlhOGI2MzRkMWQ2YTk1OTQgXAorICAgIGZpbGU6Ly90ZXN0cy9DT1BZSU5HO21kNT1hMjNhNzRiM2Y0Y2FmOTYxNjIzMDc4OWQ5NDIxN2FjYiBcCisiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2tlcmdvdGgvdHNsaWIvcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vdHNsaWItJHtQVn0udGFyLnh6O2Rvd25sb2FkZmlsZW5hbWU9dHNsaWItJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL3RzLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vdHNsaWIuc2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjlmZjM2Nzg4YzlhYjc2YTEwYjU4NDIyMjI3Yjk2MjllIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdjZTQ4ODA3Y2FiNjU1MDc2ZDcxYTFjZWVmM2VkMGFiOGEyNWRmOTgwNzQ5ODFkNGE4ZmQxNDc3ZWU1ZjcxMGMiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20va2VyZ290aC90c2xpYi9yZWxlYXNlcyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICJkZWJvdW5jZSBkZWppdHRlciBpaXIgbGluZWFyIG1lZGlhbiBwdGhyZXMgc2tpcCBsb3dwYXNzIGludmVydCB2YXJpYW5jZSBpbnB1dCB0b3VjaGtpdCB3YXZlc2hhcmUiCitQQUNLQUdFQ09ORklHW2RlYm91bmNlXSA9ICItLWVuYWJsZS1kZWJvdW5jZSwtLWRpc2FibGUtZGVib3VuY2UiCitQQUNLQUdFQ09ORklHW2Rlaml0dGVyXSA9ICItLWVuYWJsZS1kZWppdHRlciwtLWRpc2FibGUtZGVqaXR0ZXIiCitQQUNLQUdFQ09ORklHW2lpcl0gPSAiLS1lbmFibGUtaWlyLC0tZGlzYWJsZS1paXIiCitQQUNLQUdFQ09ORklHW2xpbmVhcl0gPSAiLS1lbmFibGUtbGluZWFyLC0tZGlzYWJsZS1saW5lYXIiCitQQUNLQUdFQ09ORklHW21lZGlhbl0gPSAiLS1lbmFibGUtbWVkaWFuLC0tZGlzYWJsZS1tZWRpYW4iCitQQUNLQUdFQ09ORklHW3B0aHJlc10gPSAiLS1lbmFibGUtcHRocmVzLC0tZGlzYWJsZS1wdGhyZXMiCitQQUNLQUdFQ09ORklHW3NraXBdID0gIi0tZW5hYmxlLXNraXAsLS1kaXNhYmxlLXNraXAiCitQQUNLQUdFQ09ORklHW2xvd3Bhc3NdID0gIi0tZW5hYmxlLWxvd3Bhc3MsLS1kaXNhYmxlLWxvd3Bhc3MiCitQQUNLQUdFQ09ORklHW2ludmVydF0gPSAiLS1lbmFibGUtaW52ZXJ0LC0tZGlzYWJsZS1pbnZlcnQiCitQQUNLQUdFQ09ORklHW3ZhcmlhbmNlXSA9ICItLWVuYWJsZS12YXJpYW5jZSwtLWRpc2FibGUtdmFyaWFuY2UiCitQQUNLQUdFQ09ORklHW2lucHV0XSA9ICItLWVuYWJsZS1pbnB1dCwtLWRpc2FibGUtaW5wdXQiCitQQUNLQUdFQ09ORklHW3RhdHVuZ10gPSAiLS1lbmFibGUtdGF0dW5nLC0tZGlzYWJsZS10YXR1bmciCitQQUNLQUdFQ09ORklHW3RvdWNoa2l0XSA9ICItLWVuYWJsZS10b3VjaGtpdCwtLWRpc2FibGUtdG91Y2hraXQiCitQQUNLQUdFQ09ORklHW3dhdmVzaGFyZV0gPSAiLS1lbmFibGUtd2F2ZXNoYXJlLC0tZGlzYWJsZS13YXZlc2hhcmUiCitQQUNLQUdFQ09ORklHW3VjYjF4MDBdID0gIi0tZW5hYmxlLXVjYjF4MDAsLS1kaXNhYmxlLXVjYjF4MDAiCitQQUNLQUdFQ09ORklHW21rNzEyXSA9ICItLWVuYWJsZS1tazcxMiwtLWRpc2FibGUtbWs3MTIiCitQQUNLQUdFQ09ORklHW2gzNjAwXSA9ICItLWVuYWJsZS1oMzYwMCwtLWRpc2FibGUtaDM2MDAiCitQQUNLQUdFQ09ORklHW2RtY10gPSAiLS1lbmFibGUtZG1jLC0tZGlzYWJsZS1kbWMiCitQQUNLQUdFQ09ORklHW2xpbmVhci1oMjIwMF0gPSAiLS1lbmFibGUtbGluZWFyLWgyMjAwLC0tZGlzYWJsZS1saW5lYXItaDIyMDAiCitQQUNLQUdFQ09ORklHW2NvcmdpXSA9ICItLWVuYWJsZS1jb3JnaSwtLWRpc2FibGUtY29yZ2kiCitQQUNLQUdFQ09ORklHW2NvbGxpZV0gPSAiLS1lbmFibGUtY29sbGllLC0tZGlzYWJsZS1jb2xsaWUiCitQQUNLQUdFQ09ORklHW2FyY3RpYzJdID0gIi0tZW5hYmxlLWFyY3RpYzIsLS1kaXNhYmxlLWFyY3RpYzIiCitQQUNLQUdFQ09ORklHW2RtY19kdXMzMDAwXSA9ICItLWVuYWJsZS1kbWNfZHVzMzAwMCwtLWRpc2FibGUtZG1jX2R1czMwMDAiCitQQUNLQUdFQ09ORklHW2N5OG1ybG4tcGFsbXByZV0gPSAiLS1lbmFibGUtY3k4bXJsbi1wYWxtcHJlLC0tZGlzYWJsZS1jeThtcmxuLXBhbG1wcmUiCitQQUNLQUdFQ09ORklHW2dhbGF4XSA9ICItLWVuYWJsZS1nYWxheCwtLWRpc2FibGUtZ2FsYXgiCitQQUNLQUdFQ09ORklHW2RlYnVnXSA9ICItLWVuYWJsZS1kZWJ1ZywtLWRpc2FibGUtZGVidWciCisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90cy5jb25mICR7U30vZXRjL3RzLmNvbmYKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9wcm9maWxlLmQvCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vdHNsaWIuc2ggJHtEfSR7c3lzY29uZmRpcn0vcHJvZmlsZS5kLworfQorCitSUFJPVklERVNfdHNsaWItY29uZiA9ICJsaWJ0cy0wLjAtY29uZiIKKworUEFDS0FHRVMgPSsgInRzbGliLWNvbmYgdHNsaWItdGVzdHMgdHNsaWItY2FsaWJyYXRlIHRzbGliLXVpbnB1dCIKK0RFQklBTl9OT0FVVE9OQU1FX3RzbGliLWNvbmYgPSAiMSIKK0RFQklBTl9OT0FVVE9OQU1FX3RzbGliLXRlc3RzID0gIjEiCitERUJJQU5fTk9BVVRPTkFNRV90c2xpYi1jYWxpYnJhdGUgPSAiMSIKK0RFQklBTl9OT0FVVE9OQU1FX3RzbGliLXVpbnB1dCA9ICIxIgorCitSREVQRU5EU18ke1BOfSA9ICJ0c2xpYi1jb25mIgorUlJFQ09NTUVORFNfJHtQTn0gPSAicG9pbnRlcmNhbCIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vdHMvKi5sYSIKK0ZJTEVTX3RzbGliLWNvbmYgPSAiJHtzeXNjb25mZGlyfS90cy5jb25mICR7c3lzY29uZmRpcn0vcHJvZmlsZS5kL3RzbGliLnNoICR7ZGF0YWRpcn0vdHNsaWIiCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vKi5zby4qICR7bGliZGlyfS90cy8qLnNvKiIKK0ZJTEVTX3RzbGliLWNhbGlicmF0ZSArPSAiJHtiaW5kaXJ9L3RzX2NhbGlicmF0ZSIKK0ZJTEVTX3RzbGliLXVpbnB1dCArPSAiJHtiaW5kaXJ9L3RzX3VpbnB1dCIKKworRklMRVNfdHNsaWItdGVzdHMgPSAiJHtiaW5kaXJ9L3RzX2hhcnZlc3QgJHtiaW5kaXJ9L3RzX3ByaW50ICR7YmluZGlyfS90c19wcmludF9yYXcgJHtiaW5kaXJ9L3RzX3ByaW50X210IFwKKyAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS90c190ZXN0ICR7YmluZGlyfS90c190ZXN0X210ICR7YmluZGlyfS90c192ZXJpZnkgJHtiaW5kaXJ9L3RzX2ZpbmRkZXYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy92ZHBhdS9saWJ2ZHBhdV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy92ZHBhdS9saWJ2ZHBhdV9naXQuYmIKaW5kZXggMzFmNGRmNC4uMzFiY2NlMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdmRwYXUvbGlidmRwYXVfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3ZkcGF1L2xpYnZkcGF1X2dpdC5iYgpAQCAtMTIsNyArMTIsOSBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBwa2djb25maWcKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAgICAgcm0gLWYgJHtEfSR7bGliZGlyfS8qLyoubGEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hjdXJzb3JnZW4veGN1cnNvcmdlbl8xLjAuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hjdXJzb3JnZW4veGN1cnNvcmdlbl8xLjAuNS5iYgppbmRleCAyN2EzOGMxLi5hMjFkYzQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94Y3Vyc29yZ2VuL3hjdXJzb3JnZW5fMS4wLjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveGN1cnNvcmdlbi94Y3Vyc29yZ2VuXzEuMC41LmJiCkBAIC03LDYgKzcsOCBAQAogU1JDX1VSSVttZDVzdW1dID0gIjA5ZjU2OTc4YTYyODU0NTM0ZGVhY2M4YWE4ZmYzMDMxIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImJjNzE3MWEwZmEyMTJkYTg2NmZjYTIzMDEyNDE2MzBlMjAwOWFlYThjNGRkYjc1ZjIxYjUxYTMxYzJlNGM1ODEiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL2JkZnRvcGNmXzEuMC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvYmRmdG9wY2ZfMS4xLmJiCnNpbWlsYXJpdHkgaW5kZXggNzAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL2JkZnRvcGNmXzEuMC41LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9iZGZ0b3BjZl8xLjEuYmIKaW5kZXggMzVkNTAwMi4uOTExNmI1ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvYmRmdG9wY2ZfMS4wLjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvYmRmdG9wY2ZfMS4xLmJiCkBAIC03LDcgKzcsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjlhMzUzMzNhZGY3NWVkZDFlYWVmODRiY2E2NWE0OTAiCiBERVBFTkRTID0gImxpYnhmb250IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNTNhNDhlMWZkZmVjMjlhYjJlODlmODZkNGI3Y2E5MDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzhmNDQ3YmUwYzYxZjk0YzQ3M2YxMjhjZjUxOWRkMGNmZjYzYjVkNzc3NTI0MGEyZTg5NWExODNhNjFlMjAyNiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyYTQ1NWQzYzAyMzkwNTk3ZmViOWNlZmIzZmU5N2E0NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0YjRkZjA1ZmM1M2YxZTk4OTkzNjM4ZDZmN2UxNzhkOTViMzE3NDVjNDU2OGNlZTQwN2UxNjc0OTFmZDMxMWEyIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3Nlc3NyZWdfMS4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9zZXNzcmVnXzEuMS4xLmJiCnNpbWlsYXJpdHkgaW5kZXggNzMlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3Nlc3NyZWdfMS4xLjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3Nlc3NyZWdfMS4xLjEuYmIKaW5kZXggMzg4NWQ2MS4uZDJhZmE3OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvc2Vzc3JlZ18xLjEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9zZXNzcmVnXzEuMS4xLmJiCkBAIC00LDggKzQsOCBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kOTM4YTcwYzgyODBjMjY1YTFjY2QyOTU0MzY1ZDE4NSIKIFNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLUVycm9yLUZpeC5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlMjM4Yzg5ZGFiYzU2NmUxODM1ZTFlY2I2MWI2MDViOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NTExNzc2NTc4MzVlMDkwMmI1ZWVlN2IxOTcxMzAzNWJlYWExNTgxYmJkM2M2NTA2YmFhNTUzZTc1MWUwMTdjIgorU1JDX1VSSVttZDVzdW1dID0gImU0NzUxNjdhODkyYjU4OWRhMjNlZGY4ZWRmOGM5NDJkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc4YTc2YWUzZjNmNmEyNjU0N2EzNDYzMGQxYjc0MGY0MjM0NDg0OGI1ZmI2ZDdjOWM3ZjdkYTI1NWUzNWE2ZTEiCiAKIENGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtRF9XVE1QWF9GSUxFPVdUTVBfRklMRSAtRF9QQVRIX1dUTVBYPV9QQVRIX1dUTVAgLURfVVRNUFhfRklMRT1VVE1QX0ZJTEUgLURfUEFUSF9VVE1QWD1fUEFUSF9VVE1QICIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGxzY2xpZW50c18xLjEuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hsc2NsaWVudHNfMS4xLjQuYmIKc2ltaWxhcml0eSBpbmRleCA3NCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGxzY2xpZW50c18xLjEuMy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGxzY2xpZW50c18xLjEuNC5iYgppbmRleCA1ODNhNTMxLi40MmJkYTdlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94bHNjbGllbnRzXzEuMS4zLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hsc2NsaWVudHNfMS4xLjQuYmIKQEAgLTEwLDUgKzEwLDUgQEAKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI5ZmJmNmIxNzRhNTEzOGE2MTczOGE0MmU3MDdhZDhmNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZDk2NjZmY2M2YzNkZTIxMGZjNzBkNWE4NDFhNDA0OTU1YWY3MDlhNjE2ZmRlNTMwZmU0ZThmNzcyM2UzZDNkIgorU1JDX1VSSVttZDVzdW1dID0gIjRmYTkyMzc3ZTBkZGMxMzdjZDIyNmE3YTg3YjZiMjlhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc3M2YyYWY0OWM3ZWEyYzQ0ZmJhNDIxM2JlZTY0MzI1ODc1YzFiM2M5YmM0YmJjZDhkYWM5MjYxNzUxODA5YzEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94bHNmb250c18xLjAuNS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hsc2ZvbnRzXzEuMC42LmJiCnNpbWlsYXJpdHkgaW5kZXggNjUlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hsc2ZvbnRzXzEuMC41LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94bHNmb250c18xLjAuNi5iYgppbmRleCA5ZmVlZDc1Li43NmI3NmU0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94bHNmb250c18xLjAuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94bHNmb250c18xLjAuNi5iYgpAQCAtNiw1ICs2LDUgQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWVjNzRkZDdlYTRkMTBjNDcxNWE3YzQ0ZjE1OWE0MGIiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZjU3MTFiZWY4Yzc2NTg1N2EwODg3YTkxNDc2MjgzYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MDI5NWJlYzM1MDc3Y2VlOTNiZTJlNGMyNmNjMDAyNjhlZDZhY2U3NzlhZTZlOTc3NjZhODY2YzFlMzkyN2ZhIgorU1JDX1VSSVttZDVzdW1dID0gIjU3NzRmZDRmNTE4YjNmMzM4ZjJiMjhmMjcwZTA0YmZjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg5YjgwYjNhMDMwMDA2YWI2Y2VmNzE3YmUyODZjMTJmMjQ3Nzg5NGIyMjcxNThiMWU2MTMzMjc0ZjZlYmQzNjgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94dGVybV8zMzAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94dGVybV8zMzAuYmIKaW5kZXggZTNiYjBmYi4uMTZmOWI3OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHRlcm1fMzMwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h0ZXJtXzMzMC5iYgpAQCAtMjcsMyArMjcsOCBAQAogfQogCiBGSUxFU18ke1BOfSArPSAiL3Vzci9saWIvWDExIgorCisjIGJ1c3lib3ggY2FuIHN1cHBseSByZXNpemUgdG9vCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfJHtQTn0gPSAicmVzaXplIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHd1ZF8xLjAuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h3dWRfMS4wLjUuYmIKc2ltaWxhcml0eSBpbmRleCA3MyUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHd1ZF8xLjAuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHd1ZF8xLjAuNS5iYgppbmRleCAzM2JkN2YwLi43Y2I1NTBkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94d3VkXzEuMC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h3dWRfMS4wLjUuYmIKQEAgLTgsNSArOCw1IEBACiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTMxZTg4OTJjODBiN2EwYzFjNWYzN2M4ZThhZTZkNzk0IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMzAyNWIxNTJiNGYxM2ZkZmZkMGM0NmQwYmU1ODdiZTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDZiM2EwOWNjZmU3NTA4NjhlMjZiZDIzODQ5MDBhYjVmZjBkNDM0ZjdmNDBjZDI3MmE1MGVkYThhYWExZjhiZCIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3OTk3MjA5M2JiMDc2NmZjZDAyMjNiMmJkNmQxMTkzMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5OTk5NzA1MWY4YTg5MjMxM2YyMmVkZjQxZGFiNDU4NjRlODZlNzA2MmVlOTAxMmQ1ZGJiNmE0MGZjNmIxMGE5IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kYXRhL3hvcmctZGF0YS1jb21tb24uaW5jIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kYXRhL3hvcmctZGF0YS1jb21tb24uaW5jCmluZGV4IGIyMzA5NjIuLmNiNmI1YWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZGF0YS94b3JnLWRhdGEtY29tbW9uLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRhdGEveG9yZy1kYXRhLWNvbW1vbi5pbmMKQEAgLTcsNCArNyw2IEBACiBTUkNfVVJJID0gIiR7WE9SR19NSVJST1J9L2luZGl2aWR1YWwvZGF0YS8ke0JQfS50YXIuYnoyIgogUyA9ICIke1dPUktESVJ9LyR7WE9SR19QTn0tJHtQVn0iCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDAxLUNPUFlJTkctYWRkLUdQTHYyLWxpY2Vuc2UtZmlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwMS1DT1BZSU5HLWFkZC1HUEx2Mi1saWNlbnNlLWZpbGUucGF0Y2gKaW5kZXggMjlkZDcxYS4uMmJmZTg1YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDAxLUNPUFlJTkctYWRkLUdQTHYyLWxpY2Vuc2UtZmlsZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDEtQ09QWUlORy1hZGQtR1BMdjItbGljZW5zZS1maWxlLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA4MzRmYTA2OTIwZjg4Y2VlZGY3NTI5NjRjOGUyOTZjNjUzZDU0MWU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmOTE5NzI1OTE4ZmFkMmIzMjUwNGY4OWEyODMxMGZjYWU0YWIwNDA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogWXUgS2UgPGtlLnl1QGludGVsLmNvbT4KIERhdGU6IFdlZCwgMTEgQXByIDIwMTIgMTQ6MjY6MTYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAwMS8xMl0gQ09QWUlORzogYWRkIEdQTHYyIGxpY2Vuc2UgZmlsZQorU3ViamVjdDogW1BBVENIXSBDT1BZSU5HOiBhZGQgR1BMdjIgbGljZW5zZSBmaWxlCiAKIHRoaXMgaXMgYSBsb2NhbCBmaWxlIHJlY2lwZSBhbmQgdGhlIGxpY2Vuc2UgZmlsZSBpcyBtaXNzaW5nLkluIG9yZGVyCiB0byBwYXNzIHRoZSBsaWNlbnNlIGNoZWNrc3VtIGNoZWNraW5nLCB0aGUgbGljZW5zZSBmaWxlIGlzIG5lZWRlZC4gU28KQEAgLTksOSArOSwxMCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBZdSBLZSA8a2UueXVAaW50ZWwuY29tPgogU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorCiAtLS0KLSBDT1BZSU5HIHwgIDMzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGVzIGNoYW5nZWQsIDMzOSBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQorIENPUFlJTkcgfCAzMzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAzMzkgaW5zZXJ0aW9ucygrKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT1BZSU5HCiAKIGRpZmYgLS1naXQgYS9DT1BZSU5HIGIvQ09QWUlORwpAQCAtMzU5LDYgKzM2MCwzIEBACiArY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlCiArbGlicmFyeS4gIElmIHRoaXMgaXMgd2hhdCB5b3Ugd2FudCB0byBkbywgdXNlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwKICtQdWJsaWMgTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZS4KLS0tIAotMS43LjguNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDEtRG9uLXQtaW5zdGFsbC1Yc2Vzc2lvbi1vci1Yc2VydmVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDAxLURvbi10LWluc3RhbGwtWHNlc3Npb24tb3ItWHNlcnZlci5wYXRjaAppbmRleCAyNjI4OGQ2Li4wZWQxMmQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDEtRG9uLXQtaW5zdGFsbC1Yc2Vzc2lvbi1vci1Yc2VydmVyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwMS1Eb24tdC1pbnN0YWxsLVhzZXNzaW9uLW9yLVhzZXJ2ZXIucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGM5MmNlNmE0YjM2MjI4NzRmODIwYjVlYzQ4N2EyYjYzZjUxOTgyNmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDEwMDJhMTEzN2IxNDBkYWQzMzE5YmYzMjA2ZmVjNWI2YzZiNzRmZWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogRGF0ZTogVGh1LCAxMCBOb3YgMjAxNiAxNDozMzowNSArMDIwMAogU3ViamVjdDogW1BBVENIXSBEb24ndCBpbnN0YWxsIFhzZXNzaW9uIG9yIFhzZXJ2ZXIKQEAgLTgsMTUgKzgsMTYgQEAKIGJlIHVzZWQgYXMgYmVmb3JlLgogCiBTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorCiAtLS0KLSBNYWtlZmlsZSB8IDEgLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisgTWFrZWZpbGUgfCAyIC0tCisgMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCBjYWE1ZGUxLi43ZTM2YmJjIDEwMDY0NAoraW5kZXggY2FhNWRlMS4uOTQyODIwNSAxMDA2NDQKIC0tLSBhL01ha2VmaWxlCiArKysgYi9NYWtlZmlsZQotQEAgLTIwLDcgKzIwLDUgQEAgaW5zdGFsbC1wcm9ncmFtOgorQEAgLTIwLDggKzIwLDYgQEAgaW5zdGFsbC1wcm9ncmFtOgogIAlpbnN0YWxsIC1tIDc1NSBydW4tY2FsaWJyYXRlLnNoICQoREVTVERJUikkKFBSRUZJWCkvYmluL3J1bi1jYWxpYnJhdGUuc2gKICAJaW5zdGFsbCAtbSA2NDQgWDExL1hkZWZhdWx0cyAkKERFU1RESVIpL2V0Yy9YMTEvWGRlZmF1bHRzCiAgCWluc3RhbGwgLW0gNzU1IFgxMS9YaW5pdCAkKERFU1RESVIpL2V0Yy9YMTEvWGluaXQKQEAgLTI1LDYgKzI2LDMgQEAKICAJaW5zdGFsbCAtbSA3NTUgWDExL3hzZXJ2ZXItY29tbW9uICQoREVTVERJUikvZXRjL1gxMS94c2VydmVyLWNvbW1vbgogIAlpbnN0YWxsIC1tIDc1NSBYMTEvZnVuY3Rpb25zICQoREVTVERJUikvZXRjL1gxMS9mdW5jdGlvbnMKICAJaW5zdGFsbCAtZCAkKERFU1RESVIpL2V0Yy9YMTEveG1vZG1hcAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDItYWRkLXNldGRwaS1YaW5pdC5kLXNjcmlwdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwMi1hZGQtc2V0ZHBpLVhpbml0LmQtc2NyaXB0LnBhdGNoCmluZGV4IDIzYjUzNDUuLjBiZTNmYTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwMi1hZGQtc2V0ZHBpLVhpbml0LmQtc2NyaXB0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwMi1hZGQtc2V0ZHBpLVhpbml0LmQtc2NyaXB0LnBhdGNoCkBAIC0xLDEyICsxLDEzIEBACi1Gcm9tIDNkMWExYTgyNzMxMTI2Njg5MjdhNmM2YmIzZTM2MWU4OTZmNWIyMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDNiNWY0MzFhMzcwMDU0YmZjMDkwNzk2ZThkNTVkZThjOGNlYTQ2ZjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDExIEFwciAyMDEyIDE0OjI4OjQ1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMTJdIGFkZCBzZXRkcGkgWGluaXQuZCBzY3JpcHQKK1N1YmplY3Q6IFtQQVRDSF0gYWRkIHNldGRwaSBYaW5pdC5kIHNjcmlwdAogCiBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CisKIC0tLQotIFgxMS9YaW5pdC5kLzUwc2V0ZHBpIHwgICA5MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDEgZmlsZXMgY2hhbmdlZCwgOTIgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKKyBYMTEvWGluaXQuZC81MHNldGRwaSB8IDkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOTIgaW5zZXJ0aW9ucygrKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBYMTEvWGluaXQuZC81MHNldGRwaQogCiBkaWZmIC0tZ2l0IGEvWDExL1hpbml0LmQvNTBzZXRkcGkgYi9YMTEvWGluaXQuZC81MHNldGRwaQpAQCAtMTA3LDYgKzEwOCwzIEBACiArCiArc2V0X2RwaSAiJFNFVF9TQ1JFRU5fRFBJIgogK3NldF9yeHZ0X2ZvbnQgIiRTQ1JFRU5fRFBJIgotLS0gCi0xLjcuOC41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwNi1hZGQtc3VwcG9ydC1mb3ItZXRjLVgxMS14c2VydmVyLXN5c3RlbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwNi1hZGQtc3VwcG9ydC1mb3ItZXRjLVgxMS14c2VydmVyLXN5c3RlbS5wYXRjaAppbmRleCA3ZWU4NTcyLi41M2EyODNmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDYtYWRkLXN1cHBvcnQtZm9yLWV0Yy1YMTEteHNlcnZlci1zeXN0ZW0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDA2LWFkZC1zdXBwb3J0LWZvci1ldGMtWDExLXhzZXJ2ZXItc3lzdGVtLnBhdGNoCkBAIC0xLDE1ICsxLDE2IEBACi1Gcm9tIDBjNDJlMWZiODRjYzJiZmU3NjhiZWQxN2YzYjk3OWFjYTg2OGNmNjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGI2MGUzNjRjMzVkNTZhMmEzMTY0MjU0ZDk4Yzk5MzFiZmEzZmVlZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDExIEFwciAyMDEyIDE0OjM0OjQzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvMTJdIGFkZCBzdXBwb3J0IGZvciAvZXRjL1gxMS94c2VydmVyLXN5c3RlbQorU3ViamVjdDogW1BBVENIXSBhZGQgc3VwcG9ydCBmb3IgL2V0Yy9YMTEveHNlcnZlci1zeXN0ZW0KIAogU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorCiAtLS0KLSBYMTEveHNlcnZlci1jb21tb24gfCAgICA1ICsrKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCisgWDExL3hzZXJ2ZXItY29tbW9uIHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL1gxMS94c2VydmVyLWNvbW1vbiBiL1gxMS94c2VydmVyLWNvbW1vbgotaW5kZXggNGM3ZWQ2ZS4uNmQ4YzlkZiAxMDA2NDQKK2luZGV4IDUyNjU1Y2IuLmJiN2MyZmYgMTAwNjQ0CiAtLS0gYS9YMTEveHNlcnZlci1jb21tb24KICsrKyBiL1gxMS94c2VydmVyLWNvbW1vbgogQEAgLTIwNCwzICsyMDQsOCBAQCBmaQpAQCAtMjEsNiArMjIsMyBAQAogK2lmIFsgLWUgL2V0Yy9YMTEveHNlcnZlci1zeXN0ZW0gXSA7IHRoZW4gICAgICAgICAgICAgICAgICAgIAogKyAgICAgICAuIC9ldGMvWDExL3hzZXJ2ZXItc3lzdGVtICAgICAgICAgICAgICAgICAgICAKICtmaSAgICAgICAgICAgICAgICAgICAgCi0tLSAKLTEuNy44LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDA3LXVzZS1vd24tZnVuY3Rpb25zLWZpbGUtaW5zdGVhZC1ldGMtaW5pdC5kLWZ1bmN0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwNy11c2Utb3duLWZ1bmN0aW9ucy1maWxlLWluc3RlYWQtZXRjLWluaXQuZC1mdW5jdGlvbnMucGF0Y2gKaW5kZXggODc5MTIyNi4uOTRhMzU0MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDA3LXVzZS1vd24tZnVuY3Rpb25zLWZpbGUtaW5zdGVhZC1ldGMtaW5pdC5kLWZ1bmN0aW9ucy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDctdXNlLW93bi1mdW5jdGlvbnMtZmlsZS1pbnN0ZWFkLWV0Yy1pbml0LmQtZnVuY3Rpb25zLnBhdGNoCkBAIC0xLDE3ICsxLDE4IEBACi1Gcm9tIDYzZTZiOWE1NGUxZjEyZGJmN2RkYmZlMzM3NmZmZjRjMzgyNDIxYTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDQ5MmM2NWEzMmE0YWU0NGMzNDU4MGVkOGFjNWQzZjUwYTE1NWNmZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDExIEFwciAyMDEyIDE0OjM2OjAyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMTJdIHVzZSBvd24gZnVuY3Rpb25zIGZpbGUgaW5zdGVhZCAvZXRjL2luaXQuZC9mdW5jdGlvbnMKK1N1YmplY3Q6IFtQQVRDSF0gdXNlIG93biBmdW5jdGlvbnMgZmlsZSBpbnN0ZWFkIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucwogCiAqIHNvIHdlIGRvbid0IGhhdmUgdG8gZGVwZW5kIG9uIGluaXRzY3JpcHRzCiAKIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKwogLS0tCi0gTWFrZWZpbGUgICAgICAgICAgICAgfCAgICAxICsKLSBYMTEvWGluaXQuZC8xMXphdXJ1cyB8ICAgIDIgKy0KLSBYMTEvWGluaXQuZC8xMmtleW1hcCB8ICAgIDIgKy0KLSBYMTEvZnVuY3Rpb25zICAgICAgICB8ICAgMTEgKysrKysrKysrKysKLSBYMTEveHNlcnZlci1jb21tb24gICB8ICAgIDIgKy0KKyBNYWtlZmlsZSAgICAgICAgICAgICB8ICAxICsKKyBYMTEvWGluaXQuZC8xMXphdXJ1cyB8ICAyICstCisgWDExL1hpbml0LmQvMTJrZXltYXAgfCAgMiArLQorIFgxMS9mdW5jdGlvbnMgICAgICAgIHwgMTEgKysrKysrKysrKysKKyBYMTEveHNlcnZlci1jb21tb24gICB8ICAyICstCiAgNSBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBYMTEvZnVuY3Rpb25zCiAKQEAgLTcwLDcgKzcxLDcgQEAKICsJCXsgZ3N1YigiICIsICJfIiwgJDIpOyBwcmludCB0b2xvd2VyKCQyKSB9ICcgPC9wcm9jL2NwdWluZm8KICt9CiBkaWZmIC0tZ2l0IGEvWDExL3hzZXJ2ZXItY29tbW9uIGIvWDExL3hzZXJ2ZXItY29tbW9uCi1pbmRleCA2ZDhjOWRmLi5kZTkyYmI3IDEwMDY0NAoraW5kZXggYmI3YzJmZi4uZDYyMmYyYSAxMDA2NDQKIC0tLSBhL1gxMS94c2VydmVyLWNvbW1vbgogKysrIGIvWDExL3hzZXJ2ZXItY29tbW9uCiBAQCAtMzAsNyArMzAsNyBAQCBpZiBbIC1mIC9ldGMvcHJvZmlsZSBdOyB0aGVuCkBAIC04Miw2ICs4MywzIEBACiAgCiAgZmFsbGJhY2tfc2NyZWVuX2FyZygpIHsKICAgICAgZ2VvbT1gZmJzZXQgfCBncmVwIGdlb21ldHJ5YAotLS0gCi0xLjcuOC41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAwOC14c2VydmVyLWNvbW1vbi1hZGQtZHBpLWFuZC1ub2N1cnNvci1wYXJhbXMtZm9yLWd0YTAxLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDA4LXhzZXJ2ZXItY29tbW9uLWFkZC1kcGktYW5kLW5vY3Vyc29yLXBhcmFtcy1mb3ItZ3RhMDEucGF0Y2gKaW5kZXggZTM1ZTRhNy4uOTBkMGYyNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDA4LXhzZXJ2ZXItY29tbW9uLWFkZC1kcGktYW5kLW5vY3Vyc29yLXBhcmFtcy1mb3ItZ3RhMDEucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDA4LXhzZXJ2ZXItY29tbW9uLWFkZC1kcGktYW5kLW5vY3Vyc29yLXBhcmFtcy1mb3ItZ3RhMDEucGF0Y2gKQEAgLTEsMTYgKzEsMTcgQEAKLUZyb20gMGVlN2JmODdlMGM4M2FiYzc5ZGUzYTk5ZGZhM2M4N2RkNWM1YjIyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZTJhYmJlMTEwZTcxYTdiNGI1NjU2NGU2YjlkNThmZmE3ZjM0YTllOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTEgQXByIDIwMTIgMTQ6Mzc6MjkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8xMl0geHNlcnZlci1jb21tb246IGFkZCBkcGkgYW5kIG5vY3Vyc29yIHBhcmFtcyBmb3IgZ3RhMDEKLSBhbmQgZ3RhMDIKK1N1YmplY3Q6IFtQQVRDSF0geHNlcnZlci1jb21tb246IGFkZCBkcGkgYW5kIG5vY3Vyc29yIHBhcmFtcyBmb3IgZ3RhMDEgYW5kCisgZ3RhMDIKIAogU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorCiAtLS0KLSBYMTEveHNlcnZlci1jb21tb24gfCAgICA4ICsrKysrKy0tCi0gMSBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgWDExL3hzZXJ2ZXItY29tbW9uIHwgOCArKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9YMTEveHNlcnZlci1jb21tb24gYi9YMTEveHNlcnZlci1jb21tb24KLWluZGV4IGRlOTJiYjcuLmY3NmZhNWYgMTAwNjQ0CitpbmRleCBkNjIyZjJhLi5hMmMwNTkxIDEwMDY0NAogLS0tIGEvWDExL3hzZXJ2ZXItY29tbW9uCiArKysgYi9YMTEveHNlcnZlci1jb21tb24KIEBAIC0xMzMsMTUgKzEzMywxOSBAQCBlbHNlCkBAIC0zNSw2ICszNiwzIEBACiAgICAgICAgICAgICAgZmkKICAgICAgICAgICAgICA7OwogICAgICAgICAgIm1vdG9yb2xhX2V6eF9wbGF0Zm9ybSIpCi0tLSAKLTEuNy44LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDA5LXhzZXJ2ZXItY29tbW9uLWFkZC1zdXBwb3J0LWZvci1uOTAwLWFsaWFzLW5va2lhX3J4LTUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDkteHNlcnZlci1jb21tb24tYWRkLXN1cHBvcnQtZm9yLW45MDAtYWxpYXMtbm9raWFfcngtNS5wYXRjaAppbmRleCAxYTBiZGU4Li44ZmI2OWIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDkteHNlcnZlci1jb21tb24tYWRkLXN1cHBvcnQtZm9yLW45MDAtYWxpYXMtbm9raWFfcngtNS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMDkteHNlcnZlci1jb21tb24tYWRkLXN1cHBvcnQtZm9yLW45MDAtYWxpYXMtbm9raWFfcngtNS5wYXRjaApAQCAtMSwxNiArMSwxNiBAQAotRnJvbSA2ZDZjYWVjYjcxNzJiOWIzM2U3MzY0NTY0YjBlNmVhYmY2N2I2ZThiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmMmQ4MDhjZWE1YjlmNjkxNThmODJlMTZjMDZmODgyYTZkYjEwZDYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgogRGF0ZTogV2VkLCAxMSBBcHIgMjAxMiAxNDo0MDoxNCArMDIwMAotU3ViamVjdDogW1BBVENIIDA5LzEyXSB4c2VydmVyLWNvbW1vbjogYWRkIHN1cHBvcnQgZm9yIG45MDAgYWxpYXMKLSBub2tpYV9yeC01MV9ib2FyZAorU3ViamVjdDogW1BBVENIXSB4c2VydmVyLWNvbW1vbjogYWRkIHN1cHBvcnQgZm9yIG45MDAgYWxpYXMgbm9raWFfcngtNTFfYm9hcmQKIAogU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorCiAtLS0KLSBYMTEveHNlcnZlci1jb21tb24gfCAgICA3ICsrKysrKysKLSAxIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKKyBYMTEveHNlcnZlci1jb21tb24gfCA3ICsrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9YMTEveHNlcnZlci1jb21tb24gYi9YMTEveHNlcnZlci1jb21tb24KLWluZGV4IGY3NmZhNWYuLjg2ZWQxN2YgMTAwNjQ0CitpbmRleCBhMmMwNTkxLi5iOGMzN2U2IDEwMDY0NAogLS0tIGEvWDExL3hzZXJ2ZXItY29tbW9uCiArKysgYi9YMTEveHNlcnZlci1jb21tb24KIEBAIC0xMzIsNiArMTMyLDEzIEBAIGVsc2UKQEAgLTI3LDYgKzI3LDMgQEAKICAgICAgICAgICJndGEwMSIgKQogICAgICAgICAgICAgIERQST0iMjgwIgogICAgICAgICAgICAgIGlmIFsgIiRYU0VSVkVSIiAhPSAiWG9yZyIgXSA7IHRoZW4KLS0tIAotMS43LjguNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMTAteHNlcnZlci1jb21tb24tYWRkLXN1cHBvcnQtZm9yLW5leHVzLVMtYWxpYXMtaGVycmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAxMC14c2VydmVyLWNvbW1vbi1hZGQtc3VwcG9ydC1mb3ItbmV4dXMtUy1hbGlhcy1oZXJyaW5nLnBhdGNoCmluZGV4IDY4OGJlNDAuLmQzMGM3YmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAxMC14c2VydmVyLWNvbW1vbi1hZGQtc3VwcG9ydC1mb3ItbmV4dXMtUy1hbGlhcy1oZXJyaW5nLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAxMC14c2VydmVyLWNvbW1vbi1hZGQtc3VwcG9ydC1mb3ItbmV4dXMtUy1hbGlhcy1oZXJyaW5nLnBhdGNoCkBAIC0xLDE1ICsxLDE2IEBACi1Gcm9tIDUyMDAzZTZiNTJiMTQxN2MxYTBlNTcyNDNkODMzNDlhZGRjZGFjZjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGExOTRiYTIwMTNmOWU1OGNmNzNjZDM5YjU3YmU2ODM4NmU1MDFlZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDExIEFwciAyMDEyIDE0OjQwOjQ0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMTJdIHhzZXJ2ZXItY29tbW9uOiBhZGQgc3VwcG9ydCBmb3IgbmV4dXMgUyBhbGlhcyBoZXJyaW5nCitTdWJqZWN0OiBbUEFUQ0hdIHhzZXJ2ZXItY29tbW9uOiBhZGQgc3VwcG9ydCBmb3IgbmV4dXMgUyBhbGlhcyBoZXJyaW5nCiAKIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKwogLS0tCi0gWDExL3hzZXJ2ZXItY29tbW9uIHwgICAgMyArKysKLSAxIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKKyBYMTEveHNlcnZlci1jb21tb24gfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL1gxMS94c2VydmVyLWNvbW1vbiBiL1gxMS94c2VydmVyLWNvbW1vbgotaW5kZXggODZlZDE3Zi4uNWM5YTZlYiAxMDA2NDQKK2luZGV4IGI4YzM3ZTYuLjlhYTZiMjQgMTAwNjQ0CiAtLS0gYS9YMTEveHNlcnZlci1jb21tb24KICsrKyBiL1gxMS94c2VydmVyLWNvbW1vbgogQEAgLTEyNiw2ICsxMjYsOSBAQCBlbHNlCkBAIC0yMiw2ICsyMywzIEBACiAgICAgICAgICAiZ2VuZXJpY19vbWFwMTUxMC8xNjEwLzE3MTAiKQogICAgICAgICAgICAgIEFSR1M9IiRBUkdTIC1zY3JlZW4gJHtTQ1JFRU5fU0laRX0iCiAgICAgICAgICAgICAgRFBJPSIyMjUiIDs7Ci0tLSAKLTEuNy44LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDExLXhzZXJ2ZXItY29tbW9uLWFkZC1zdXBwb3J0LWZvci1uZXh1cy1vbmUtYWxpYXMtbWFoaW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMTEteHNlcnZlci1jb21tb24tYWRkLXN1cHBvcnQtZm9yLW5leHVzLW9uZS1hbGlhcy1tYWhpbS5wYXRjaAppbmRleCBmODA0NTZkLi4yM2UxN2YwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMTEteHNlcnZlci1jb21tb24tYWRkLXN1cHBvcnQtZm9yLW5leHVzLW9uZS1hbGlhcy1tYWhpbS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMTEteHNlcnZlci1jb21tb24tYWRkLXN1cHBvcnQtZm9yLW5leHVzLW9uZS1hbGlhcy1tYWhpbS5wYXRjaApAQCAtMSwxNiArMSwxNiBAQAotRnJvbSAwZWNjOTc4YjdkOGNiNjg2NzY0NmZiMmEyOTUyM2ViZWYzYWZhMDE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkZmQ4MzJiMzViNmNiNGNmMmI2ZjJiNTFkZjdiMDk5OWYxMGM4Y2ExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgogRGF0ZTogV2VkLCAxMSBBcHIgMjAxMiAxNDo0MTowNiArMDIwMAotU3ViamVjdDogW1BBVENIIDExLzEyXSB4c2VydmVyLWNvbW1vbjogYWRkIHN1cHBvcnQgZm9yIG5leHVzIG9uZSBhbGlhcwotIG1haGltYWhpCitTdWJqZWN0OiBbUEFUQ0hdIHhzZXJ2ZXItY29tbW9uOiBhZGQgc3VwcG9ydCBmb3IgbmV4dXMgb25lIGFsaWFzIG1haGltYWhpCiAKIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKwogLS0tCi0gWDExL3hzZXJ2ZXItY29tbW9uIHwgICAgMyArKysKLSAxIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKKyBYMTEveHNlcnZlci1jb21tb24gfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL1gxMS94c2VydmVyLWNvbW1vbiBiL1gxMS94c2VydmVyLWNvbW1vbgotaW5kZXggNWM5YTZlYi4uNTU1OTRmZCAxMDA2NDQKK2luZGV4IDlhYTZiMjQuLjhkYTkyNmUgMTAwNjQ0CiAtLS0gYS9YMTEveHNlcnZlci1jb21tb24KICsrKyBiL1gxMS94c2VydmVyLWNvbW1vbgogQEAgLTEyOSw2ICsxMjksOSBAQCBlbHNlCkBAIC0yMyw2ICsyMywzIEBACiAgICAgICAgICAiZ2VuZXJpY19vbWFwMTUxMC8xNjEwLzE3MTAiKQogICAgICAgICAgICAgIEFSR1M9IiRBUkdTIC1zY3JlZW4gJHtTQ1JFRU5fU0laRX0iCiAgICAgICAgICAgICAgRFBJPSIyMjUiIDs7Ci0tLSAKLTEuNy44LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDEyLXhzZXJ2ZXItY29tbW9uLWFkZC1zdXBwb3J0LWZvci1ndGEwNC1hbGlhcy1PcGVuUGhvZW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMTIteHNlcnZlci1jb21tb24tYWRkLXN1cHBvcnQtZm9yLWd0YTA0LWFsaWFzLU9wZW5QaG9lbi5wYXRjaAppbmRleCA1NGEwMzI5Li41ZTc5NGY2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMTIteHNlcnZlci1jb21tb24tYWRkLXN1cHBvcnQtZm9yLWd0YTA0LWFsaWFzLU9wZW5QaG9lbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMTIteHNlcnZlci1jb21tb24tYWRkLXN1cHBvcnQtZm9yLWd0YTA0LWFsaWFzLU9wZW5QaG9lbi5wYXRjaApAQCAtMSwxNiArMSwxNiBAQAotRnJvbSBkMTk0ZjAzMDI1ODJmMWNhNTk5ZjJlYTU4YzE1ZTE1ZjRmZDZiZGVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkOWUwNWU1M2IzMGM2NjcwNTg1MjI1NmZmNWM2MDMyNTJhYTk0YjJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgogRGF0ZTogV2VkLCAxMSBBcHIgMjAxMiAxNDo0MTo1MiArMDIwMAotU3ViamVjdDogW1BBVENIIDEyLzEyXSB4c2VydmVyLWNvbW1vbjogYWRkIHN1cHBvcnQgZm9yIGd0YTA0IGFsaWFzCi0gT3BlblBob2VudXgKK1N1YmplY3Q6IFtQQVRDSF0geHNlcnZlci1jb21tb246IGFkZCBzdXBwb3J0IGZvciBndGEwNCBhbGlhcyBPcGVuUGhvZW51eAogCiBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CisKIC0tLQotIFgxMS94c2VydmVyLWNvbW1vbiB8ICAgIDggKysrKysrKysKLSAxIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKKyBYMTEveHNlcnZlci1jb21tb24gfCA4ICsrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvWDExL3hzZXJ2ZXItY29tbW9uIGIvWDExL3hzZXJ2ZXItY29tbW9uCi1pbmRleCA1NTU5NGZkLi40MzQzMzNlIDEwMDY0NAoraW5kZXggOGRhOTI2ZS4uZDkzMjVkZCAxMDA2NDQKIC0tLSBhL1gxMS94c2VydmVyLWNvbW1vbgogKysrIGIvWDExL3hzZXJ2ZXItY29tbW9uCiBAQCAtMTYxLDYgKzE2MSwxNCBAQCBlbHNlCkBAIC0yOCw2ICsyOCwzIEBACiAgICAgICAgICAibW90b3JvbGFfZXp4X3BsYXRmb3JtIikKICAgICAgICAgICAgICBBUkdTPSIkQVJHUyAtc2NyZWVuIDI0MHgzMjAiCiAgICAgICAgICAgICAgRFBJPSIxNzAiIDs7Ci0tLSAKLTEuNy44LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDEzLXhzZXJ2ZXItY29tbW9uLWFkZC1zdXBwb3J0LWZvci10dW5hLWFsaWFzLUdhbGF4eS1OZXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMTMteHNlcnZlci1jb21tb24tYWRkLXN1cHBvcnQtZm9yLXR1bmEtYWxpYXMtR2FsYXh5LU5leC5wYXRjaAppbmRleCA0OTMyMWViLi43OGQyZTQwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMTMteHNlcnZlci1jb21tb24tYWRkLXN1cHBvcnQtZm9yLXR1bmEtYWxpYXMtR2FsYXh5LU5leC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMTMteHNlcnZlci1jb21tb24tYWRkLXN1cHBvcnQtZm9yLXR1bmEtYWxpYXMtR2FsYXh5LU5leC5wYXRjaApAQCAtMSwxMyArMSwxMyBAQAotRnJvbSAxNzZjM2JkM2Q4NmMyMjNmZDQ0YjBmMTViNjJkMzg1MjZiYjNiMGQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1N2FiNTIxZmZjMTAyNGYyMTEwNWNhMTRiZTJkMDQxYTQ3Nzk0MmIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgogRGF0ZTogRnJpLCAxNyBBdWcgMjAxMiAxMzowMDo1NiArMDIwMAotU3ViamVjdDogW1BBVENIIDEzLzEzXSB4c2VydmVyLWNvbW1vbjogYWRkIHN1cHBvcnQgZm9yIHR1bmEgYWxpYXMgR2FsYXh5Ci0gTmV4dXMKK1N1YmplY3Q6IFtQQVRDSF0geHNlcnZlci1jb21tb246IGFkZCBzdXBwb3J0IGZvciB0dW5hIGFsaWFzIEdhbGF4eSBOZXh1cwogCiBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CisKIC0tLQotIFgxMS94c2VydmVyLWNvbW1vbiB8ICAgIDggKysrKysrKysKLSAxIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKKyBYMTEveHNlcnZlci1jb21tb24gfCA4ICsrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvWDExL3hzZXJ2ZXItY29tbW9uIGIvWDExL3hzZXJ2ZXItY29tbW9uCiBpbmRleCBkOTMyNWRkLi4wMTdlNWFlIDEwMDY0NApAQCAtMjgsNiArMjgsMyBAQAogICAgICAgICAgIm1vdG9yb2xhX2V6eF9wbGF0Zm9ybSIpCiAgICAgICAgICAgICAgQVJHUz0iJEFSR1MgLXNjcmVlbiAyNDB4MzIwIgogICAgICAgICAgICAgIERQST0iMTcwIiA7OwotLS0gCi0xLjcuOC42Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAxNS14c2VydmVyLWNvbW1vbi1kaXNhYmxlLVRDUC1jb25uZWN0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uLTEuMzQvMDAxNS14c2VydmVyLWNvbW1vbi1kaXNhYmxlLVRDUC1jb25uZWN0aW9ucy5wYXRjaAppbmRleCAwNmRmMjYxLi5hNzMxOTE3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbi0xLjM0LzAwMTUteHNlcnZlci1jb21tb24tZGlzYWJsZS1UQ1AtY29ubmVjdGlvbnMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb24tMS4zNC8wMDE1LXhzZXJ2ZXItY29tbW9uLWRpc2FibGUtVENQLWNvbm5lY3Rpb25zLnBhdGNoCkBAIC0xLDMgKzEsNCBAQAorRnJvbSA1MjM2MjA5ZTMwZTBmNDUxMTNlMTQwZjA2NjdjOGZmY2ZlNjIxNTM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSmF2aWVyIFZpZ3VlcmEgPGphdmllci52aWd1ZXJhQGRpZ2kuY29tPgogRGF0ZTogV2VkLCAyNiBOb3YgMjAxNCAwOToyNDo0NCArMDEwMAogU3ViamVjdDogW1BBVENIXSB4c2VydmVyLWNvbW1vbjogZGlzYWJsZSBUQ1AgY29ubmVjdGlvbnMKQEAgLTUsMTIgKzYsMTMgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KIAogU2lnbmVkLW9mZi1ieTogSmF2aWVyIFZpZ3VlcmEgPGphdmllci52aWd1ZXJhQGRpZ2kuY29tPgorCiAtLS0KICBYMTEveHNlcnZlci1jb21tb24gfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9YMTEveHNlcnZlci1jb21tb24gYi9YMTEveHNlcnZlci1jb21tb24KLWluZGV4IDAxN2U1YWVlMWFiMC4uNGRjNDhjNDEyNzQxIDEwMDY0NAoraW5kZXggMDE3ZTVhZS4uNGRjNDhjNCAxMDA2NDQKIC0tLSBhL1gxMS94c2VydmVyLWNvbW1vbgogKysrIGIvWDExL3hzZXJ2ZXItY29tbW9uCiBAQCAtNDQsNyArNDQsNyBAQCBTQ1JFRU5fU0laRT1gZmFsbGJhY2tfc2NyZWVuX2FyZ2AKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uXzEuMzQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2VydmVyLWNvbW1vbi94c2VydmVyLWNvbW1vbl8xLjM0LmJiCmluZGV4IGNjMzA1NDEuLmE1ZWQyMWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXItY29tbW9uL3hzZXJ2ZXItY29tbW9uXzEuMzQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNlcnZlci1jb21tb24veHNlcnZlci1jb21tb25fMS4zNC5iYgpAQCAtNSw3ICs1LDkgQEAKIFBSID0gInI5IgogCiAjIHdlIGFyZSB1c2luZyBhIGdwZS1zdHlsZSBNYWtlZmlsZQotaW5oZXJpdCBncGUKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGdwZQorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiODJmMmY4NGNkOTY2MTBlOGY3YjkyYzcwMGNkMzFjMTQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2QwNGMzMzQxOGY3NzZiMWUxM2ZjYzdhZjNkNmJkMGM3Y2NjZDAzZmJhYmQ3ZGJjZDk3Zjg4MTY2Y2MzNDIxMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcHVwb3dlci9jcHVwb3dlci5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcHVwb3dlci9jcHVwb3dlci5iYgppbmRleCBjOTYzYzhlLi40YWJkMjczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3B1cG93ZXIvY3B1cG93ZXIuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NwdXBvd2VyL2NwdXBvd2VyLmJiCkBAIC0zLDcgKzMsNyBAQAogc2F2aW5nIHJlbGF0ZWQgZmVhdHVyZXMgb2YgeW91ciBwcm9jZXNzb3IuIgogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3ODEwZmFiNzQ4N2ZiMGFhZDMyN2I3NmYxYmU3Y2Q3IgotREVQRU5EUyA9ICJwY2l1dGlscyIKK0RFUEVORFMgPSAicGNpdXRpbHMgZ2V0dGV4dC1uYXRpdmUiCiBQUk9WSURFUyA9ICJ2aXJ0dWFsL2NwdXBvd2VyIgogCiBpbmhlcml0IGtlcm5lbHNyYyBrZXJuZWwtYXJjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoLzAwMDQtY3Jhc2gtZml4LWJ1aWxkLWZhaWx1cmUtd2l0aC1taXBzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoLzAwMDQtY3Jhc2gtZml4LWJ1aWxkLWZhaWx1cmUtd2l0aC1taXBzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTdjZTZiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaC8wMDA0LWNyYXNoLWZpeC1idWlsZC1mYWlsdXJlLXdpdGgtbWlwcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLUZyb20gNDIzZWJkY2UwN2FhOWYzOThmMzJjMGFkZjY1OTM1MzA2OWQwMjNjNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDQgTWF5IDIwMTcgMDc6MTQ6MTMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gY3Jhc2g6IGZpeCBidWlsZCBmYWlsdXJlIHdpdGggbWlwcwotCi1XaGVuIGJ1aWxkIGNyYXNoIHdpdGggbWlwczoKLQotfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci1taXBzLWxpbnV4LW5hdC5jOjE1NzoxOiBlcnJvcjogY29uZmxpY3RpbmcgdHlwZXMgZm9yICdwc19nZXRfdGhyZWFkX2FyZWEnCi0gcHNfZ2V0X3RocmVhZF9hcmVhIChjb25zdCBzdHJ1Y3QgcHNfcHJvY2hhbmRsZSAqcGgsCi0gXn5+fn5+fn5+fn5+fn5+fn5+Ci1JbiBmaWxlIGluY2x1ZGVkIGZyb20gZ2RiX3Byb2Nfc2VydmljZS5oOjI2OjAsCi0gICAgICAgICAgICAgICAgIGZyb20gbWlwcy1saW51eC1uYXQuYzozMjoKLX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi1UaGlzIHByb2JsZW0gaGF2ZSBiZWVuIGZpeGVkIG9uIGludGVsIGFuZCBhcm0gcGxhbnRmb3JtLCB3ZSBjYW4gdXNlIHRoZQotc2ltaWxhciBhcHByb2NoIHRvIGZpeCBpdCBvbiBtaXBzLgotCi1VcHN0cmVhbS1zdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2NyYXNoLXV0aWxpdHkvY3Jhc2gvcHVsbC8xMV0KLQotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLS0tLQotIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKLSBjcmFzaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLW1pcHMucGF0Y2ggfCAzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgY3Jhc2gtZml4LWJ1aWxkLWZhaWx1cmUtd2l0aC1taXBzLnBhdGNoCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCA1NDk2NTIzLi4yZWMzMzI1IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtMjY4LDYgKzI2OCw3IEBAIGdkYl9wYXRjaDoKLSAJCWdyZXAgJ2V4dGVybiBwc19lcnJfZSBwc19nZXRfdGhyZWFkX2FyZWEgKHN0cnVjdCcgJHtSRUNJUEVfU1lTUk9PVH0vdXNyL2luY2x1ZGUvcHJvY19zZXJ2aWNlLmg7IFwKLSAJCWlmIFsgJCQ/IC1lcSAwIF07IHRoZW4gXAotIAkJCXBhdGNoIC1wMCA8ICR7R0RCfS1wcm9jX3NlcnZpY2UuaC5wYXRjaDsgXAotKwkJCXBhdGNoIC1wMSA8IGNyYXNoLWZpeC1idWlsZC1mYWlsdXJlLXdpdGgtbWlwcy5wYXRjaDsgXAotIAkJZmk7IFwKLSAJZmkKLSAKLWRpZmYgLS1naXQgYS9jcmFzaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLW1pcHMucGF0Y2ggYi9jcmFzaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLW1pcHMucGF0Y2gKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4wYzcwYzVmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9jcmFzaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLW1pcHMucGF0Y2gKLUBAIC0wLDAgKzEsMzkgQEAKLStGcm9tIDYxNWM4MDJkOWM3M2ZhZDQ4NzIzYjY1NjcwNDJjZDU0ZjY3OTU4NDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi0rRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLStEYXRlOiBUaHUsIDQgTWF5IDIwMTcgMDY6MTQ6NDcgKzAwMDAKLStTdWJqZWN0OiBbUEFUQ0hdIGNyYXNoOiBmaXggYnVpbGQgZmFpbHVyZSB3aXRoIG1pcHMKLSsKLStXaGVuIGJ1aWxkIGNyYXNoIHdpdGggbWlwczoKLSsKLSt+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci0rbWlwcy1saW51eC1uYXQuYzoxNTc6MTogZXJyb3I6IGNvbmZsaWN0aW5nIHR5cGVzIGZvciAncHNfZ2V0X3RocmVhZF9hcmVhJwotKyBwc19nZXRfdGhyZWFkX2FyZWEgKGNvbnN0IHN0cnVjdCBwc19wcm9jaGFuZGxlICpwaCwKLSsgXn5+fn5+fn5+fn5+fn5+fn5+Ci0rSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGdkYl9wcm9jX3NlcnZpY2UuaDoyNjowLAotKyAgICAgICAgICAgICAgICAgZnJvbSBtaXBzLWxpbnV4LW5hdC5jOjMyOgotK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLSsKLStUaGlzIHByb2JsZW0gaGF2ZSBiZWVuIGZpeGVkIG9uIGludGVsIGFuZCBhcm0gcGxhbnRmb3JtLCB3ZSBjYW4gdXNlIHRoZQotK3NpbWlsYXIgYXBwcm9jaCB0byBmaXggaXQgb24gbWlwcy4KLSsKLStTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotKy0tLQotKyBnZGItNy42L2dkYi9taXBzLWxpbnV4LW5hdC5jIHwgMiArLQotKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLSsKLStkaWZmIC0tZ2l0IGEvZ2RiLTcuNi9nZGIvbWlwcy1saW51eC1uYXQuYyBiL2dkYi03LjYvZ2RiL21pcHMtbGludXgtbmF0LmMKLStpbmRleCA2MWU4M2M2Li5kNTE3ZTM3IDEwMDY0NAotKy0tLSBhL2dkYi03LjYvZ2RiL21pcHMtbGludXgtbmF0LmMKLSsrKysgYi9nZGItNy42L2dkYi9taXBzLWxpbnV4LW5hdC5jCi0rQEAgLTE1NCw3ICsxNTQsNyBAQCBtaXBzNjRfbGludXhfcmVnaXN0ZXJfYWRkciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdubywgaW50IHN0b3JlKQotKyAvKiBGZXRjaCB0aGUgdGhyZWFkLWxvY2FsIHN0b3JhZ2UgcG9pbnRlciBmb3IgbGlidGhyZWFkX2RiLiAgKi8KLSsgCi0rIHBzX2Vycl9lCi0rLXBzX2dldF90aHJlYWRfYXJlYSAoY29uc3Qgc3RydWN0IHBzX3Byb2NoYW5kbGUgKnBoLAotKytwc19nZXRfdGhyZWFkX2FyZWEgKHN0cnVjdCBwc19wcm9jaGFuZGxlICpwaCwKLSsgICAgICAgICAgICAgICAgICAgICBsd3BpZF90IGx3cGlkLCBpbnQgaWR4LCB2b2lkICoqYmFzZSkKLSsgewotKyAgIGlmIChwdHJhY2UgKFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEsIGx3cGlkLCBOVUxMLCBiYXNlKSAhPSAwKQotKy0tIAotKzIuMTEuMAotKwotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoXzcuMS45LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoXzcuMi4wLmJiCnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaF83LjEuOS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoXzcuMi4wLmJiCmluZGV4IGQ0MDkzN2UuLjliZWE0OGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaF83LjEuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3Jhc2gvY3Jhc2hfNy4yLjAuYmIKQEAgLTI0LDEwICsyNCw5IEBACiAgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtdW5yZWNvZ25pemVkLWdjYy1vcHRpb24tbTMyLWZvci1taXBzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItY3Jhc2gtZml4LWJ1aWxkLWVycm9yLXVua25vd24tdHlwZS1uYW1lLWdkYl9mcHJlZ3NldC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAzLWNyYXNoLWRldGVjdC10aGUtc3lzcm9vdC1zLWdsaWJjLWhlYWRlci1maWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtY3Jhc2gtZml4LWJ1aWxkLWZhaWx1cmUtd2l0aC1taXBzLnBhdGNoIFwKICAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImYzYjQ0YTE1MWRiZTcwNDY0NjJiOWNhYWE5ODQ3Y2E2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM0OGUxMjY5NDQzYTZhOGU4MzM3ZTMyOGIyMWIwM2U0ZTUwMjQ4ZjYwN2VlZDgzZmJiMjdlYjBkODMzZDZhYTQiCitTUkNfVVJJW21kNXN1bV0gPSAiNDg4OTlkZTMxMThlMDRjZmE0MGEyMzY0ZjU2MTgxOTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWQwNzZlMWZlZmI0MWFhMTc4YWQzZTFjZWY2NTExNjcwZWZjNDdkZTVjYjA0ZDRhZjliZGQ0ZThmMmYxOGNiYyIKIAogU1JDX1VSSVtnZGIubWQ1c3VtXSA9ICJhOTgzNjcwNzMzN2U1ZjdiZjc2YTAwOWE4OTA0ZjQ3MCIKIFNSQ19VUklbZ2RiLnNoYTI1NnN1bV0gPSAiODA3MDM4OWE1ZGNjMTA0ZWIwYmU0ODNkNTgyNzI5Zjk4ZWQ0ZDc2MWFkMTljZWRkM2YxN2I1ZDI1MDJmYWEzNiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaXBtaXRvb2wvaXBtaXRvb2xfMS44LjE4LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2lwbWl0b29sL2lwbWl0b29sXzEuOC4xOC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pcG1pdG9vbC9pcG1pdG9vbF8xLjguMTguYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdG9vbC9pcG1pdG9vbF8xLjguMTguYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaXBtaXV0aWwvaXBtaXV0aWwvZml4X3N5c3RlbWRfcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdXRpbC9pcG1pdXRpbC9maXhfc3lzdGVtZF9wYXRoLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lwbWl1dGlsL2lwbWl1dGlsL2ZpeF9zeXN0ZW1kX3BhdGgucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdXRpbC9pcG1pdXRpbC9maXhfc3lzdGVtZF9wYXRoLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lwbWl1dGlsL2lwbWl1dGlsXzMuMC41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2lwbWl1dGlsL2lwbWl1dGlsXzMuMC41LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lwbWl1dGlsL2lwbWl1dGlsXzMuMC41LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXV0aWwvaXBtaXV0aWxfMy4wLjUuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoLmluYyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWU3M2U5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2guaW5jCkBAIC0wLDAgKzEsNDkgQEAKK1NVTU1BUlkgPSAiTGludXggZHluYW1pYyBrZXJuZWwgcGF0Y2hpbmcgaW5mcmFzdHJ1Y3R1cmUiCitERVNDUklQVElPTiA9ICJrcGF0Y2ggaXMgYSBMaW51eCBkeW5hbWljIGtlcm5lbCBwYXRjaGluZyBpbmZyYXN0cnVjdHVyZSB3aGljaCBhbGxvd3MgeW91IHRvIHBhdGNoIGEgcnVubmluZyBrZXJuZWwgd2l0aG91dCByZWJvb3Rpbmcgb3IgcmVzdGFydGluZyBhbnkgcHJvY2Vzc2VzLiIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCitERVBFTkRTID0gImVsZnV0aWxzIGJhc2giCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9keW51cC9rcGF0Y2guZ2l0O3Byb3RvY29sPWh0dHBzIFwKKwlmaWxlOi8vMDAwMS1rcGF0Y2gtYnVpbGQtYWRkLWNyb3NzLWNvbXBpbGF0aW9uLXN1cHBvcnQucGF0Y2ggXAorCWZpbGU6Ly8wMDAyLWtwYXRjaC1idWlsZC1hbGxvdy1vdmVycmlkaW5nLW9mLWRpc3Ryby1uYW1lLnBhdGNoIFwKKwkiCisKK0VYVFJBX09FTUFLRSA9ICIgXAorCVBSRUZJWD0ke3ByZWZpeH0gXAorCUJJTkRJUj0ke0R9JHtiaW5kaXJ9IFwKKwlTQklORElSPSR7RH0ke3NiaW5kaXJ9IFwKKwlMSUJESVI9JHtEfSR7bGliZGlyfSBcCisJTUFORElSPSR7RH0ke21hbmRpcn0vbWFuMSBcCisJU1lTVEVNRERJUj0ke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSBcCisJREVTVERJUj0ke0R9IFwKKwlCVUlMRE1PRD1ubyBcCisJQ0M9JyR7Q0N9JyBcCisJIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitkb19pbnN0YWxsICgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGwKK30KKworUEFDS0FHRVMgPSsgImtwYXRjaC1idWlsZCIKK1BST1ZJREVTICs9ICJrcGF0Y2gtYnVpbGQiCisKK0NPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0KS4qLWxpbnV4IgorCitSREVQRU5EU18ke1BOfSA9ICJiYXNoIGJpbnV0aWxzIgorUkRFUEVORFNfa3BhdGNoLWJ1aWxkID0gImJhc2ggZ2xpYmMtdXRpbHMiCisKK0ZJTEVTXyR7UE59ID0gIiBcCisJJHtzYmluZGlyfS9rcGF0Y2ggXAorCSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0va3BhdGNoLnNlcnZpY2UgXAorCSR7bWFuZGlyfS9tYW4xL2twYXRjaC4xLmd6IFwKKwkiCitGSUxFU19rcGF0Y2gtYnVpbGQgPSAiIFwKKwkke2JpbmRpcn0va3BhdGNoLWJ1aWxkIFwKKwkke2xpYmV4ZWNkaXJ9LyogXAorCSR7ZGF0YWRpcn0va3BhdGNoIFwKKwkke21hbmRpcn0vbWFuMS9rcGF0Y2gtYnVpbGQuMS5neiBcCisJIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAia3BhdGNoLnNlcnZpY2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaC8wMDAxLWtwYXRjaC1idWlsZC1hZGQtY3Jvc3MtY29tcGlsYXRpb24tc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoLzAwMDEta3BhdGNoLWJ1aWxkLWFkZC1jcm9zcy1jb21waWxhdGlvbi1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1OWZiMjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaC8wMDAxLWtwYXRjaC1idWlsZC1hZGQtY3Jvc3MtY29tcGlsYXRpb24tc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDEwMyBAQAorRnJvbSBhOWE4MGExZjRkZjY1ODkyYTAyNjkyOTVjZThhNjRiMDZmMmZmNjFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUnVzbGFuIEJpbG92b2wgPHJiaWxvdm9sQGNpc2NvLmNvbT4KK0RhdGU6IFR1ZSwgMTkgRGVjIDIwMTcgMTU6NTk6MDQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0ga3BhdGNoLWJ1aWxkOiBhZGQgY3Jvc3MtY29tcGlsYXRpb24gc3VwcG9ydAorCitUaGlzIHBhdGNoIGludHJvZHVjZXMgbmV3IG9wdGlvbiBmb3Iga3BhdGNoLWJ1aWxkCitzY3JpcHQgIi0tY3Jvc3MtY29tcGlsZSIgd2hpY2ggY2FuIGJlIHVzZWQgZm9yCitzcGVjaWZ5aW5nIGNyb3NzLWNvbXBsaWVyIHByZWZpeC4KK0l0IGFsbG93cyB0byBidWlsZCBsaXZlIHBhdGNoZXMgbm90IG9ubHkgb24KK3RhcmdldCBzeXN0ZW0sIGJ1dCBhbHNvIG9uIGhvc3RzIGZvciBhIHRhcmdldCBvdGhlcgordGhhbiB0aGUgb25lIG9uIHdoaWNoIHRoZSBjb21waWxlciBpcyBydW5uaW5nCisKK0Fsc28gcmVtb3ZlZCBxdW90ZXMgaW4gZXhlYyBsaW5lcywgc28gaXQgaXMKK3Bvc3NpYmxlIHRvIHBhc3MgbXVsdHktY29tcG9uZW50IHN0cmluZ3MgbGlrZQorImNjYWNoZSB4ODZfNjQteGVsaW51eC1saW51eC0iIGFzIGNyb3NzLWNvbXBpbGVyCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBSdXNsYW4gQmlsb3ZvbCA8cmJpbG92b2xAY2lzY28uY29tPgorLS0tCisga3BhdGNoLWJ1aWxkL2twYXRjaC1idWlsZCB8IDEzICsrKysrKysrKysrLS0KKyBrcGF0Y2gtYnVpbGQva3BhdGNoLWdjYyAgIHwgIDQgKystLQorIDIgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2twYXRjaC1idWlsZC9rcGF0Y2gtYnVpbGQgYi9rcGF0Y2gtYnVpbGQva3BhdGNoLWJ1aWxkCitpbmRleCAxNjZlY2JkLi5hZjI0Y2M0IDEwMDc1NQorLS0tIGEva3BhdGNoLWJ1aWxkL2twYXRjaC1idWlsZAorKysrIGIva3BhdGNoLWJ1aWxkL2twYXRjaC1idWlsZAorQEAgLTE5NSw3ICsxOTUsNyBAQCBnY2NfdmVyc2lvbl9jaGVjaygpIHsKKyAJIyBnY2MgLS12ZXJzaW9uIHZhcmllcyBiZXR3ZWVuIGRpc3RyaWJ1dGlvbnMgdGhlcmVmb3JlIGV4dHJhY3QgdmVyc2lvbgorIAkjIGJ5IGNvbXBpbGluZyBhIHRlc3QgZmlsZSBhbmQgY29tcGFyZSBpdCB0byB2bWxpbnV4J3MgdmVyc2lvbi4KKyAJZWNobyAndm9pZCBtYWluKHZvaWQpIHt9JyA+ICIkYyIKKy0Jb3V0PSIkKGdjYyAtYyAtcGcgLWZmdW5jdGlvbi1zZWN0aW9ucyAtbyAiJG8iICIkYyIgMj4mMSkiCisrCW91dD0iJCgke0tQQVRDSF9DUk9TU19DT01QSUxFfWdjYyAtYyAtcGcgLWZmdW5jdGlvbi1zZWN0aW9ucyAtbyAiJG8iICIkYyIgMj4mMSkiCisgCWdjY3Zlcj0iJChnY2NfdmVyc2lvbl9mcm9tX2ZpbGUgIiRvIikiCisgCWtnY2N2ZXI9IiQoZ2NjX3ZlcnNpb25fZnJvbV9maWxlICIkVk1MSU5VWCIpIgorIAlybSAtZiAiJGMiICIkbyIKK0BAIC0zODEsMTIgKzM4MSwxNCBAQCB1c2FnZSgpIHsKKyAJZWNobyAiCQktZCwgLS1kZWJ1ZyAgICAgICAgRW5hYmxlICd4dHJhY2UnIGFuZCBrZWVwIHNjcmF0Y2ggZmlsZXMiID4mMgorIAllY2hvICIJCSAgICAgICAgICAgICAgICAgICBpbiA8Q0FDSEVESVI+L3RtcCIgPiYyCisgCWVjaG8gIgkJICAgICAgICAgICAgICAgICAgIChjYW4gYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzKSIgPiYyCisrCWVjaG8gIgkJLS1jcm9zcy1jb21waWxlICAgIFNwZWNpZnkgdGhlIHByZWZpeCB1c2VkIGZvciBhbGwgZXhlY3V0YWJsZXMiID4mMgorKwllY2hvICIJCSAgICAgICAgICAgICAgICAgICB1c2VkIGR1cmluZyBjb21waWxhdGlvbiIgPiYyCisgCWVjaG8gIgkJLS1za2lwLWNsZWFudXAgICAgIFNraXAgcG9zdC1idWlsZCBjbGVhbnVwIiA+JjIKKyAJZWNobyAiCQktLXNraXAtZ2NjLWNoZWNrICAgU2tpcCBnY2MgdmVyc2lvbiBtYXRjaGluZyBjaGVjayIgPiYyCisgCWVjaG8gIgkJICAgICAgICAgICAgICAgICAgIChub3QgcmVjb21tZW5kZWQpIiA+JjIKKyB9CisgCistb3B0aW9ucz0iJChnZXRvcHQgLW8gaGE6cjpzOmM6djpqOnQ6bjpvOmQgLWwgImhlbHAsYXJjaHZlcnNpb246LHNvdXJjZXJwbTosc291cmNlZGlyOixjb25maWc6LHZtbGludXg6LGpvYnM6LHRhcmdldDosbmFtZTosb3V0cHV0OixkZWJ1Zyxza2lwLWdjYy1jaGVjayxza2lwLWNsZWFudXAiIC0tICIkQCIpIiB8fCBkaWUgImdldG9wdCBmYWlsZWQiCisrb3B0aW9ucz0iJChnZXRvcHQgLW8gaGE6cjpzOmM6djpqOnQ6bjpvOmQgLWwgImhlbHAsYXJjaHZlcnNpb246LHNvdXJjZXJwbTosc291cmNlZGlyOixjb25maWc6LHZtbGludXg6LGpvYnM6LHRhcmdldDosbmFtZTosb3V0cHV0OixkZWJ1Zyxjcm9zcy1jb21waWxlOixza2lwLWdjYy1jaGVjayxza2lwLWNsZWFudXAiIC0tICIkQCIpIiB8fCBkaWUgImdldG9wdCBmYWlsZWQiCisgCisgZXZhbCBzZXQgLS0gIiRvcHRpb25zIgorIAorQEAgLTQ0NCw2ICs0NDYsMTAgQEAgd2hpbGUgW1sgJCMgLWd0IDAgXV07IGRvCisgCQkJZWNobyAiREVCVUcgbW9kZSBlbmFibGVkIgorIAkJZmkKKyAJCTs7CisrCS0tY3Jvc3MtY29tcGlsZSkKKysJCUtQQVRDSF9DUk9TU19DT01QSUxFPSIkMiIKKysJCXNoaWZ0CisrCQk7OworIAktLXNraXAtY2xlYW51cCkKKyAJCWVjaG8gIlNraXBwaW5nIGNsZWFudXAiCisgCQlTS0lQQ0xFQU5VUD0xCitAQCAtNjkxLDYgKzY5Nyw4IEBAIGlmIFtbICRERUJVRyAtZ2UgNCBdXTsgdGhlbgorIAlleHBvcnQgS1BBVENIX0dDQ19ERUJVRz0xCisgZmkKKyAKKytleHBvcnQgS1BBVENIX0NST1NTX0NPTVBJTEUKKysKKyBlY2hvICJCdWlsZGluZyBvcmlnaW5hbCBrZXJuZWwiCisgLi9zY3JpcHRzL3NldGxvY2FsdmVyc2lvbiAtLXNhdmUtc2NtdmVyc2lvbiB8fCBkaWUKKyBtYWtlIG1ycHJvcGVyIDI+JjEgfCBsb2dnZXIgfHwgZGllCitAQCAtODQwLDYgKzg0OCw3IEBAIGNkICIkVEVNUERJUi9wYXRjaCIgfHwgZGllCisgS1BBVENIX0JVSUxEPSIkU1JDRElSIiBLUEFUQ0hfTkFNRT0iJE1PRE5BTUUiIFwKKyBLQlVJTERfRVhUUkFfU1lNQk9MUz0iJEtCVUlMRF9FWFRSQV9TWU1CT0xTIiBcCisgS1BBVENIX0xERkxBR1M9IiRLUEFUQ0hfTERGTEFHUyIgXAorK0NST1NTX0NPTVBJTEU9IiRLUEFUQ0hfQ1JPU1NfQ09NUElMRSIgXAorIAltYWtlIDI+JjEgfCBsb2dnZXIgfHwgZGllCisgCisgaWYgISAiJEtQQVRDSF9NT0RVTEUiOyB0aGVuCitkaWZmIC0tZ2l0IGEva3BhdGNoLWJ1aWxkL2twYXRjaC1nY2MgYi9rcGF0Y2gtYnVpbGQva3BhdGNoLWdjYworaW5kZXggNmJhMTMzYy4uMzkzNzk0OCAxMDA3NTUKKy0tLSBhL2twYXRjaC1idWlsZC9rcGF0Y2gtZ2NjCisrKysgYi9rcGF0Y2gtYnVpbGQva3BhdGNoLWdjYworQEAgLTgsNyArOCw3IEBAIFRPT0xDSEFJTkNNRD0iJDEiCisgc2hpZnQKKyAKKyBpZiBbWyAteiAiJEtQQVRDSF9HQ0NfVEVNUERJUiIgXV07IHRoZW4KKy0JZXhlYyAiJFRPT0xDSEFJTkNNRCIgIiRAIgorKwlleGVjICR7S1BBVENIX0NST1NTX0NPTVBJTEV9JHtUT09MQ0hBSU5DTUR9ICIkQCIKKyBmaQorIAorIGRlY2xhcmUgLWEgYXJncz0oIiRAIikKK0BAIC04MCw0ICs4MCw0IEBAIGVsaWYgW1sgIiRUT09MQ0hBSU5DTUQiID0gImxkIiBdXSA7IHRoZW4KKyAJZG9uZQorIGZpCisgCistZXhlYyAiJFRPT0xDSEFJTkNNRCIgIiR7YXJnc1tAXX0iCisrZXhlYyAke0tQQVRDSF9DUk9TU19DT01QSUxFfSR7VE9PTENIQUlOQ01EfSAiJHthcmdzW0BdfSIKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2gvMDAwMi1rcGF0Y2gtYnVpbGQtYWxsb3ctb3ZlcnJpZGluZy1vZi1kaXN0cm8tbmFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoLzAwMDIta3BhdGNoLWJ1aWxkLWFsbG93LW92ZXJyaWRpbmctb2YtZGlzdHJvLW5hbWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTlkOGE3ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoLzAwMDIta3BhdGNoLWJ1aWxkLWFsbG93LW92ZXJyaWRpbmctb2YtZGlzdHJvLW5hbWUucGF0Y2gKQEAgLTAsMCArMSw2MiBAQAorRnJvbSBkNDE4ZDcxNmRhZTFlMmEwNTEzMWRmYjQyYTE5YTRkYTJmYzhhODVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUnVzbGFuIEJpbG92b2wgPHJiaWxvdm9sQGNpc2NvLmNvbT4KK0RhdGU6IFR1ZSwgMiBKYW4gMjAxOCAxNDo1MDowMyArMDIwMAorU3ViamVjdDogW1BBVENIXSBrcGF0Y2gtYnVpbGQ6IGFsbG93IG92ZXJyaWRpbmcgb2YgZGlzdHJvIG5hbWUKKworSXQgaXMgc29tZXRpbWVzIHVzZWZ1bCB0byBoYXZlIGFiaWxpdHkgdG8gb3ZlcnJpZGUKK2Rpc3RybyBuYW1lLCBmb3IgZXhhbXBsZSBkdXJpbmcgY3Jvc3MtY29tcGlsYXRpb24KK2J1aWxkIHdoZW4gbGl2ZXBhdGNoIG1vZHVsZXMgd2lsbCBiZSByYW4gb24gdGhlCit0YXJnZXQgd2hpY2ggZGlmZmVycyBmcm9tIGhvc3QuCisKK1RoaXMgcGF0Y2ggYWRkcyBhIG5ldyAtLWRpc3RybyBvcHRpb24gd2hpY2gKK2ltcGxlbWVudHMgYWxsIG5lZWRlZCBmdW5jdGlvbmFsaXR5CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBSdXNsYW4gQmlsb3ZvbCA8cmJpbG92b2xAY2lzY28uY29tPgorLS0tCisga3BhdGNoLWJ1aWxkL2twYXRjaC1idWlsZCB8IDkgKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2twYXRjaC1idWlsZC9rcGF0Y2gtYnVpbGQgYi9rcGF0Y2gtYnVpbGQva3BhdGNoLWJ1aWxkCitpbmRleCBhZjI0Y2M0Li40ZjlmNzhkIDEwMDc1NQorLS0tIGEva3BhdGNoLWJ1aWxkL2twYXRjaC1idWlsZAorKysrIGIva3BhdGNoLWJ1aWxkL2twYXRjaC1idWlsZAorQEAgLTM4MywxMiArMzgzLDEzIEBAIHVzYWdlKCkgeworIAllY2hvICIJCSAgICAgICAgICAgICAgICAgICAoY2FuIGJlIHNwZWNpZmllZCBtdWx0aXBsZSB0aW1lcykiID4mMgorIAllY2hvICIJCS0tY3Jvc3MtY29tcGlsZSAgICBTcGVjaWZ5IHRoZSBwcmVmaXggdXNlZCBmb3IgYWxsIGV4ZWN1dGFibGVzIiA+JjIKKyAJZWNobyAiCQkgICAgICAgICAgICAgICAgICAgdXNlZCBkdXJpbmcgY29tcGlsYXRpb24iID4mMgorKwllY2hvICIJCS0tZGlzdHJvICAgICAgICAgICBPdmVycmlkZSBkaXN0cm8gbmFtZSIgPiYyCisgCWVjaG8gIgkJLS1za2lwLWNsZWFudXAgICAgIFNraXAgcG9zdC1idWlsZCBjbGVhbnVwIiA+JjIKKyAJZWNobyAiCQktLXNraXAtZ2NjLWNoZWNrICAgU2tpcCBnY2MgdmVyc2lvbiBtYXRjaGluZyBjaGVjayIgPiYyCisgCWVjaG8gIgkJICAgICAgICAgICAgICAgICAgIChub3QgcmVjb21tZW5kZWQpIiA+JjIKKyB9CisgCistb3B0aW9ucz0iJChnZXRvcHQgLW8gaGE6cjpzOmM6djpqOnQ6bjpvOmQgLWwgImhlbHAsYXJjaHZlcnNpb246LHNvdXJjZXJwbTosc291cmNlZGlyOixjb25maWc6LHZtbGludXg6LGpvYnM6LHRhcmdldDosbmFtZTosb3V0cHV0OixkZWJ1Zyxjcm9zcy1jb21waWxlOixza2lwLWdjYy1jaGVjayxza2lwLWNsZWFudXAiIC0tICIkQCIpIiB8fCBkaWUgImdldG9wdCBmYWlsZWQiCisrb3B0aW9ucz0iJChnZXRvcHQgLW8gaGE6cjpzOmM6djpqOnQ6bjpvOmQgLWwgImhlbHAsYXJjaHZlcnNpb246LHNvdXJjZXJwbTosc291cmNlZGlyOixjb25maWc6LHZtbGludXg6LGpvYnM6LHRhcmdldDosbmFtZTosb3V0cHV0OixkZWJ1Zyxjcm9zcy1jb21waWxlOixkaXN0cm86LHNraXAtZ2NjLWNoZWNrLHNraXAtY2xlYW51cCIgLS0gIiRAIikiIHx8IGRpZSAiZ2V0b3B0IGZhaWxlZCIKKyAKKyBldmFsIHNldCAtLSAiJG9wdGlvbnMiCisgCitAQCAtNDUwLDYgKzQ1MSwxMCBAQCB3aGlsZSBbWyAkIyAtZ3QgMCBdXTsgZG8KKyAJCUtQQVRDSF9DUk9TU19DT01QSUxFPSIkMiIKKyAJCXNoaWZ0CisgCQk7OworKwktLWRpc3RybykKKysJCURJU1RSTz0iJDIiCisrCQlzaGlmdAorKwkJOzsKKyAJLS1za2lwLWNsZWFudXApCisgCQllY2hvICJTa2lwcGluZyBjbGVhbnVwIgorIAkJU0tJUENMRUFOVVA9MQorQEAgLTUyNiw3ICs1MzEsNyBAQCBmaQorICMgRG9uJ3QgY2hlY2sgZXh0ZXJuYWwgZmlsZS4KKyAjIHNoZWxsY2hlY2sgZGlzYWJsZT1TQzEwOTEKKyBzb3VyY2UgL2V0Yy9vcy1yZWxlYXNlCistRElTVFJPPSIkSUQiCisrRElTVFJPPSIke0RJU1RSTzotJHtJRH19IgorIGlmIFtbICIkRElTVFJPIiA9IGZlZG9yYSBdXSB8fCBbWyAiJERJU1RSTyIgPSByaGVsIF1dIHx8IFtbICIkRElTVFJPIiA9IG9sIF1dIHx8IFtbICIkRElTVFJPIiA9IGNlbnRvcyBdXTsgdGhlbgorIAlbWyAteiAiJFZNTElOVVgiIF1dICYmIFZNTElOVVg9Ii91c3IvbGliL2RlYnVnL2xpYi9tb2R1bGVzLyRBUkNIVkVSU0lPTi92bWxpbnV4IgorIAlbWyAtZSAiJFZNTElOVVgiIF1dIHx8IGRpZSAia2VybmVsLWRlYnVnaW5mby0kQVJDSFZFUlNJT04gbm90IGluc3RhbGxlZCIKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2hfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2hfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0OTVlMjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaF9naXQuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSBrcGF0Y2guaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNSRVYgPSAiZGI2ZWZiYjhjN2U5MGQyYjc2MTI3MmNmNTYzMDQ3MTE5MDcyNzY4ZiIKKworUFYgPSAiMC41LjArZ2l0JHtTUkNQVn0iCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXguaW5jCmluZGV4IGUyMDAxMjcuLjlmMTQzNzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LmluYwpAQCAtMTYsNyArMTYsNyBAQAogCiAjIEtlcm5lbCBib290bG9nbyBpcyBkaXN0cm8tc3BlY2lmaWMgKGRlZmF1bHQgaXMgT0UgbG9nbykuCiAjIExvZ28gcmVzb2x1dGlvbiAocXZnYSwgdmdhLCAuLi4pIGlzIG1hY2hpbmUtc3BlY2lmaWMuCi1MT0dPX1NJWkUgPz0gJyR7QGJhc2VfY29uZGl0aW9uYWwoIk1BQ0hJTkVfR1VJX0NMQVNTIiwgImJpZ3NjcmVlbiIsICJ2Z2EiLCAicXZnYSIsIGQpfScKK0xPR09fU0laRSA/PSAnJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoIk1BQ0hJTkVfR1VJX0NMQVNTIiwgImJpZ3NjcmVlbiIsICJ2Z2EiLCAicXZnYSIsIGQpfScKICMgVG8gdXNlIHRoaXMsIGFkZCBmaWxlOi8vJHtMT0dPX1NJWkV9L2xvZ29fbGludXhfY2x1dDIyNC5wcG0uYnoyIG9yIHNpbWlsYXIKICMgdG8geW91ciBrZXJuZWwgcmVjaXBlLCBhbmQgdGhlbiBzdHJ1Y3R1cmUgeW91ciBsb2dvcyBmb3IgZWFjaCByZXNvbHV0aW9uCiAjIGFjY29yZGluZ2x5LgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL2ZpbGVzL21pbmljb3JlZHVtcGVyLmluaXQgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWluaWNvcmVkdW1wZXIvZmlsZXMvbWluaWNvcmVkdW1wZXIuaW5pdAppbmRleCA5MGVmN2ZhLi45Yzk2ZTMxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWluaWNvcmVkdW1wZXIvZmlsZXMvbWluaWNvcmVkdW1wZXIuaW5pdAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWluaWNvcmVkdW1wZXIvZmlsZXMvbWluaWNvcmVkdW1wZXIuaW5pdApAQCAtMjIsNyArMjIsNyBAQAogCiBjYXNlICIkMSIgaW4KICAgICBzdGFydCkKLSAgICAgICAgZWNobyAifC91c3IvYmluL21pbmljb3JlZHVtcGVyICVwICV1ICVnICVzICV0ICVoICVlIiA+IC9wcm9jL3N5cy9rZXJuZWwvY29yZV9wYXR0ZXJuCisgICAgICAgIGVjaG8gInwvdXNyL3NiaW4vbWluaWNvcmVkdW1wZXIgJXAgJXUgJWcgJXMgJXQgJWggJWUiID4gL3Byb2Mvc3lzL2tlcm5lbC9jb3JlX3BhdHRlcm4KICAgICAgICAgOzsKICAgICBzdG9wKQogICAgICAgICBlY2hvICJjb3JlIiA+IC9wcm9jL3N5cy9rZXJuZWwvY29yZV9wYXR0ZXJuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWluaWNvcmVkdW1wZXIvZmlsZXMvbWluaWNvcmVkdW1wZXIuc2VydmljZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9taW5pY29yZWR1bXBlci9maWxlcy9taW5pY29yZWR1bXBlci5zZXJ2aWNlCmluZGV4IDg1MWI1NGMuLjQ1ZDA5OGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9taW5pY29yZWR1bXBlci9maWxlcy9taW5pY29yZWR1bXBlci5zZXJ2aWNlCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9taW5pY29yZWR1bXBlci9maWxlcy9taW5pY29yZWR1bXBlci5zZXJ2aWNlCkBAIC00LDcgKzQsNyBAQAogW1NlcnZpY2VdCiBUeXBlPW9uZXNob3QKIFJlbWFpbkFmdGVyRXhpdD15ZXMKLUV4ZWNTdGFydD0vYmluL3NoIC1jICcvYmluL2VjaG8gInwvdXNyL2Jpbi9taW5pY29yZWR1bXBlciAlJXAgJSV1ICUlZyAlJXMgJSV0ICUlaCAlJWUiID4gL3Byb2Mvc3lzL2tlcm5lbC9jb3JlX3BhdHRlcm4nCitFeGVjU3RhcnQ9L2Jpbi9zaCAtYyAnL2Jpbi9lY2hvICJ8L3Vzci9zYmluL21pbmljb3JlZHVtcGVyICUlcCAlJXUgJSVnICUlcyAlJXQgJSVoICUlZSIgPiAvcHJvYy9zeXMva2VybmVsL2NvcmVfcGF0dGVybicKIEV4ZWNTdG9wPS9iaW4vc2ggLWMgJy9iaW4vZWNobyAiY29yZSIgPiAvcHJvYy9zeXMva2VybmVsL2NvcmVfcGF0dGVybicKIAogW0luc3RhbGxdCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWluaWNvcmVkdW1wZXIvbWluaWNvcmVkdW1wZXJfMi4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWluaWNvcmVkdW1wZXIvbWluaWNvcmVkdW1wZXJfMi4wLjAuYmIKaW5kZXggMTg1OGUxMC4uMGQzYzY2YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL21pbmljb3JlZHVtcGVyXzIuMC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9taW5pY29yZWR1bXBlci9taW5pY29yZWR1bXBlcl8yLjAuMC5iYgpAQCAtMzgsNCArMzgsOCBAQAogICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L21pbmljb3JlZHVtcGVyLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAogICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L21pbmljb3JlZHVtcGVyLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL21pbmljb3JlZHVtcGVyCisKKyAgICAjIGNvcnJlY3QgcGF0aCBvZiBtaW5pY29yZWR1bXBlcgorICAgIHNlZCAtaSAtZSBzOi91c3IvYmluL21pbmljb3JlZHVtcGVyOiR7c2JpbmRpcn0vbWluaWNvcmVkdW1wZXI6ZyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbWluaWNvcmVkdW1wZXIKKyAgICBzZWQgLWkgLWUgczovdXNyL2Jpbi9taW5pY29yZWR1bXBlcjoke3NiaW5kaXJ9L21pbmljb3JlZHVtcGVyOmcgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWluaWNvcmVkdW1wZXIuc2VydmljZQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2Etb3NzLTEuMC4xNy9saWJpby5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLW9zcy9saWJpby5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDY2JQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1vc3MtMS4wLjE3L2xpYmlvLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1vc3MvbGliaW8ucGF0Y2gKaW5kZXggYTA1M2U0Yy4uNTI5OTk0NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2Etb3NzLTEuMC4xNy9saWJpby5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1vc3MvbGliaW8ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1JbmRleDogYWxzYS1vc3MtMS4wLjE1L2Fsc2Evc3RkaW9lbXUuYworSW5kZXg6IGFsc2Etb3NzLTEuMC4yOC9hbHNhL3N0ZGlvZW11LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhbHNhLW9zcy0xLjAuMTUub3JpZy9hbHNhL3N0ZGlvZW11LmMJMjAwNy0xMC0xNSAxMDo1MDo0MC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBhbHNhLW9zcy0xLjAuMTUvYWxzYS9zdGRpb2VtdS5jCTIwMDgtMDctMjEgMjI6MTc6MDYuMzAzMTYxNDM4ICswMjAwCistLS0gYWxzYS1vc3MtMS4wLjI4Lm9yaWcvYWxzYS9zdGRpb2VtdS5jCisrKysgYWxzYS1vc3MtMS4wLjI4L2Fsc2Evc3RkaW9lbXUuYwogQEAgLTM3LDcgKzM3LDkgQEAKICAjZW5kaWYKICAKQEAgLTEyLDcgKzEyLDcgQEAKICAKICBzdHJ1Y3QgZmRfY29va2llIHsKICAJaW50IGZkOwotQEAgLTk5LDcgKzEwMSwxMSBAQAorQEAgLTk5LDcgKzEwMSwxMSBAQCBzdGF0aWMgRklMRSAqZmFrZV9mb3Blbihjb25zdCBjaGFyICpwYXRoCiAgCiAgCWlmIChvcGVuX21vZGUgJiYgZmRjLT5mZCA+IDApIHsKICAJCXJlc3VsdCA9IGZvcGVuY29va2llIChmZGMsInciLCBmbnMpOwpAQCAtMjQsMTEgKzI0LDExIEBACiAgCX0KICAJcmV0dXJuIHJlc3VsdDsKICB9Ci1JbmRleDogYWxzYS1vc3MtMS4wLjE1L2NvbmZpZ3VyZS5pbgorSW5kZXg6IGFsc2Etb3NzLTEuMC4yOC9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhbHNhLW9zcy0xLjAuMTUub3JpZy9jb25maWd1cmUuaW4JMjAwNy0xMC0xNSAxMDo1MDo0MC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBhbHNhLW9zcy0xLjAuMTUvY29uZmlndXJlLmluCTIwMDgtMDctMjEgMjI6MTY6MTEuNzE5ODM3Mjk4ICswMjAwCi1AQCAtMzMsNiArMzMsMTIgQEAKKy0tLSBhbHNhLW9zcy0xLjAuMjgub3JpZy9jb25maWd1cmUuYWMKKysrKyBhbHNhLW9zcy0xLjAuMjgvY29uZmlndXJlLmFjCitAQCAtMzUsNiArMzUsMTIgQEAgaWYgdGVzdCAiJHdpdGhfYW9zcyIgPSAieWVzIjsgdGhlbgogICAgTElCUz0iJE9MRF9MSUJTIgogIGZpCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1vc3NfMS4wLjE3LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2Etb3NzXzEuMC4yOC5iYgpzaW1pbGFyaXR5IGluZGV4IDc1JQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1vc3NfMS4wLjE3LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1vc3NfMS4wLjI4LmJiCmluZGV4IDg5NjZkYmIuLjBjNGE5ZjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLW9zc18xLjAuMTcuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2Etb3NzXzEuMC4yOC5iYgpAQCAtMywxMSArMywxMiBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM5M2E1Y2E0NDVmNjk2NTg3M2VjYTAyNTlhMTdmODMzIgogREVQRU5EUyA9ICJhbHNhLWxpYiIKLVBSID0gInIxIgogCiBTUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi9vc3MtbGliL2Fsc2Etb3NzLSR7UFZ9LnRhci5iejIgXAogICAgIGZpbGU6Ly9saWJpby5wYXRjaCBcCiAiCitTUkNfVVJJW21kNXN1bV0gPSAiOTFmNTdlOGNlZTFhZDRjYzk1NmNhYThiNjJhYzVkNDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2FlNjJjYWE4OGEwYmM3YjMwZWQ4MzZkY2I3OTRkYzZlZjRkMzY1MDQzOWUyMjYwZGI1NGNhY2U3ZDVjNmFkNSIKIAogaW5oZXJpdCBhdXRvdG9vbHMKIApAQCAtMTcsNiArMTgsMyBAQAogICAgIHRvdWNoIE5FV1MgUkVBRE1FIEFVVEhPUlMgQ2hhbmdlTG9nCiAgICAgc2VkIC1pICJzL2xpYmFvc3Muc28vJHtMRUFEX1NPTkFNRX0vIiAke1N9L2Fsc2EvYW9zcy5pbgogfQotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWIxODUwYzJmYzkxNDc2YTczZDUwZjUzN2NiZDQwMmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGQwMDllMjNlMmNiZWUxNjkxZWMzYzk1ZDE4MzgwNTZhODA0ZDk4NDQwZWFlNzcxNWQ2YzNhZWJjNzEwZjljYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvY2Rya2l0L2NkcmtpdF8xLjEuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2NkcmtpdC9jZHJraXRfMS4xLjExLmJiCmluZGV4IGMwZjIyMGYuLjNiMTBlOTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvY2Rya2l0L2NkcmtpdF8xLjEuMTEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9jZHJraXQvY2Rya2l0XzEuMS4xMS5iYgpAQCAtMTgsMyArMTgsNyBAQAogCiBERVBFTkRTID0gImxpYmNhcCBmaWxlIGJ6aXAyIgogUkRFUEVORFNfJHtQTn0gPSAicGVybCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgbG4gLXNmICR7YmluZGlyfS9nZW5pc29pbWFnZSAke0R9JHtiaW5kaXJ9L21raXNvZnMKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC8wMDAxLWF1ZGlvX2Fsc2EwOS5jLWFsc2EtZHJhaW4tZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDEtYXVkaW9fYWxzYTA5LmMtYWxzYS1kcmFpbi1maXgucGF0Y2gKaW5kZXggNmM3ZjNiZC4uMTMwZjNjMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDEtYXVkaW9fYWxzYTA5LmMtYWxzYS1kcmFpbi1maXgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDEtYXVkaW9fYWxzYTA5LmMtYWxzYS1kcmFpbi1maXgucGF0Y2gKQEAgLTEsOSArMSwxMCBAQAotRnJvbSBhODYwZmUwNzk2YzQzZTM1ZWFjOTc4MzE0MGZjYjU2M2NhYjlmNTVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5NDVkZjJkYTg3YTQxMjc1OGNlYWI0YWM1NzExYWJiYjI2OWE0N2MxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgOCBKdW4gMjAxNyAyMzowOTo1MSAtMDcwMAotU3ViamVjdDogW1BBVENIIDEvM10gYXVkaW9fYWxzYTA5LmM6IGFsc2EgZHJhaW4gZml4CitTdWJqZWN0OiBbUEFUQ0hdIGF1ZGlvX2Fsc2EwOS5jOiBhbHNhIGRyYWluIGZpeAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBhdWRpb19hbHNhMDkuYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKQEAgLTIxLDYgKzIyLDMgQEAKICAgIAogIAlpZiAoYWxzYWRiZykgCiAgCQlwcmludF9zdGF0ZSgpOwotLS0gCi0yLjEzLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDItVW5kZWZpbmUtb3BlbjY0LWFuZC1mb3BlbjY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kLzAwMDItVW5kZWZpbmUtb3BlbjY0LWFuZC1mb3BlbjY0LnBhdGNoCmluZGV4IDMzNzU0NmEuLjEwYTZiYTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC8wMDAyLVVuZGVmaW5lLW9wZW42NC1hbmQtZm9wZW42NC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvMDAwMi1VbmRlZmluZS1vcGVuNjQtYW5kLWZvcGVuNjQucGF0Y2gKQEAgLTEsMTEgKzEsMTIgQEAKLUZyb20gMWZiZWU2ZTk2Mzg0ZjM0MGI4MTZlMjIxZmUxYzJmM2ZmMGI0ODdiZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZTIxOGQ1YTBhNTQ1ZWJiOTYyM2Q2MmRhNWNmY2E0NzhmOWM5MGZjZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDggSnVuIDIwMTcgMjM6MTE6MzEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzNdIFVuZGVmaW5lIG9wZW42NCBhbmQgZm9wZW42NAorU3ViamVjdDogW1BBVENIXSBVbmRlZmluZSBvcGVuNjQgYW5kIGZvcGVuNjQKIAogU2luY2UgdGhlIHNpZ25hdHVyZXMgZG8gbm90IG1hdGNoIHdpdGggbGliYwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBlc2Rkc3AuYyB8IDIgKysKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCkBAIC0zMCw2ICszMSwzIEBACiAgRklMRSAqCiAgZm9wZW42NCAoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSkKICB7Ci0tLSAKLTIuMTMuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvMDAwMy1Vc2UtSS1wYXRoLWluLWNvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC8wMDAzLVVzZS1JLXBhdGgtaW4tY29uZmlndXJlLnBhdGNoCmluZGV4IDYyYzg4MGQuLjgzMzY1YjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC8wMDAzLVVzZS1JLXBhdGgtaW4tY29uZmlndXJlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZXNvdW5kL2Vzb3VuZC8wMDAzLVVzZS1JLXBhdGgtaW4tY29uZmlndXJlLnBhdGNoCkBAIC0xLDEyICsxLDEzIEBACi1Gcm9tIDk3OWEwMmQ5ZWM5YzI4Njg2MDIxY2QyYjQ5Y2E1NWQyMTk1YzlkY2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDg5YzYyZGI1NDcxNmQ1MTRlNjM5ZjllMWJmZDNjMWY3ZDgyNjQxZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogVGh1LCA4IEp1biAyMDE3IDIzOjEyOjM2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMy8zXSBVc2UgLUk9PHBhdGg+IGluIGNvbmZpZ3VyZQorU3ViamVjdDogW1BBVENIXSBVc2UgLUk9PHBhdGg+IGluIGNvbmZpZ3VyZQogCiBUaGlzIGhlbHBzIHRvIHVzZSBwcm9wZXIgc3lzcm9vdCBpbgogY3Jvc3MgYnVpbGQgZW52aXJvbm1lbnQKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgY29uZmlndXJlLmFjIHwgNCArKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKQEAgLTMzLDYgKzM0LDMgQEAKICAJU09VTkRfTElCUz0tbG1tZQogICAgICAgIGVzYWMKICAgICBmaQotLS0gCi0yLjEzLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9lc291bmQvZXNvdW5kL25vLWRvY3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvbm8tZG9jcy5wYXRjaAppbmRleCBmYzY5ZjFhLi44YTU0NmU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvbm8tZG9jcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Vzb3VuZC9lc291bmQvbm8tZG9jcy5wYXRjaApAQCAtMSwxMSArMSwxOSBAQAotSW5kZXg6IGVzb3VuZC0wLjIuMzYvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlc291bmQtMC4yLjM2Lm9yaWcvTWFrZWZpbGUuYW0KLSsrKyBlc291bmQtMC4yLjM2L01ha2VmaWxlLmFtCitGcm9tIGJmY2FhOWJkYzcwNDQwZGI5NmYxMGFmYzBjMmE3OTI4NzBmNzVhY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgorRGF0ZTogRnJpLCAzIEp1biAyMDExIDE5OjM5OjAyICswMjAwCisKKy0tLQorIE1ha2VmaWxlLmFtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggMDhjNGM5NC4uZWRlOWQyNiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQogQEAgLTEsNSArMSw1IEBACiAgCiAtU1VCRElSUyA9IGRvY3MKICtTVUJESVJTID0gCiAgCi0gQUNMT0NBTF9GTEFHUyA9IC1JIG00CisgQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQKICAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvamFjay9qYWNrLzAwMDEtdHlwZWNhc3QtaW5wdXQtcGFyYW1ldGVyLXRvLWludC1mb3ItYWJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9qYWNrL2phY2svMDAwMS10eXBlY2FzdC1pbnB1dC1wYXJhbWV0ZXItdG8taW50LWZvci1hYnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxMTlmMTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9qYWNrL2phY2svMDAwMS10eXBlY2FzdC1pbnB1dC1wYXJhbWV0ZXItdG8taW50LWZvci1hYnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDhlYzZmNzViZjdhMzE4YTNhMWUzNTJkZjdjOTc2MzBjZmFiYTUzN2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMSBBcHIgMjAxNyAxNjoxODozOSAtMDcwMAotU3ViamVjdDogW1BBVENIXSB0eXBlY2FzdCBpbnB1dCBwYXJhbWV0ZXIgdG8gaW50IGZvciBhYnMoKQotCi1GaXhlcwotLi4vdGVzdHMvdGVzdC5jcHA6NDgyOjczOiBlcnJvcjogY2FsbCBvZiBvdmVybG9hZGVkICdhYnMoamFja19uZnJhbWVzX3QpJyBpcyBhbWJpZ3VvdXMKLQotYmVjYXVzZSB0aGUgc2lnbmF0dXJlIGlzIGludCBhYnMoaW50KSBhbmQgaXRzIHBhc3NpbmcKLXVuc2lnbmVkIGludCB0byBpdC4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHRlc3RzL3Rlc3QuY3BwIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdC5jcHAgYi90ZXN0cy90ZXN0LmNwcAotaW5kZXggOGE4YTgxMTcuLjk2NTU3NDJlIDEwMDY0NAotLS0tIGEvdGVzdHMvdGVzdC5jcHAKLSsrKyBiL3Rlc3RzL3Rlc3QuY3BwCi1AQCAtNDc5LDcgKzQ3OSw3IEBAIGludCBwcm9jZXNzNChqYWNrX25mcmFtZXNfdCBuZnJhbWVzLCB2b2lkICphcmcpCi0gCWphY2tfbmZyYW1lc190IGRlbHRhX3RpbWUgPSBjdXJfdGltZSAtIGxhc3RfdGltZTsKLSAKLSAJTG9nKCJjYWxsaW5nIHByb2Nlc3M0IGNhbGxiYWNrIDogamFja19mcmFtZV90aW1lID0gJWxkIGRlbHRhX3RpbWUgPSAlbGRcbiIsIGN1cl90aW1lLCBkZWx0YV90aW1lKTsKLS0JaWYgKGRlbHRhX3RpbWUgPiAwICAmJiAoamFja19uZnJhbWVzX3QpYWJzKGRlbHRhX3RpbWUgLSBjdXJfYnVmZmVyX3NpemUpID4gdG9sZXJhbmNlKSB7Ci0rCWlmIChkZWx0YV90aW1lID4gMCAgJiYgKGphY2tfbmZyYW1lc190KWFicyhpbnQoZGVsdGFfdGltZSAtIGN1cl9idWZmZXJfc2l6ZSkpID4gdG9sZXJhbmNlKSB7Ci0gCQlwcmludGYoIiEhISBFUlJPUiAhISEgamFja19mcmFtZV90aW1lIHNlZW1zIHRvIHJldHVybiBpbmNvcnJlY3QgdmFsdWVzIGN1cl9idWZmZXJfc2l6ZSA9ICVkLCBkZWx0YV90aW1lID0gJWQgdG9sZXJhbmNlICVkXG4iLCBjdXJfYnVmZmVyX3NpemUsIGRlbHRhX3RpbWUsIHRvbGVyYW5jZSk7Ci0gCX0KLSAKLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvamFjay9qYWNrX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvamFjay9qYWNrX2dpdC5iYgppbmRleCBiODViYThhLi4xMWRhNmIxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2phY2svamFja19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9qYWNrL2phY2tfZ2l0LmJiCkBAIC0xNCwxMSArMTQsOSBAQAogCiBERVBFTkRTID0gImxpYnNhbXBsZXJhdGUwIGxpYnNuZGZpbGUxIHJlYWRsaW5lIgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vamFja2F1ZGlvL2phY2syLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXR5cGVjYXN0LWlucHV0LXBhcmFtZXRlci10by1pbnQtZm9yLWFicy5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDUkVWID0gIjJkMWQzMjM1MDU1ODVkNDA2YTdlNjRmYjkzMjk1M2JhZWZjNTk0NWUiCi1QViA9ICIxLjkuMTArZ2l0JHtTUkNQVn0iCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vamFja2F1ZGlvL2phY2syLmdpdCIKK1NSQ1JFViA9ICJjMTY0NzgxOWVlZDZkMTFmOTRiMjE5ODFkOWM4Njk2MjkyOTlmMzU3IgorUFYgPSAiMS45LjEyIgogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogaW5oZXJpdCB3YWYgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmFzcy9saWJhc3NfMC4xMy42LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJhc3MvbGliYXNzXzAuMTMuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBhYzBmOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmFzcy9saWJhc3NfMC4xMy42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtbXVsdGltZWRpYS8ke0JQTn0vJHtCUE59LmluYwotCi1TUkNfVVJJW21kNXN1bV0gPSAiZGFhNmNmY2E0MzdjMDc3NmFmNWY3OTc1MGNkZDliNGUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjhhODc0ZDEwNGUzZTcyZTJjYzA1N2U1YTE3MTBjNjUwYjEwMzY3NDg2ODQ1YTI2ZTVmZjI4ZWQ3YTkxMmMyZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGliYXNzL2xpYmFzcy5pbmMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmFzcy9saWJhc3NfMC4xNC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggODUlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGliYXNzL2xpYmFzcy5pbmMKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGliYXNzL2xpYmFzc18wLjE0LjAuYmIKaW5kZXggNGJjM2RiMC4uMzQ1NGE1YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJhc3MvbGliYXNzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmFzcy9saWJhc3NfMC4xNC4wLmJiCkBAIC03LDcgKzcsOSBAQAogCiBERVBFTkRTID0gImVuY2EgZm9udGNvbmZpZyBmcmVldHlwZSBsaWJwbmcgZnJpYmlkaSIKIAotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliYXNzL2xpYmFzcy9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS9saWJhc3MtJHtQVn0udGFyLnh6IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpYmFzcy9saWJhc3MuZ2l0IgorU1JDUkVWID0gIjczMjg0YjY3NmIxMmI0N2UxN2FmMmVmMWI0MzA1MjcyOTllMTBjMTciCitTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJjZGlvL2xpYmNkaW9fMC45My5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGliY2Rpby9saWJjZGlvXzIuMC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggODYlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGliY2Rpby9saWJjZGlvXzAuOTMuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGliY2Rpby9saWJjZGlvXzIuMC4wLmJiCmluZGV4IDk5ZTZhODQuLjZiZjY0ZDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGliY2Rpby9saWJjZGlvXzAuOTMuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJjZGlvL2xpYmNkaW9fMi4wLjAuYmIKQEAgLTUsOCArNSw5IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKIAogU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiZDE1NDQ3NmZlYWFjNWE3YjVmMTgwZTgzZWFmM2Q2ODkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDk3MmNkMjJmZDhkMGU4YmZmOTIyZDM1YzdhNjQ1YmUwZGIwYWIwZTdiM2RmYWVjYzljZDgyNzI0MjlkNjk3NSIKKworU1JDX1VSSVttZDVzdW1dID0gIjBjYjI1OTA1MTEzYjkzMGU0NTM5ZDJmNGViNjU3NGIwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiNDgxYjVkYTAwOWJlYTMxZGI4NzU4MDU2NjU5NzRlMmZjNTY4ZTJiMmFmYTUxNmY0MDM2NzMzNjU3Y2Y5NTgiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNkbC1taXhlci9saWJzZGwyLW1peGVyXzIuMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzZGwtbWl4ZXIvbGlic2RsMi1taXhlcl8yLjAuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDc3JQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNkbC1taXhlci9saWJzZGwyLW1peGVyXzIuMC4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNkbC1taXhlci9saWJzZGwyLW1peGVyXzIuMC4yLmJiCmluZGV4IDgyNzZiNDQuLjcxOGYzZjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic2RsLW1peGVyL2xpYnNkbDItbWl4ZXJfMi4wLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzZGwtbWl4ZXIvbGlic2RsMi1taXhlcl8yLjAuMi5iYgpAQCAtMiwxMiArMiwxMiBAQAogU0VDVElPTiA9ICJsaWJzIgogREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYnNkbDIgZmxhYyBsaWJtaWttb2QgbGlidm9yYmlzIgogTElDRU5TRSA9ICJabGliIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PTI5ZDhiYzdjMzhhYTQ0YjFjZjNhNjMzYTQ2NTg5OTE3IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PTk1ZTBjM2NmNjNmNzFiOTUwOTExZTY5OGE1NGI3ZmM1IgogCiBTUkNfVVJJID0gImh0dHA6Ly93d3cubGlic2RsLm9yZy9wcm9qZWN0cy9TRExfbWl4ZXIvcmVsZWFzZS9TREwyX21peGVyLSR7UFZ9LnRhci5neiIKIAotU1JDX1VSSVttZDVzdW1dID0gImM2YzRmNTU2ZDQ0MTU4NzFmNTI2MjQ4ZjVjOWE2MjdkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVhMjRmNjJhNjEwMjQ5ZDc0NGNiZDhkMjhlZTM5OWQ4OTA1ZGI3MjIyYmYzYmRiYzhhOGI0YTc2ZTU5NzY5NWYiCitTUkNfVVJJW21kNXN1bV0gPSAiYWFhMDU1MTM5Mzk5M2MxNGExM2Y3MmIzMzljMGVkNmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGU2MTVlMjdlZmNhNGY0MzlkZjlhZjZhYTJjNmRlODQxNTBkMTdjYmZkMTIxNzRiNTQ4NjhjMTJmMTljODNiYiIKIAogUyA9ICIke1dPUktESVJ9L1NETDJfbWl4ZXItJHtQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbXBsYXllci9tcHZfMC4yNi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wdl8wLjI2LjAuYmIKaW5kZXggNDRkOTJhMC4uZGU3OGRlMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wdl8wLjI2LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wdl8wLjI2LjAuYmIKQEAgLTE2LDcgKzE2LDcgQEAKIAogU1JDX1VSSSA9ICIgXAogICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9tcHYtcGxheWVyL21wdi9hcmNoaXZlL3Yke1BWfS50YXIuZ3o7bmFtZT1tcHYgXAotICAgIGh0dHA6Ly93d3cuZnJlZWhhY2tlcnMub3JnL350bmFneS9yZWxlYXNlL3dhZi0xLjguMTI7bmFtZT13YWY7c3ViZGlyPSR7QlBOfS0ke1BWfSBcCisgICAgaHR0cDovL3d3dy5mcmVlaGFja2Vycy5vcmcvfnRuYWd5L3JlbGVhc2Uvd2FmLTEuOC4xMjtuYW1lPXdhZjtkb3dubG9hZGZpbGVuYW1lPXdhZjtzdWJkaXI9JHtCUE59LSR7UFZ9IFwKICIKIFNSQ19VUklbbXB2Lm1kNXN1bV0gPSAiMDM4ZDBiNjYwZGUwN2ZmNjQ1YWQ2YTc0MTcwNGVjYWIiCiBTUkNfVVJJW21wdi5zaGEyNTZzdW1dID0gImRhZjNlZjM1OGQ1ZjI2MGYyMjY5ZjdjYWFiY2UyN2Y0NDZjMjkxNDU3ZWMzMzAwNzcxNTIxMjcxMzNiNzFiNDYiCkBAIC02NCw5ICs2NCwxMCBAQAogICAgICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gXAogIgogCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgbG4gLXNmIHdhZi0xLjguMTIgJHtTfS93YWYKK2FkanVzdF93YWZfcGVybXMoKSB7CiAgICAgY2htb2QgK3ggJHtTfS93YWYKIH0KIAorZG9fcGF0Y2hbcG9zdGZ1bmNzXSArPSAiYWRqdXN0X3dhZl9wZXJtcyIKKwogRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vaWNvbnMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAxLVJldmVydC1tZWRpYS1jdGwtRG9uLXQtaW5zdGFsbC1saWJtZWRpYWN0bC1hbmQtbGlidjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAxLVJldmVydC1tZWRpYS1jdGwtRG9uLXQtaW5zdGFsbC1saWJtZWRpYWN0bC1hbmQtbGlidjQucGF0Y2gKaW5kZXggNzQxMzA5NC4uZWIyOTRiM2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDEtUmV2ZXJ0LW1lZGlhLWN0bC1Eb24tdC1pbnN0YWxsLWxpYm1lZGlhY3RsLWFuZC1saWJ2NC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAxLVJldmVydC1tZWRpYS1jdGwtRG9uLXQtaW5zdGFsbC1saWJtZWRpYWN0bC1hbmQtbGlidjQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDJkNmJmYTc1YjJlMTZiNGQ3NjRmMWJmMDBiYjkwMmZiNGI1ZTUwN2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDY3YTZlOTE5YjgyNjNkNmQyYjcxNTBlNjJmMjZmYjA2YmJjNTI2ZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogRnJpLCAyNyBGZWIgMjAxNSAyMTo1NTozNiArMDAwMAogU3ViamVjdDogW1BBVENIXSBSZXZlcnQgIm1lZGlhLWN0bDogRG9uJ3QgaW5zdGFsbCBsaWJtZWRpYWN0bCBhbmQKQEAgLTEwLDYgKzEwLDcgQEAKIAogQ29uZmxpY3RzOgogCXV0aWxzL21lZGlhLWN0bC9NYWtlZmlsZS5hbQorCiAtLS0KICB1dGlscy9tZWRpYS1jdGwvTWFrZWZpbGUuYW0gfCAxMCArKystLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKQEAgLTQwLDYgKzQxLDMgQEAKICBtZWRpYWN0bF9pbmNsdWRlZGlyPSQoaW5jbHVkZWRpcikvbWVkaWFjdGwKICBub2luc3RfSEVBREVSUyA9IG1lZGlhY3RsLmggdjRsMnN1YmRldi5oCiAgCi0tLSAKLTIuOS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDEtYnVpbGRzeXN0ZW0tZG8tbm90LWFzc3VtZS1idWlsZGluZy1pbi1zb3VyY2UtdHJlZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDEtYnVpbGRzeXN0ZW0tZG8tbm90LWFzc3VtZS1idWlsZGluZy1pbi1zb3VyY2UtdHJlZS5wYXRjaAppbmRleCA1NDE2MWY5Li4xMjYwOWQzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAxLWJ1aWxkc3lzdGVtLWRvLW5vdC1hc3N1bWUtYnVpbGRpbmctaW4tc291cmNlLXRyZWUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMS1idWlsZHN5c3RlbS1kby1ub3QtYXNzdW1lLWJ1aWxkaW5nLWluLXNvdXJjZS10cmVlLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA4MDY4MjJmNWFjYjc1NmQ1YWNkYTBmOTA2M2M4NGIyOGIzOGIzZmZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3NTM3MmI4MDg4YzIwNDc0NDk3Yjc5ZWM2Y2YxZTk5ZjJkMTdmNTZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSXNtbyBQdXVzdGluZW4gPGlzbW8ucHV1c3RpbmVuQGludGVsLmNvbT4KIERhdGU6IE1vbiwgMyBBcHIgMjAxNyAxMzoyMzozOCArMDMwMAotU3ViamVjdDogW1BBVENIIHY0bC11dGlsc10gYnVpbGRzeXN0ZW06IGRvIG5vdCBhc3N1bWUgYnVpbGRpbmcgaW4gc291cmNlIHRyZWUuCitTdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkc3lzdGVtOiBkbyBub3QgYXNzdW1lIGJ1aWxkaW5nIGluIHNvdXJjZSB0cmVlLgogCiBVc2UgJCh0b3Bfc3JjZGlyKSBhcyByZWZlcmVuY2UgZm9yIGluY2x1ZGUgcGF0aHMgYW5kIGJ1aWxkdGltZSBzY3JpcHRzLgogT3RoZXJ3aXNlIGNvbXBpbGF0aW9uIG91dHNpZGUgb2YgcHJvamVjdCByb290IGRpcmVjdG9yeSB3aWxsIGZhaWwKQEAgLTEyLDYgKzEyLDcgQEAKIFVwc3RyZWFtLXN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0LmxpbnV4dHYub3JnLy92NGwtdXRpbHMuZ2l0L2NvbW1pdC8/aWQ9YmQ5OGM5YTk5YmZmYzhkNDRjNTQ4NTkzNDVlNGRmZWUwYWRhNDI3NV0KIAogU2lnbmVkLW9mZi1ieTogSXNtbyBQdXVzdGluZW4gPGlzbW8ucHV1c3RpbmVuQGludGVsLmNvbT4KKwogLS0tCiAgdXRpbHMvY2VjLWNvbXBsaWFuY2UvTWFrZWZpbGUuYW0gIHwgMiArLQogIHV0aWxzL2NlYy1jdGwvTWFrZWZpbGUuYW0gICAgICAgICB8IDIgKy0KQEAgLTIyLDcgKzIzLDcgQEAKICA2IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3V0aWxzL2NlYy1jb21wbGlhbmNlL01ha2VmaWxlLmFtIGIvdXRpbHMvY2VjLWNvbXBsaWFuY2UvTWFrZWZpbGUuYW0KLWluZGV4IGVjNWRlNTEuLjgzMzFhYTAgMTAwNjQ0CitpbmRleCBmMDVmZTZjLi5mN2QxNTM1IDEwMDY0NAogLS0tIGEvdXRpbHMvY2VjLWNvbXBsaWFuY2UvTWFrZWZpbGUuYW0KICsrKyBiL3V0aWxzL2NlYy1jb21wbGlhbmNlL01ha2VmaWxlLmFtCiBAQCAtNyw3ICs3LDcgQEAgY2VjX2NvbXBsaWFuY2VfTERGTEFHUyA9IC1scnQKQEAgLTM1LDEwICszNiwxMCBAQAogIGNlYy1jb21wbGlhbmNlLmNwcDogdmVyc2lvbi5oCiAgCiBkaWZmIC0tZ2l0IGEvdXRpbHMvY2VjLWN0bC9NYWtlZmlsZS5hbSBiL3V0aWxzL2NlYy1jdGwvTWFrZWZpbGUuYW0KLWluZGV4IDBhN2VmMjIuLjZhZmI2YzkgMTAwNjQ0CitpbmRleCA0YTZlYWU1Li41NzBhMDcwIDEwMDY0NAogLS0tIGEvdXRpbHMvY2VjLWN0bC9NYWtlZmlsZS5hbQogKysrIGIvdXRpbHMvY2VjLWN0bC9NYWtlZmlsZS5hbQotQEAgLTcsNyArNyw3IEBAIGNlY19jdGxfTERGTEFHUyA9IC1scnQKK0BAIC02LDcgKzYsNyBAQCBjZWNfY3RsX1NPVVJDRVMgPSBjZWMtY3RsLmNwcAogIGNlYy1jdGwuY3BwOiBjZWMtY3RsLWdlbi5oCiAgCiAgY2VjLWN0bC1nZW4uaDogbXNnMmN0bC5wbCAuLi8uLi9pbmNsdWRlL2xpbnV4L2NlYy5oIC4uLy4uL2luY2x1ZGUvbGludXgvY2VjLWZ1bmNzLmgKQEAgLTQ4LDcgKzQ5LDcgQEAKICBjbGVhbi1sb2NhbDoKICAJLXJtIC12ZiBjZWMtY3RsLWdlbi5oCiBkaWZmIC0tZ2l0IGEvdXRpbHMvY2VjLWZvbGxvd2VyL01ha2VmaWxlLmFtIGIvdXRpbHMvY2VjLWZvbGxvd2VyL01ha2VmaWxlLmFtCi1pbmRleCA1MzhlZGIyLi5mZGJmM2Q5IDEwMDY0NAoraW5kZXggZDhhZDI5Mi4uZTM1NTNlYiAxMDA2NDQKIC0tLSBhL3V0aWxzL2NlYy1mb2xsb3dlci9NYWtlZmlsZS5hbQogKysrIGIvdXRpbHMvY2VjLWZvbGxvd2VyL01ha2VmaWxlLmFtCiBAQCAtNywxMiArNywxMiBAQCBjZWNfZm9sbG93ZXJfTERGTEFHUyA9IC1scnQKQEAgLTY1LDcgKzY2LDcgQEAKICsJJCh0b3Bfc3JjZGlyKS91dGlscy9jZWMtY3RsL21zZzJjdGwucGwgMiAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbGludXgvY2VjLmggJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL2xpbnV4L2NlYy1mdW5jcy5oID4kQAogIAogIHZlcnNpb24uaDoKLSAJQGlmIGdpdCByZXYtcGFyc2UgSEVBRCA+L2Rldi9udWxsIDI+JjE7IHRoZW4gXAorIAlAaWYgZ2l0IHNob3ctcmVmIC1zIEhFQUQgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKIGRpZmYgLS1naXQgYS91dGlscy9xdjRsMi9NYWtlZmlsZS5hbSBiL3V0aWxzL3F2NGwyL01ha2VmaWxlLmFtCiBpbmRleCBmZDU4NDg2Li5jY2QxYTJhIDEwMDY0NAogLS0tIGEvdXRpbHMvcXY0bDIvTWFrZWZpbGUuYW0KQEAgLTgwLDcgKzgxLDcgQEAKICBpZiBXSVRIX1FUR0wKICBxdjRsMl9DUFBGTEFHUyArPSAkKFFUR0xfQ0ZMQUdTKQogZGlmZiAtLWdpdCBhL3V0aWxzL3Y0bDItY29tcGxpYW5jZS9NYWtlZmlsZS5hbSBiL3V0aWxzL3Y0bDItY29tcGxpYW5jZS9NYWtlZmlsZS5hbQotaW5kZXggMDNkYjhkZi4uMThiOTg5MiAxMDA2NDQKK2luZGV4IGMyYjU5MTkuLmZiOGQxMmUgMTAwNjQ0CiAtLS0gYS91dGlscy92NGwyLWNvbXBsaWFuY2UvTWFrZWZpbGUuYW0KICsrKyBiL3V0aWxzL3Y0bDItY29tcGxpYW5jZS9NYWtlZmlsZS5hbQogQEAgLTUsNyArNSw3IEBAIERFRlMgOj0KQEAgLTEwNSw2ICsxMDYsMyBAQAogIAogIGlmIFdJVEhfVjRMMl9DVExfTElCVjRMCiAgdjRsMl9jdGxfTERBREQgPSAuLi8uLi9saWIvbGlidjRsMi9saWJ2NGwyLmxhIC4uLy4uL2xpYi9saWJ2NGxjb252ZXJ0L2xpYnY0bGNvbnZlcnQubGEgLWxydCAtbHB0aHJlYWQKLS0tIAotMi45LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMS1pci1jdGwtRGVmaW5lLVRFTVBfRkFJTFVSRV9SRVRSWS1pZi11bmRlZmluZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAxLWlyLWN0bC1EZWZpbmUtVEVNUF9GQUlMVVJFX1JFVFJZLWlmLXVuZGVmaW5lZC5wYXRjaAppbmRleCBmMWUxMWRhLi44MmZjM2UxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAxLWlyLWN0bC1EZWZpbmUtVEVNUF9GQUlMVVJFX1JFVFJZLWlmLXVuZGVmaW5lZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAxLWlyLWN0bC1EZWZpbmUtVEVNUF9GQUlMVVJFX1JFVFJZLWlmLXVuZGVmaW5lZC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZTYwYWVhNTBlNDFhZThhMTc2NzJiZWI1ODU5YmVlY2I2NmU3YTMwNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYjJlZmNjMjA2MTdkNjMxN2Y3NGM0YWNiMmE2YWY1Yjc2NWYyMGIzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDE0IEp1bCAyMDE3IDEzOjExOjI1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8zXSBpci1jdGw6IERlZmluZSBURU1QX0ZBSUxVUkVfUkVUUlkgaWYgdW5kZWZpbmVkCitTdWJqZWN0OiBbUEFUQ0hdIGlyLWN0bDogRGVmaW5lIFRFTVBfRkFJTFVSRV9SRVRSWSBpZiB1bmRlZmluZWQKIAogdXNlIHN0cm5kdXAoKSBpbnN0ZWFkIG9mIHN0cm5kdXBhKCkgd2hpY2ggaXMgbm90CiB1bml2ZXJzYWxseSBhdmFpbGFibGUgaW4gQyBsaWJyYXJpZXMKQEAgLTksNiArOSw3IEBACiBUYWtlbiBmcm9tIEFscGluZUxpbnV4CiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHV0aWxzL2lyLWN0bC9pci1jdGwuYyB8IDE0ICsrKysrKysrKysrKystCiAgMSBmaWxlIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKQEAgLTUwLDYgKzUxLDMgQEAKICAKICAJaWYgKCFzdHJ0b3NjYW5jb2RlKHAgKyAxLCAmc2NhbmNvZGUpKSB7CiAgCQlmcHJpbnRmKHN0ZGVyciwgXygiZXJyb3I6IGludmFsaWQgc2NhbmNvZGUgJyVzJ1xuIiksIHAgKyAxKTsKLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDItY29udHJpYi10ZXN0LUxpbmstbWNfbmV4dGdlbl90ZXN0LXdpdGgtbGliYXJncC1pZi1uZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDItY29udHJpYi10ZXN0LUxpbmstbWNfbmV4dGdlbl90ZXN0LXdpdGgtbGliYXJncC1pZi1uZS5wYXRjaAppbmRleCAyZmI0MDU3Li5hNzc5YTMwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAyLWNvbnRyaWItdGVzdC1MaW5rLW1jX25leHRnZW5fdGVzdC13aXRoLWxpYmFyZ3AtaWYtbmUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMi1jb250cmliLXRlc3QtTGluay1tY19uZXh0Z2VuX3Rlc3Qtd2l0aC1saWJhcmdwLWlmLW5lLnBhdGNoCkBAIC0xLDExICsxLDEyIEBACi1Gcm9tIGIzYWNjNGM2NDA3Zjk1NTNmMzI1ODJhOWFlZTZhMTFiNWZjZDFkOGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDQ5Zjg2NWExN2Q2MmRiN2JiZDMzM2E5YjgzZmFkZWVhNTU2ODZlMzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogRnJpLCAxNCBKdWwgMjAxNyAxMzoxNzoxOSAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvM10gY29udHJpYi90ZXN0OiBMaW5rIG1jX25leHRnZW5fdGVzdCB3aXRoIGxpYmFyZ3AgaWYgbmVlZGVkCitTdWJqZWN0OiBbUEFUQ0hdIGNvbnRyaWIvdGVzdDogTGluayBtY19uZXh0Z2VuX3Rlc3Qgd2l0aCBsaWJhcmdwIGlmIG5lZWRlZAogCiBtdXNsIGRlcGVuZHMgb24gZXh0ZXJuYWwgYXJncCBpbXBsZW1lbnRhdGlvbiBlLmcuCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIGNvbnRyaWIvdGVzdC9NYWtlZmlsZS5hbSB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKQEAgLTIzLDYgKzI0LDMgQEAKICAKICAKICBpb2N0bF90ZXN0X1NPVVJDRVMgPSBpb2N0bC10ZXN0LmMgaW9jdGwtdGVzdC5oIGlvY3RsXzMyLmggaW9jdGxfNjQuaAotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMy12NGwyLWN0bC1Eby1ub3QtdXNlLWdldHN1Ym9wdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDMtdjRsMi1jdGwtRG8tbm90LXVzZS1nZXRzdWJvcHQucGF0Y2gKaW5kZXggMGE5ODZhZS4uNWI4NGFmMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMy12NGwyLWN0bC1Eby1ub3QtdXNlLWdldHN1Ym9wdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAzLXY0bDItY3RsLURvLW5vdC11c2UtZ2V0c3Vib3B0LnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBkMDRhYTY4NjZjYmVhNTdjNGE4MWIwMzNjZDYwNTg2YTk0MzZhYzZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmN2E0Yjc5YjMzMjM1MzQ0NjBhNjNiM2U2YzU4ZWJhZjA2YWRmMjA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMTQgSnVsIDIwMTcgMTM6MjA6MDUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIHY0bDItY3RsOiBEbyBub3QgdXNlIGdldHN1Ym9wdAorU3ViamVjdDogW1BBVENIXSB2NGwyLWN0bDogRG8gbm90IHVzZSBnZXRzdWJvcHQKIAogUE9TSVggc2F5cyB0aGF0IGJlaGF2aW9yIHdoZW4gc3Vib3B0cyBsaXN0IGlzIGVtcHR5IGlzIHVuZGVmaW5lZC4KIG11c2wgbGlicyB3aWxsIHNldCB2YWx1ZSB0byBOVUxMIHdoaWNoIGxlYWRzIHRvIGNyYXNoLgpAQCAtOSw2ICs5LDcgQEAKIFRha2VuIGZyb20gQWxwaW5lTGludXgKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgdXRpbHMvdjRsMi1jdGwvdjRsMi1jdGwtY29tbW9uLmNwcCB8IDE5ICsrKysrKysrKystLS0tLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKQEAgLTQ0LDYgKzQ1LDMgQEAKICB9CiAgCiAgdm9pZCBjb21tb25fY21kKGludCBjaCwgY2hhciAqb3B0YXJnKQotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvZXhwb3J0LW1lZGlhY3RsLWhlYWRlcnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy9leHBvcnQtbWVkaWFjdGwtaGVhZGVycy5wYXRjaAppbmRleCBjNjEwZTdlLi41NWE1Y2RjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy9leHBvcnQtbWVkaWFjdGwtaGVhZGVycy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy9leHBvcnQtbWVkaWFjdGwtaGVhZGVycy5wYXRjaApAQCAtMSw5ICsxLDE3IEBACi1JbmRleDogdjRsLXV0aWxzLTEuNi4yL3V0aWxzL21lZGlhLWN0bC9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHY0bC11dGlscy0xLjYuMi5vcmlnL3V0aWxzL21lZGlhLWN0bC9NYWtlZmlsZS5hbQotKysrIHY0bC11dGlscy0xLjYuMi91dGlscy9tZWRpYS1jdGwvTWFrZWZpbGUuYW0KLUBAIC00LDggKzQsOCBAQCBsaWJtZWRpYWN0bF9sYV9DRkxBR1MgPSAkKExJQlVERVZfQ0ZMQUdTCi0gbGlibWVkaWFjdGxfbGFfTERGTEFHUyA9ICQoTElCVURFVl9MSUJTKQorRnJvbSBiODJlNTA5YzEwNjU5YTQ2NDc5NjFhNmRhM2FkZjRkMjg1ZGVhMmRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMSBNYXIgMjAxNSAyMjoyNTowNyArMDAwMAorCistLS0KKyB1dGlscy9tZWRpYS1jdGwvTWFrZWZpbGUuYW0gfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdXRpbHMvbWVkaWEtY3RsL01ha2VmaWxlLmFtIGIvdXRpbHMvbWVkaWEtY3RsL01ha2VmaWxlLmFtCitpbmRleCA3YzUyMGEyLi43NDgzNTNkIDEwMDY0NAorLS0tIGEvdXRpbHMvbWVkaWEtY3RsL01ha2VmaWxlLmFtCisrKysgYi91dGlscy9tZWRpYS1jdGwvTWFrZWZpbGUuYW0KK0BAIC0xNyw4ICsxNyw4IEBAIENMRUFORklMRVMgPSAkKEJVSUxUX1NPVVJDRVMpCisgbm9kaXN0X2xpYnY0bDJzdWJkZXZfbGFfU09VUkNFUyA9ICQoQlVJTFRfU09VUkNFUykKICBsaWJ2NGwyc3ViZGV2X2xhX1NPVVJDRVMgPSBsaWJ2NGwyc3ViZGV2LmMKICBsaWJ2NGwyc3ViZGV2X2xhX0xJQkFERCA9IGxpYm1lZGlhY3RsLmxhCiAtbWVkaWFjdGxfaW5jbHVkZWRpcj0kKGluY2x1ZGVkaXIpL21lZGlhY3RsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy9tZWRpYWN0bC1wa2djb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy9tZWRpYWN0bC1wa2djb25maWcucGF0Y2gKaW5kZXggMzRmYjNjZi4uOWZjZjYxMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvbWVkaWFjdGwtcGtnY29uZmlnLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzL21lZGlhY3RsLXBrZ2NvbmZpZy5wYXRjaApAQCAtMSw4ICsxLDE2IEBACi1JbmRleDogdjRsLXV0aWxzLTEuNi4yL3V0aWxzL21lZGlhLWN0bC9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHY0bC11dGlscy0xLjYuMi5vcmlnL3V0aWxzL21lZGlhLWN0bC9NYWtlZmlsZS5hbQotKysrIHY0bC11dGlscy0xLjYuMi91dGlscy9tZWRpYS1jdGwvTWFrZWZpbGUuYW0KLUBAIC03LDYgKzcsNyBAQCBsaWJ2NGwyc3ViZGV2X2xhX0xJQkFERCA9IGxpYm1lZGlhY3RsLmxhCitGcm9tIDQ4MGMwNGFjNmE5ZDExYmZlZjlkNGFjYTA3MzA1MmZkY2VlNGZkZWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxIE1hciAyMDE1IDIyOjI1OjA3ICswMDAwCisKKy0tLQorIHV0aWxzL21lZGlhLWN0bC9NYWtlZmlsZS5hbSB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvdXRpbHMvbWVkaWEtY3RsL01ha2VmaWxlLmFtIGIvdXRpbHMvbWVkaWEtY3RsL01ha2VmaWxlLmFtCitpbmRleCBkMTFmYTJlLi43YzUyMGEyIDEwMDY0NAorLS0tIGEvdXRpbHMvbWVkaWEtY3RsL01ha2VmaWxlLmFtCisrKysgYi91dGlscy9tZWRpYS1jdGwvTWFrZWZpbGUuYW0KK0BAIC0yMCw2ICsyMCw3IEBAIGxpYnY0bDJzdWJkZXZfbGFfTElCQUREID0gbGlibWVkaWFjdGwubGEKICBtZWRpYWN0bF9pbmNsdWRlZGlyPSQoaW5jbHVkZWRpcikvbWVkaWFjdGwKICBub2luc3RfSEVBREVSUyA9IG1lZGlhY3RsLmggdjRsMnN1YmRldi5oCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYm0vbGlidnB4L2xpYnZweC1jb25maWd1cmUtc3VwcG9ydC1ibGFuay1wcmVmaXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYm0vbGlidnB4L2xpYnZweC1jb25maWd1cmUtc3VwcG9ydC1ibGFuay1wcmVmaXgucGF0Y2gKaW5kZXggYzdhNmU1MS4uNmFkN2YyYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJtL2xpYnZweC9saWJ2cHgtY29uZmlndXJlLXN1cHBvcnQtYmxhbmstcHJlZml4LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvd2VibS9saWJ2cHgvbGlidnB4LWNvbmZpZ3VyZS1zdXBwb3J0LWJsYW5rLXByZWZpeC5wYXRjaApAQCAtMSwxOSArMSwyOCBAQAotVXBzdHJlYW06IG5vdCB5ZXQKK0Zyb20gZGMwYTVjM2QyZGQ0ZTc5ZDEyYTE1MGEyNDZhOTVjNGRjODgzMjZmMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+CitEYXRlOiBUdWUsIDE2IEF1ZyAyMDExIDE2OjA0OjM1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFVwc3RyZWFtOiBub3QgeWV0CiAKIEZpeCBjb25maWd1cmUgdG8gYWNjZXB0ICItLXByZWZpeD0iIChhIGJsYW5rIHByZWZpeCkuCiAKLS0tLSBsaWJ2cHgtMC45LjEvYnVpbGQvbWFrZS9jb25maWd1cmUuc2gub3JpZwkyMDEwLTA2LTE3IDA5OjA4OjU2LjAwMDAwMDAwMCAtMDQwMAotKysrIGxpYnZweC0wLjkuMS9idWlsZC9tYWtlL2NvbmZpZ3VyZS5zaAkyMDEwLTA5LTIzIDE0OjI3OjQ4LjAwMDAwMDAwMCAtMDQwMAotQEAgLTQ0NCw2ICs0NDQsOCBAQAorLS0tCisgYnVpbGQvbWFrZS9jb25maWd1cmUuc2ggfCAyMCArKysrKysrKysrKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYnVpbGQvbWFrZS9jb25maWd1cmUuc2ggYi9idWlsZC9tYWtlL2NvbmZpZ3VyZS5zaAoraW5kZXggMDA3ZTAyMC4uMDRkNWNiZiAxMDA2NDQKKy0tLSBhL2J1aWxkL21ha2UvY29uZmlndXJlLnNoCisrKysgYi9idWlsZC9tYWtlL2NvbmZpZ3VyZS5zaAorQEAgLTU4MSw2ICs1ODEsOCBAQCBwcm9jZXNzX2NvbW1vbl9jbWRsaW5lKCkgewogICAgICAgICAgOzsKLSAgICAgICAgIC0tcHJlZml4PSopCisgICAgICAgLS1wcmVmaXg9KikKICAgICAgICAgIHByZWZpeD0iJHtvcHR2YWx9IgogKyAgICAgICAgIyBEaXN0aW5ndWlzaCBiZXR3ZWVuICJwcmVmaXggbm90IHNldCIgYW5kICJwcmVmaXggc2V0IHRvICcnIgogKyAgICAgICAgcHJlZml4c2V0PTEKICAgICAgICAgIDs7Ci0gICAgICAgICAtLWxpYmRpcj0qKQorICAgICAgIC0tbGliZGlyPSopCiAgICAgICAgICBsaWJkaXI9IiR7b3B0dmFsfSIKLUBAIC01ODcsMTMgKzU4NywyMyBAQCBwcm9jZXNzX2NtZGxpbmUoKSB7CitAQCAtNjE0LDEzICs2MTYsMjMgQEAgcHJvY2Vzc19jbWRsaW5lKCkgewogIH0KICAKICBwb3N0X3Byb2Nlc3NfY29tbW9uX2NtZGxpbmUoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dlb2NsdWUvZ2VvY2x1ZV8yLjQuNC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ2VvY2x1ZS9nZW9jbHVlXzIuNC40LmJiCmluZGV4IDFkNTMxYWUuLmIzMWQ4ZWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ2VvY2x1ZS9nZW9jbHVlXzIuNC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ2VvY2x1ZS9nZW9jbHVlXzIuNC40LmJiCkBAIC04LDkgKzgsOSBAQAogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04MTE0YjgzYTA0MzVkODEzNmI0N2JkNzAxMTFjZTVjZCIKIAotREVQRU5EUyA9ICJnbGliLTIuMCBkYnVzIGpzb24tZ2xpYiBsaWJzb3VwLTIuNCBpbnRsdG9vbC1uYXRpdmUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5hdGl2ZSIKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZGJ1cyBqc29uLWdsaWIgbGlic291cC0yLjQgaW50bHRvb2wtbmF0aXZlIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uCiAKIFNSQ19VUkkgPSAiIFwKICAgICBodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9nZW9jbHVlL3JlbGVhc2VzLzIuNC9nZW9jbHVlLSR7UFZ9LnRhci54eiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE2LzAwMDEtU0NvbnN0cnVjdC1wcmVmaXgtaW5jbHVkZXB5LXdpdGgtc3lzcm9vdC1hbmQtZHJvcC1zeS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTYvMDAwMS1TQ29uc3RydWN0LXByZWZpeC1pbmNsdWRlcHktd2l0aC1zeXNyb290LWFuZC1kcm9wLXN5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWEzMjI2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTYvMDAwMS1TQ29uc3RydWN0LXByZWZpeC1pbmNsdWRlcHktd2l0aC1zeXNyb290LWFuZC1kcm9wLXN5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotRnJvbSAxZTJjZWE4OTQ1YmMyMTgzZmJlMWEwMTJkY2Q2MzNhMzUyMTI1OTUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogVHVlLCAyNCBBcHIgMjAxMiAxODo0NToxNCArMDIwMAotU3ViamVjdDogW1BBVENIXSBTQ29uc3RydWN0OiBwcmVmaXggaW5jbHVkZXB5IHdpdGggc3lzcm9vdCBhbmQgZHJvcCBzeXNyb290Ci0gZnJvbSBweXRob25fbGliX2RpcgotCi0qIHdpdGhvdXQgUFlUSE9OUEFUSCwgZGlzdHV0aWwncyBzeXNjb25maWcgcmV0dXJucyBJTkNMVURFUFkgd2l0aG91dCBzeXNyb290IHByZWZpeAotICBhbmQgd2l0aCBQWVRIT05QQVRIIGZyb20gT0UgaXQncyBwb2ludGluZyB0byBuYXRpdmUgcHl0aG9uIGRpcgotCi0gICAgJCBleHBvcnQgUFlUSE9OUEFUSD0vT0Uvc2hyLWNvcmUvdG1wLWVnbGliYy9zeXNyb290cy9vbS1ndGEwMi91c3IvbGliL3B5dGhvbjIuNy8KLSAgICAkIHB5dGhvbgotICAgIFB5dGhvbiAyLjcuMiAoZGVmYXVsdCwgQXByIDE4IDIwMTIsIDA5OjE5OjU5KQotICAgIFtHQ0MgNC42LjJdIG9uIGxpbnV4MgotICAgIFR5cGUgImhlbHAiLCAiY29weXJpZ2h0IiwgImNyZWRpdHMiIG9yICJsaWNlbnNlIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICA+Pj4gZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZwotICAgID4+PiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzKCdJTkNMVURFUFknKQotICAgIFsnL09FL3Noci1jb3JlL3RtcC1lZ2xpYmMvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9pbmNsdWRlL3B5dGhvbjIuNyddCi0gICAgPj4+Ci0gICAgJCB1bnNldCBQWVRIT05QQVRICi0gICAgJCBweXRob24KLSAgICBQeXRob24gMi43LjIgKGRlZmF1bHQsIEFwciAxOCAyMDEyLCAwOToxOTo1OSkKLSAgICBbR0NDIDQuNi4yXSBvbiBsaW51eDIKLSAgICBUeXBlICJoZWxwIiwgImNvcHlyaWdodCIsICJjcmVkaXRzIiBvciAibGljZW5zZSIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0gICAgPj4+IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKLSAgICA+Pj4gc3lzY29uZmlnLmdldF9jb25maWdfdmFycygnSU5DTFVERVBZJykKLSAgICBbJy9weXRob24yLjcnXQotICAgID4+PiBpbXBvcnQgc3lzY29uZmlnCi0gICAgPj4+IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoJ0lOQ0xVREVQWScpCi0gICAgWycvT0Uvc2hyLWNvcmUvdG1wLWVnbGliYy9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2luY2x1ZGUvcHl0aG9uMi43J10KLSogcHl0aG9uX2xpYl9kaXIgPSBweXRob25fbGliX2Rpci5yZXBsYWNlKGVudlsnc3lzcm9vdCddLCAnJykKLSAgcmV0dXJucyBwYXRoIHRvIHRhcmdldCBzeXNyb290Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFBldGVyIEEuIEJpZ290IDxwYWJAcGFiaWdvdC5jb20+Ci0tLS0KLSBTQ29uc3RydWN0IHwgOSArKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9TQ29uc3RydWN0IGIvU0NvbnN0cnVjdAotaW5kZXggNmM5MzMxMS4uY2RlOGIzZCAxMDA2NDQKLS0tLSBhL1NDb25zdHJ1Y3QKLSsrKyBiL1NDb25zdHJ1Y3QKLUBAIC0xMTQ4LDYgKzExNDgsMTIgQEAgZWxzZToKLSAgICAgICAgIGJhc2VjZmxhZ3MgKz0gJyAtY292ZXJhZ2UnCi0gICAgICAgICBsZGZsYWdzICs9ICcgLWNvdmVyYWdlJwotICAgICAgICAgbGRzaGFyZWQgKz0gJyAtY292ZXJhZ2UnCi0rCi0rICAgIGlmIGVudlsnc3lzcm9vdCddOgotKyAgICAgICAgcHJpbnQgIlByZWZpeGluZyBpbmNsdWRlcHkgJyVzJyB3aXRoIHN5c3Jvb3QgcHJlZml4IiAlIGluY2x1ZGVweQotKyAgICAgICAgaW5jbHVkZXB5ID0gb3MucGF0aC5ub3JtcGF0aCgiJXMvJXMvJXMvJXMiICUgKGVudlsnc3lzcm9vdCddLCBlbnZbJ3ByZWZpeCddLCBlbnZbJ2luY2x1ZGVkaXInXSwgaW5jbHVkZXB5KSkKLSsgICAgICAgIHByaW50ICInJXMnIiAlIGluY2x1ZGVweQotKwotICAgICAjIGluIGNhc2UgQ0MvQ1hYIHdhcyBzZXQgdG8gdGhlIHNjYW4tYnVpbGQgd3JhcHBlciwKLSAgICAgIyBlbnN1cmUgdGhhdCB3ZSBidWlsZCB0aGUgcHl0aG9uIG1vZHVsZXMgd2l0aCBzY2FuLWJ1aWxkLCB0b28KLSAgICAgaWYgZW52WydDQyddIGlzIE5vbmUgb3IgZW52WydDQyddLmZpbmQoJ3NjYW4tYnVpbGQnKSA8IDA6Ci1AQCAtMTQwOCwxMSArMTQxNCwxNCBAQCBpZiBub3QgZW52WydweXRob24nXToKLSAgICAgcHl0aG9uX2luc3RhbGwgPSBbXQotIGVsc2U6Ci0gICAgIHB5dGhvbl9saWJfZGlyID0gZW52WydweXRob25fbGliZGlyJ10KLSsgICAgcHl0aG9uX2xpYl9kaXIgPSBweXRob25fbGliX2Rpci5yZXBsYWNlKGVudlsnc3lzcm9vdCddLCAnJykKLSAgICAgcHl0aG9uX21vZHVsZV9kaXIgPSBweXRob25fbGliX2RpciArIG9zLnNlcCArICdncHMnCi0gICAgIHB5dGhvbl9leHRlbnNpb25zX2luc3RhbGwgPSBweXRob25fZW52Lkluc3RhbGwoIERFU1RESVIgKyBweXRob25fbW9kdWxlX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uX2J1aWx0X2V4dGVuc2lvbnMpCi0gICAgIGlmIG5vdCBlbnZbJ2RlYnVnJ10gYW5kIG5vdCBlbnZbJ3Byb2ZpbGluZyddIGFuZCBub3QgZW52Wydub3N0cmlwJ10gYW5kIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnZGFyd2luJyk6Ci0gICAgICAgICBweXRob25fZW52LkFkZFBvc3RBY3Rpb24ocHl0aG9uX2V4dGVuc2lvbnNfaW5zdGFsbCwgJyRTVFJJUCAkVEFSR0VUJykKLSsgICAgZW52LkFkZFBvc3RBY3Rpb24ocHl0aG9uX2V4dGVuc2lvbnNfaW5zdGFsbCwgJyRDSFJQQVRIIC1yICIlcyIgIiRUQVJHRVQiJyBcCi0rICAgICAgICAgICAgICAgICAgICAgJSAocHl0aG9uX2xpYl9kaXIsICkpCi0gCi0gICAgIHB5dGhvbl9tb2R1bGVzX2luc3RhbGwgPSBweXRob25fZW52Lkluc3RhbGwoIERFU1RESVIgKyBweXRob25fbW9kdWxlX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRob25fbW9kdWxlcykKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNy8wMDAxLVNDb25zdHJ1Y3QtcHJlZml4LWluY2x1ZGVweS13aXRoLXN5c3Jvb3QtYW5kLWRyb3Atc3kucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE3LzAwMDEtU0NvbnN0cnVjdC1wcmVmaXgtaW5jbHVkZXB5LXdpdGgtc3lzcm9vdC1hbmQtZHJvcC1zeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmEyN2MyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNy8wMDAxLVNDb25zdHJ1Y3QtcHJlZml4LWluY2x1ZGVweS13aXRoLXN5c3Jvb3QtYW5kLWRyb3Atc3kucGF0Y2gKQEAgLTAsMCArMSw4MSBAQAorRnJvbSAxZTJjZWE4OTQ1YmMyMTgzZmJlMWEwMTJkY2Q2MzNhMzUyMTI1OTUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorRGF0ZTogVHVlLCAyNCBBcHIgMjAxMiAxODo0NToxNCArMDIwMAorU3ViamVjdDogW1BBVENIXSBTQ29uc3RydWN0OiBwcmVmaXggaW5jbHVkZXB5IHdpdGggc3lzcm9vdCBhbmQgZHJvcCBzeXNyb290CisgZnJvbSBweXRob25fbGliX2RpcgorCisqIHdpdGhvdXQgUFlUSE9OUEFUSCwgZGlzdHV0aWwncyBzeXNjb25maWcgcmV0dXJucyBJTkNMVURFUFkgd2l0aG91dCBzeXNyb290IHByZWZpeAorICBhbmQgd2l0aCBQWVRIT05QQVRIIGZyb20gT0UgaXQncyBwb2ludGluZyB0byBuYXRpdmUgcHl0aG9uIGRpcgorCisgICAgJCBleHBvcnQgUFlUSE9OUEFUSD0vT0Uvc2hyLWNvcmUvdG1wLWVnbGliYy9zeXNyb290cy9vbS1ndGEwMi91c3IvbGliL3B5dGhvbjIuNy8KKyAgICAkIHB5dGhvbgorICAgIFB5dGhvbiAyLjcuMiAoZGVmYXVsdCwgQXByIDE4IDIwMTIsIDA5OjE5OjU5KQorICAgIFtHQ0MgNC42LjJdIG9uIGxpbnV4MgorICAgIFR5cGUgImhlbHAiLCAiY29weXJpZ2h0IiwgImNyZWRpdHMiIG9yICJsaWNlbnNlIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICA+Pj4gZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZworICAgID4+PiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzKCdJTkNMVURFUFknKQorICAgIFsnL09FL3Noci1jb3JlL3RtcC1lZ2xpYmMvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9pbmNsdWRlL3B5dGhvbjIuNyddCisgICAgPj4+CisgICAgJCB1bnNldCBQWVRIT05QQVRICisgICAgJCBweXRob24KKyAgICBQeXRob24gMi43LjIgKGRlZmF1bHQsIEFwciAxOCAyMDEyLCAwOToxOTo1OSkKKyAgICBbR0NDIDQuNi4yXSBvbiBsaW51eDIKKyAgICBUeXBlICJoZWxwIiwgImNvcHlyaWdodCIsICJjcmVkaXRzIiBvciAibGljZW5zZSIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgPj4+IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKKyAgICA+Pj4gc3lzY29uZmlnLmdldF9jb25maWdfdmFycygnSU5DTFVERVBZJykKKyAgICBbJy9weXRob24yLjcnXQorICAgID4+PiBpbXBvcnQgc3lzY29uZmlnCisgICAgPj4+IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoJ0lOQ0xVREVQWScpCisgICAgWycvT0Uvc2hyLWNvcmUvdG1wLWVnbGliYy9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2luY2x1ZGUvcHl0aG9uMi43J10KKyogcHl0aG9uX2xpYl9kaXIgPSBweXRob25fbGliX2Rpci5yZXBsYWNlKGVudlsnc3lzcm9vdCddLCAnJykKKyAgcmV0dXJucyBwYXRoIHRvIHRhcmdldCBzeXNyb290CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFBldGVyIEEuIEJpZ290IDxwYWJAcGFiaWdvdC5jb20+CistLS0KKyBTQ29uc3RydWN0IHwgOSArKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9TQ29uc3RydWN0IGIvU0NvbnN0cnVjdAoraW5kZXggMzMxOGJiNDguLmUxYzRmOTYzIDEwMDY0NAorLS0tIGEvU0NvbnN0cnVjdAorKysrIGIvU0NvbnN0cnVjdAorQEAgLTkzNCw3ICs5MzQsNyBAQCBlbHNlOgorIAorICMgU2V0IHVwIGNvbmZpZ3VyYXRpb24gZm9yIHRhcmdldCBQeXRob24KKyAKKy1QWVRIT05fTElCRElSX0NBTEwgPSAnc3lzY29uZmlnLmdldF9weXRob25fbGliKCknCisrUFlUSE9OX0xJQkRJUl9DQUxMID0gJ3N5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihwbGF0X3NwZWNpZmljPTEpJworIAorIFBZVEhPTl9DT05GSUdfTkFNRVMgPSBbJ0NDJywgJ0NYWCcsICdPUFQnLCAnQkFTRUNGTEFHUycsCisgICAgICAgICAgICAgICAgICAgICAgICAnQ0NTSEFSRUQnLCAnTERTSEFSRUQnLCAnU08nLCAnSU5DTFVERVBZJywgJ0xERkxBR1MnXQorQEAgLTEzNjQsNyArMTM2NCw3IEBAIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBMSU5LPWxkc2hhcmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgU0hMSUJQUkVGSVg9IiIsCisgICAgICAgICAgICAgICAgICAgICAgICBTSExJQlNVRkZJWD1weXRob25fY29uZmlnWydTTyddLAorLSAgICAgICAgICAgICAgICAgICAgICAgQ1BQUEFUSD1bcHl0aG9uX2NvbmZpZ1snSU5DTFVERVBZJ11dLAorKyAgICAgICAgICAgICAgICAgICAgICAgQ1BQUEFUSD1bb3MucGF0aC5ub3JtcGF0aCgiJXMvJXMvJXMvJXMiICUgKGVudlsnc3lzcm9vdCddLCBlbnZbJ3ByZWZpeCddLCBlbnZbJ2luY2x1ZGVkaXInXSwgcHl0aG9uX2NvbmZpZ1snSU5DTFVERVBZJ10pKV0gaWYgZW52WydzeXNyb290J10gZWxzZSBbcHl0aG9uX2NvbmZpZ1snSU5DTFVERVBZJ11dLAorICAgICAgICAgICAgICAgICAgICAgICAgQ1BQRkxBR1M9cHl0aG9uX2NvbmZpZ1snT1BUJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBDRkxBR1M9cHl0aG9uX2NvbmZpZ1snQkFTRUNGTEFHUyddLAorICAgICAgICAgICAgICAgICAgICAgICAgQ1hYRkxBR1M9cHl0aG9uX2NvbmZpZ1snQkFTRUNGTEFHUyddKQorQEAgLTE2NjIsMTIgKzE2NjIsMTUgQEAgaWYgKChub3QgZW52WydkZWJ1ZyddIGFuZCBub3QgZW52Wydwcm9maWxpbmcnXSBhbmQgbm90IGVudlsnbm9zdHJpcCddCisgaWYgbm90IGVudlsncHl0aG9uJ106CisgICAgIHB5dGhvbl9pbnN0YWxsID0gW10KKyBlbHNlOgorKyAgICBweXRob25fbGliZGlyID0gcHl0aG9uX2xpYmRpci5yZXBsYWNlKGVudlsnc3lzcm9vdCddLCAnJykKKyAgICAgcHl0aG9uX21vZHVsZV9kaXIgPSBweXRob25fbGliZGlyICsgb3Muc2VwICsgJ2dwcycKKyAgICAgcHl0aG9uX2V4dGVuc2lvbnNfaW5zdGFsbCA9IHB5dGhvbl9lbnYuSW5zdGFsbChERVNURElSICsgcHl0aG9uX21vZHVsZV9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uX2J1aWx0X2V4dGVuc2lvbnMpCisgICAgIGlmICgobm90IGVudlsnZGVidWcnXSBhbmQgbm90IGVudlsncHJvZmlsaW5nJ10KKyAgICAgICAgICBhbmQgbm90IGVudlsnbm9zdHJpcCddIGFuZCBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2RhcndpbicpKSk6CisgICAgICAgICBweXRob25fZW52LkFkZFBvc3RBY3Rpb24ocHl0aG9uX2V4dGVuc2lvbnNfaW5zdGFsbCwgJyRTVFJJUCAkVEFSR0VUJykKKysgICAgZW52LkFkZFBvc3RBY3Rpb24ocHl0aG9uX2V4dGVuc2lvbnNfaW5zdGFsbCwgJyRDSFJQQVRIIC1yICIlcyIgIiRUQVJHRVQiJyBcCisrICAgICAgICAgICAgICAgICAgICAgJSAocHl0aG9uX2xpYmRpciwgKSkKKyAKKyAgICAgcHl0aG9uX21vZHVsZXNfaW5zdGFsbCA9IHB5dGhvbl9lbnYuSW5zdGFsbChERVNURElSICsgcHl0aG9uX21vZHVsZV9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uX21vZHVsZXMpCistLSAKKzIuMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTYvMDAwMS1pbmNsdWRlLXN5cy10dHlkZWZhdWx0cy5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNy8wMDAxLWluY2x1ZGUtc3lzLXR0eWRlZmF1bHRzLmgucGF0Y2gKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNi8wMDAxLWluY2x1ZGUtc3lzLXR0eWRlZmF1bHRzLmgucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTcvMDAwMS1pbmNsdWRlLXN5cy10dHlkZWZhdWx0cy5oLnBhdGNoCmluZGV4IGY0OTZiNWUuLmU5MWU0ZTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTYvMDAwMS1pbmNsdWRlLXN5cy10dHlkZWZhdWx0cy5oLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLTMuMTcvMDAwMS1pbmNsdWRlLXN5cy10dHlkZWZhdWx0cy5oLnBhdGNoCkBAIC0xOSwxMCArMTksMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAogZGlmZiAtLWdpdCBhL2dwc21vbi5jIGIvZ3BzbW9uLmMKLWluZGV4IGVhZDg0ZDAuLmYyMDVjYjEgMTAwNjQ0CitpbmRleCA4OWM0M2VlMi4uNWNjMGRhYmQgMTAwNjQ0CiAtLS0gYS9ncHNtb24uYwogKysrIGIvZ3BzbW9uLmMKLUBAIC0yMCw2ICsyMCw3IEBACitAQCAtMjQsNiArMjQsNyBAQAogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICAjaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNi8wMDA0LVNDb25zdHJ1Y3QtZGlzYWJsZS1odG1sLWFuZC1tYW4tZG9jcy1idWlsZGluZy1iZWNhdXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE3LzAwMDQtU0NvbnN0cnVjdC1kaXNhYmxlLWh0bWwtYW5kLW1hbi1kb2NzLWJ1aWxkaW5nLWJlY2F1cy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDg5JQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC0zLjE2LzAwMDQtU0NvbnN0cnVjdC1kaXNhYmxlLWh0bWwtYW5kLW1hbi1kb2NzLWJ1aWxkaW5nLWJlY2F1cy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNy8wMDA0LVNDb25zdHJ1Y3QtZGlzYWJsZS1odG1sLWFuZC1tYW4tZG9jcy1idWlsZGluZy1iZWNhdXMucGF0Y2gKaW5kZXggODUyN2YwZC4uYmEzZDIwNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNi8wMDA0LVNDb25zdHJ1Y3QtZGlzYWJsZS1odG1sLWFuZC1tYW4tZG9jcy1idWlsZGluZy1iZWNhdXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QtMy4xNy8wMDA0LVNDb25zdHJ1Y3QtZGlzYWJsZS1odG1sLWFuZC1tYW4tZG9jcy1idWlsZGluZy1iZWNhdXMucGF0Y2gKQEAgLTI5LDIzICsyOSwyMiBAQAogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9TQ29uc3RydWN0IGIvU0NvbnN0cnVjdAotaW5kZXggMGU1MThlNy4uYzAxYTcxYiAxMDA2NDQKK2luZGV4IDMzMThiYjQ4Li5hNWJiNzU2ZCAxMDA2NDQKIC0tLSBhL1NDb25zdHJ1Y3QKICsrKyBiL1NDb25zdHJ1Y3QKLUBAIC03MDQsMTIgKzcwNCwxMiBAQCBzaXplX3Qgc3RybGNweSgvKkBvdXRAKi9jaGFyICpkc3QsIC8qQGluQCovY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc2l6ZSk7CitAQCAtODg5LDExICs4ODksMTEgQEAgZWxzZToKICAKLSAgICAgbWFuYnVpbGRlciA9IG1hbmdlbmVyYXRvciA9IGh0bWxidWlsZGVyID0gTm9uZQorICAgICBtYW5idWlsZGVyID0gaHRtbGJ1aWxkZXIgPSBOb25lCiAgICAgIGlmIGVudlsnbWFuYnVpbGQnXToKIC0gICAgICAgIGlmIGNvbmZpZy5DaGVja1hzbHRwcm9jKCk6CiArICAgICAgICBpZiBGYWxzZSBhbmQgY29uZmlnLkNoZWNrWHNsdHByb2MoKToKLSAgICAgICAgICAgICBtYW5nZW5lcmF0b3IgPSAneHNsdHByb2MnCiAgICAgICAgICAgICAgYnVpbGQgPSAieHNsdHByb2MgLS1ub25ldCAlcyAkU09VUkNFID4kVEFSR0VUIgogICAgICAgICAgICAgIGh0bWxidWlsZGVyID0gYnVpbGQgJSBkb2Nib29rX2h0bWxfdXJpCiAgICAgICAgICAgICAgbWFuYnVpbGRlciA9IGJ1aWxkICUgZG9jYm9va19tYW5fdXJpCiAtICAgICAgICBlbGlmIFdoZXJlSXMoInhtbHRvIik6CiArICAgICAgICBlbGlmIEZhbHNlIGFuZCBXaGVyZUlzKCJ4bWx0byIpOgotICAgICAgICAgICAgIG1hbmdlbmVyYXRvciA9ICd4bWx0bycKLSAgICAgICAgICAgICB4bWx0byA9ICJ4bWx0byAlcyAkU09VUkNFIHx8IG12IGBiYXNlbmFtZSAkVEFSR0VUYCBgZGlybmFtZSAkVEFSR0VUYCIKKyAgICAgICAgICAgICB4bWx0byA9ICJ4bWx0byAlcyAkU09VUkNFIHx8IG12IGBiYXNlbmFtZSAkVEFSR0VUYCAiIFwKKyAgICAgICAgICAgICAgICAgICAgICJgZGlybmFtZSAkVEFSR0VUYCIKICAgICAgICAgICAgICBodG1sYnVpbGRlciA9IHhtbHRvICUgImh0bWwtbm9jaHVua3MiCiAtLSAKIDEuOC41LjUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLzYwLWdwc2QucnVsZXMgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC82MC1ncHNkLnJ1bGVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTE0M2I4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkLzYwLWdwc2QucnVsZXMKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0jIHVkZXYgcnVsZXMgZm9yIGdwc2QKLSMgJElkJAotIwotIyBHUFNlcyBkb24ndCBoYXZlIHRoZWlyIG93biBVU0IgZGV2aWNlIGNsYXNzLiAgVGhleSdyZSBzZXJpYWwtb3Zlci1VU0IKLSMgZGV2aWNlcywgc28gd2hhdCB5b3Ugc2VlIGlzIGFjdHVhbGx5IHRoZSBJRCBvZiB0aGUgc2VyaWFsLW92ZXItVVNCIGNoaXAuCi0jIEZvcnR1bmF0ZWx5LCBqdXN0IHR3byBvZiB0aGVzZSBhY2NvdW50IGZvciBvdmVyIDgwJSBvZiBjb25zdW1lci1ncmFkZQotIyBHUFMgc2Vuc29ycy4gIFRoZSBncHNkLmhvdHBsdWcud3JhcHBlciBzY3JpcHQgd2lsbCB0ZWxsIGEgcnVubmluZyBncHNkCi0jIHRoYXQgaXQgc2hvdWxkIGxvb2sgYXQgdGhlIGRldmljZSB0aGF0IGp1c3Qgd2VudCBhY3RpdmUsIGJlY2F1c2UgaXQKLSMgbWlnaHQgYmUgYSBHUFMuCi0jCi0jIFRoZSBmb2xsb3dpbmcgc2V0dXAgd29ya3Mgb24gRGViaWFuIC0gc29tZXRoaW5nIHNpbWlsYXIgd2lsbCBhcHBseSBvbiAKLSMgb3RoZXIgZGlzdHJpYnV0aW9uczoKLSMgCi0jICAgL2V0Yy91ZGV2L2dwc2QucnVsZXMKLSMgICAvZXRjL3VkZXYvcnVsZXMuZC8wMjVfZ3BzZC5ydWxlcyAtPiAuLi9ncHNkLnJ1bGVzCi0jICAgL2xpYi91ZGV2L2dwc2QuaG90cGx1Zy53cmFwcGVyCi0jICAgL2xpYi91ZGV2L2dwc2QuaG90cGx1ZwotIyAKLSMgU2V0dGluZyB0aGUgbGluayBpbiAvZXRjL3VkZXYvcnVsZXMuZCBhY3RpdmF0ZXMgdGhlIHJ1bGUgYW5kIGRldGVybWluZXMKLSMgd2hlbiB0byBydW4gaXQgb24gYm9vdCAoc2ltaWxhciB0byBpbml0LmQgcHJvY2Vzc2luZykuCi0KLVNVQlNZU1RFTSE9InR0eSIsIEdPVE89Imdwc2RfcnVsZXNfZW5kIgotCi0jIFByb2xpZmljIFRlY2hub2xvZ3ksIEluYy4gUEwyMzAzIFNlcmlhbCBQb3J0Ci1BVFRSe2lkVmVuZG9yfT09IjA2N2IiLCBBVFRSe2lkUHJvZHVjdH09PSIyMzAzIiwgU1lNTElOSys9ImdwcyVuIiwgUlVOKz0iL2xpYi91ZGV2L2dwc2QuaG90cGx1Zy53cmFwcGVyIgotIyBBVEVOIEludGVybmF0aW9uYWwgQ28uLCBMdGQgVUMtMjMyQSBTZXJpYWwgUG9ydCBbcGwyMzAzXQotQVRUUntpZFZlbmRvcn09PSIwNTU3IiwgQVRUUntpZFByb2R1Y3R9PT0iMjAwOCIsIFNZTUxJTksrPSJncHMlbiIsIFJVTis9Ii9saWIvdWRldi9ncHNkLmhvdHBsdWcud3JhcHBlciIKLSMgRlRESSA4VTIzMkFNCi1BVFRSe2lkVmVuZG9yfT09IjA0MDMiLCBBVFRSe2lkUHJvZHVjdH09PSI2MDAxIiwgU1lNTElOSys9ImdwcyVuIiwgUlVOKz0iL2xpYi91ZGV2L2dwc2QuaG90cGx1Zy53cmFwcGVyIgotIyBDeXByZXNzIE04L0NZN0M2NDAxMyAoRGVMb3JtZSB1c2VzIHRoZXNlKQotQVRUUntpZFZlbmRvcn09PSIxMTYzIiwgQVRUUntpZFByb2R1Y3R9PT0iMDEwMCIsIFNZTUxJTksrPSJncHMlbiIsIFJVTis9Ii9saWIvdWRldi9ncHNkLmhvdHBsdWcud3JhcHBlciIKLSMgUFMtMzYwIE9FTSAoTWljcm9zb2Z0IEdQUyBzb2xkIHdpdGggU3RyZWV0IGFuZCBUcmlwcyAyMDA1KQotQVRUUntpZFZlbmRvcn09PSIwNjdiIiwgQVRUUntpZFByb2R1Y3R9PT0iYWFhMCIsIFNZTUxJTksrPSJncHMlbiIsIFJVTis9Ii9saWIvdWRldi9ncHNkLmhvdHBsdWcud3JhcHBlciIKLSMgR2FybWluIEludGVybmF0aW9uYWwgR1BTbWFwLCB2YXJpb3VzIG1vZGVscyAodGVzdGVkIHdpdGggR2FybWluIEdQUyAxOCBVU0IpCi1BVFRSe2lkVmVuZG9yfT09IjA5MWUiLCBBVFRSe2lkUHJvZHVjdH09PSIwMDAzIiwgU1lNTElOSys9ImdwcyVuIiwgUlVOKz0iL2xpYi91ZGV2L2dwc2QuaG90cGx1Zy53cmFwcGVyIgotIyBDeWduYWwgSW50ZWdyYXRlZCBQcm9kdWN0cywgSW5jLiBDUDIxMHggQ29tcG9zaXRlIERldmljZSAoVXNlZCBieSBIb2x1eCBtMjQxKQotQVRUUntpZFZlbmRvcn09PSIxMGM0IiwgQVRUUntpZFByb2R1Y3R9PT0iZWE2MCIsIFNZTUxJTksrPSJncHMlbiIsIFJVTis9Ii9saWIvdWRldi9ncHNkLmhvdHBsdWcud3JhcHBlciIKLSMgdS1ibG94IEFHLCB1LWJsb3ggNSAodGVzdGVkIHdpdGggTmF2aWxvY2sgTkwtNDAyVSkKLUFUVFJ7aWRWZW5kb3J9PT0iMTU0NiIsIEFUVFJ7aWRQcm9kdWN0fT09IjAxYTUiLCBTWU1MSU5LPSJncHMlbiIsIFJVTis9Ii9saWIvdWRldi9ncHNkLmhvdHBsdWcud3JhcHBlciIKLSMgRlRESSBGVDIzMgotQVRUUntpZFZlbmRvcn09PSIwNDAzIiwgQVRUUntpZFByb2R1Y3R9PT0iNjAwMSIsIFNZTUxJTks9ImdwcyVuIiwgUlVOKz0iL2xpYi91ZGV2L2dwc2QuaG90cGx1Zy53cmFwcGVyIgotIyB1LWJsb3ggNAotQVRUUntpZFZlbmRvcn09PSIxNTQ2IiwgQVRUUntpZFByb2R1Y3R9PT0iMDFhNCIsIFNZTUxJTks9ImdwcyVuIiwgUlVOKz0iL2xpYi91ZGV2L2dwc2QuaG90cGx1Zy53cmFwcGVyIgotCi1BQ1RJT049PSJyZW1vdmUiLCBSVU4rPSIvbGliL3VkZXYvZ3BzZC5ob3RwbHVnLndyYXBwZXIiCi0KLUxBQkVMPSJncHNkX3J1bGVzX2VuZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkL2dwc2QgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZC9ncHNkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBiYTczZGFmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkL2dwc2QKKysrIC9kZXYvbnVsbApAQCAtMSwxMzYgKzAsMCBAQAotIyEvYmluL3NoCi0jIyMgQkVHSU4gSU5JVCBJTkZPCi0jIFByb3ZpZGVzOiAgICAgICAgICBncHNkCi0jIFJlcXVpcmVkLVN0YXJ0OiAgICAkcmVtb3RlX2ZzICRuZXR3b3JrCi0jIFNob3VsZC1TdGFydDogICAgICBibHVldG9vdGggZGJ1cyB1ZGV2Ci0jIFJlcXVpcmVkLVN0b3A6ICAgICAkcmVtb3RlX2ZzICRuZXR3b3JrCi0jIERlZmF1bHQtU3RhcnQ6ICAgICAyIDMgNCA1Ci0jIERlZmF1bHQtU3RvcDogICAgICAwIDEgNgotIyBTaG9ydC1EZXNjcmlwdGlvbjogR1BTIChHbG9iYWwgUG9zaXRpb25pbmcgU3lzdGVtKSBkYWVtb24gc3RhcnQvc3RvcCBzY3JpcHQKLSMgRGVzY3JpcHRpb246ICAgICAgIFN0YXJ0L1N0b3Agc2NyaXB0IGZvciB0aGUgZ3BzZCBzZXJ2aWNlIGRhZW1vbiwKLSMgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGFibGUgdG8gbW9uaXRvciBvbmUgb3IgbW9yZSBHUFMgZGV2aWNlcwotIyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGVkIHRvIGEgaG9zdCBjb21wdXRlciwgbWFraW5nIGFsbCBkYXRhIG9uCi0jICAgICAgICAgICAgICAgICAgICB0aGUgbG9jYXRpb24gYW5kIG1vdmVtZW50cyBvZiB0aGUgc2Vuc29ycyBhdmFpbGFibGUKLSMgICAgICAgICAgICAgICAgICAgIHRvIGJlIHF1ZXJpZWQgb24gVENQIHBvcnQgMjk0Ny4KLSMjIyBFTkQgSU5JVCBJTkZPCi0KLSMgQXV0aG9yOiBCZXJuZCBaZWltZXR6IDxiemVkQGRlYmlhbi5vcmc+Ci0jCi0jIFBsZWFzZSByZW1vdmUgdGhlICJBdXRob3IiIGxpbmVzIGFib3ZlIGFuZCByZXBsYWNlIHRoZW0KLSMgd2l0aCB5b3VyIG93biBuYW1lIGlmIHlvdSBjb3B5IGFuZCBtb2RpZnkgdGhpcyBzY3JpcHQuCi0KLSMgRG8gTk9UICJzZXQgLWUiCi0KLSMgUEFUSCBzaG91bGQgb25seSBpbmNsdWRlIC91c3IvKiBpZiBpdCBydW5zIGFmdGVyIHRoZSBtb3VudG5mcy5zaCBzY3JpcHQKLVBBVEg9L3NiaW46L3Vzci9zYmluOi9iaW46L3Vzci9iaW4KLURFU0M9IkdQUyAoR2xvYmFsIFBvc2l0aW9uaW5nIFN5c3RlbSkgZGFlbW9uIgotTkFNRT1ncHNkCi1EQUVNT049L3Vzci9zYmluLyROQU1FCi1QSURGSUxFPS92YXIvcnVuLyROQU1FLnBpZAotU0NSSVBUTkFNRT0vZXRjL2luaXQuZC8kTkFNRQotCi0jIEV4aXQgaWYgdGhlIHBhY2thZ2UgaXMgbm90IGluc3RhbGxlZAotWyAteCAiJERBRU1PTiIgXSB8fCBleGl0IDAKLQotIyBSZWFkIGNvbmZpZ3VyYXRpb24sIGlmIHByZXNlbnQKLVsgLXIgL2V0Yy9kZWZhdWx0LyROQU1FIF0gJiYgLiAvZXRjL2RlZmF1bHQvJE5BTUUKLQotaWYgWyAteiAiJEdQU0RfU09DS0VUIiBdICYmIFsgLXogIiRERVZJQ0VTIiBdOyB0aGVuCi0JR1BTRF9TT0NLRVQ9L3Zhci9ydW4vZ3BzZC5zb2NrCi1maQotCi1pZiBbIC1uICIkR1BTRF9TT0NLRVQiIF07IHRoZW4KLSAgICAgICAgR1BTRF9PUFRJT05TPSIkR1BTRF9PUFRJT05TIC1GICRHUFNEX1NPQ0tFVCIKLWZpCi0KLSMKLSMgRnVuY3Rpb24gdGhhdCBzdGFydHMgdGhlIGRhZW1vbi9zZXJ2aWNlCi0jCi1kb19zdGFydCgpCi17Ci0JIyBSZXR1cm4KLQkjICAgMCBpZiBkYWVtb24gaGFzIGJlZW4gc3RhcnRlZAotCSMgICAxIGlmIGRhZW1vbiB3YXMgYWxyZWFkeSBydW5uaW5nCi0JIyAgIDIgaWYgZGFlbW9uIGNvdWxkIG5vdCBiZSBzdGFydGVkCi0Jc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tcGlkZmlsZSAkUElERklMRSAtLWV4ZWMgJERBRU1PTiAtLXRlc3QgXAotICAgICAgICAtLSAkR1BTRF9PUFRJT05TIC1QICRQSURGSUxFICRHUFNfREVWSUNFUyA+IC9kZXYvbnVsbCBcCi0JCXx8IHJldHVybiAxCi0Jc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tcGlkZmlsZSAkUElERklMRSAtLWV4ZWMgJERBRU1PTiAtLSBcCi0JCSRHUFNEX09QVElPTlMgLVAgJFBJREZJTEUgJEdQU19ERVZJQ0VTIFwKLQkJfHwgcmV0dXJuIDIKLX0KLQotIwotIyBGdW5jdGlvbiB0aGF0IHN0b3BzIHRoZSBkYWVtb24vc2VydmljZQotIwotZG9fc3RvcCgpCi17Ci0JIyBSZXR1cm4KLQkjICAgMCBpZiBkYWVtb24gaGFzIGJlZW4gc3RvcHBlZAotCSMgICAxIGlmIGRhZW1vbiB3YXMgYWxyZWFkeSBzdG9wcGVkCi0JIyAgIDIgaWYgZGFlbW9uIGNvdWxkIG5vdCBiZSBzdG9wcGVkCi0JIyAgIG90aGVyIGlmIGEgZmFpbHVyZSBvY2N1cnJlZAotCXN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tcmV0cnk9VEVSTS8zMC9LSUxMLzUgLS1waWRmaWxlICRQSURGSUxFIC0tbmFtZSAkTkFNRQotCVJFVFZBTD0iJD8iCi0JWyAiJFJFVFZBTCIgPSAyIF0gJiYgcmV0dXJuIDIKLQkjIE1hbnkgZGFlbW9ucyBkb24ndCBkZWxldGUgdGhlaXIgcGlkZmlsZXMgd2hlbiB0aGV5IGV4aXQuCi0Jcm0gLWYgJFBJREZJTEUKLQlyZXR1cm4gIiRSRVRWQUwiCi19Ci0KLSMKLSMgRnVuY3Rpb24gdGhhdCBzZW5kcyBhIFNJR0hVUCB0byB0aGUgZGFlbW9uL3NlcnZpY2UKLSMKLWRvX3JlbG9hZCgpIHsKLQkjCi0JIyBJZiB0aGUgZGFlbW9uIGNhbiByZWxvYWQgaXRzIGNvbmZpZ3VyYXRpb24gd2l0aG91dAotCSMgcmVzdGFydGluZyAoZm9yIGV4YW1wbGUsIHdoZW4gaXQgaXMgc2VudCBhIFNJR0hVUCksCi0JIyB0aGVuIGltcGxlbWVudCB0aGF0IGhlcmUuCi0JIwotCXN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXNpZ25hbCAxIC0tcXVpZXQgLS1waWRmaWxlICRQSURGSUxFIC0tbmFtZSAkTkFNRQotCXJldHVybiAwCi19Ci0KLWNhc2UgIiQxIiBpbgotICBzdGFydCkKLQkJZWNobyAiU3RhcnRpbmcgJERFU0MiICIkTkFNRSIKLQkJZG9fc3RhcnQKLQkJZXhpdCAkPwotCTs7Ci0gIHN0b3ApCi0JZWNobyAiU3RvcHBpbmcgJERFU0MiICIkTkFNRSIKLQlkb19zdG9wCi0JZXhpdCAkPwotCTs7Ci0gIHN0YXR1cykKLSAgICAgICA7OwotICByZWxvYWR8Zm9yY2UtcmVsb2FkKQotCWVjaG8gIlJlbG9hZGluZyAkREVTQyIgIiROQU1FIgotCWRvX3JlbG9hZAotCWV4aXQgJD8KLQk7OwotICByZXN0YXJ0KQotCSMKLQkjIElmIHRoZSAicmVsb2FkIiBvcHRpb24gaXMgaW1wbGVtZW50ZWQgdGhlbiByZW1vdmUgdGhlCi0JIyAnZm9yY2UtcmVsb2FkJyBhbGlhcwotCSMKLQllY2hvICJSZXN0YXJ0aW5nICRERVNDIiAiJE5BTUUiCi0JZG9fc3RvcAotCWNhc2UgIiQ/IiBpbgotCSAgMHwxKQotCQlkb19zdGFydAotCQlleGl0ICQ/Ci0JCTs7Ci0JICAqKQotCSAJIyBGYWlsZWQgdG8gc3RvcAotCQlleGl0IDEKLQkJOzsKLQllc2FjCi0JOzsKLSAgKikKLQllY2hvICJVc2FnZTogJFNDUklQVE5BTUUge3N0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR8Zm9yY2UtcmVsb2FkfSIgPiYyCi0JZXhpdCAzCi0JOzsKLWVzYWMKLQotOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QvZ3BzZC1kZWZhdWx0IGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QvZ3BzZC1kZWZhdWx0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2VmZjAzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkL2dwc2QtZGVmYXVsdAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotIyBJZiB5b3UgbXVzdCBzcGVjaWZ5IGEgbm9uLU5NRUEgZHJpdmVyLCB1bmNvbW1lbnQgYW5kIG1vZGlmeSB0aGUgbmV4dCBsaW5lCi1HUFNEX1NPQ0tFVD0iL3Zhci9ydW4vZ3BzZC5zb2NrIgotR1BTRF9PUFRJT05TPSIiIAotR1BTX0RFVklDRVM9IiIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QvZ3BzZC5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2QvZ3BzZC5zZXJ2aWNlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTMxYTU4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkL2dwc2Quc2VydmljZQorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLVtVbml0XQotRGVzY3JpcHRpb249R1BTIChHbG9iYWwgUG9zaXRpb25pbmcgU3lzdGVtKSBEYWVtb24KLVJlcXVpcmVzPWdwc2Quc29ja2V0Ci0KLVtTZXJ2aWNlXQotRW52aXJvbm1lbnRGaWxlPS9ldGMvZGVmYXVsdC9ncHNkCi1FeGVjU3RhcnQ9L3Vzci9zYmluL2dwc2QgLU4gJEdQU19ERVZJQ0VTCi0KLVtJbnN0YWxsXQotQWxzbz1ncHNkLnNvY2tldApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2RfMy4xNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkXzMuMTcuYmIKc2ltaWxhcml0eSBpbmRleCA4NyUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2RfMy4xNi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2RfMy4xNy5iYgppbmRleCAyNmQ3NDg2Li5kNTI2ZGIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZF8zLjE2LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vZ3BzZC9ncHNkXzMuMTcuYmIKQEAgLTExLDEzICsxMSw5IEBACiAgICAgZmlsZTovLzAwMDEtU0NvbnN0cnVjdC1wcmVmaXgtaW5jbHVkZXB5LXdpdGgtc3lzcm9vdC1hbmQtZHJvcC1zeS5wYXRjaCBcCiAgICAgZmlsZTovLzAwMDQtU0NvbnN0cnVjdC1kaXNhYmxlLWh0bWwtYW5kLW1hbi1kb2NzLWJ1aWxkaW5nLWJlY2F1cy5wYXRjaCBcCiAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtdHR5ZGVmYXVsdHMuaC5wYXRjaCBcCi0gICAgZmlsZTovL2dwc2QtZGVmYXVsdCBcCi0gICAgZmlsZTovL2dwc2QgXAotICAgIGZpbGU6Ly82MC1ncHNkLnJ1bGVzIFwKLSAgICBmaWxlOi8vZ3BzZC5zZXJ2aWNlIFwKICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2ODY5MWI1ZGU0Yzk0ZjgyZWM0MDYyYjA0MmI1ZWI2MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMzU3OWFmMTNhNGQzZmUwYzViNzlmYTQ0YjVmNzVjOWYzY2FjNjc0OTM1N2YxZDk5Y2U1ZDM4YzA5YmMyMDI5IgorU1JDX1VSSVttZDVzdW1dID0gImUwY2ZhZGNmNGE2NWRmYmRkMmFmYjExYzU4ZjRlNGExIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY4ZTBkYmVjZmI1ODMxOTk3ZjhiM2Q2YmE0OGFlZDgxMmViNDY1ZDhjMDA4OTQyMGFiNjhmOWNlNGQ4NWU3N2EiCiAKIGluaGVyaXQgc2NvbnMgdXBkYXRlLXJjLmQgcHl0aG9uLWRpciBweXRob25uYXRpdmUgc3lzdGVtZCBibHVldG9vdGggdXBkYXRlLWFsdGVybmF0aXZlcwogCkBAIC02NywxMyArNjMsMTMgQEAKIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZ3BzZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kLworICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3BhY2thZ2luZy9kZWIvZXRjX2luaXQuZF9ncHNkICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvZ3BzZAogICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9ncHNkLWRlZmF1bHQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvZ3BzZC5kZWZhdWx0CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vcGFja2FnaW5nL2RlYi9ldGNfZGVmYXVsdF9ncHNkICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L2dwc2QuZGVmYXVsdAogCiAgICAgI3N1cHBvcnQgZm9yIHVkZXYKICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS82MC1ncHNkLnJ1bGVzICR7RH0vJHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9ncHNkLnJ1bGVzICR7RH0vJHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCiAgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2xpYmRpcn0vdWRldi8KICAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9ncHNkLmhvdHBsdWcgJHtEfSR7YmFzZV9saWJkaXJ9L3VkZXYvCiAKQEAgLTgzLDcgKzc5LDggQEAKIAogICAgICNzdXBwb3J0IGZvciBzeXN0ZW1kCiAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8ke0JQTn0uc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8ke0JQTn0uc2VydmljZQorICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3N5c3RlbWQvJHtCUE59LnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJHtCUE59LnNlcnZpY2UKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zeXN0ZW1kLyR7QlBOfWN0bEAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8ke0JQTn1jdGxALnNlcnZpY2UKICAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zeXN0ZW1kLyR7QlBOfS5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJHtCUE59LnNvY2tldAogfQogCkBAIC0xMzIsNyArMTI5LDcgQEAKIFJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKIFJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKIFJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtQTn0uc29ja2V0IgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QlBOfS5zb2NrZXQgJHtCUE59Y3RsQC5zZXJ2aWNlIgogCiAKIEFMVEVSTkFUSVZFXyR7UE59ID0gImdwc2QtZGVmYXVsdHMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL29ycmVyeS9vcnJlcnlfMi43LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9vcnJlcnkvb3JyZXJ5XzIuNy5iYgppbmRleCAxYTAwYjA4Li4wMTBmNjVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL29ycmVyeS9vcnJlcnlfMi43LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vb3JyZXJ5L29ycmVyeV8yLjcuYmIKQEAgLTUsNyArNSw5IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9vcnJlcnkuYztlbmRsaW5lPTI1O21kNT1kNzkyYmRmMmI1OTE5NzJkYTE3NWFlY2MzOGQ4OGNmZSIKIERFUEVORFMgPSAiZ3RrKyIKIAotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAogU1JDX1VSSSA9ICJodHRwOi8vcHJvamVjdHMub3Blbm1va28ub3JnL2Zycy9kb3dubG9hZC5waHAvOTIzL29ycmVyeV8yLjdfY2xlYW4udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL29ycmVyeS5wbmcgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wYXNzd2RxYy9wYXNzd2RxYy9tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L3Bhc3N3ZHFjL3Bhc3N3ZHFjL21ha2VmaWxlLWFkZC1sZGZsYWdzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bhc3N3ZHFjL3Bhc3N3ZHFjL21ha2VmaWxlLWFkZC1sZGZsYWdzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zZWN1cml0eS9wYXNzd2RxYy9wYXNzd2RxYy9tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wYXNzd2RxYy9wYXNzd2RxY18xLjMuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L3Bhc3N3ZHFjL3Bhc3N3ZHFjXzEuMy4xLmJiCnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGFzc3dkcWMvcGFzc3dkcWNfMS4zLjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L3Bhc3N3ZHFjL3Bhc3N3ZHFjXzEuMy4xLmJiCmluZGV4IDE5OGRiM2MuLjhmYzBiMzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGFzc3dkcWMvcGFzc3dkcWNfMS4zLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2VjdXJpdHkvcGFzc3dkcWMvcGFzc3dkcWNfMS4zLjEuYmIKQEAgLTIxLDYgKzIxLDkgQEAKIAogREVQRU5EUyArPSAibGlicGFtIgogCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInBhbSIKKwogTElDRU5TRSA9ICJCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xYjRhZjZmM2Q0ZWUwNzlhMzgxMDczNjZlOTNiMzM0ZCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90b21veW8tdG9vbHMvdG9tb3lvLXRvb2xzXzIuNS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2VjdXJpdHkvdG9tb3lvLXRvb2xzL3RvbW95by10b29sc18yLjUuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDgzJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RvbW95by10b29scy90b21veW8tdG9vbHNfMi41LjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L3RvbW95by10b29scy90b21veW8tdG9vbHNfMi41LjAuYmIKaW5kZXggNGExYjRjZS4uZjM2Mjc3NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90b21veW8tdG9vbHMvdG9tb3lvLXRvb2xzXzIuNS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L3RvbW95by10b29scy90b21veW8tdG9vbHNfMi41LjAuYmIKQEAgLTUsOSArNSw5IEBACiBIT01FUEFHRSA9ICJodHRwOi8vdG9tb3lvLnNvdXJjZWZvcmdlLmpwLyIKIFNFQ1RJT04gPSAiU3lzdGVtIEVudmlyb25tZW50L0tlcm5lbCIKIAotU1JDX1VSSSA9ICJodHRwOi8vamFpc3QuZGwuc291cmNlZm9yZ2UuanAvdG9tb3lvLzUzMzU3LyR7QlB9LTIwMTQwNjAxLnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4ODg4NjliNzkzMTI3ZjAwZDY0MzlhMzI0NjU5OGI4MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMThlZjZiYTFmYmY3YzBiODMwMThjM2EwZDRkNTQ4NWRmYjliNWI3ZjY0N2YzN2NlOWY2Mzg0MWEzMTMzYzJhIgorU1JDX1VSSSA9ICJodHRwOi8vamFpc3QuZGwuc291cmNlZm9yZ2UuanAvdG9tb3lvLzUzMzU3LyR7QlB9LTIwMTcwMTAyLnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ODg4MDRkNTg3NDI0NTJmZTIxM2E2OGY3ZWFkZDBhZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMGZlZGZhYzVlNTE0MzIxMjUwYmJlNjllYWNjYzczMmM4YTgxNTg1OTZmNzdhNzg1YzJlM2FlOWY5OTY4MjgzIgogCiBTID0gIiR7V09SS0RJUn0vJHtCUE59IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kYXNoL2Rhc2gvMDAwMS1GaXgtcHJpbnRmLWZvcm1hdC1lcnJvcnMtd2l0aC1jbGFuZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy9kYXNoL2Rhc2gvMDAwMS1GaXgtcHJpbnRmLWZvcm1hdC1lcnJvcnMtd2l0aC1jbGFuZy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGFzaC9kYXNoLzAwMDEtRml4LXByaW50Zi1mb3JtYXQtZXJyb3JzLXdpdGgtY2xhbmcucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy9kYXNoL2Rhc2gvMDAwMS1GaXgtcHJpbnRmLWZvcm1hdC1lcnJvcnMtd2l0aC1jbGFuZy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGFzaC9kYXNoXzAuNS44LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL2Rhc2gvZGFzaF8wLjUuOS4xLmJiCnNpbWlsYXJpdHkgaW5kZXggODUlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Rhc2gvZGFzaF8wLjUuOC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL2Rhc2gvZGFzaF8wLjUuOS4xLmJiCmluZGV4IDc4Y2E2MGQuLjZkZWU2NmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Rhc2gvZGFzaF8wLjUuOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvZGFzaC9kYXNoXzAuNS45LjEuYmIKQEAgLTEwLDggKzEwLDggQEAKIFNSQ19VUkkgPSAiaHR0cDovL2dvbmRvci5hcGFuYS5vcmcuYXUvfmhlcmJlcnQvJHtCUE59L2ZpbGVzLyR7QlB9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1wcmludGYtZm9ybWF0LWVycm9ycy13aXRoLWNsYW5nLnBhdGNoIFwKICAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjVjMTUyMjA5NjgwZGFiM2MzMTllODkyM2Y2YzUxMzc4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM2ZGIzYTIzNzc0N2IwMmQyMDM4MmE3NjEzOTc1NjNkODEzYjMwNmMwMjBhZTI4Y2UyNWExYzM5MTVmYWM2MGYiCitTUkNfVVJJW21kNXN1bV0gPSAiNjQ3MjcwMmE4ZDk3NjBkMTY2ZWY4MzMzZGNiNTI3YTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWVjZDViZWE3MmE5M2VkMTBlYjE1YTFiZTk5NTFkZDUxYjUyZTVkYTFkNGE3YWUwMjBlZmQ5ODI2YjQ5ZTY1OSIKIAogRVhUUkFfT0VDT05GICs9ICItLWJpbmRpcj0ke2Jhc2VfYmluZGlyfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGNzaC90Y3NoLzAwMDEtRW5hYmxlLXN5c3RlbS1tYWxsb2Mtb24tYWxsLWxpbnV4LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL3Rjc2gvdGNzaC8wMDAxLUVuYWJsZS1zeXN0ZW0tbWFsbG9jLW9uLWFsbC1saW51eC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGNzaC90Y3NoLzAwMDEtRW5hYmxlLXN5c3RlbS1tYWxsb2Mtb24tYWxsLWxpbnV4LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvdGNzaC90Y3NoLzAwMDEtRW5hYmxlLXN5c3RlbS1tYWxsb2Mtb24tYWxsLWxpbnV4LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90Y3NoL3Rjc2gvMDAwMi1BZGQtZGViaWFuLWNzaC1zY3JpcHRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL3Rjc2gvdGNzaC8wMDAyLUFkZC1kZWJpYW4tY3NoLXNjcmlwdHMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Rjc2gvdGNzaC8wMDAyLUFkZC1kZWJpYW4tY3NoLXNjcmlwdHMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy90Y3NoL3Rjc2gvMDAwMi1BZGQtZGViaWFuLWNzaC1zY3JpcHRzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90Y3NoL3Rjc2hfNi4yMC4wMC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy90Y3NoL3Rjc2hfNi4yMC4wMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGNzaC90Y3NoXzYuMjAuMDAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy90Y3NoL3Rjc2hfNi4yMC4wMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvenNoL3pzaF81LjMuMS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy96c2gvenNoXzUuNC4yLmJiCnNpbWlsYXJpdHkgaW5kZXggODIlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3pzaC96c2hfNS4zLjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy96c2gvenNoXzUuNC4yLmJiCmluZGV4IDFmNWUzOTAuLjEwMGM0NDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3pzaC96c2hfNS4zLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL3pzaC96c2hfNS40LjIuYmIKQEAgLTYsMTMgKzYsMTMgQEAKIFNFQ1RJT04gPSAiYmFzZS9zaGVsbCIKIAogTElDRU5TRSA9ICJ6c2giCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT1iN2JjODUzODk0NjY0YmU0NTVhOTIyZGI5ODA1Mjg4ZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTFhNGM0Y2RhM2U4MDk2ZDJmZDQ4M2ZmMmY0NTE0ZmVjIgogCiBERVBFTkRTID0gIm5jdXJzZXMgYmlzb24tbmF0aXZlIGxpYmNhcCBsaWJwY3JlIGdkYm0gZ3JvZmYtbmF0aXZlIgogCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImQ1ODNmYmNhMGMyNDEwYmY5NTQyY2U4YTY1MWMyNmNhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkOTRhNTkwZmYzYzU2MmVjZjM4N2RhNzhhYzM1NmQ2YmVhNzliMDUwYTllZjgxZTNlY2I5ZjhlZTUxMzA0MGUiCitTUkNfVVJJW21kNXN1bV0gPSAiZGZlMTU2ZmQ2OWIwZDhkMTc0NWVjZjZkNmUwMmUwNDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTU3YmNkYjJjNTdmNjRjMDJmNjczNjkzZWE1YTc1MThlZjI0YjY1NTdhZWIzYTRjZTIyMmNlZmE2ZDc0YWNjOSIKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB1cGRhdGUtYWx0ZXJuYXRpdmVzCiAKQEAgLTMwLDYgKzMwLDkgQEAKICAgICB6c2hfY3Zfc2hhcmVkX2Vudmlyb249eWVzIFwKICIKIAorIyBDb25maWd1cmUgcmVzcGVjdHMgLS1iaW5kaXIgZnJvbSBFWFRSQV9PRUNPTkYsIGJ1dCB0aGVuIFNyYy9NYWtlZmlsZSB3aWxsIHJlYWQgYmluZGlyIGZyb20gZW52aXJvbm1lbnQKK2V4cG9ydCBiaW5kaXI9IiR7YmFzZV9iaW5kaXJ9IgorCiBFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKIAogQUxURVJOQVRJVkVfJHtQTn0gPSAic2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2FudGh5L2FudGh5L25hdGl2ZS1oZWxwZXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hbnRoeS9hbnRoeS9uYXRpdmUtaGVscGVycy5wYXRjaAppbmRleCAyOTFiNjZiLi40N2NlMDA3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2FudGh5L2FudGh5L25hdGl2ZS1oZWxwZXJzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYW50aHkvYW50aHkvbmF0aXZlLWhlbHBlcnMucGF0Y2gKQEAgLTMsMjAgKzMsMjQgQEAKIGNvbW1lbnQ6IFN0YWdlIHRoZSBuYXRpdmUgYW50aHkgaGVscGVycyBta2ZpbGVkaWMsIG1rZGVwZ3JhcGgsIG1rd29yZGRpYywgCiBjb21tZW50OiBjYWxjdHJhbnMgYW5kIHByb2Njb3JwdXMuCiAKLS0tLSBhbnRoeS03ODExL21rYW50aHlkaWMvTWFrZWZpbGUuYW1+CTIwMDYtMDUtMTMgMTg6Mjg6MzUuMDAwMDAwMDAwICswOTAwCi0rKysgYW50aHktNzgxMS9ta2FudGh5ZGljL01ha2VmaWxlLmFtCTIwMDYtMDYtMTggMTA6NTY6MjUuNzcwMDAwMDAwICswOTAwCi1AQCAtMyw3ICszLDcgQEAKK0luZGV4OiBhbnRoeS05MTAwaC9ta2FudGh5ZGljL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYW50aHktOTEwMGgub3JpZy9ta2FudGh5ZGljL01ha2VmaWxlLmFtCisrKysgYW50aHktOTEwMGgvbWthbnRoeWRpYy9NYWtlZmlsZS5hbQorQEAgLTMsNyArMyw3IEBAIG5vaW5zdF9TQ1JJUFRTID0KICBDTEVBTkZJTEVTID0gYW50aHkuZGljCi0gSU5DTFVERVMgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZSAtRFNSQ0RJUj1cIiQoc3JjZGlyKVwiCisgSU5DTFVERVMgPSAtSSQodG9wX3NyY2RpcikvIC1EU1JDRElSPVwiJChzcmNkaXIpXCIKICAKIC1ub2luc3RfUFJPR1JBTVMgPSBta2ZpbGVkaWMKICtiaW5fUFJPR1JBTVMgPSBta2ZpbGVkaWMKICBta2ZpbGVkaWNfU09VUkNFUyA9IG1rZmlsZWRpYy5jCiAgbWtmaWxlZGljX0xEQUREID0gLi4vc3JjLWRpY2xpYi9saWJkaWNsaWIubGEKICAKLS0tLSBhbnRoeS03ODExL2RlcGdyYXBoL01ha2VmaWxlLmFtfgkyMDA2LTA2LTAyIDAwOjIwOjU0LjAwMDAwMDAwMCArMDkwMAotKysrIGFudGh5LTc4MTEvZGVwZ3JhcGgvTWFrZWZpbGUuYW0JMjAwNi0wNi0xOCAxMDo1NzoxOS40MjAwMDAwMDAgKzA5MDAKLUBAIC05LDcgKzksNyBAQAorSW5kZXg6IGFudGh5LTkxMDBoL2RlcGdyYXBoL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYW50aHktOTEwMGgub3JpZy9kZXBncmFwaC9NYWtlZmlsZS5hbQorKysrIGFudGh5LTkxMDBoL2RlcGdyYXBoL01ha2VmaWxlLmFtCitAQCAtOSw3ICs5LDcgQEAgQ0xFQU5GSUxFUyA9IGFudGh5LmRlcAogIEVYVFJBX0RJU1QgPSBpbmRlcHdvcmQudHh0ICQoREVQV09SRFMpCiAgCiAgIyBHZW5lcmF0ZSB0aGUgZGljdGlvbmFyeQpAQCAtMjUsMTAgKzI5LDEyIEBACiAgbWtkZXBncmFwaF9TT1VSQ0VTID0gbWtkZXBncmFwaC5jCiAgbWtkZXBncmFwaF9MREFERCA9ICAuLi9zcmMtbWFpbi9saWJhbnRoeS5sYSAuLi9zcmMtd29yZGRpYy9saWJhbnRoeWRpYy5sYQogIAotLS0tIGFudGh5LTc4MTEvbWt3b3JkZGljL01ha2VmaWxlLmFtfgkyMDA2LTA1LTEzIDE4OjI5OjA3LjAwMDAwMDAwMCArMDkwMAotKysrIGFudGh5LTc4MTEvbWt3b3JkZGljL01ha2VmaWxlLmFtCTIwMDYtMDYtMTggMTE6MjE6NTYuMzAwMDAwMDAwICswOTAwCi1AQCAtMTYsNyArMTYsOCBAQAotICB1ZGljdCBkaWN0LmFyZ3MuaW4KK0luZGV4OiBhbnRoeS05MTAwaC9ta3dvcmRkaWMvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhbnRoeS05MTAwaC5vcmlnL21rd29yZGRpYy9NYWtlZmlsZS5hbQorKysrIGFudGh5LTkxMDBoL21rd29yZGRpYy9NYWtlZmlsZS5hbQorQEAgLTI2LDcgKzI2LDggQEAgRElDX0ZJTEVTID0gQHRvcF9zcmNkaXJAL2FsdC1jYW5uYWRpYy9nYworIAkgICAgQHRvcF9zcmNkaXJAL21rd29yZGRpYy91ZGljdAogIAogICMgR2VuZXJhdGUgdGhlIGRpY3Rpb25hcnkKIC1ub2luc3RfUFJPR1JBTVMgPSBta3dvcmRkaWMKQEAgLTM2LDEwICs0MiwxMiBAQAogK2Jpbl9QUk9HUkFNUyA9IG1rd29yZGRpYwogIG1rd29yZGRpY19TT1VSQ0VTID0gbWtkaWMuYyB3cml0ZXdvcmRzLmMgbWt1ZGljLmMgY2FsY2ZyZXEuYyBta2RpYy5oCiAgbWt3b3JkZGljX0xEQUREID0gLi4vc3JjLXdvcmRkaWMvbGliYW50aHlkaWMubGEKLQotLS0tIGFudGh5LTkxMDBlLm9yaWcvY2FsY3RyYW5zL01ha2VmaWxlLmFtCTIwMDgtMDUtMDggMTU6MDQ6MTMuMDAwMDAwMDAwICswMjAwCi0rKysgYW50aHktOTEwMGUvY2FsY3RyYW5zL01ha2VmaWxlLmFtCTIwMDgtMDUtMDggMTU6MDQ6MjQuMDAwMDAwMDAwICswMjAwCi1AQCAtMyw3ICszLDcgQEAKKyAKK0luZGV4OiBhbnRoeS05MTAwaC9jYWxjdHJhbnMvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhbnRoeS05MTAwaC5vcmlnL2NhbGN0cmFucy9NYWtlZmlsZS5hbQorKysrIGFudGh5LTkxMDBoL2NhbGN0cmFucy9NYWtlZmlsZS5hbQorQEAgLTMsNyArMyw3IEBAIEVYVFJBX0RJU1QgPVwKICAgY29ycHVzLjMudHh0IGNvcnB1cy40LnR4dCBjb3JwdXMuNS50eHRcCiAgIGNvcnB1c19pbmZvIHdlYWtfd29yZHMKICAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYW50aHkvYW50aHkvbm90X2J1aWxkX2VsYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYW50aHkvYW50aHkvbm90X2J1aWxkX2VsYy5wYXRjaAppbmRleCBiZjc0OGYzLi4xYzVjNDk0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2FudGh5L2FudGh5L25vdF9idWlsZF9lbGMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hbnRoeS9hbnRoeS9ub3RfYnVpbGRfZWxjLnBhdGNoCkBAIC0xLDEyICsxLDEzIEBACiB1cHN0cmVhbTogbm90IGFwcGxpY2FibGUKIHNvdXJjZTogc3RvbGVuIGZyb20gZGViaWFuCiAKLWRpZmYgLU5hdXIgYW50aHktNzgxMS9zcmMtdXRpbC5vcmlnL01ha2VmaWxlLmFtIGFudGh5LTc4MTEvc3JjLXV0aWwvTWFrZWZpbGUuYW0KLS0tLSBhbnRoeS03ODExL3NyYy11dGlsLm9yaWcvTWFrZWZpbGUuYW0JMjAwNi0wNi0xOCAxMDo0Nzo1NS43OTAwMDAwMDAgKzA5MDAKLSsrKyBhbnRoeS03ODExL3NyYy11dGlsL01ha2VmaWxlLmFtCTIwMDYtMDYtMTggMTA6NDg6MjMuODYwMDAwMDAwICswOTAwCi1AQCAtNiw3ICs2LDggQEAKK0luZGV4OiBhbnRoeS05MTAwaC9zcmMtdXRpbC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFudGh5LTkxMDBoLm9yaWcvc3JjLXV0aWwvTWFrZWZpbGUuYW0KKysrKyBhbnRoeS05MTAwaC9zcmMtdXRpbC9NYWtlZmlsZS5hbQorQEAgLTgsNyArOCw4IEBAIEVMSVNQX0ZJTEVTID0gYW50aHkuZWwgYW50aHktZGljLmVsIGFudGgKICAgYW50aHktaXNlYXJjaC5lbCBhbnRoeS1hemlrLmVsIGFudGh5LWt5dXJpLmVsCi0gRVhUUkFfRElTVCA9ICQoRUxJU1BfRklMRVMpIHR5cGV0YWIgZGljLXRvb2wtdXNhZ2UudHh0IHJjc2l6ZS5yYgorIEVYVFJBX0RJU1QgPSAkKEVMSVNQX0ZJTEVTKSB0eXBldGFiIGRpYy10b29sLXVzYWdlLnR4dCBhbnRoeS5pCiAgYmluX1BST0dSQU1TID0gYW50aHktZGljLXRvb2wgYW50aHktYWdlbnQgYW50aHktbW9ycGhvbG9naWNhbC1hbmFseXplcgogLUVMQ0ZJTEVTID0gYW50aHkuZWxjIGFudGh5LWRpYy5lbGMgYW50aHktYXppay5lbGMgYW50aHktY29uZi5lbGMgYW50aHktaXNlYXJjaC5lbGMgYW50aHkta3l1cmkuZWxjIGxlaW0tbGlzdC5lbGMKICsjRUxDRklMRVMgPSBhbnRoeS5lbGMgYW50aHktZGljLmVsYyBhbnRoeS1hemlrLmVsYyBhbnRoeS1jb25mLmVsYyBhbnRoeS1pc2VhcmNoLmVsYyBhbnRoeS1reXVyaS5lbGMgbGVpbS1saXN0LmVsYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdWdlYXMvYXVnZWFzLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F1Z2Vhcy9hdWdlYXMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaAppbmRleCA5YTE5ODc2Li4wYmE3Yzc2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F1Z2Vhcy9hdWdlYXMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F1Z2Vhcy9hdWdlYXMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYjk1NjVkYzJmZTBjNGY3ZGFhZWM5MWI3ZTgzYmM3MzEzZGVlMmY0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMzJiMTUzMzJlMjEzMGE1NGIyNWY0ZmJmNmY1OGI0MDdiODUxZGQ4ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDEzIEFwciAyMDE1IDE3OjAyOjEzIC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIFVuc2V0IG5lZWRfY2hhcnNldF9hbGlhcyB3aGVuIGJ1aWxkaW5nIGZvciBtdXNsCkBAIC0xMSwxNCArMTEsMTUgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KLSBsaWIvZ251bGliLm1rIHwgMiArLQorIGdudWxpYi9saWIvTWFrZWZpbGUuYW0gfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLUluZGV4OiBhdWdlYXMtMS4yLjAvZ251bGliL2xpYi9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGF1Z2Vhcy0xLjIuMC5vcmlnL2dudWxpYi9saWIvTWFrZWZpbGUuYW0KLSsrKyBhdWdlYXMtMS4yLjAvZ251bGliL2xpYi9NYWtlZmlsZS5hbQorZGlmZiAtLWdpdCBhL2dudWxpYi9saWIvTWFrZWZpbGUuYW0gYi9nbnVsaWIvbGliL01ha2VmaWxlLmFtCitpbmRleCA5NjNiMjJkLi43NTc4OGQyIDEwMDY0NAorLS0tIGEvZ251bGliL2xpYi9NYWtlZmlsZS5hbQorKysrIGIvZ251bGliL2xpYi9NYWtlZmlsZS5hbQogQEAgLTQ2Myw3ICs0NjMsNyBAQCBpbnN0YWxsLWV4ZWMtbG9jYWxjaGFyc2V0OiBhbGwtbG9jYWwKICAJICBjYXNlICckKGhvc3Rfb3MpJyBpbiBcCiAgCSAgICBkYXJ3aW5bNTZdKikgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdWdlYXMvYXVnZWFzL2FkZC1taXNzaW5nLWFyZ3otY29uZGl0aW9uYWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F1Z2Vhcy9hdWdlYXMvYWRkLW1pc3NpbmctYXJnei1jb25kaXRpb25hbC5wYXRjaAppbmRleCBhYmJkYmFhLi4zNjhiYjQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F1Z2Vhcy9hdWdlYXMvYWRkLW1pc3NpbmctYXJnei1jb25kaXRpb25hbC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F1Z2Vhcy9hdWdlYXMvYWRkLW1pc3NpbmctYXJnei1jb25kaXRpb25hbC5wYXRjaApAQCAtMSwxNCArMSwyMSBAQAotQWRkIG1pc3NpbmcgR0xfR0VORVJBVEVfQVJHWl9IIGNvbmRpdGlvbmFsCitGcm9tIDlhNmU2Mzc0ZGE3ZDcwNTZkYjA5NTBmMGY3ZDZiOGI5MDUwMDk3NzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDb25zdGFudGluIE11c2NhIDxjb25zdGFudGlueC5tdXNjYUBpbnRlbC5jb20+CitEYXRlOiBGcmksIDE1IEp1bCAyMDE2IDEwOjA0OjQ4ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBtaXNzaW5nIEdMX0dFTkVSQVRFX0FSR1pfSCBjb25kaXRpb25hbAogCiAtIEdMX0dFTkVSQVRFX0FSR1pfSCBpcyB1c2VkIGluIGdudWxpYi9saWIvTWFrZWZpbGUuYW0KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBDb25zdGFudGluIE11c2NhIDxjb25zdGFudGlueC5tdXNjYUBpbnRlbC5jb20+CiAKLUluZGV4OiBhdWdlYXMtMS4wLjAvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXVnZWFzLTEuMC4wLm9yaWcvY29uZmlndXJlLmFjCi0rKysgYXVnZWFzLTEuMC4wL2NvbmZpZ3VyZS5hYworLS0tCisgY29uZmlndXJlLmFjIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNzJiNjk4NC4uZmI5NjUzZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCiBAQCAtNTUsNiArNTUsOCBAQCBBQ19BUkdfV0lUSChbZmFpbG1hbGxvY10sCiAgCiAgQU1fQ09ORElUSU9OQUwoW1dJVEhfRkFJTE1BTExPQ10sIFt0ZXN0IHgkd2l0aF9mYWlsbWFsbG9jICE9IHhub10pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F1Z2Vhcy9hdWdlYXMvc2VwYnVpbGRmaXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F1Z2Vhcy9hdWdlYXMvc2VwYnVpbGRmaXgucGF0Y2gKaW5kZXggYjgyYTNlZS4uMmIxODYxOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdWdlYXMvYXVnZWFzL3NlcGJ1aWxkZml4LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXVnZWFzL2F1Z2Vhcy9zZXBidWlsZGZpeC5wYXRjaApAQCAtMSwxNSArMSwyNCBAQAotRW5zdXJlIHRoYXQgYnVpbGRzIGluIHNlcGFyYXRlIGJ1aWxkZGlycyAoJHtCfSAhPSAke1N9KSBjb3JyZWN0bHkgaW5zdGFsbCB0aGUgCitGcm9tIDhhMjc3OTU3YTI1NzllNzE0OWMxODUwNjc1NDQxYjI4ODE5MjA3N2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogRnJpLCAxNSBKdWwgMjAxNiAxMDowNDo0OCArMDMwMAorU3ViamVjdDogW1BBVENIXSBhdWdlYXM6IGZpeCBzZXBhcmF0ZSBidWlsZGRpcnMKKworRW5zdXJlIHRoYXQgYnVpbGRzIGluIHNlcGFyYXRlIGJ1aWxkZGlycyAoJHtCfSAhPSAke1N9KSBjb3JyZWN0bHkgaW5zdGFsbCB0aGUKIGxlbnNlcyBmaWxlcy4KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFJQIDIwMTMvNC8xNwogCi1JbmRleDogYXVnZWFzLTEuMC4wL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXVnZWFzLTEuMC4wLm9yaWcvTWFrZWZpbGUuYW0JMjAxMi0xMS0wMiAxNToyMDoxMS4wMDAwMDAwMDAgKzAwMDAKLSsrKyBhdWdlYXMtMS4wLjAvTWFrZWZpbGUuYW0JMjAxMy0wNC0xNyAxMDozNjoyNC4wMzM0MDAxMjUgKzAwMDAKLUBAIC01LDggKzUsOCBAQAorLS0tCisgTWFrZWZpbGUuYW0gfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggODdkNTExYS4uNzcxMGIzYiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTUsOCArNSw4IEBAIEFDTE9DQUxfQU1GTEFHUyA9IC1JIGdudWxpYi9tNAogIGxlbnNkaXI9JChkYXRhZGlyKS9hdWdlYXMvbGVuc2VzL2Rpc3QKICBsZW5zdGVzdGRpcj0kKGRhdGFkaXIpL2F1Z2Vhcy9sZW5zZXMvZGlzdC90ZXN0cwogIApAQCAtMTgsNSArMjcsNSBAQAogK2Rpc3RfbGVuc19EQVRBPSQod2lsZGNhcmQgJCh0b3Bfc3JjZGlyKS9sZW5zZXMvKi5hdWcpCiArZGlzdF9sZW5zdGVzdF9EQVRBPSQod2lsZGNhcmQgJCh0b3Bfc3JjZGlyKWxlbnNlcy90ZXN0cy8qLmF1ZykKICAKLSBFWFRSQV9ESVNUPWF1Z2Vhcy5zcGVjIGJ1aWxkL2F1eC9tb3ZlLWlmLWNoYW5nZSBNYWtlZmlsZS5hbSBIQUNLSU5HCisgRVhUUkFfRElTVD1hdWdlYXMuc3BlYyBidWlsZC9hYy1hdXgvbW92ZS1pZi1jaGFuZ2UgTWFrZWZpbGUuYW0gSEFDS0lORy5tZAogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jYW5vbmljYWwtbXVsdGl0b3VjaC9nZWlzXzIuMi4xNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY2Fub25pY2FsLW11bHRpdG91Y2gvZ2Vpc18yLjIuMTcuYmIKaW5kZXggOTc2YWFmYi4uMzBkNDFhMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jYW5vbmljYWwtbXVsdGl0b3VjaC9nZWlzXzIuMi4xNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Nhbm9uaWNhbC1tdWx0aXRvdWNoL2dlaXNfMi4yLjE3LmJiCkBAIC0zMCw3ICszMCw2IEBACiAKIEZJTEVTXyR7UE59LWJpbiA9ICIke2JpbmRpcn0iCiBSREVQRU5EU18ke1BOfS1iaW4gPSAiIFwKLSAgICBweXRob24zLWFyZ3BhcnNlIFwKICAgICBweXRob24zLWNvbXByZXNzaW9uIFwKICAgICBweXRob24zLWNvcmUgXAogICAgIHB5dGhvbjMtY3J5cHQgXApAQCAtNDAsOCArMzksNiBAQAogICAgIHB5dGhvbjMtcGlja2xlIFwKICAgICBweXRob24zLXNoZWxsIFwKICAgICBweXRob24zLXN0cmluZ29sZCBcCi0gICAgcHl0aG9uMy1zdWJwcm9jZXNzIFwKLSAgICBweXRob24zLXRleHR1dGlscyBcCiAgICAgcHl0aG9uMy10aHJlYWRpbmcgXAogIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NlcmVzLXNvbHZlci9jZXJlcy1zb2x2ZXJfMS4xMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY2VyZXMtc29sdmVyL2NlcmVzLXNvbHZlcl8xLjE0LmJiCnNpbWlsYXJpdHkgaW5kZXggOTElCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY2VyZXMtc29sdmVyL2NlcmVzLXNvbHZlcl8xLjEzLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NlcmVzLXNvbHZlci9jZXJlcy1zb2x2ZXJfMS4xNC5iYgppbmRleCBlODgzYzcwLi4yOTkxN2M4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NlcmVzLXNvbHZlci9jZXJlcy1zb2x2ZXJfMS4xMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NlcmVzLXNvbHZlci9jZXJlcy1zb2x2ZXJfMS4xNC5iYgpAQCAtNiw3ICs2LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM1ZTAwZjBjNGM5NmEwODIwYTAzZTBiMzFlNjQxNmJlIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY2VyZXMtc29sdmVyL2NlcmVzLXNvbHZlci5naXQiCi1TUkNSRVYgPSAiMTkzMzNiMGY1NWM4NDYyMzgxMDM4ZTcwZDQyYWY0M2I1Mjk0MTEyOCIKK1NSQ1JFViA9ICJmYWNiMTk5ZjNlZGE5MDIzNjBmOWUxZDUyNzEzNzJiN2U1NGZlYmUxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdC0yLjEwLjIvZml4LWNtYWtlLWluc3RhbGwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdC0yLjEwLjIvZml4LWNtYWtlLWluc3RhbGwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZlYWZlZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3BwcmVzdC9jcHByZXN0LTIuMTAuMi9maXgtY21ha2UtaW5zdGFsbC5wYXRjaApAQCAtMCwwICsxLDE3IEBACitEZXNjcmlwdGlvbjogaW5zdGFsbCBjbWFrZSBmaWxlcyBpbnRvIC91c3IvbGliL2NtYWtlL2NwcHJlc3RzZGsKK0F1dGhvcjogR2lhbmZyYW5jbyBDb3N0YW1hZ25hIDxsb2N1dHVzb2Zib3JnQGRlYmlhbi5vcmc+CitVcHN0cmVhbS1TdGF0dXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvY3BwcmVzdHNkay9wdWxsLzczNworRm9yd2FyZGVkOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L2NwcHJlc3RzZGsvcHVsbC83MzcKK0xhc3QtVXBkYXRlOiAyMDE4LTA0LTE5CisKKy0tLSBjcHByZXN0LTIuMTAuMi5vcmlnL0NNYWtlTGlzdHMudHh0CisrKysgY3BwcmVzdC0yLjEwLjIvQ01ha2VMaXN0cy50eHQKK0BAIC0xOCw3ICsxOCw3IEBAIGVuYWJsZV90ZXN0aW5nKCkKKyBzZXQoV0VSUk9SIE9OIENBQ0hFIEJPT0wgIlRyZWF0IFdhcm5pbmdzIGFzIEVycm9ycy4iKQorIHNldChDUFBSRVNUX0VYQ0xVREVfV0VCU09DS0VUUyBPRkYgQ0FDSEUgQk9PTCAiRXhjbHVkZSB3ZWJzb2NrZXRzIGZ1bmN0aW9uYWxpdHkuIikKKyBzZXQoQ1BQUkVTVF9FWENMVURFX0NPTVBSRVNTSU9OIE9GRiBDQUNIRSBCT09MICJFeGNsdWRlIGNvbXByZXNzaW9uIGZ1bmN0aW9uYWxpdHkuIikKKy1zZXQoQ1BQUkVTVF9FWFBPUlRfRElSIGxpYi9jcHByZXN0c2RrIENBQ0hFIFNUUklORyAiRGlyZWN0b3J5IHRvIGluc3RhbGwgQ01ha2UgY29uZmlnIGZpbGVzLiIpCisrc2V0KENQUFJFU1RfRVhQT1JUX0RJUiBsaWIvY21ha2UvY3BwcmVzdHNkayBDQUNIRSBTVFJJTkcgIkRpcmVjdG9yeSB0byBpbnN0YWxsIENNYWtlIGNvbmZpZyBmaWxlcy4iKQorIHNldChDUFBSRVNUX0lOU1RBTExfSEVBREVSUyBPTiBDQUNIRSBCT09MICJJbnN0YWxsIGhlYWRlciBmaWxlcy4iKQorIHNldChDUFBSRVNUX0lOU1RBTEwgT04gQ0FDSEUgQk9PTCAiQWRkIGluc3RhbGwgY29tbWFuZHMuIikKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3BwcmVzdC9jcHByZXN0XzIuMTAuMi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3BwcmVzdC9jcHByZXN0XzIuMTAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmE2ZmM2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHByZXN0L2NwcHJlc3RfMi4xMC4yLmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiTWljcm9zb2Z0IHByb2plY3QgZm9yIGNsb3VkLWJhc2VkIGNsaWVudC1zZXJ2ZXIgY29tbXVuaWNhdGlvbiBpbiBuYXRpdmUgY29kZSB1c2luZyBhIG1vZGVybiBhc3luY2hyb25vdXMgQysrIEFQSSBkZXNpZ24uIgorU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L2NwcHJlc3RzZGsvIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1N9Ly4uL2xpY2Vuc2UudHh0O21kNT1hMmUxNWI5NTQ3NjkyMThmZjkxMjQ2OGVlY2Q2YTAyZiIKK0RFUEVORFMgPSAib3BlbnNzbCB3ZWJzb2NrZXRwcCB6bGliIGJvb3N0IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L2NwcHJlc3RzZGsuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD1tYXN0ZXIiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9maXgtY21ha2UtaW5zdGFsbC5wYXRjaCIKKworIyB0YWcgMi4xMC4yCitTUkNSRVY9ICJmZWE4NDhlMmE3NzU2M2NmMmE2ZjI4ZjhlYWIzOTZmZDZlNzg3ZmJmIgorCitTID0gIiR7V09SS0RJUn0vZ2l0L1JlbGVhc2UiCisKK2luaGVyaXQgY21ha2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZG9zMnVuaXgvZG9zMnVuaXhfNy4zLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggOTMlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZG9zMnVuaXgvZG9zMnVuaXhfNy4zLjQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZG9zMnVuaXgvZG9zMnVuaXhfNy40LjAuYmIKaW5kZXggYWJmN2QxYy4uOGQzYzU3OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kb3MydW5peC9kb3MydW5peF83LjMuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4wLmJiCkBAIC0xMCw4ICsxMCw4IEBACiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmNvZGUuc2YubmV0L3AvZG9zMnVuaXgvZG9zMnVuaXgiCiAKLSMgUmVsZWFzZSA3LjMuNAotU1JDUkVWID0gIjgzODFiYTRlMWM0Y2Q1Y2U5OGViZDljMjQ3MjZkNTFjYjIwM2NkZTAiCisjIFJlbGVhc2UgNy40LjAKK1NSQ1JFViA9ICIxMTgyNTMzYmRlM2MxZmU2NWJlMmVhZDQ2NWU4NzY3MWZhYTJjMDI3IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0L2RvczJ1bml4IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2V2ZW50bG9nL2V2ZW50bG9nXzAuMi4xMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXZlbnRsb2cvZXZlbnRsb2dfMC4yLjEzLmJiCmluZGV4IDU5YjAxYjYuLjEzZWI3OTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXZlbnRsb2cvZXZlbnRsb2dfMC4yLjEzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXZlbnRsb2cvZXZlbnRsb2dfMC4yLjEzLmJiCkBAIC0xMyw3ICsxMyw3IEBACiBMSUNFTlNFID0gIkJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWI4YmE4ZTc3YmNkYTlhNTNmYWMwZmUzOWZlOTU3NzY3IgogCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuYmFsYWJpdC5jb20vZG93bmxvYWRzL2ZpbGVzL3N5c2xvZy1uZy9vcGVuLXNvdXJjZS1lZGl0aW9uLzMuNC4yL3NvdXJjZS8ke0JQTn1fJHtQVn0udGFyLmd6IgorU1JDX1VSSSA9ICJodHRwczovL3d3dy5iYWxhYml0LmNvbS9kb3dubG9hZHMvc3lzbG9nLW5nL29wZW4tc291cmNlLWVkaXRpb24vMy40LjIvc291cmNlLyR7QlBOfV8ke1BWfS50YXIuZ3oiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZmdHcvZmZ0d18zLjMuNi5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmZ0dy9mZnR3XzMuMy43LmJiCnNpbWlsYXJpdHkgaW5kZXggODclCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmZ0dy9mZnR3XzMuMy42LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZmdHcvZmZ0d18zLjMuNy5iYgppbmRleCBlZDE0ZTE2Li5hYWU2ZWM5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZmdHcvZmZ0d18zLjMuNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZmdHcvZmZ0d18zLjMuNy5iYgpAQCAtNCwxMyArNCwxMSBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCiAKIFNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vd3d3LmZmdHcub3JnL2ZmdHctJHtQVn0tcGwxLnRhci5neiBcCisgICAgaHR0cDovL3d3dy5mZnR3Lm9yZy9mZnR3LSR7UFZ9LnRhci5neiBcCiAgICAgZmlsZTovLzAwMDEtTkVPTi1hdXRvZGV0ZWN0aW9uLXNlZ2ZhdWx0cy1hc3N1bWUtbmVvbi1wcmVzZW50LnBhdGNoIFwKICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2ODJhMGU3OGQ2OTY2Y2EzN2M3NDQ2ZDRhYjRjYzJhMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZWY0YWE4NDI3ZDk3ODU4MzliYzc2N2YzZWI2YTg0ZmNiNWU5YTM3YzMxZWQ3N2EwNGU3ZTA0NzUxOWExODNkIgotCi1TID0gIiR7V09SS0RJUn0vZmZ0dy0ke1BWfS1wbDEiCitTUkNfVVJJW21kNXN1bV0gPSAiMGQ1OTE1ZDdkMzliMzI1M2MxY2MwNTAzMGQ3OWFjNDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2I2MDliN2ZlYmE1MjMwZThmNmRkOGQyNDVkZGJlZmFjMzI0YzVhNmFlNDE4Njk0NzY3MGQ5YWMyY2QyNTU3MyIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCiAKQEAgLTc2LDYgKzc0LDcgQEAKIEZJTEVTX2ZmdHdmLXdpc2RvbSA9ICIke2JpbmRpcn0vZmZ0d2Ytd2lzZG9tIgogRklMRVNfZmZ0dy13aXNkb20tdG8tY29uZiA9ICIke2JpbmRpcn0vZmZ0dy13aXNkb20tdG8tY29uZiIKIAotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgorUkRFUEVORFNfJHtQTn0tZGV2ID0gImxpYmZmdHcgbGliZmZ0d2wgbGliZmZ0d2YiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbGl0ZS9mbGl0ZS1hbHNhLTEuMy9mbGl0ZS0xLjMtYWxzYV9zdXBwb3J0LTEuMi5kaWZmIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbGl0ZS9mbGl0ZS1hbHNhLTEuMy9mbGl0ZS0xLjMtYWxzYV9zdXBwb3J0LTEuMi5kaWZmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2U0YjdhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmxpdGUvZmxpdGUtYWxzYS0xLjMvZmxpdGUtMS4zLWFsc2Ffc3VwcG9ydC0xLjIuZGlmZgorKysgL2Rldi9udWxsCkBAIC0xLDY2MTUgKzAsMCBAQAotSW5kZXg6IGxhbmcvdXNlbmdsaXNoL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxpdGUtMS4zLXJlbGVhc2UvbGFuZy91c2VuZ2xpc2gvTWFrZWZpbGUJKC4uLi9mbGl0ZS0xLjMtb3JpZykJKHJldmlzaW9uIDcpCi0rKysgZmxpdGUtMS4zLXJlbGVhc2UvbGFuZy91c2VuZ2xpc2gvTWFrZWZpbGUJKC4uLi9yZWxlYXNlLTEuMikJKHJldmlzaW9uIDcpCi1AQCAtMzgsNiArMzgsNyBAQAotIERJUk5BTUU9bGFuZy91c2VuZ2xpc2gKLSBCVUlMRF9ESVJTID0gCi0gQUxMX0RJUlM9IAotK2luY2x1ZGUgJChUT1ApL2NvbmZpZy9jb25maWcKLSBIID0gdXNlbmdsaXNoLmggdXNfaW50X2FjY2VudF9jYXJ0LmggdXNfaW50X3RvbmVfY2FydC5oIHVzX2R1cnpfY2FydC5oIFwKLSAgICAgdXNfZmZlYXR1cmVzLmggdXNfcGhyYXNpbmdfY2FydC5oIHVzX3RleHQuaCB1c19mMC5oIHVzX251bXNfY2FydC5oCi0gU1JDUyA9IHVzX2ludF9hY2NlbnRfY2FydC5jIHVzX2ludF90b25lX2NhcnQuYyB1c19mMF9tb2RlbC5jIFwKLUBAIC00NSw3ICs0NiwxMSBAQAotICAgICAgICB1c19waG9uZXNldC5jIHVzX2ZmZWF0dXJlcy5jIHVzX3BocmFzaW5nX2NhcnQuYyBcCi0gICAgICAgIHVzX2dwb3MuYyB1c190ZXh0LmMgdXNfZXhwYW5kLmMgdXNfcG9zdGxleC5jIFwKLSAgICAgICAgdXNfbnVtc19jYXJ0LmMgdXNfYXN3ZC5jIHVzZW5nbGlzaC5jIAotLU9CSlMgPSAkKFNSQ1M6LmM9Lm8pCi0raWZkZWYgU0hGTEFHUwotK09CSlMgOj0gJChTUkNTOi5jPS5vcykKLStlbHNlCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm8pCi0rZW5kaWYKLSBTQ009Ci0gRklMRVMgPSBNYWtlZmlsZSAkKFNDTSkgJChTUkNTKSAkKEgpCi0gTElCTkFNRSA9IGZsaXRlX3VzZW5nbGlzaAotSW5kZXg6IGxhbmcvY211X3VzX2thbC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsaXRlLTEuMy1yZWxlYXNlL2xhbmcvY211X3VzX2thbC9NYWtlZmlsZQkoLi4uL2ZsaXRlLTEuMy1vcmlnKQkocmV2aXNpb24gNykKLSsrKyBmbGl0ZS0xLjMtcmVsZWFzZS9sYW5nL2NtdV91c19rYWwvTWFrZWZpbGUJKC4uLi9yZWxlYXNlLTEuMikJKHJldmlzaW9uIDcpCi1AQCAtNDMsNyArNDMsMTIgQEAKLSAgICAgICAgY211X3VzX2thbF9scGMuYyBcCi0gICAgICAgIGNtdV91c19rYWxfcmVzLmMgXAotICAgICAgICBjbXVfdXNfa2FsX3Jlc2lkeC5jCi0tT0JKUyA9ICQoU1JDUzouYz0ubykKLStpbmNsdWRlICQoVE9QKS9jb25maWcvY29uZmlnCi0raWZkZWYgU0hGTEFHUwotK09CSlMgOj0gJChTUkNTOi5jPS5vcykKLStlbHNlCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm8pCi0rZW5kaWYKLSBTQ009Ci0gRklMRVMgPSBNYWtlZmlsZSAkKFNDTSkgJChTUkNTKSAkKEgpCi0gTElCTkFNRSA9IGZsaXRlX2NtdV91c19rYWwKLUluZGV4OiBsYW5nL2NtdV91c19rYWwxNi9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsaXRlLTEuMy1yZWxlYXNlL2xhbmcvY211X3VzX2thbDE2L01ha2VmaWxlCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiA3KQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL2xhbmcvY211X3VzX2thbDE2L01ha2VmaWxlCSguLi4vcmVsZWFzZS0xLjIpCShyZXZpc2lvbiA3KQotQEAgLTQ0LDcgKzQ0LDEyIEBACi0gICAgICAgIGNtdV91c19rYWwxNl9scGMuYyBcCi0gICAgICAgIGNtdV91c19rYWwxNl9yZXMuYyBcCi0gICAgICAgIGNtdV91c19rYWwxNl9yZXNpZHguYwotLU9CSlMgPSAkKFNSQ1M6LmM9Lm8pCi0raW5jbHVkZSAkKFRPUCkvY29uZmlnL2NvbmZpZwotK2lmZGVmIFNIRkxBR1MKLStPQkpTIDo9ICQoU1JDUzouYz0ub3MpCi0rZWxzZQotK09CSlMgOj0gJChTUkNTOi5jPS5vKQotK2VuZGlmCi0gU0NNPQotIEZJTEVTID0gTWFrZWZpbGUgJChTQ00pICQoU1JDUykgJChIKQotIExJQk5BTUUgPSBmbGl0ZV9jbXVfdXNfa2FsMTYKLUluZGV4OiBsYW5nL2NtdV90aW1lX2F3Yi9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsaXRlLTEuMy1yZWxlYXNlL2xhbmcvY211X3RpbWVfYXdiL01ha2VmaWxlCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiA3KQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL2xhbmcvY211X3RpbWVfYXdiL01ha2VmaWxlCSguLi4vcmVsZWFzZS0xLjIpCShyZXZpc2lvbiA3KQotQEAgLTQ1LDcgKzQ1LDEyIEBACi0gCWNtdV90aW1lX2F3Yl9tY2VwLmMgXAotIAljbXVfdGltZV9hd2JfbHBjLmMgXAotIAljbXVfdGltZV9hd2JfbGV4X2VudHJ5LmMKLS1PQkpTID0gJChTUkNTOi5jPS5vKQotK2luY2x1ZGUgJChUT1ApL2NvbmZpZy9jb25maWcKLStpZmRlZiBTSEZMQUdTCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm9zKQotK2Vsc2UKLStPQkpTIDo9ICQoU1JDUzouYz0ubykKLStlbmRpZgotIFNDTT0KLSBGSUxFUyA9IE1ha2VmaWxlICQoU0NNKSAkKFNSQ1MpICQoSCkKLSBMSUJOQU1FID0gZmxpdGVfY211X3RpbWVfYXdiCi1JbmRleDogbGFuZy9jbXVsZXgvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9sYW5nL2NtdWxleC9NYWtlZmlsZQkoLi4uL2ZsaXRlLTEuMy1vcmlnKQkocmV2aXNpb24gNykKLSsrKyBmbGl0ZS0xLjMtcmVsZWFzZS9sYW5nL2NtdWxleC9NYWtlZmlsZQkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC0zOCwxMyArMzgsMjAgQEAKLSBESVJOQU1FPWxhbmcvY211bGV4Ci0gQlVJTERfRElSUyA9IAotIEFMTF9ESVJTPSAKLSsKLSBIID0gY211X2x0c19tb2RlbC5oIGNtdWxleC5oCi0gU1JDUyA9IGNtdV9sdHNfcnVsZXMuYyBjbXVfbHRzX21vZGVsLmMgXAotICAgICAgICBjbXVfbGV4LmMgY211X2xleF9lbnRyaWVzLmMgY211X2xleF9kYXRhLmMKLSBMRVhfREFUQV9JTkNMVURFUyA9IGNtdV9sZXhfZGF0YV9yYXcuYyBjbXVfbGV4X251bV9ieXRlcy5jIFwKLSAgICAgIGNtdV9sZXhfcGhvbmVzX2h1ZmZfdGFibGUuYyBjbXVfbGV4X2VudHJpZXNfaHVmZl90YWJsZS5jCi0gCi0tT0JKUyA9ICQoU1JDUzouYz0ubykKLStpbmNsdWRlICQoVE9QKS9jb25maWcvY29uZmlnCi0raWZkZWYgU0hGTEFHUwotK09CSlMgOj0gJChTUkNTOi5jPS5vcykKLStlbHNlCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm8pCi0rZW5kaWYKLSsKLSBTQ1JJUFRTPW1ha2VfY211bGV4ICAKLSAKLSBTQ009Ci1JbmRleDogY29uZmlndXJlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxpdGUtMS4zLXJlbGVhc2UvY29uZmlndXJlCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiA3KQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL2NvbmZpZ3VyZQkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC0xLDMyNCArMSwzOCBAQAotICMhIC9iaW4vc2gKLSsKLSAjIEd1ZXNzIHZhbHVlcyBmb3Igc3lzdGVtLWRlcGVuZGVudCB2YXJpYWJsZXMgYW5kIGNyZWF0ZSBNYWtlZmlsZXMuCi0tIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNTcuCi0rIyBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSB1c2luZyBhdXRvY29uZiB2ZXJzaW9uIDIuMTMgCi0rIyBDb3B5cmlnaHQgKEMpIDE5OTIsIDkzLCA5NCwgOTUsIDk2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotICMKLS0jIENvcHlyaWdodCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyCi0tIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAjIFRoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgTTRzaCBJbml0aWFsaXphdGlvbi4gICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0gCi0tIyBCZSBCb3VybmUgY29tcGF0aWJsZQotLWlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgotLSAgZW11bGF0ZSBzaAotLSAgTlVMTENNRD06Ci0tICAjIFpzaCAzLnggYW5kIDQueCBwZXJmb3JtcyB3b3JkIHNwbGl0dGluZyBvbiAkezErIiRAIn0sIHdoaWNoCi0tICAjIGlzIGNvbnRyYXJ5IHRvIG91ciB1c2FnZS4gIERpc2FibGUgdGhpcyBmZWF0dXJlLgotLSAgYWxpYXMgLWcgJyR7MSsiJEAifSc9JyIkQCInCi0tZWxpZiB0ZXN0IC1uICIke0JBU0hfVkVSU0lPTitzZXR9IiAmJiAoc2V0IC1vIHBvc2l4KSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLS0gIHNldCAtbyBwb3NpeAotLWZpCi0tCi0tIyBTdXBwb3J0IHVuc2V0IHdoZW4gcG9zc2libGUuCi0taWYgKEZPTz1GT087IHVuc2V0IEZPTykgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0tICBhc191bnNldD11bnNldAotLWVsc2UKLS0gIGFzX3Vuc2V0PWZhbHNlCi0tZmkKLS0KLS0KLS0jIFdvcmsgYXJvdW5kIGJ1Z3MgaW4gcHJlLTMuMCBVV0lOIGtzaC4KLS0kYXNfdW5zZXQgRU5WIE1BSUwgTUFJTFBBVEgKLS1QUzE9JyQgJwotLVBTMj0nPiAnCi0tUFM0PScrICcKLS0KLS0jIE5MUyBudWlzYW5jZXMuCi0tZm9yIGFzX3ZhciBpbiBcCi0tICBMQU5HIExBTkdVQUdFIExDX0FERFJFU1MgTENfQUxMIExDX0NPTExBVEUgTENfQ1RZUEUgTENfSURFTlRJRklDQVRJT04gXAotLSAgTENfTUVBU1VSRU1FTlQgTENfTUVTU0FHRVMgTENfTU9ORVRBUlkgTENfTkFNRSBMQ19OVU1FUklDIExDX1BBUEVSIFwKLS0gIExDX1RFTEVQSE9ORSBMQ19USU1FCi0tZG8KLS0gIGlmIChzZXQgK3g7IHRlc3QgLW4gImAoZXZhbCAkYXNfdmFyPUM7IGV4cG9ydCAkYXNfdmFyKSAyPiYxYCIpOyB0aGVuCi0tICAgIGV2YWwgJGFzX3Zhcj1DOyBleHBvcnQgJGFzX3ZhcgotLSAgZWxzZQotLSAgICAkYXNfdW5zZXQgJGFzX3ZhcgotLSAgZmkKLS1kb25lCi0tCi0tIyBSZXF1aXJlZCB0byB1c2UgYmFzZW5hbWUuCi0taWYgZXhwciBhIDogJ1woYVwpJyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLS0gIGFzX2V4cHI9ZXhwcgotLWVsc2UKLS0gIGFzX2V4cHI9ZmFsc2UKLS1maQotLQotLWlmIChiYXNlbmFtZSAvKSA+L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAiWGBiYXNlbmFtZSAvIDI+JjFgIiA9ICJYLyI7IHRoZW4KLS0gIGFzX2Jhc2VuYW1lPWJhc2VuYW1lCi0tZWxzZQotLSAgYXNfYmFzZW5hbWU9ZmFsc2UKLS1maQotLQotLQotLSMgTmFtZSBvZiB0aGUgZXhlY3V0YWJsZS4KLS1hc19tZT1gJGFzX2Jhc2VuYW1lICIkMCIgfHwKLS0kYXNfZXhwciBYLyIkMCIgOiAnLiovXChbXi9dW14vXSpcKS8qJCcgXHwgXAotLQkgWCIkMCIgOiAnWFwoLy9cKSQnIFx8IFwKLS0JIFgiJDAiIDogJ1hcKC9cKSQnIFx8IFwKLS0JIC4gICAgIDogJ1woLlwpJyAyPi9kZXYvbnVsbCB8fAotLWVjaG8gWC8iJDAiIHwKLS0gICAgc2VkICcvXi4qXC9cKFteL11bXi9dKlwpXC8qJC97IHMvL1wxLzsgcTsgfQotLSAgCSAgL15YXC9cKFwvXC9cKSQveyBzLy9cMS87IHE7IH0KLS0gIAkgIC9eWFwvXChcL1wpLioveyBzLy9cMS87IHE7IH0KLS0gIAkgIHMvLiovLi87IHEnYAotLQotLQotLSMgUEFUSCBuZWVkcyBDUiwgYW5kIExJTkVOTyBuZWVkcyBDUiBhbmQgUEFUSC4KLS0jIEF2b2lkIGRlcGVuZGluZyB1cG9uIENoYXJhY3RlciBSYW5nZXMuCi0tYXNfY3JfbGV0dGVycz0nYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonCi0tYXNfY3JfTEVUVEVSUz0nQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonCi0tYXNfY3JfTGV0dGVycz0kYXNfY3JfbGV0dGVycyRhc19jcl9MRVRURVJTCi0tYXNfY3JfZGlnaXRzPScwMTIzNDU2Nzg5JwotLWFzX2NyX2FsbnVtPSRhc19jcl9MZXR0ZXJzJGFzX2NyX2RpZ2l0cwotLQotLSMgVGhlIHVzZXIgaXMgYWx3YXlzIHJpZ2h0LgotLWlmIHRlc3QgIiR7UEFUSF9TRVBBUkFUT1Irc2V0fSIgIT0gc2V0OyB0aGVuCi0tICBlY2hvICIjISAvYmluL3NoIiA+Y29uZiQkLnNoCi0tICBlY2hvICAiZXhpdCAwIiAgID4+Y29uZiQkLnNoCi0tICBjaG1vZCAreCBjb25mJCQuc2gKLS0gIGlmIChQQVRIPSIvbm9uZXhpc3RlbnQ7LiI7IGNvbmYkJC5zaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0tICAgIFBBVEhfU0VQQVJBVE9SPSc7JwotLSAgZWxzZQotLSAgICBQQVRIX1NFUEFSQVRPUj06Ci0tICBmaQotLSAgcm0gLWYgY29uZiQkLnNoCi0tZmkKLS0KLS0KLS0gIGFzX2xpbmVub18xPSRMSU5FTk8KLS0gIGFzX2xpbmVub18yPSRMSU5FTk8KLS0gIGFzX2xpbmVub18zPWAoZXhwciAkYXNfbGluZW5vXzEgKyAxKSAyPi9kZXYvbnVsbGAKLS0gIHRlc3QgIngkYXNfbGluZW5vXzEiICE9ICJ4JGFzX2xpbmVub18yIiAmJgotLSAgdGVzdCAieCRhc19saW5lbm9fMyIgID0gIngkYXNfbGluZW5vXzIiICB8fCB7Ci0tICAjIEZpbmQgd2hvIHdlIGFyZS4gIExvb2sgaW4gdGhlIHBhdGggaWYgd2UgY29udGFpbiBubyBwYXRoIGF0IGFsbAotLSAgIyByZWxhdGl2ZSBvciBub3QuCi0tICBjYXNlICQwIGluCi0tICAgICpbXFwvXSogKSBhc19teXNlbGY9JDAgOzsKLS0gICAgKikgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotLWZvciBhc19kaXIgaW4gJFBBVEgKLS1kbwotLSAgSUZTPSRhc19zYXZlX0lGUwotLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLS0gIHRlc3QgLXIgIiRhc19kaXIvJDAiICYmIGFzX215c2VsZj0kYXNfZGlyLyQwICYmIGJyZWFrCi0tZG9uZQotLQotLSAgICAgICA7OwotLSAgZXNhYwotLSAgIyBXZSBkaWQgbm90IGZpbmQgb3Vyc2VsdmVzLCBtb3N0IHByb2JhYmx5IHdlIHdlcmUgcnVuIGFzIGBzaCBDT01NQU5EJwotLSAgIyBpbiB3aGljaCBjYXNlIHdlIGFyZSBub3QgdG8gYmUgZm91bmQgaW4gdGhlIHBhdGguCi0tICBpZiB0ZXN0ICJ4JGFzX215c2VsZiIgPSB4OyB0aGVuCi0tICAgIGFzX215c2VsZj0kMAotLSAgZmkKLS0gIGlmIHRlc3QgISAtZiAiJGFzX215c2VsZiI7IHRoZW4KLS0gICAgeyBlY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZmluZCBteXNlbGY7IHJlcnVuIHdpdGggYW4gYWJzb2x1dGUgcGF0aCIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tICBmaQotLSAgY2FzZSAkQ09ORklHX1NIRUxMIGluCi0tICAnJykKLS0gICAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotLWZvciBhc19kaXIgaW4gL2JpbiRQQVRIX1NFUEFSQVRPUi91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgKLS1kbwotLSAgSUZTPSRhc19zYXZlX0lGUwotLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLS0gIGZvciBhc19iYXNlIGluIHNoIGJhc2gga3NoIHNoNTsgZG8KLS0JIGNhc2UgJGFzX2RpciBpbgotLQkgLyopCi0tCSAgIGlmICgiJGFzX2Rpci8kYXNfYmFzZSIgLWMgJwotLSAgYXNfbGluZW5vXzE9JExJTkVOTwotLSAgYXNfbGluZW5vXzI9JExJTkVOTwotLSAgYXNfbGluZW5vXzM9YChleHByICRhc19saW5lbm9fMSArIDEpIDI+L2Rldi9udWxsYAotLSAgdGVzdCAieCRhc19saW5lbm9fMSIgIT0gIngkYXNfbGluZW5vXzIiICYmCi0tICB0ZXN0ICJ4JGFzX2xpbmVub18zIiAgPSAieCRhc19saW5lbm9fMiIgJykgMj4vZGV2L251bGw7IHRoZW4KLS0JICAgICAkYXNfdW5zZXQgQkFTSF9FTlYgfHwgdGVzdCAiJHtCQVNIX0VOVitzZXR9IiAhPSBzZXQgfHwgeyBCQVNIX0VOVj07IGV4cG9ydCBCQVNIX0VOVjsgfQotLQkgICAgICRhc191bnNldCBFTlYgfHwgdGVzdCAiJHtFTlYrc2V0fSIgIT0gc2V0IHx8IHsgRU5WPTsgZXhwb3J0IEVOVjsgfQotLQkgICAgIENPTkZJR19TSEVMTD0kYXNfZGlyLyRhc19iYXNlCi0tCSAgICAgZXhwb3J0IENPTkZJR19TSEVMTAotLQkgICAgIGV4ZWMgIiRDT05GSUdfU0hFTEwiICIkMCIgJHsxKyIkQCJ9Ci0tCSAgIGZpOzsKLS0JIGVzYWMKLS0gICAgICAgZG9uZQotLWRvbmUKLS07OwotLSAgZXNhYwotLQotLSAgIyBDcmVhdGUgJGFzX21lLmxpbmVubyBhcyBhIGNvcHkgb2YgJGFzX215c2VsZiwgYnV0IHdpdGggJExJTkVOTwotLSAgIyB1bmlmb3JtbHkgcmVwbGFjZWQgYnkgdGhlIGxpbmUgbnVtYmVyLiAgVGhlIGZpcnN0ICdzZWQnIGluc2VydHMgYQotLSAgIyBsaW5lLW51bWJlciBsaW5lIGJlZm9yZSBlYWNoIGxpbmU7IHRoZSBzZWNvbmQgJ3NlZCcgZG9lcyB0aGUgcmVhbAotLSAgIyB3b3JrLiAgVGhlIHNlY29uZCBzY3JpcHQgdXNlcyAnTicgdG8gcGFpciBlYWNoIGxpbmUtbnVtYmVyIGxpbmUKLS0gICMgd2l0aCB0aGUgbnVtYmVyZWQgbGluZSwgYW5kIGFwcGVuZHMgdHJhaWxpbmcgJy0nIGR1cmluZwotLSAgIyBzdWJzdGl0dXRpb24gc28gdGhhdCAkTElORU5PIGlzIG5vdCBhIHNwZWNpYWwgY2FzZSBhdCBsaW5lIGVuZC4KLS0gICMgKFJhamEgUiBIYXJpbmF0aCBzdWdnZXN0ZWQgc2VkICc9JywgYW5kIFBhdWwgRWdnZXJ0IHdyb3RlIHRoZQotLSAgIyBzZWNvbmQgJ3NlZCcgc2NyaXB0LiAgQmxhbWUgTGVlIEUuIE1jTWFob24gZm9yIHNlZCdzIHN5bnRheC4gIDotKQotLSAgc2VkICc9JyA8JGFzX215c2VsZiB8Ci0tICAgIHNlZCAnCi0tICAgICAgTgotLSAgICAgIHMsJCwtLAotLSAgICAgIDogbG9vcAotLSAgICAgIHMsXlwoWyckYXNfY3JfZGlnaXRzJ10qXClcKC4qXClbJF1MSU5FTk9cKFteJyRhc19jcl9hbG51bSdfXVwpLFwxXDJcMVwzLAotLSAgICAgIHQgbG9vcAotLSAgICAgIHMsLSQsLAotLSAgICAgIHMsXlsnJGFzX2NyX2RpZ2l0cyddKlxuLCwKLS0gICAgJyA+JGFzX21lLmxpbmVubyAmJgotLSAgY2htb2QgK3ggJGFzX21lLmxpbmVubyB8fAotLSAgICB7IGVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBjcmVhdGUgJGFzX21lLmxpbmVubzsgcmVydW4gd2l0aCBhIFBPU0lYIHNoZWxsIiA+JjIKLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLS0KLS0gICMgRG9uJ3QgdHJ5IHRvIGV4ZWMgYXMgaXQgY2hhbmdlcyAkWzBdLCBjYXVzaW5nIGFsbCBzb3J0IG9mIHByb2JsZW1zCi0tICAjICh0aGUgZGlybmFtZSBvZiAkWzBdIGlzIG5vdCB0aGUgcGxhY2Ugd2hlcmUgd2UgbWlnaHQgZmluZCB0aGUKLS0gICMgb3JpZ2luYWwgYW5kIHNvIG9uLiAgQXV0b2NvbmYgaXMgZXNwZWNpYWxseSBzZW5zaWJsZSB0byB0aGlzKS4KLS0gIC4gLi8kYXNfbWUubGluZW5vCi0tICAjIEV4aXQgc3RhdHVzIGlzIHRoYXQgb2YgdGhlIGxhc3QgY29tbWFuZC4KLS0gIGV4aXQKLS19Ci0tCi0tCi0tY2FzZSBgZWNobyAidGVzdGluZ1xjIjsgZWNobyAxLDIsM2AsYGVjaG8gLW4gdGVzdGluZzsgZWNobyAxLDIsM2AgaW4KLS0gICpjKiwtbiopIEVDSE9fTj0gRUNIT19DPScKLS0nIEVDSE9fVD0nCScgOzsKLS0gICpjKiwqICApIEVDSE9fTj0tbiBFQ0hPX0M9IEVDSE9fVD0gOzsKLS0gICopICAgICAgIEVDSE9fTj0gRUNIT19DPSdcYycgRUNIT19UPSA7OwotLWVzYWMKLS0KLS1pZiBleHByIGEgOiAnXChhXCknID4vZGV2L251bGwgMj4mMTsgdGhlbgotLSAgYXNfZXhwcj1leHByCi0tZWxzZQotLSAgYXNfZXhwcj1mYWxzZQotLWZpCi0tCi0tcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmZpbGUKLS1lY2hvID5jb25mJCQuZmlsZQotLWlmIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVsbDsgdGhlbgotLSAgIyBXZSBjb3VsZCBqdXN0IGNoZWNrIGZvciBESkdQUDsgYnV0IHRoaXMgdGVzdCBhKSB3b3JrcyBiKSBpcyBtb3JlIGdlbmVyaWMKLS0gICMgYW5kIGMpIHdpbGwgcmVtYWluIHZhbGlkIG9uY2UgREpHUFAgc3VwcG9ydHMgc3ltbGlua3MgKERKR1BQIDIuMDQpLgotLSAgaWYgdGVzdCAtZiBjb25mJCQuZXhlOyB0aGVuCi0tICAgICMgRG9uJ3QgdXNlIGxuIGF0IGFsbDsgd2UgZG9uJ3QgaGF2ZSBhbnkgbGlua3MKLS0gICAgYXNfbG5fcz0nY3AgLXAnCi0tICBlbHNlCi0tICAgIGFzX2xuX3M9J2xuIC1zJwotLSAgZmkKLS1lbGlmIGxuIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVsbDsgdGhlbgotLSAgYXNfbG5fcz1sbgotLWVsc2UKLS0gIGFzX2xuX3M9J2NwIC1wJwotLWZpCi0tcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmZpbGUKLS0KLS1pZiBta2RpciAtcCAuIDI+L2Rldi9udWxsOyB0aGVuCi0tICBhc19ta2Rpcl9wPToKLS1lbHNlCi0tICBhc19ta2Rpcl9wPWZhbHNlCi0tZmkKLS0KLS1hc19leGVjdXRhYmxlX3A9InRlc3QgLWYiCi0tCi0tIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIENQUCBuYW1lLgotLWFzX3RyX2NwcD0ic2VkIHklKiRhc19jcl9sZXR0ZXJzJVAkYXNfY3JfTEVUVEVSUyU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyIKLS0KLS0jIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgdmFyaWFibGUgbmFtZS4KLS1hc190cl9zaD0ic2VkIHklKislcHAlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWciCi0tCi0tCi0tIyBJRlMKLS0jIFdlIG5lZWQgc3BhY2UsIHRhYiBhbmQgbmV3IGxpbmUsIGluIHByZWNpc2VseSB0aGF0IG9yZGVyLgotLWFzX25sPScKLS0nCi0tSUZTPSIgCSRhc19ubCIKLS0KLS0jIENEUEFUSC4KLS0kYXNfdW5zZXQgQ0RQQVRICi0tCi0tCi0tIyBOYW1lIG9mIHRoZSBob3N0LgotLSMgaG9zdG5hbWUgb24gc29tZSBzeXN0ZW1zIChTVlIzLjIsIExpbnV4KSByZXR1cm5zIGEgYm9ndXMgZXhpdCBzdGF0dXMsCi0tIyBzbyB1bmFtZSBnZXRzIHJ1biB0b28uCi0tYWNfaG9zdG5hbWU9YChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgCi0tCi0tZXhlYyA2PiYxCi0tCi0tIwotLSMgSW5pdGlhbGl6YXRpb25zLgotLSMKLSsjIERlZmF1bHRzOgotK2FjX2hlbHA9Ci0gYWNfZGVmYXVsdF9wcmVmaXg9L3Vzci9sb2NhbAotLWFjX2NvbmZpZ19saWJvYmpfZGlyPS4KLS1jcm9zc19jb21waWxpbmc9bm8KLS1zdWJkaXJzPQotLU1GTEFHUz0KLS1NQUtFRkxBR1M9Ci0tU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0KLSsjIEFueSBhZGRpdGlvbnMgZnJvbSBjb25maWd1cmUuaW46Ci0rYWNfaGVscD0iJGFjX2hlbHAKLSsgIC0tZGlzYWJsZS1zaGFyZWQgICAgIHdpdGhvdXQgc2hhcmVkIGxpYnJhcnkgc3VwcG9ydCIKLSthY19oZWxwPSIkYWNfaGVscAotKyAgLS1kaXNhYmxlLXNvY2tldHMgICAgIHdpdGhvdXQgc29ja2V0IHN1cHBvcnQiCi0rYWNfaGVscD0iJGFjX2hlbHAKLSsgIC0td2l0aC1hdWRpbyAgICAgICAgICB3aXRoIHNwZWNpZmljIGF1ZGlvIHN1cHBvcnQgKG5vbmUgbGludXggZnJlZWJzZCBldGMpICIKLSthY19oZWxwPSIkYWNfaGVscAotKyAgLS13aXRoLWxhbmcgICAgICAgICAgIHdpdGggbGFuZ3VhZ2UgIgotK2FjX2hlbHA9IiRhY19oZWxwCi0rICAtLXdpdGgtdm94ICAgICAgICAgICAgd2l0aCB2b3ggIgotK2FjX2hlbHA9IiRhY19oZWxwCi0rICAtLXdpdGgtbGV4ICAgICAgICAgICAgd2l0aCBsZXhpY29uICIKLSAKLS0jIE1heGltdW0gbnVtYmVyIG9mIGxpbmVzIHRvIHB1dCBpbiBhIHNoZWxsIGhlcmUgZG9jdW1lbnQuCi0tIyBUaGlzIHZhcmlhYmxlIHNlZW1zIG9ic29sZXRlLiAgSXQgc2hvdWxkIHByb2JhYmx5IGJlIHJlbW92ZWQsIGFuZAotLSMgb25seSBhY19tYXhfc2VkX2xpbmVzIHNob3VsZCBiZSB1c2VkLgotLTogJHthY19tYXhfaGVyZV9saW5lcz0zOH0KLS0KLS0jIElkZW50aXR5IG9mIHRoaXMgcGFja2FnZS4KLS1QQUNLQUdFX05BTUU9Ci0tUEFDS0FHRV9UQVJOQU1FPQotLVBBQ0tBR0VfVkVSU0lPTj0KLS1QQUNLQUdFX1NUUklORz0KLS1QQUNLQUdFX0JVR1JFUE9SVD0KLS0KLS1hY191bmlxdWVfZmlsZT0iaW5jbHVkZS9mbGl0ZS5oIgotLSMgRmFjdG9yaW5nIGRlZmF1bHQgaGVhZGVycyBmb3IgbW9zdCB0ZXN0cy4KLS1hY19pbmNsdWRlc19kZWZhdWx0PSJcCi0tI2luY2x1ZGUgPHN0ZGlvLmg+Ci0tI2lmIEhBVkVfU1lTX1RZUEVTX0gKLS0jIGluY2x1ZGUgPHN5cy90eXBlcy5oPgotLSNlbmRpZgotLSNpZiBIQVZFX1NZU19TVEFUX0gKLS0jIGluY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0tI2VuZGlmCi0tI2lmIFNURENfSEVBREVSUwotLSMgaW5jbHVkZSA8c3RkbGliLmg+Ci0tIyBpbmNsdWRlIDxzdGRkZWYuaD4KLS0jZWxzZQotLSMgaWYgSEFWRV9TVERMSUJfSAotLSMgIGluY2x1ZGUgPHN0ZGxpYi5oPgotLSMgZW5kaWYKLS0jZW5kaWYKLS0jaWYgSEFWRV9TVFJJTkdfSAotLSMgaWYgIVNURENfSEVBREVSUyAmJiBIQVZFX01FTU9SWV9ICi0tIyAgaW5jbHVkZSA8bWVtb3J5Lmg+Ci0tIyBlbmRpZgotLSMgaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2VuZGlmCi0tI2lmIEhBVkVfU1RSSU5HU19ICi0tIyBpbmNsdWRlIDxzdHJpbmdzLmg+Ci0tI2VuZGlmCi0tI2lmIEhBVkVfSU5UVFlQRVNfSAotLSMgaW5jbHVkZSA8aW50dHlwZXMuaD4KLS0jZWxzZQotLSMgaWYgSEFWRV9TVERJTlRfSAotLSMgIGluY2x1ZGUgPHN0ZGludC5oPgotLSMgZW5kaWYKLS0jZW5kaWYKLS0jaWYgSEFWRV9VTklTVERfSAotLSMgaW5jbHVkZSA8dW5pc3RkLmg+Ci0tI2VuZGlmIgotLQotLWFjX3N1YnN0X3ZhcnM9J1NIRUxMIFBBVEhfU0VQQVJBVE9SIFBBQ0tBR0VfTkFNRSBQQUNLQUdFX1RBUk5BTUUgUEFDS0FHRV9WRVJTSU9OIFBBQ0tBR0VfU1RSSU5HIFBBQ0tBR0VfQlVHUkVQT1JUIGV4ZWNfcHJlZml4IHByZWZpeCBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lIGJpbmRpciBzYmluZGlyIGxpYmV4ZWNkaXIgZGF0YWRpciBzeXNjb25mZGlyIHNoYXJlZHN0YXRlZGlyIGxvY2Fsc3RhdGVkaXIgbGliZGlyIGluY2x1ZGVkaXIgb2xkaW5jbHVkZWRpciBpbmZvZGlyIG1hbmRpciBidWlsZF9hbGlhcyBob3N0X2FsaWFzIHRhcmdldF9hbGlhcyBERUZTIEVDSE9fQyBFQ0hPX04gRUNIT19UIExJQlMgYnVpbGQgYnVpbGRfY3B1IGJ1aWxkX3ZlbmRvciBidWlsZF9vcyBob3N0IGhvc3RfY3B1IGhvc3RfdmVuZG9yIGhvc3Rfb3MgdGFyZ2V0IHRhcmdldF9jcHUgdGFyZ2V0X3ZlbmRvciB0YXJnZXRfb3MgQ0MgQ0ZMQUdTIExERkxBR1MgQ1BQRkxBR1MgYWNfY3RfQ0MgRVhFRVhUIE9CSkVYVCBSQU5MSUIgYWNfY3RfUkFOTElCIElOU1RBTExfUFJPR1JBTSBJTlNUQUxMX1NDUklQVCBJTlNUQUxMX0RBVEEgQVIgYWNfY3RfQVIgVEFSR0VUX09TIFRBUkdFVF9DUFUgTTY4S0NDIExFWERFRlMgVk9YREVGUyBIT1NUX09TIEhPU1RfQ1BVIE9USEVSTElCUyBTSEZMQUdTIE1NQVBUWVBFIFNURElPVFlQRSBDUFAgRUdSRVAgQVVESU9EUklWRVIgQVVESU9ERUZTIEFVRElPTElCUyBGTF9MQU5HIEZMX1ZPWCBGTF9MRVggTElCT0JKUyBMVExJQk9CSlMnCi0tYWNfc3Vic3RfZmlsZXM9JycKLS0KLSAjIEluaXRpYWxpemUgc29tZSB2YXJpYWJsZXMgc2V0IGJ5IG9wdGlvbnMuCi0tYWNfaW5pdF9oZWxwPQotLWFjX2luaXRfdmVyc2lvbj1mYWxzZQotICMgVGhlIHZhcmlhYmxlcyBoYXZlIHRoZSBzYW1lIG5hbWVzIGFzIHRoZSBvcHRpb25zLCB3aXRoCi0gIyBkYXNoZXMgY2hhbmdlZCB0byB1bmRlcmxpbmVzLgotLWNhY2hlX2ZpbGU9L2Rldi9udWxsCi0rYnVpbGQ9Tk9ORQotK2NhY2hlX2ZpbGU9Li9jb25maWcuY2FjaGUKLSBleGVjX3ByZWZpeD1OT05FCi0raG9zdD1OT05FCi0gbm9fY3JlYXRlPQotK25vbm9wdD1OT05FCi0gbm9fcmVjdXJzaW9uPQotIHByZWZpeD1OT05FCi0gcHJvZ3JhbV9wcmVmaXg9Tk9ORQotQEAgLTMyNywxNSArNDEsMTAgQEAKLSBzaWxlbnQ9Ci0gc2l0ZT0KLSBzcmNkaXI9Ci0rdGFyZ2V0PU5PTkUKLSB2ZXJib3NlPQotIHhfaW5jbHVkZXM9Tk9ORQotIHhfbGlicmFyaWVzPU5PTkUKLS0KLS0jIEluc3RhbGxhdGlvbiBkaXJlY3Rvcnkgb3B0aW9ucy4KLS0jIFRoZXNlIGFyZSBsZWZ0IHVuZXhwYW5kZWQgc28gdXNlcnMgY2FuICJtYWtlIGluc3RhbGwgZXhlY19wcmVmaXg9L2ZvbyIKLS0jIGFuZCBhbGwgdGhlIHZhcmlhYmxlcyB0aGF0IGFyZSBzdXBwb3NlZCB0byBiZSBiYXNlZCBvbiBleGVjX3ByZWZpeAotLSMgYnkgZGVmYXVsdCB3aWxsIGFjdHVhbGx5IGNoYW5nZS4KLS0jIFVzZSBicmFjZXMgaW5zdGVhZCBvZiBwYXJlbnMgYmVjYXVzZSBzaCwgcGVybCwgZXRjLiBhbHNvIGFjY2VwdCB0aGVtLgotIGJpbmRpcj0nJHtleGVjX3ByZWZpeH0vYmluJwotIHNiaW5kaXI9JyR7ZXhlY19wcmVmaXh9L3NiaW4nCi0gbGliZXhlY2Rpcj0nJHtleGVjX3ByZWZpeH0vbGliZXhlYycKLUBAIC0zNDksOSArNTgsMTcgQEAKLSBpbmZvZGlyPScke3ByZWZpeH0vaW5mbycKLSBtYW5kaXI9JyR7cHJlZml4fS9tYW4nCi0gCi0rIyBJbml0aWFsaXplIHNvbWUgb3RoZXIgdmFyaWFibGVzLgotK3N1YmRpcnM9Ci0rTUZMQUdTPSBNQUtFRkxBR1M9Ci0rU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0KLSsjIE1heGltdW0gbnVtYmVyIG9mIGxpbmVzIHRvIHB1dCBpbiBhIHNoZWxsIGhlcmUgZG9jdW1lbnQuCi0rYWNfbWF4X2hlcmVfbGluZXM9MTIKLSsKLSBhY19wcmV2PQotIGZvciBhY19vcHRpb24KLSBkbwotKwotICAgIyBJZiB0aGUgcHJldmlvdXMgb3B0aW9uIG5lZWRzIGFuIGFyZ3VtZW50LCBhc3NpZ24gaXQuCi0gICBpZiB0ZXN0IC1uICIkYWNfcHJldiI7IHRoZW4KLSAgICAgZXZhbCAiJGFjX3ByZXY9XCRhY19vcHRpb24iCi1AQCAtMzU5LDU5ICs3Niw1OSBAQAotICAgICBjb250aW51ZQotICAgZmkKLSAKLS0gIGFjX29wdGFyZz1gZXhwciAieCRhY19vcHRpb24iIDogJ3hbXj1dKj1cKC4qXCknYAotKyAgY2FzZSAiJGFjX29wdGlvbiIgaW4KLSsgIC0qPSopIGFjX29wdGFyZz1gZWNobyAiJGFjX29wdGlvbiIgfCBzZWQgJ3MvWy1fYS16QS1aMC05XSo9Ly8nYCA7OwotKyAgKikgYWNfb3B0YXJnPSA7OwotKyAgZXNhYwotIAotICAgIyBBY2NlcHQgdGhlIGltcG9ydGFudCBDeWdudXMgY29uZmlndXJlIG9wdGlvbnMsIHNvIHdlIGNhbiBkaWFnbm9zZSB0eXBvcy4KLSAKLS0gIGNhc2UgJGFjX29wdGlvbiBpbgotKyAgY2FzZSAiJGFjX29wdGlvbiIgaW4KLSAKLSAgIC1iaW5kaXIgfCAtLWJpbmRpciB8IC0tYmluZGkgfCAtLWJpbmQgfCAtLWJpbiB8IC0tYmkpCi0gICAgIGFjX3ByZXY9YmluZGlyIDs7Ci0gICAtYmluZGlyPSogfCAtLWJpbmRpcj0qIHwgLS1iaW5kaT0qIHwgLS1iaW5kPSogfCAtLWJpbj0qIHwgLS1iaT0qKQotLSAgICBiaW5kaXI9JGFjX29wdGFyZyA7OwotKyAgICBiaW5kaXI9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtYnVpbGQgfCAtLWJ1aWxkIHwgLS1idWlsIHwgLS1idWkgfCAtLWJ1KQotLSAgICBhY19wcmV2PWJ1aWxkX2FsaWFzIDs7Ci0rICAgIGFjX3ByZXY9YnVpbGQgOzsKLSAgIC1idWlsZD0qIHwgLS1idWlsZD0qIHwgLS1idWlsPSogfCAtLWJ1aT0qIHwgLS1idT0qKQotLSAgICBidWlsZF9hbGlhcz0kYWNfb3B0YXJnIDs7Ci0rICAgIGJ1aWxkPSIkYWNfb3B0YXJnIiA7OwotIAotICAgLWNhY2hlLWZpbGUgfCAtLWNhY2hlLWZpbGUgfCAtLWNhY2hlLWZpbCB8IC0tY2FjaGUtZmkgXAotICAgfCAtLWNhY2hlLWYgfCAtLWNhY2hlLSB8IC0tY2FjaGUgfCAtLWNhY2ggfCAtLWNhYyB8IC0tY2EgfCAtLWMpCi0gICAgIGFjX3ByZXY9Y2FjaGVfZmlsZSA7OwotICAgLWNhY2hlLWZpbGU9KiB8IC0tY2FjaGUtZmlsZT0qIHwgLS1jYWNoZS1maWw9KiB8IC0tY2FjaGUtZmk9KiBcCi0gICB8IC0tY2FjaGUtZj0qIHwgLS1jYWNoZS09KiB8IC0tY2FjaGU9KiB8IC0tY2FjaD0qIHwgLS1jYWM9KiB8IC0tY2E9KiB8IC0tYz0qKQotLSAgICBjYWNoZV9maWxlPSRhY19vcHRhcmcgOzsKLSsgICAgY2FjaGVfZmlsZT0iJGFjX29wdGFyZyIgOzsKLSAKLS0gIC0tY29uZmlnLWNhY2hlIHwgLUMpCi0tICAgIGNhY2hlX2ZpbGU9Y29uZmlnLmNhY2hlIDs7Ci0tCi0gICAtZGF0YWRpciB8IC0tZGF0YWRpciB8IC0tZGF0YWRpIHwgLS1kYXRhZCB8IC0tZGF0YSB8IC0tZGF0IHwgLS1kYSkKLSAgICAgYWNfcHJldj1kYXRhZGlyIDs7Ci0gICAtZGF0YWRpcj0qIHwgLS1kYXRhZGlyPSogfCAtLWRhdGFkaT0qIHwgLS1kYXRhZD0qIHwgLS1kYXRhPSogfCAtLWRhdD0qIFwKLSAgIHwgLS1kYT0qKQotLSAgICBkYXRhZGlyPSRhY19vcHRhcmcgOzsKLSsgICAgZGF0YWRpcj0iJGFjX29wdGFyZyIgOzsKLSAKLSAgIC1kaXNhYmxlLSogfCAtLWRpc2FibGUtKikKLS0gICAgYWNfZmVhdHVyZT1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKmRpc2FibGUtXCguKlwpJ2AKLSsgICAgYWNfZmVhdHVyZT1gZWNobyAkYWNfb3B0aW9ufHNlZCAtZSAncy8tKmRpc2FibGUtLy8nYAotICAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCi0tICAgIGV4cHIgIngkYWNfZmVhdHVyZSIgOiAiLipbXi1fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgotLSAgICAgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogaW52YWxpZCBmZWF0dXJlIG5hbWU6ICRhY19mZWF0dXJlIiA+JjIKLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLS0gICAgYWNfZmVhdHVyZT1gZWNobyAkYWNfZmVhdHVyZSB8IHNlZCAncy8tL18vZydgCi0tICAgIGV2YWwgImVuYWJsZV8kYWNfZmVhdHVyZT1ubyIgOzsKLSsgICAgaWYgdGVzdCAtbiAiYGVjaG8gJGFjX2ZlYXR1cmV8IHNlZCAncy9bLWEtekEtWjAtOV9dLy9nJ2AiOyB0aGVuCi0rICAgICAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiAkYWNfZmVhdHVyZTogaW52YWxpZCBmZWF0dXJlIG5hbWUiIDE+JjI7IGV4aXQgMTsgfQotKyAgICBmaQotKyAgICBhY19mZWF0dXJlPWBlY2hvICRhY19mZWF0dXJlfCBzZWQgJ3MvLS9fL2cnYAotKyAgICBldmFsICJlbmFibGVfJHthY19mZWF0dXJlfT1ubyIgOzsKLSAKLSAgIC1lbmFibGUtKiB8IC0tZW5hYmxlLSopCi0tICAgIGFjX2ZlYXR1cmU9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSplbmFibGUtXChbXj1dKlwpJ2AKLSsgICAgYWNfZmVhdHVyZT1gZWNobyAkYWNfb3B0aW9ufHNlZCAtZSAncy8tKmVuYWJsZS0vLycgLWUgJ3MvPS4qLy8nYAotICAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCi0tICAgIGV4cHIgIngkYWNfZmVhdHVyZSIgOiAiLipbXi1fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgotLSAgICAgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogaW52YWxpZCBmZWF0dXJlIG5hbWU6ICRhY19mZWF0dXJlIiA+JjIKLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLS0gICAgYWNfZmVhdHVyZT1gZWNobyAkYWNfZmVhdHVyZSB8IHNlZCAncy8tL18vZydgCi0tICAgIGNhc2UgJGFjX29wdGlvbiBpbgotLSAgICAgICo9KikgYWNfb3B0YXJnPWBlY2hvICIkYWNfb3B0YXJnIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7Ci0rICAgIGlmIHRlc3QgLW4gImBlY2hvICRhY19mZWF0dXJlfCBzZWQgJ3MvWy1fYS16QS1aMC05XS8vZydgIjsgdGhlbgotKyAgICAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogJGFjX2ZlYXR1cmU6IGludmFsaWQgZmVhdHVyZSBuYW1lIiAxPiYyOyBleGl0IDE7IH0KLSsgICAgZmkKLSsgICAgYWNfZmVhdHVyZT1gZWNobyAkYWNfZmVhdHVyZXwgc2VkICdzLy0vXy9nJ2AKLSsgICAgY2FzZSAiJGFjX29wdGlvbiIgaW4KLSsgICAgICAqPSopIDs7Ci0gICAgICAgKikgYWNfb3B0YXJnPXllcyA7OwotICAgICBlc2FjCi0tICAgIGV2YWwgImVuYWJsZV8kYWNfZmVhdHVyZT0nJGFjX29wdGFyZyciIDs7Ci0rICAgIGV2YWwgImVuYWJsZV8ke2FjX2ZlYXR1cmV9PSckYWNfb3B0YXJnJyIgOzsKLSAKLSAgIC1leGVjLXByZWZpeCB8IC0tZXhlY19wcmVmaXggfCAtLWV4ZWMtcHJlZml4IHwgLS1leGVjLXByZWZpIFwKLSAgIHwgLS1leGVjLXByZWYgfCAtLWV4ZWMtcHJlIHwgLS1leGVjLXByIHwgLS1leGVjLXAgfCAtLWV4ZWMtIFwKLUBAIC00MjAsNDcgKzEzNyw5NSBAQAotICAgLWV4ZWMtcHJlZml4PSogfCAtLWV4ZWNfcHJlZml4PSogfCAtLWV4ZWMtcHJlZml4PSogfCAtLWV4ZWMtcHJlZmk9KiBcCi0gICB8IC0tZXhlYy1wcmVmPSogfCAtLWV4ZWMtcHJlPSogfCAtLWV4ZWMtcHI9KiB8IC0tZXhlYy1wPSogfCAtLWV4ZWMtPSogXAotICAgfCAtLWV4ZWM9KiB8IC0tZXhlPSogfCAtLWV4PSopCi0tICAgIGV4ZWNfcHJlZml4PSRhY19vcHRhcmcgOzsKLSsgICAgZXhlY19wcmVmaXg9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtZ2FzIHwgLS1nYXMgfCAtLWdhIHwgLS1nKQotICAgICAjIE9ic29sZXRlOyB1c2UgLS13aXRoLWdhcy4KLSAgICAgd2l0aF9nYXM9eWVzIDs7Ci0gCi0tICAtaGVscCB8IC0taGVscCB8IC0taGVsIHwgLS1oZSB8IC1oKQotLSAgICBhY19pbml0X2hlbHA9bG9uZyA7OwotLSAgLWhlbHA9ciogfCAtLWhlbHA9ciogfCAtLWhlbD1yKiB8IC0taGU9ciogfCAtaHIqKQotLSAgICBhY19pbml0X2hlbHA9cmVjdXJzaXZlIDs7Ci0tICAtaGVscD1zKiB8IC0taGVscD1zKiB8IC0taGVsPXMqIHwgLS1oZT1zKiB8IC1ocyopCi0tICAgIGFjX2luaXRfaGVscD1zaG9ydCA7OwotKyAgLWhlbHAgfCAtLWhlbHAgfCAtLWhlbCB8IC0taGUpCi0rICAgICMgT21pdCBzb21lIGludGVybmFsIG9yIG9ic29sZXRlIG9wdGlvbnMgdG8gbWFrZSB0aGUgbGlzdCBsZXNzIGltcG9zaW5nLgotKyAgICAjIFRoaXMgbWVzc2FnZSBpcyB0b28gbG9uZyB0byBiZSBhIHN0cmluZyBpbiB0aGUgQS9VWCAzLjEgc2guCi0rICAgIGNhdCA8PCBFT0YKLStVc2FnZTogY29uZmlndXJlIFtvcHRpb25zXSBbaG9zdF0KLStPcHRpb25zOiBbZGVmYXVsdHMgaW4gYnJhY2tldHMgYWZ0ZXIgZGVzY3JpcHRpb25zXQotK0NvbmZpZ3VyYXRpb246Ci0rICAtLWNhY2hlLWZpbGU9RklMRSAgICAgICBjYWNoZSB0ZXN0IHJlc3VsdHMgaW4gRklMRQotKyAgLS1oZWxwICAgICAgICAgICAgICAgICAgcHJpbnQgdGhpcyBtZXNzYWdlCi0rICAtLW5vLWNyZWF0ZSAgICAgICAgICAgICBkbyBub3QgY3JlYXRlIG91dHB1dCBmaWxlcwotKyAgLS1xdWlldCwgLS1zaWxlbnQgICAgICAgZG8gbm90IHByaW50IFxgY2hlY2tpbmcuLi4nIG1lc3NhZ2VzCi0rICAtLXZlcnNpb24gICAgICAgICAgICAgICBwcmludCB0aGUgdmVyc2lvbiBvZiBhdXRvY29uZiB0aGF0IGNyZWF0ZWQgY29uZmlndXJlCi0rRGlyZWN0b3J5IGFuZCBmaWxlIG5hbWVzOgotKyAgLS1wcmVmaXg9UFJFRklYICAgICAgICAgaW5zdGFsbCBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZmlsZXMgaW4gUFJFRklYCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBbJGFjX2RlZmF1bHRfcHJlZml4XQotKyAgLS1leGVjLXByZWZpeD1FUFJFRklYICAgaW5zdGFsbCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IGZpbGVzIGluIEVQUkVGSVgKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIFtzYW1lIGFzIHByZWZpeF0KLSsgIC0tYmluZGlyPURJUiAgICAgICAgICAgIHVzZXIgZXhlY3V0YWJsZXMgaW4gRElSIFtFUFJFRklYL2Jpbl0KLSsgIC0tc2JpbmRpcj1ESVIgICAgICAgICAgIHN5c3RlbSBhZG1pbiBleGVjdXRhYmxlcyBpbiBESVIgW0VQUkVGSVgvc2Jpbl0KLSsgIC0tbGliZXhlY2Rpcj1ESVIgICAgICAgIHByb2dyYW0gZXhlY3V0YWJsZXMgaW4gRElSIFtFUFJFRklYL2xpYmV4ZWNdCi0rICAtLWRhdGFkaXI9RElSICAgICAgICAgICByZWFkLW9ubHkgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEgaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBbUFJFRklYL3NoYXJlXQotKyAgLS1zeXNjb25mZGlyPURJUiAgICAgICAgcmVhZC1vbmx5IHNpbmdsZS1tYWNoaW5lIGRhdGEgaW4gRElSIFtQUkVGSVgvZXRjXQotKyAgLS1zaGFyZWRzdGF0ZWRpcj1ESVIgICAgbW9kaWZpYWJsZSBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZGF0YSBpbiBESVIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIFtQUkVGSVgvY29tXQotKyAgLS1sb2NhbHN0YXRlZGlyPURJUiAgICAgbW9kaWZpYWJsZSBzaW5nbGUtbWFjaGluZSBkYXRhIGluIERJUiBbUFJFRklYL3Zhcl0KLSsgIC0tbGliZGlyPURJUiAgICAgICAgICAgIG9iamVjdCBjb2RlIGxpYnJhcmllcyBpbiBESVIgW0VQUkVGSVgvbGliXQotKyAgLS1pbmNsdWRlZGlyPURJUiAgICAgICAgQyBoZWFkZXIgZmlsZXMgaW4gRElSIFtQUkVGSVgvaW5jbHVkZV0KLSsgIC0tb2xkaW5jbHVkZWRpcj1ESVIgICAgIEMgaGVhZGVyIGZpbGVzIGZvciBub24tZ2NjIGluIERJUiBbL3Vzci9pbmNsdWRlXQotKyAgLS1pbmZvZGlyPURJUiAgICAgICAgICAgaW5mbyBkb2N1bWVudGF0aW9uIGluIERJUiBbUFJFRklYL2luZm9dCi0rICAtLW1hbmRpcj1ESVIgICAgICAgICAgICBtYW4gZG9jdW1lbnRhdGlvbiBpbiBESVIgW1BSRUZJWC9tYW5dCi0rICAtLXNyY2Rpcj1ESVIgICAgICAgICAgICBmaW5kIHRoZSBzb3VyY2VzIGluIERJUiBbY29uZmlndXJlIGRpciBvciAuLl0KLSsgIC0tcHJvZ3JhbS1wcmVmaXg9UFJFRklYIHByZXBlbmQgUFJFRklYIHRvIGluc3RhbGxlZCBwcm9ncmFtIG5hbWVzCi0rICAtLXByb2dyYW0tc3VmZml4PVNVRkZJWCBhcHBlbmQgU1VGRklYIHRvIGluc3RhbGxlZCBwcm9ncmFtIG5hbWVzCi0rICAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbWU9UFJPR1JBTQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuIHNlZCBQUk9HUkFNIG9uIGluc3RhbGxlZCBwcm9ncmFtIG5hbWVzCi0rRU9GCi0rICAgIGNhdCA8PCBFT0YKLStIb3N0IHR5cGU6Ci0rICAtLWJ1aWxkPUJVSUxEICAgICAgICAgICBjb25maWd1cmUgZm9yIGJ1aWxkaW5nIG9uIEJVSUxEIFtCVUlMRD1IT1NUXQotKyAgLS1ob3N0PUhPU1QgICAgICAgICAgICAgY29uZmlndXJlIGZvciBIT1NUIFtndWVzc2VkXQotKyAgLS10YXJnZXQ9VEFSR0VUICAgICAgICAgY29uZmlndXJlIGZvciBUQVJHRVQgW1RBUkdFVD1IT1NUXQotK0ZlYXR1cmVzIGFuZCBwYWNrYWdlczoKLSsgIC0tZGlzYWJsZS1GRUFUVVJFICAgICAgIGRvIG5vdCBpbmNsdWRlIEZFQVRVUkUgKHNhbWUgYXMgLS1lbmFibGUtRkVBVFVSRT1ubykKLSsgIC0tZW5hYmxlLUZFQVRVUkVbPUFSR10gIGluY2x1ZGUgRkVBVFVSRSBbQVJHPXllc10KLSsgIC0td2l0aC1QQUNLQUdFWz1BUkddICAgIHVzZSBQQUNLQUdFIFtBUkc9eWVzXQotKyAgLS13aXRob3V0LVBBQ0tBR0UgICAgICAgZG8gbm90IHVzZSBQQUNLQUdFIChzYW1lIGFzIC0td2l0aC1QQUNLQUdFPW5vKQotKyAgLS14LWluY2x1ZGVzPURJUiAgICAgICAgWCBpbmNsdWRlIGZpbGVzIGFyZSBpbiBESVIKLSsgIC0teC1saWJyYXJpZXM9RElSICAgICAgIFggbGlicmFyeSBmaWxlcyBhcmUgaW4gRElSCi0rRU9GCi0rICAgIGlmIHRlc3QgLW4gIiRhY19oZWxwIjsgdGhlbgotKyAgICAgIGVjaG8gIi0tZW5hYmxlIGFuZCAtLXdpdGggb3B0aW9ucyByZWNvZ25pemVkOiRhY19oZWxwIgotKyAgICBmaQotKyAgICBleGl0IDAgOzsKLSAKLSAgIC1ob3N0IHwgLS1ob3N0IHwgLS1ob3MgfCAtLWhvKQotLSAgICBhY19wcmV2PWhvc3RfYWxpYXMgOzsKLSsgICAgYWNfcHJldj1ob3N0IDs7Ci0gICAtaG9zdD0qIHwgLS1ob3N0PSogfCAtLWhvcz0qIHwgLS1obz0qKQotLSAgICBob3N0X2FsaWFzPSRhY19vcHRhcmcgOzsKLSsgICAgaG9zdD0iJGFjX29wdGFyZyIgOzsKLSAKLSAgIC1pbmNsdWRlZGlyIHwgLS1pbmNsdWRlZGlyIHwgLS1pbmNsdWRlZGkgfCAtLWluY2x1ZGVkIHwgLS1pbmNsdWRlIFwKLSAgIHwgLS1pbmNsdWQgfCAtLWluY2x1IHwgLS1pbmNsIHwgLS1pbmMpCi0gICAgIGFjX3ByZXY9aW5jbHVkZWRpciA7OwotICAgLWluY2x1ZGVkaXI9KiB8IC0taW5jbHVkZWRpcj0qIHwgLS1pbmNsdWRlZGk9KiB8IC0taW5jbHVkZWQ9KiB8IC0taW5jbHVkZT0qIFwKLSAgIHwgLS1pbmNsdWQ9KiB8IC0taW5jbHU9KiB8IC0taW5jbD0qIHwgLS1pbmM9KikKLS0gICAgaW5jbHVkZWRpcj0kYWNfb3B0YXJnIDs7Ci0rICAgIGluY2x1ZGVkaXI9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtaW5mb2RpciB8IC0taW5mb2RpciB8IC0taW5mb2RpIHwgLS1pbmZvZCB8IC0taW5mbyB8IC0taW5mKQotICAgICBhY19wcmV2PWluZm9kaXIgOzsKLSAgIC1pbmZvZGlyPSogfCAtLWluZm9kaXI9KiB8IC0taW5mb2RpPSogfCAtLWluZm9kPSogfCAtLWluZm89KiB8IC0taW5mPSopCi0tICAgIGluZm9kaXI9JGFjX29wdGFyZyA7OwotKyAgICBpbmZvZGlyPSIkYWNfb3B0YXJnIiA7OwotIAotICAgLWxpYmRpciB8IC0tbGliZGlyIHwgLS1saWJkaSB8IC0tbGliZCkKLSAgICAgYWNfcHJldj1saWJkaXIgOzsKLSAgIC1saWJkaXI9KiB8IC0tbGliZGlyPSogfCAtLWxpYmRpPSogfCAtLWxpYmQ9KikKLS0gICAgbGliZGlyPSRhY19vcHRhcmcgOzsKLSsgICAgbGliZGlyPSIkYWNfb3B0YXJnIiA7OwotIAotICAgLWxpYmV4ZWNkaXIgfCAtLWxpYmV4ZWNkaXIgfCAtLWxpYmV4ZWNkaSB8IC0tbGliZXhlY2QgfCAtLWxpYmV4ZWMgXAotICAgfCAtLWxpYmV4ZSB8IC0tbGliZXggfCAtLWxpYmUpCi0gICAgIGFjX3ByZXY9bGliZXhlY2RpciA7OwotICAgLWxpYmV4ZWNkaXI9KiB8IC0tbGliZXhlY2Rpcj0qIHwgLS1saWJleGVjZGk9KiB8IC0tbGliZXhlY2Q9KiB8IC0tbGliZXhlYz0qIFwKLSAgIHwgLS1saWJleGU9KiB8IC0tbGliZXg9KiB8IC0tbGliZT0qKQotLSAgICBsaWJleGVjZGlyPSRhY19vcHRhcmcgOzsKLSsgICAgbGliZXhlY2Rpcj0iJGFjX29wdGFyZyIgOzsKLSAKLSAgIC1sb2NhbHN0YXRlZGlyIHwgLS1sb2NhbHN0YXRlZGlyIHwgLS1sb2NhbHN0YXRlZGkgfCAtLWxvY2Fsc3RhdGVkIFwKLSAgIHwgLS1sb2NhbHN0YXRlIHwgLS1sb2NhbHN0YXQgfCAtLWxvY2Fsc3RhIHwgLS1sb2NhbHN0IFwKLUBAIC00NjksMTkgKzIzNCwxOSBAQAotICAgLWxvY2Fsc3RhdGVkaXI9KiB8IC0tbG9jYWxzdGF0ZWRpcj0qIHwgLS1sb2NhbHN0YXRlZGk9KiB8IC0tbG9jYWxzdGF0ZWQ9KiBcCi0gICB8IC0tbG9jYWxzdGF0ZT0qIHwgLS1sb2NhbHN0YXQ9KiB8IC0tbG9jYWxzdGE9KiB8IC0tbG9jYWxzdD0qIFwKLSAgIHwgLS1sb2NhbHM9KiB8IC0tbG9jYWw9KiB8IC0tbG9jYT0qIHwgLS1sb2M9KiB8IC0tbG89KikKLS0gICAgbG9jYWxzdGF0ZWRpcj0kYWNfb3B0YXJnIDs7Ci0rICAgIGxvY2Fsc3RhdGVkaXI9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtbWFuZGlyIHwgLS1tYW5kaXIgfCAtLW1hbmRpIHwgLS1tYW5kIHwgLS1tYW4gfCAtLW1hIHwgLS1tKQotICAgICBhY19wcmV2PW1hbmRpciA7OwotICAgLW1hbmRpcj0qIHwgLS1tYW5kaXI9KiB8IC0tbWFuZGk9KiB8IC0tbWFuZD0qIHwgLS1tYW49KiB8IC0tbWE9KiB8IC0tbT0qKQotLSAgICBtYW5kaXI9JGFjX29wdGFyZyA7OwotKyAgICBtYW5kaXI9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtbmZwIHwgLS1uZnAgfCAtLW5mKQotICAgICAjIE9ic29sZXRlOyB1c2UgLS13aXRob3V0LWZwLgotICAgICB3aXRoX2ZwPW5vIDs7Ci0gCi0gICAtbm8tY3JlYXRlIHwgLS1uby1jcmVhdGUgfCAtLW5vLWNyZWF0IHwgLS1uby1jcmVhIHwgLS1uby1jcmUgXAotLSAgfCAtLW5vLWNyIHwgLS1uby1jIHwgLW4pCi0rICB8IC0tbm8tY3IgfCAtLW5vLWMpCi0gICAgIG5vX2NyZWF0ZT15ZXMgOzsKLSAKLSAgIC1uby1yZWN1cnNpb24gfCAtLW5vLXJlY3Vyc2lvbiB8IC0tbm8tcmVjdXJzaW8gfCAtLW5vLXJlY3Vyc2kgXAotQEAgLTQ5NSwyNiArMjYwLDI2IEBACi0gICAtb2xkaW5jbHVkZWRpcj0qIHwgLS1vbGRpbmNsdWRlZGlyPSogfCAtLW9sZGluY2x1ZGVkaT0qIHwgLS1vbGRpbmNsdWRlZD0qIFwKLSAgIHwgLS1vbGRpbmNsdWRlPSogfCAtLW9sZGluY2x1ZD0qIHwgLS1vbGRpbmNsdT0qIHwgLS1vbGRpbmNsPSogfCAtLW9sZGluYz0qIFwKLSAgIHwgLS1vbGRpbj0qIHwgLS1vbGRpPSogfCAtLW9sZD0qIHwgLS1vbD0qIHwgLS1vPSopCi0tICAgIG9sZGluY2x1ZGVkaXI9JGFjX29wdGFyZyA7OwotKyAgICBvbGRpbmNsdWRlZGlyPSIkYWNfb3B0YXJnIiA7OwotIAotICAgLXByZWZpeCB8IC0tcHJlZml4IHwgLS1wcmVmaSB8IC0tcHJlZiB8IC0tcHJlIHwgLS1wciB8IC0tcCkKLSAgICAgYWNfcHJldj1wcmVmaXggOzsKLSAgIC1wcmVmaXg9KiB8IC0tcHJlZml4PSogfCAtLXByZWZpPSogfCAtLXByZWY9KiB8IC0tcHJlPSogfCAtLXByPSogfCAtLXA9KikKLS0gICAgcHJlZml4PSRhY19vcHRhcmcgOzsKLSsgICAgcHJlZml4PSIkYWNfb3B0YXJnIiA7OwotIAotICAgLXByb2dyYW0tcHJlZml4IHwgLS1wcm9ncmFtLXByZWZpeCB8IC0tcHJvZ3JhbS1wcmVmaSB8IC0tcHJvZ3JhbS1wcmVmIFwKLSAgIHwgLS1wcm9ncmFtLXByZSB8IC0tcHJvZ3JhbS1wciB8IC0tcHJvZ3JhbS1wKQotICAgICBhY19wcmV2PXByb2dyYW1fcHJlZml4IDs7Ci0gICAtcHJvZ3JhbS1wcmVmaXg9KiB8IC0tcHJvZ3JhbS1wcmVmaXg9KiB8IC0tcHJvZ3JhbS1wcmVmaT0qIFwKLSAgIHwgLS1wcm9ncmFtLXByZWY9KiB8IC0tcHJvZ3JhbS1wcmU9KiB8IC0tcHJvZ3JhbS1wcj0qIHwgLS1wcm9ncmFtLXA9KikKLS0gICAgcHJvZ3JhbV9wcmVmaXg9JGFjX29wdGFyZyA7OwotKyAgICBwcm9ncmFtX3ByZWZpeD0iJGFjX29wdGFyZyIgOzsKLSAKLSAgIC1wcm9ncmFtLXN1ZmZpeCB8IC0tcHJvZ3JhbS1zdWZmaXggfCAtLXByb2dyYW0tc3VmZmkgfCAtLXByb2dyYW0tc3VmZiBcCi0gICB8IC0tcHJvZ3JhbS1zdWYgfCAtLXByb2dyYW0tc3UgfCAtLXByb2dyYW0tcykKLSAgICAgYWNfcHJldj1wcm9ncmFtX3N1ZmZpeCA7OwotICAgLXByb2dyYW0tc3VmZml4PSogfCAtLXByb2dyYW0tc3VmZml4PSogfCAtLXByb2dyYW0tc3VmZmk9KiBcCi0gICB8IC0tcHJvZ3JhbS1zdWZmPSogfCAtLXByb2dyYW0tc3VmPSogfCAtLXByb2dyYW0tc3U9KiB8IC0tcHJvZ3JhbS1zPSopCi0tICAgIHByb2dyYW1fc3VmZml4PSRhY19vcHRhcmcgOzsKLSsgICAgcHJvZ3JhbV9zdWZmaXg9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZSB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZSBcCi0gICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYSBcCi1AQCAtNTMxLDcgKzI5Niw3IEBACi0gICB8IC0tcHJvZ3JhbS10cmFuc2ZvPSogfCAtLXByb2dyYW0tdHJhbnNmPSogXAotICAgfCAtLXByb2dyYW0tdHJhbnM9KiB8IC0tcHJvZ3JhbS10cmFuPSogXAotICAgfCAtLXByb2dyLXRyYT0qIHwgLS1wcm9ncmFtLXRyPSogfCAtLXByb2dyYW0tdD0qKQotLSAgICBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPSRhY19vcHRhcmcgOzsKLSsgICAgcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT0iJGFjX29wdGFyZyIgOzsKLSAKLSAgIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBcCi0gICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCkKLUBAIC01NDEsNyArMzA2LDcgQEAKLSAgICAgYWNfcHJldj1zYmluZGlyIDs7Ci0gICAtc2JpbmRpcj0qIHwgLS1zYmluZGlyPSogfCAtLXNiaW5kaT0qIHwgLS1zYmluZD0qIHwgLS1zYmluPSogXAotICAgfCAtLXNiaT0qIHwgLS1zYj0qKQotLSAgICBzYmluZGlyPSRhY19vcHRhcmcgOzsKLSsgICAgc2JpbmRpcj0iJGFjX29wdGFyZyIgOzsKLSAKLSAgIC1zaGFyZWRzdGF0ZWRpciB8IC0tc2hhcmVkc3RhdGVkaXIgfCAtLXNoYXJlZHN0YXRlZGkgXAotICAgfCAtLXNoYXJlZHN0YXRlZCB8IC0tc2hhcmVkc3RhdGUgfCAtLXNoYXJlZHN0YXQgfCAtLXNoYXJlZHN0YSBcCi1AQCAtNTUyLDU3ICszMTcsNTggQEAKLSAgIHwgLS1zaGFyZWRzdGF0ZWQ9KiB8IC0tc2hhcmVkc3RhdGU9KiB8IC0tc2hhcmVkc3RhdD0qIHwgLS1zaGFyZWRzdGE9KiBcCi0gICB8IC0tc2hhcmVkc3Q9KiB8IC0tc2hhcmVkcz0qIHwgLS1zaGFyZWQ9KiB8IC0tc2hhcmU9KiB8IC0tc2hhcj0qIFwKLSAgIHwgLS1zaGE9KiB8IC0tc2g9KikKLS0gICAgc2hhcmVkc3RhdGVkaXI9JGFjX29wdGFyZyA7OwotKyAgICBzaGFyZWRzdGF0ZWRpcj0iJGFjX29wdGFyZyIgOzsKLSAKLSAgIC1zaXRlIHwgLS1zaXRlIHwgLS1zaXQpCi0gICAgIGFjX3ByZXY9c2l0ZSA7OwotICAgLXNpdGU9KiB8IC0tc2l0ZT0qIHwgLS1zaXQ9KikKLS0gICAgc2l0ZT0kYWNfb3B0YXJnIDs7Ci0rICAgIHNpdGU9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtc3JjZGlyIHwgLS1zcmNkaXIgfCAtLXNyY2RpIHwgLS1zcmNkIHwgLS1zcmMgfCAtLXNyKQotICAgICBhY19wcmV2PXNyY2RpciA7OwotICAgLXNyY2Rpcj0qIHwgLS1zcmNkaXI9KiB8IC0tc3JjZGk9KiB8IC0tc3JjZD0qIHwgLS1zcmM9KiB8IC0tc3I9KikKLS0gICAgc3JjZGlyPSRhY19vcHRhcmcgOzsKLSsgICAgc3JjZGlyPSIkYWNfb3B0YXJnIiA7OwotIAotICAgLXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZkaSB8IC0tc3lzY29uZmQgfCAtLXN5c2NvbmYgXAotICAgfCAtLXN5c2NvbiB8IC0tc3lzY28gfCAtLXN5c2MgfCAtLXN5cyB8IC0tc3kpCi0gICAgIGFjX3ByZXY9c3lzY29uZmRpciA7OwotICAgLXN5c2NvbmZkaXI9KiB8IC0tc3lzY29uZmRpcj0qIHwgLS1zeXNjb25mZGk9KiB8IC0tc3lzY29uZmQ9KiB8IC0tc3lzY29uZj0qIFwKLSAgIHwgLS1zeXNjb249KiB8IC0tc3lzY289KiB8IC0tc3lzYz0qIHwgLS1zeXM9KiB8IC0tc3k9KikKLS0gICAgc3lzY29uZmRpcj0kYWNfb3B0YXJnIDs7Ci0rICAgIHN5c2NvbmZkaXI9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtdGFyZ2V0IHwgLS10YXJnZXQgfCAtLXRhcmdlIHwgLS10YXJnIHwgLS10YXIgfCAtLXRhIHwgLS10KQotLSAgICBhY19wcmV2PXRhcmdldF9hbGlhcyA7OwotKyAgICBhY19wcmV2PXRhcmdldCA7OwotICAgLXRhcmdldD0qIHwgLS10YXJnZXQ9KiB8IC0tdGFyZ2U9KiB8IC0tdGFyZz0qIHwgLS10YXI9KiB8IC0tdGE9KiB8IC0tdD0qKQotLSAgICB0YXJnZXRfYWxpYXM9JGFjX29wdGFyZyA7OwotKyAgICB0YXJnZXQ9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAtdiB8IC12ZXJib3NlIHwgLS12ZXJib3NlIHwgLS12ZXJib3MgfCAtLXZlcmJvIHwgLS12ZXJiKQotICAgICB2ZXJib3NlPXllcyA7OwotIAotLSAgLXZlcnNpb24gfCAtLXZlcnNpb24gfCAtLXZlcnNpbyB8IC0tdmVyc2kgfCAtLXZlcnMgfCAtVikKLS0gICAgYWNfaW5pdF92ZXJzaW9uPTogOzsKLSsgIC12ZXJzaW9uIHwgLS12ZXJzaW9uIHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwgLS12ZXJzKQotKyAgICBlY2hvICJjb25maWd1cmUgZ2VuZXJhdGVkIGJ5IGF1dG9jb25mIHZlcnNpb24gMi4xMyIKLSsgICAgZXhpdCAwIDs7Ci0gCi0gICAtd2l0aC0qIHwgLS13aXRoLSopCi0tICAgIGFjX3BhY2thZ2U9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSp3aXRoLVwoW149XSpcKSdgCi0rICAgIGFjX3BhY2thZ2U9YGVjaG8gJGFjX29wdGlvbnxzZWQgLWUgJ3MvLSp3aXRoLS8vJyAtZSAncy89LiovLydgCi0gICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KLS0gICAgZXhwciAieCRhY19wYWNrYWdlIiA6ICIuKlteLV8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCi0tICAgICAgeyBlY2hvICIkYXNfbWU6IGVycm9yOiBpbnZhbGlkIHBhY2thZ2UgbmFtZTogJGFjX3BhY2thZ2UiID4mMgotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotKyAgICBpZiB0ZXN0IC1uICJgZWNobyAkYWNfcGFja2FnZXwgc2VkICdzL1stX2EtekEtWjAtOV0vL2cnYCI7IHRoZW4KLSsgICAgICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6ICRhY19wYWNrYWdlOiBpbnZhbGlkIHBhY2thZ2UgbmFtZSIgMT4mMjsgZXhpdCAxOyB9Ci0rICAgIGZpCi0gICAgIGFjX3BhY2thZ2U9YGVjaG8gJGFjX3BhY2thZ2V8IHNlZCAncy8tL18vZydgCi0tICAgIGNhc2UgJGFjX29wdGlvbiBpbgotLSAgICAgICo9KikgYWNfb3B0YXJnPWBlY2hvICIkYWNfb3B0YXJnIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7Ci0rICAgIGNhc2UgIiRhY19vcHRpb24iIGluCi0rICAgICAgKj0qKSA7OwotICAgICAgICopIGFjX29wdGFyZz15ZXMgOzsKLSAgICAgZXNhYwotLSAgICBldmFsICJ3aXRoXyRhY19wYWNrYWdlPSckYWNfb3B0YXJnJyIgOzsKLSsgICAgZXZhbCAid2l0aF8ke2FjX3BhY2thZ2V9PSckYWNfb3B0YXJnJyIgOzsKLSAKLSAgIC13aXRob3V0LSogfCAtLXdpdGhvdXQtKikKLS0gICAgYWNfcGFja2FnZT1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKndpdGhvdXQtXCguKlwpJ2AKLSsgICAgYWNfcGFja2FnZT1gZWNobyAkYWNfb3B0aW9ufHNlZCAtZSAncy8tKndpdGhvdXQtLy8nYAotICAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCi0tICAgIGV4cHIgIngkYWNfcGFja2FnZSIgOiAiLipbXi1fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgotLSAgICAgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY19wYWNrYWdlIiA+JjIKLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLS0gICAgYWNfcGFja2FnZT1gZWNobyAkYWNfcGFja2FnZSB8IHNlZCAncy8tL18vZydgCi0tICAgIGV2YWwgIndpdGhfJGFjX3BhY2thZ2U9bm8iIDs7Ci0rICAgIGlmIHRlc3QgLW4gImBlY2hvICRhY19wYWNrYWdlfCBzZWQgJ3MvWy1hLXpBLVowLTlfXS8vZydgIjsgdGhlbgotKyAgICAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogJGFjX3BhY2thZ2U6IGludmFsaWQgcGFja2FnZSBuYW1lIiAxPiYyOyBleGl0IDE7IH0KLSsgICAgZmkKLSsgICAgYWNfcGFja2FnZT1gZWNobyAkYWNfcGFja2FnZXwgc2VkICdzLy0vXy9nJ2AKLSsgICAgZXZhbCAid2l0aF8ke2FjX3BhY2thZ2V9PW5vIiA7OwotIAotICAgLS14KQotICAgICAjIE9ic29sZXRlOyB1c2UgLS13aXRoLXguCi1AQCAtNjEzLDExMCArMzc5LDk5IEBACi0gICAgIGFjX3ByZXY9eF9pbmNsdWRlcyA7OwotICAgLXgtaW5jbHVkZXM9KiB8IC0teC1pbmNsdWRlcz0qIHwgLS14LWluY2x1ZGU9KiB8IC0teC1pbmNsdWQ9KiB8IC0teC1pbmNsdT0qIFwKLSAgIHwgLS14LWluY2w9KiB8IC0teC1pbmM9KiB8IC0teC1pbj0qIHwgLS14LWk9KikKLS0gICAgeF9pbmNsdWRlcz0kYWNfb3B0YXJnIDs7Ci0rICAgIHhfaW5jbHVkZXM9IiRhY19vcHRhcmciIDs7Ci0gCi0gICAteC1saWJyYXJpZXMgfCAtLXgtbGlicmFyaWVzIHwgLS14LWxpYnJhcmllIHwgLS14LWxpYnJhcmkgXAotICAgfCAtLXgtbGlicmFyIHwgLS14LWxpYnJhIHwgLS14LWxpYnIgfCAtLXgtbGliIHwgLS14LWxpIHwgLS14LWwpCi0gICAgIGFjX3ByZXY9eF9saWJyYXJpZXMgOzsKLSAgIC14LWxpYnJhcmllcz0qIHwgLS14LWxpYnJhcmllcz0qIHwgLS14LWxpYnJhcmllPSogfCAtLXgtbGlicmFyaT0qIFwKLSAgIHwgLS14LWxpYnJhcj0qIHwgLS14LWxpYnJhPSogfCAtLXgtbGlicj0qIHwgLS14LWxpYj0qIHwgLS14LWxpPSogfCAtLXgtbD0qKQotLSAgICB4X2xpYnJhcmllcz0kYWNfb3B0YXJnIDs7Ci0rICAgIHhfbGlicmFyaWVzPSIkYWNfb3B0YXJnIiA7OwotIAotLSAgLSopIHsgZWNobyAiJGFzX21lOiBlcnJvcjogdW5yZWNvZ25pemVkIG9wdGlvbjogJGFjX29wdGlvbgotLVRyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiA+JjIKLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSsgIC0qKSB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6ICRhY19vcHRpb246IGludmFsaWQgb3B0aW9uOyB1c2UgLS1oZWxwIHRvIHNob3cgdXNhZ2UiIDE+JjI7IGV4aXQgMTsgfQotICAgICA7OwotIAotLSAgKj0qKQotLSAgICBhY19lbnZ2YXI9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4XChbXj1dKlwpPSdgCi0tICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KLS0gICAgZXhwciAieCRhY19lbnZ2YXIiIDogIi4qW15fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgotLSAgICAgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogaW52YWxpZCB2YXJpYWJsZSBuYW1lOiAkYWNfZW52dmFyIiA+JjIKLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLS0gICAgYWNfb3B0YXJnPWBlY2hvICIkYWNfb3B0YXJnIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYAotLSAgICBldmFsICIkYWNfZW52dmFyPSckYWNfb3B0YXJnJyIKLS0gICAgZXhwb3J0ICRhY19lbnZ2YXIgOzsKLS0KLSAgICopCi0tICAgICMgRklYTUU6IHNob3VsZCBiZSByZW1vdmVkIGluIGF1dG9jb25mIDMuMC4KLS0gICAgZWNobyAiJGFzX21lOiBXQVJOSU5HOiB5b3Ugc2hvdWxkIHVzZSAtLWJ1aWxkLCAtLWhvc3QsIC0tdGFyZ2V0IiA+JjIKLS0gICAgZXhwciAieCRhY19vcHRpb24iIDogIi4qW14tLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCi0tICAgICAgZWNobyAiJGFzX21lOiBXQVJOSU5HOiBpbnZhbGlkIGhvc3QgdHlwZTogJGFjX29wdGlvbiIgPiYyCi0tICAgIDogJHtidWlsZF9hbGlhcz0kYWNfb3B0aW9ufSAke2hvc3RfYWxpYXM9JGFjX29wdGlvbn0gJHt0YXJnZXRfYWxpYXM9JGFjX29wdGlvbn0KLSsgICAgaWYgdGVzdCAtbiAiYGVjaG8gJGFjX29wdGlvbnwgc2VkICdzL1stYS16MC05Ll0vL2cnYCI7IHRoZW4KLSsgICAgICBlY2hvICJjb25maWd1cmU6IHdhcm5pbmc6ICRhY19vcHRpb246IGludmFsaWQgaG9zdCB0eXBlIiAxPiYyCi0rICAgIGZpCi0rICAgIGlmIHRlc3QgIngkbm9ub3B0IiAhPSB4Tk9ORTsgdGhlbgotKyAgICAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogY2FuIG9ubHkgY29uZmlndXJlIGZvciBvbmUgaG9zdCBhbmQgb25lIHRhcmdldCBhdCBhIHRpbWUiIDE+JjI7IGV4aXQgMTsgfQotKyAgICBmaQotKyAgICBub25vcHQ9IiRhY19vcHRpb24iCi0gICAgIDs7Ci0gCi0gICBlc2FjCi0gZG9uZQotIAotIGlmIHRlc3QgLW4gIiRhY19wcmV2IjsgdGhlbgotLSAgYWNfb3B0aW9uPS0tYGVjaG8gJGFjX3ByZXYgfCBzZWQgJ3MvXy8tL2cnYAotLSAgeyBlY2hvICIkYXNfbWU6IGVycm9yOiBtaXNzaW5nIGFyZ3VtZW50IHRvICRhY19vcHRpb24iID4mMgotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotKyAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBtaXNzaW5nIGFyZ3VtZW50IHRvIC0tYGVjaG8gJGFjX3ByZXYgfCBzZWQgJ3MvXy8tL2cnYCIgMT4mMjsgZXhpdCAxOyB9Ci0gZmkKLSAKLS0jIEJlIHN1cmUgdG8gaGF2ZSBhYnNvbHV0ZSBwYXRocy4KLS1mb3IgYWNfdmFyIGluIGV4ZWNfcHJlZml4IHByZWZpeAotLWRvCi0tICBldmFsIGFjX3ZhbD0kYGVjaG8gJGFjX3ZhcmAKLS0gIGNhc2UgJGFjX3ZhbCBpbgotLSAgICBbXFwvJF0qIHwgPzpbXFwvXSogfCBOT05FIHwgJycgKSA7OwotLSAgICAqKSAgeyBlY2hvICIkYXNfbWU6IGVycm9yOiBleHBlY3RlZCBhbiBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSBmb3IgLS0kYWNfdmFyOiAkYWNfdmFsIiA+JjIKLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH07OwotLSAgZXNhYwotLWRvbmUKLSt0cmFwICdybSAtZnIgY29uZnRlc3QqIGNvbmZkZWZzKiBjb3JlIGNvcmUuKiAqLmNvcmUgJGFjX2NsZWFuX2ZpbGVzOyBleGl0IDEnIDEgMiAxNQotIAotLSMgQmUgc3VyZSB0byBoYXZlIGFic29sdXRlIHBhdGhzLgotLWZvciBhY192YXIgaW4gYmluZGlyIHNiaW5kaXIgbGliZXhlY2RpciBkYXRhZGlyIHN5c2NvbmZkaXIgc2hhcmVkc3RhdGVkaXIgXAotLSAgICAgICAgICAgICAgbG9jYWxzdGF0ZWRpciBsaWJkaXIgaW5jbHVkZWRpciBvbGRpbmNsdWRlZGlyIGluZm9kaXIgbWFuZGlyCi0rIyBGaWxlIGRlc2NyaXB0b3IgdXNhZ2U6Ci0rIyAwIHN0YW5kYXJkIGlucHV0Ci0rIyAxIGZpbGUgY3JlYXRpb24KLSsjIDIgZXJyb3JzIGFuZCB3YXJuaW5ncwotKyMgMyBzb21lIHN5c3RlbXMgbWF5IG9wZW4gaXQgdG8gL2Rldi90dHkKLSsjIDQgdXNlZCBvbiB0aGUgS3Vib3RhIFRpdGFuCi0rIyA2IGNoZWNraW5nIGZvci4uLiBtZXNzYWdlcyBhbmQgcmVzdWx0cwotKyMgNSBjb21waWxlciBtZXNzYWdlcyBzYXZlZCBpbiBjb25maWcubG9nCi0raWYgdGVzdCAiJHNpbGVudCIgPSB5ZXM7IHRoZW4KLSsgIGV4ZWMgNj4vZGV2L251bGwKLStlbHNlCi0rICBleGVjIDY+JjEKLStmaQotK2V4ZWMgNT4uL2NvbmZpZy5sb2cKLSsKLStlY2hvICJcCi0rVGhpcyBmaWxlIGNvbnRhaW5zIGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hpbGUKLStydW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtlLgotKyIgMT4mNQotKwotKyMgU3RyaXAgb3V0IC0tbm8tY3JlYXRlIGFuZCAtLW5vLXJlY3Vyc2lvbiBzbyB0aGV5IGRvIG5vdCBwaWxlIHVwLgotKyMgQWxzbyBxdW90ZSBhbnkgYXJncyBjb250YWluaW5nIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgotK2FjX2NvbmZpZ3VyZV9hcmdzPQotK2ZvciBhY19hcmcKLSBkbwotLSAgZXZhbCBhY192YWw9JGBlY2hvICRhY192YXJgCi0tICBjYXNlICRhY192YWwgaW4KLS0gICAgW1xcLyRdKiB8ID86W1xcL10qICkgOzsKLS0gICAgKikgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogZXhwZWN0ZWQgYW4gYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgZm9yIC0tJGFjX3ZhcjogJGFjX3ZhbCIgPiYyCi0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9OzsKLSsgIGNhc2UgIiRhY19hcmciIGluCi0rICAtbm8tY3JlYXRlIHwgLS1uby1jcmVhdGUgfCAtLW5vLWNyZWF0IHwgLS1uby1jcmVhIHwgLS1uby1jcmUgXAotKyAgfCAtLW5vLWNyIHwgLS1uby1jKSA7OwotKyAgLW5vLXJlY3Vyc2lvbiB8IC0tbm8tcmVjdXJzaW9uIHwgLS1uby1yZWN1cnNpbyB8IC0tbm8tcmVjdXJzaSBcCi0rICB8IC0tbm8tcmVjdXJzIHwgLS1uby1yZWN1ciB8IC0tbm8tcmVjdSB8IC0tbm8tcmVjIHwgLS1uby1yZSB8IC0tbm8tcikgOzsKLSsgICoiICIqfCoiCSIqfCpbXFtcXVx+XCNcJFxeXCZcKlwoXClce1x9XFxcfFw7XDxcPlw/XSopCi0rICBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzICckYWNfYXJnJyIgOzsKLSsgICopIGFjX2NvbmZpZ3VyZV9hcmdzPSIkYWNfY29uZmlndXJlX2FyZ3MgJGFjX2FyZyIgOzsKLSAgIGVzYWMKLSBkb25lCi0gCi0tIyBUaGVyZSBtaWdodCBiZSBwZW9wbGUgd2hvIGRlcGVuZCBvbiB0aGUgb2xkIGJyb2tlbiBiZWhhdmlvcjogYCRob3N0JwotLSMgdXNlZCB0byBob2xkIHRoZSBhcmd1bWVudCBvZiAtLWhvc3QgZXRjLgotLSMgRklYTUU6IFRvIHJlbW92ZSBzb21lIGRheS4KLS1idWlsZD0kYnVpbGRfYWxpYXMKLS1ob3N0PSRob3N0X2FsaWFzCi0tdGFyZ2V0PSR0YXJnZXRfYWxpYXMKLSsjIE5MUyBudWlzYW5jZXMuCi0rIyBPbmx5IHNldCB0aGVzZSB0byBDIGlmIGFscmVhZHkgc2V0LiAgVGhlc2UgbXVzdCBub3QgYmUgc2V0IHVuY29uZGl0aW9uYWxseQotKyMgYmVjYXVzZSBub3QgYWxsIHN5c3RlbXMgdW5kZXJzdGFuZCBlLmcuIExBTkc9QyAobm90YWJseSBTQ08pLgotKyMgRml4aW5nIExDX01FU1NBR0VTIHByZXZlbnRzIFNvbGFyaXMgc2ggZnJvbSB0cmFuc2xhdGluZyB2YXIgdmFsdWVzIGluIGBzZXQnIQotKyMgTm9uLUMgTENfQ1RZUEUgdmFsdWVzIGJyZWFrIHRoZSBjdHlwZSBjaGVjay4KLStpZiB0ZXN0ICIke0xBTkcrc2V0fSIgICA9IHNldDsgdGhlbiBMQU5HPUM7ICAgZXhwb3J0IExBTkc7ICAgZmkKLStpZiB0ZXN0ICIke0xDX0FMTCtzZXR9IiA9IHNldDsgdGhlbiBMQ19BTEw9QzsgZXhwb3J0IExDX0FMTDsgZmkKLStpZiB0ZXN0ICIke0xDX01FU1NBR0VTK3NldH0iID0gc2V0OyB0aGVuIExDX01FU1NBR0VTPUM7IGV4cG9ydCBMQ19NRVNTQUdFUzsgZmkKLStpZiB0ZXN0ICIke0xDX0NUWVBFK3NldH0iICAgID0gc2V0OyB0aGVuIExDX0NUWVBFPUM7ICAgIGV4cG9ydCBMQ19DVFlQRTsgICAgZmkKLSAKLS0jIEZJWE1FOiBUbyByZW1vdmUgc29tZSBkYXkuCi0taWYgdGVzdCAieCRob3N0X2FsaWFzIiAhPSB4OyB0aGVuCi0tICBpZiB0ZXN0ICJ4JGJ1aWxkX2FsaWFzIiA9IHg7IHRoZW4KLS0gICAgY3Jvc3NfY29tcGlsaW5nPW1heWJlCi0tICAgIGVjaG8gIiRhc19tZTogV0FSTklORzogSWYgeW91IHdhbnRlZCB0byBzZXQgdGhlIC0tYnVpbGQgdHlwZSwgZG9uJ3QgdXNlIC0taG9zdC4KLS0gICAgSWYgYSBjcm9zcyBjb21waWxlciBpcyBkZXRlY3RlZCB0aGVuIGNyb3NzIGNvbXBpbGUgbW9kZSB3aWxsIGJlIHVzZWQuIiA+JjIKLS0gIGVsaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgIT0gIngkaG9zdF9hbGlhcyI7IHRoZW4KLS0gICAgY3Jvc3NfY29tcGlsaW5nPXllcwotLSAgZmkKLS1maQotKyMgY29uZmRlZnMuaCBhdm9pZHMgT1MgY29tbWFuZCBsaW5lIGxlbmd0aCBsaW1pdHMgdGhhdCBERUZTIGNhbiBleGNlZWQuCi0rcm0gLXJmIGNvbmZ0ZXN0KiBjb25mZGVmcy5oCi0rIyBBSVggY3BwIGxvc2VzIG9uIGFuIGVtcHR5IGZpbGUsIHNvIG1ha2Ugc3VyZSBpdCBjb250YWlucyBhdCBsZWFzdCBhIG5ld2xpbmUuCi0rZWNobyA+IGNvbmZkZWZzLmgKLSAKLS1hY190b29sX3ByZWZpeD0KLS10ZXN0IC1uICIkaG9zdF9hbGlhcyIgJiYgYWNfdG9vbF9wcmVmaXg9JGhvc3RfYWxpYXMtCi0rIyBBIGZpbGVuYW1lIHVuaXF1ZSB0byB0aGlzIHBhY2thZ2UsIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnkgdGhhdAotKyMgY29uZmlndXJlIGlzIGluLCB3aGljaCB3ZSBjYW4gbG9vayBmb3IgdG8gZmluZCBvdXQgaWYgc3JjZGlyIGlzIGNvcnJlY3QuCi0rYWNfdW5pcXVlX2ZpbGU9aW5jbHVkZS9mbGl0ZS5oCi0gCi0tdGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYgZXhlYyA2Pi9kZXYvbnVsbAotLQotLQotICMgRmluZCB0aGUgc291cmNlIGZpbGVzLCBpZiBsb2NhdGlvbiB3YXMgbm90IHNwZWNpZmllZC4KLSBpZiB0ZXN0IC16ICIkc3JjZGlyIjsgdGhlbgotICAgYWNfc3JjZGlyX2RlZmF1bHRlZD15ZXMKLSAgICMgVHJ5IHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGlzIHNjcmlwdCwgdGhlbiBpdHMgcGFyZW50LgotLSAgYWNfY29uZmRpcj1gKGRpcm5hbWUgIiQwIikgMj4vZGV2L251bGwgfHwKLS0kYXNfZXhwciBYIiQwIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXAotLSAgICAgICAgIFgiJDAiIDogJ1hcKC8vXClbXi9dJyBcfCBcCi0tICAgICAgICAgWCIkMCIgOiAnWFwoLy9cKSQnIFx8IFwKLS0gICAgICAgICBYIiQwIiA6ICdYXCgvXCknIFx8IFwKLS0gICAgICAgICAuICAgICA6ICdcKC5cKScgMj4vZGV2L251bGwgfHwKLS1lY2hvIFgiJDAiIHwKLS0gICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sgcy8vXDEvOyBxOyB9Ci0tICAJICAvXlhcKFwvXC9cKVteL10uKi97IHMvL1wxLzsgcTsgfQotLSAgCSAgL15YXChcL1wvXCkkL3sgcy8vXDEvOyBxOyB9Ci0tICAJICAvXlhcKFwvXCkuKi97IHMvL1wxLzsgcTsgfQotLSAgCSAgcy8uKi8uLzsgcSdgCi0rICBhY19wcm9nPSQwCi0rICBhY19jb25mZGlyPWBlY2hvICRhY19wcm9nfHNlZCAncyUvW14vXVteL10qJCUlJ2AKLSsgIHRlc3QgIngkYWNfY29uZmRpciIgPSAieCRhY19wcm9nIiAmJiBhY19jb25mZGlyPS4KLSAgIHNyY2Rpcj0kYWNfY29uZmRpcgotICAgaWYgdGVzdCAhIC1yICRzcmNkaXIvJGFjX3VuaXF1ZV9maWxlOyB0aGVuCi0gICAgIHNyY2Rpcj0uLgotQEAgLTcyNiw0NDEgKzQ4MSwxMyBAQAotIGZpCi0gaWYgdGVzdCAhIC1yICRzcmNkaXIvJGFjX3VuaXF1ZV9maWxlOyB0aGVuCi0gICBpZiB0ZXN0ICIkYWNfc3JjZGlyX2RlZmF1bHRlZCIgPSB5ZXM7IHRoZW4KLS0gICAgeyBlY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZmluZCBzb3VyY2VzICgkYWNfdW5pcXVlX2ZpbGUpIGluICRhY19jb25mZGlyIG9yIC4uIiA+JjIKLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSsgICAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBjYW4gbm90IGZpbmQgc291cmNlcyBpbiAkYWNfY29uZmRpciBvciAuLiIgMT4mMjsgZXhpdCAxOyB9Ci0gICBlbHNlCi0tICAgIHsgZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGZpbmQgc291cmNlcyAoJGFjX3VuaXF1ZV9maWxlKSBpbiAkc3JjZGlyIiA+JjIKLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSsgICAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBjYW4gbm90IGZpbmQgc291cmNlcyBpbiAkc3JjZGlyIiAxPiYyOyBleGl0IDE7IH0KLSAgIGZpCi0gZmkKLS0oY2QgJHNyY2RpciAmJiB0ZXN0IC1yIC4vJGFjX3VuaXF1ZV9maWxlKSAyPi9kZXYvbnVsbCB8fAotLSAgeyBlY2hvICIkYXNfbWU6IGVycm9yOiBzb3VyY2VzIGFyZSBpbiAkc3JjZGlyLCBidXQgXGBjZCAkc3JjZGlyJyBkb2VzIG5vdCB3b3JrIiA+JjIKLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLS1zcmNkaXI9YGVjaG8gIiRzcmNkaXIiIHwgc2VkICdzJVwoW15cXC9dXClbXFwvXSokJVwxJSdgCi0tYWNfZW52X2J1aWxkX2FsaWFzX3NldD0ke2J1aWxkX2FsaWFzK3NldH0KLS1hY19lbnZfYnVpbGRfYWxpYXNfdmFsdWU9JGJ1aWxkX2FsaWFzCi0tYWNfY3ZfZW52X2J1aWxkX2FsaWFzX3NldD0ke2J1aWxkX2FsaWFzK3NldH0KLS1hY19jdl9lbnZfYnVpbGRfYWxpYXNfdmFsdWU9JGJ1aWxkX2FsaWFzCi0tYWNfZW52X2hvc3RfYWxpYXNfc2V0PSR7aG9zdF9hbGlhcytzZXR9Ci0tYWNfZW52X2hvc3RfYWxpYXNfdmFsdWU9JGhvc3RfYWxpYXMKLS1hY19jdl9lbnZfaG9zdF9hbGlhc19zZXQ9JHtob3N0X2FsaWFzK3NldH0KLS1hY19jdl9lbnZfaG9zdF9hbGlhc192YWx1ZT0kaG9zdF9hbGlhcwotLWFjX2Vudl90YXJnZXRfYWxpYXNfc2V0PSR7dGFyZ2V0X2FsaWFzK3NldH0KLS1hY19lbnZfdGFyZ2V0X2FsaWFzX3ZhbHVlPSR0YXJnZXRfYWxpYXMKLS1hY19jdl9lbnZfdGFyZ2V0X2FsaWFzX3NldD0ke3RhcmdldF9hbGlhcytzZXR9Ci0tYWNfY3ZfZW52X3RhcmdldF9hbGlhc192YWx1ZT0kdGFyZ2V0X2FsaWFzCi0tYWNfZW52X0NDX3NldD0ke0NDK3NldH0KLS1hY19lbnZfQ0NfdmFsdWU9JENDCi0tYWNfY3ZfZW52X0NDX3NldD0ke0NDK3NldH0KLS1hY19jdl9lbnZfQ0NfdmFsdWU9JENDCi0tYWNfZW52X0NGTEFHU19zZXQ9JHtDRkxBR1Mrc2V0fQotLWFjX2Vudl9DRkxBR1NfdmFsdWU9JENGTEFHUwotLWFjX2N2X2Vudl9DRkxBR1Nfc2V0PSR7Q0ZMQUdTK3NldH0KLS1hY19jdl9lbnZfQ0ZMQUdTX3ZhbHVlPSRDRkxBR1MKLS1hY19lbnZfTERGTEFHU19zZXQ9JHtMREZMQUdTK3NldH0KLS1hY19lbnZfTERGTEFHU192YWx1ZT0kTERGTEFHUwotLWFjX2N2X2Vudl9MREZMQUdTX3NldD0ke0xERkxBR1Mrc2V0fQotLWFjX2N2X2Vudl9MREZMQUdTX3ZhbHVlPSRMREZMQUdTCi0tYWNfZW52X0NQUEZMQUdTX3NldD0ke0NQUEZMQUdTK3NldH0KLS1hY19lbnZfQ1BQRkxBR1NfdmFsdWU9JENQUEZMQUdTCi0tYWNfY3ZfZW52X0NQUEZMQUdTX3NldD0ke0NQUEZMQUdTK3NldH0KLS1hY19jdl9lbnZfQ1BQRkxBR1NfdmFsdWU9JENQUEZMQUdTCi0tYWNfZW52X0NQUF9zZXQ9JHtDUFArc2V0fQotLWFjX2Vudl9DUFBfdmFsdWU9JENQUAotLWFjX2N2X2Vudl9DUFBfc2V0PSR7Q1BQK3NldH0KLS1hY19jdl9lbnZfQ1BQX3ZhbHVlPSRDUFAKLStzcmNkaXI9YGVjaG8gIiR7c3JjZGlyfSIgfCBzZWQgJ3MlXChbXi9dXCkvKiQlXDElJ2AKLSAKLS0jCi0tIyBSZXBvcnQgdGhlIC0taGVscCBtZXNzYWdlLgotLSMKLS1pZiB0ZXN0ICIkYWNfaW5pdF9oZWxwIiA9ICJsb25nIjsgdGhlbgotLSAgIyBPbWl0IHNvbWUgaW50ZXJuYWwgb3Igb2Jzb2xldGUgb3B0aW9ucyB0byBtYWtlIHRoZSBsaXN0IGxlc3MgaW1wb3NpbmcuCi0tICAjIFRoaXMgbWVzc2FnZSBpcyB0b28gbG9uZyB0byBiZSBhIHN0cmluZyBpbiB0aGUgQS9VWCAzLjEgc2guCi0tICBjYXQgPDxfQUNFT0YKLS1cYGNvbmZpZ3VyZScgY29uZmlndXJlcyB0aGlzIHBhY2thZ2UgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1zLgotLQotLVVzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgotLQotLVRvIGFzc2lnbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGUuZy4sIENDLCBDRkxBR1MuLi4pLCBzcGVjaWZ5IHRoZW0gYXMKLS1WQVI9VkFMVUUuICBTZWUgYmVsb3cgZm9yIGRlc2NyaXB0aW9ucyBvZiBzb21lIG9mIHRoZSB1c2VmdWwgdmFyaWFibGVzLgotLQotLURlZmF1bHRzIGZvciB0aGUgb3B0aW9ucyBhcmUgc3BlY2lmaWVkIGluIGJyYWNrZXRzLgotLQotLUNvbmZpZ3VyYXRpb246Ci0tICAtaCwgLS1oZWxwICAgICAgICAgICAgICBkaXNwbGF5IHRoaXMgaGVscCBhbmQgZXhpdAotLSAgICAgIC0taGVscD1zaG9ydCAgICAgICAgZGlzcGxheSBvcHRpb25zIHNwZWNpZmljIHRvIHRoaXMgcGFja2FnZQotLSAgICAgIC0taGVscD1yZWN1cnNpdmUgICAgZGlzcGxheSB0aGUgc2hvcnQgaGVscCBvZiBhbGwgdGhlIGluY2x1ZGVkIHBhY2thZ2VzCi0tICAtViwgLS12ZXJzaW9uICAgICAgICAgICBkaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQKLS0gIC1xLCAtLXF1aWV0LCAtLXNpbGVudCAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5nLi4uJyBtZXNzYWdlcwotLSAgICAgIC0tY2FjaGUtZmlsZT1GSUxFICAgY2FjaGUgdGVzdCByZXN1bHRzIGluIEZJTEUgW2Rpc2FibGVkXQotLSAgLUMsIC0tY29uZmlnLWNhY2hlICAgICAgYWxpYXMgZm9yIFxgLS1jYWNoZS1maWxlPWNvbmZpZy5jYWNoZScKLS0gIC1uLCAtLW5vLWNyZWF0ZSAgICAgICAgIGRvIG5vdCBjcmVhdGUgb3V0cHV0IGZpbGVzCi0tICAgICAgLS1zcmNkaXI9RElSICAgICAgICBmaW5kIHRoZSBzb3VyY2VzIGluIERJUiBbY29uZmlndXJlIGRpciBvciBcYC4uJ10KLS0KLS1fQUNFT0YKLS0KLS0gIGNhdCA8PF9BQ0VPRgotLUluc3RhbGxhdGlvbiBkaXJlY3RvcmllczoKLS0gIC0tcHJlZml4PVBSRUZJWCAgICAgICAgIGluc3RhbGwgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGZpbGVzIGluIFBSRUZJWAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgWyRhY19kZWZhdWx0X3ByZWZpeF0KLS0gIC0tZXhlYy1wcmVmaXg9RVBSRUZJWCAgIGluc3RhbGwgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBmaWxlcyBpbiBFUFJFRklYCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBbUFJFRklYXQotLQotLUJ5IGRlZmF1bHQsIFxgbWFrZSBpbnN0YWxsJyB3aWxsIGluc3RhbGwgYWxsIHRoZSBmaWxlcyBpbgotLVxgJGFjX2RlZmF1bHRfcHJlZml4L2JpbicsIFxgJGFjX2RlZmF1bHRfcHJlZml4L2xpYicgZXRjLiAgWW91IGNhbiBzcGVjaWZ5Ci0tYW4gaW5zdGFsbGF0aW9uIHByZWZpeCBvdGhlciB0aGFuIFxgJGFjX2RlZmF1bHRfcHJlZml4JyB1c2luZyBcYC0tcHJlZml4JywKLS1mb3IgaW5zdGFuY2UgXGAtLXByZWZpeD1cJEhPTUUnLgotLQotLUZvciBiZXR0ZXIgY29udHJvbCwgdXNlIHRoZSBvcHRpb25zIGJlbG93LgotLQotLUZpbmUgdHVuaW5nIG9mIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3JpZXM6Ci0tICAtLWJpbmRpcj1ESVIgICAgICAgICAgIHVzZXIgZXhlY3V0YWJsZXMgW0VQUkVGSVgvYmluXQotLSAgLS1zYmluZGlyPURJUiAgICAgICAgICBzeXN0ZW0gYWRtaW4gZXhlY3V0YWJsZXMgW0VQUkVGSVgvc2Jpbl0KLS0gIC0tbGliZXhlY2Rpcj1ESVIgICAgICAgcHJvZ3JhbSBleGVjdXRhYmxlcyBbRVBSRUZJWC9saWJleGVjXQotLSAgLS1kYXRhZGlyPURJUiAgICAgICAgICByZWFkLW9ubHkgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEgW1BSRUZJWC9zaGFyZV0KLS0gIC0tc3lzY29uZmRpcj1ESVIgICAgICAgcmVhZC1vbmx5IHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC9ldGNdCi0tICAtLXNoYXJlZHN0YXRlZGlyPURJUiAgIG1vZGlmaWFibGUgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEgW1BSRUZJWC9jb21dCi0tICAtLWxvY2Fsc3RhdGVkaXI9RElSICAgIG1vZGlmaWFibGUgc2luZ2xlLW1hY2hpbmUgZGF0YSBbUFJFRklYL3Zhcl0KLS0gIC0tbGliZGlyPURJUiAgICAgICAgICAgb2JqZWN0IGNvZGUgbGlicmFyaWVzIFtFUFJFRklYL2xpYl0KLS0gIC0taW5jbHVkZWRpcj1ESVIgICAgICAgQyBoZWFkZXIgZmlsZXMgW1BSRUZJWC9pbmNsdWRlXQotLSAgLS1vbGRpbmNsdWRlZGlyPURJUiAgICBDIGhlYWRlciBmaWxlcyBmb3Igbm9uLWdjYyBbL3Vzci9pbmNsdWRlXQotLSAgLS1pbmZvZGlyPURJUiAgICAgICAgICBpbmZvIGRvY3VtZW50YXRpb24gW1BSRUZJWC9pbmZvXQotLSAgLS1tYW5kaXI9RElSICAgICAgICAgICBtYW4gZG9jdW1lbnRhdGlvbiBbUFJFRklYL21hbl0KLS1fQUNFT0YKLS0KLS0gIGNhdCA8PFxfQUNFT0YKLS0KLS1TeXN0ZW0gdHlwZXM6Ci0tICAtLWJ1aWxkPUJVSUxEICAgICBjb25maWd1cmUgZm9yIGJ1aWxkaW5nIG9uIEJVSUxEIFtndWVzc2VkXQotLSAgLS1ob3N0PUhPU1QgICAgICAgY3Jvc3MtY29tcGlsZSB0byBidWlsZCBwcm9ncmFtcyB0byBydW4gb24gSE9TVCBbQlVJTERdCi0tICAtLXRhcmdldD1UQVJHRVQgICBjb25maWd1cmUgZm9yIGJ1aWxkaW5nIGNvbXBpbGVycyBmb3IgVEFSR0VUIFtIT1NUXQotLV9BQ0VPRgotLWZpCi0tCi0taWYgdGVzdCAtbiAiJGFjX2luaXRfaGVscCI7IHRoZW4KLS0KLS0gIGNhdCA8PFxfQUNFT0YKLS0KLS1PcHRpb25hbCBGZWF0dXJlczoKLS0gIC0tZGlzYWJsZS1GRUFUVVJFICAgICAgIGRvIG5vdCBpbmNsdWRlIEZFQVRVUkUgKHNhbWUgYXMgLS1lbmFibGUtRkVBVFVSRT1ubykKLS0gIC0tZW5hYmxlLUZFQVRVUkVbPUFSR10gIGluY2x1ZGUgRkVBVFVSRSBbQVJHPXllc10KLS0gIC0tZGlzYWJsZS1zaGFyZWQgICAgIHdpdGhvdXQgc2hhcmVkIGxpYnJhcnkgc3VwcG9ydAotLSAgLS1kaXNhYmxlLXNvY2tldHMgICAgIHdpdGhvdXQgc29ja2V0IHN1cHBvcnQKLS0KLS1PcHRpb25hbCBQYWNrYWdlczoKLS0gIC0td2l0aC1QQUNLQUdFWz1BUkddICAgIHVzZSBQQUNLQUdFIFtBUkc9eWVzXQotLSAgLS13aXRob3V0LVBBQ0tBR0UgICAgICAgZG8gbm90IHVzZSBQQUNLQUdFIChzYW1lIGFzIC0td2l0aC1QQUNLQUdFPW5vKQotLSAgLS13aXRoLWF1ZGlvICAgICAgICAgIHdpdGggc3BlY2lmaWMgYXVkaW8gc3VwcG9ydCAobm9uZSBsaW51eCBmcmVlYnNkIGV0YykKLS0gIC0td2l0aC1sYW5nICAgICAgICAgICB3aXRoIGxhbmd1YWdlCi0tICAtLXdpdGgtdm94ICAgICAgICAgICAgd2l0aCB2b3gKLS0gIC0td2l0aC1sZXggICAgICAgICAgICB3aXRoIGxleGljb24KLS0KLS1Tb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKLS0gIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAotLSAgQ0ZMQUdTICAgICAgQyBjb21waWxlciBmbGFncwotLSAgTERGTEFHUyAgICAgbGlua2VyIGZsYWdzLCBlLmcuIC1MPGxpYiBkaXI+IGlmIHlvdSBoYXZlIGxpYnJhcmllcyBpbiBhCi0tICAgICAgICAgICAgICBub25zdGFuZGFyZCBkaXJlY3RvcnkgPGxpYiBkaXI+Ci0tICBDUFBGTEFHUyAgICBDL0MrKyBwcmVwcm9jZXNzb3IgZmxhZ3MsIGUuZy4gLUk8aW5jbHVkZSBkaXI+IGlmIHlvdSBoYXZlCi0tICAgICAgICAgICAgICBoZWFkZXJzIGluIGEgbm9uc3RhbmRhcmQgZGlyZWN0b3J5IDxpbmNsdWRlIGRpcj4KLS0gIENQUCAgICAgICAgIEMgcHJlcHJvY2Vzc29yCi0tCi0tVXNlIHRoZXNlIHZhcmlhYmxlcyB0byBvdmVycmlkZSB0aGUgY2hvaWNlcyBtYWRlIGJ5IGBjb25maWd1cmUnIG9yIHRvIGhlbHAKLS1pdCB0byBmaW5kIGxpYnJhcmllcyBhbmQgcHJvZ3JhbXMgd2l0aCBub25zdGFuZGFyZCBuYW1lcy9sb2NhdGlvbnMuCi0tCi0tX0FDRU9GCi0tZmkKLS0KLS1pZiB0ZXN0ICIkYWNfaW5pdF9oZWxwIiA9ICJyZWN1cnNpdmUiOyB0aGVuCi0tICAjIElmIHRoZXJlIGFyZSBzdWJkaXJzLCByZXBvcnQgdGhlaXIgc3BlY2lmaWMgLS1oZWxwLgotLSAgYWNfcG9wZGlyPWBwd2RgCi0tICBmb3IgYWNfZGlyIGluIDogJGFjX3N1YmRpcnNfYWxsOyBkbyB0ZXN0ICJ4JGFjX2RpciIgPSB4OiAmJiBjb250aW51ZQotLSAgICB0ZXN0IC1kICRhY19kaXIgfHwgY29udGludWUKLS0gICAgYWNfYnVpbGRkaXI9LgotLQotLWlmIHRlc3QgIiRhY19kaXIiICE9IC47IHRoZW4KLS0gIGFjX2Rpcl9zdWZmaXg9L2BlY2hvICIkYWNfZGlyIiB8IHNlZCAncyxeXC5bXFwvXSwsJ2AKLS0gICMgQSAiLi4vIiBmb3IgZWFjaCBkaXJlY3RvcnkgaW4gJGFjX2Rpcl9zdWZmaXguCi0tICBhY190b3BfYnVpbGRkaXI9YGVjaG8gIiRhY19kaXJfc3VmZml4IiB8IHNlZCAncywvW15cXC9dKiwuLi8sZydgCi0tZWxzZQotLSAgYWNfZGlyX3N1ZmZpeD0gYWNfdG9wX2J1aWxkZGlyPQotLWZpCi0tCi0tY2FzZSAkc3JjZGlyIGluCi0tICAuKSAgIyBObyAtLXNyY2RpciBvcHRpb24uICBXZSBhcmUgYnVpbGRpbmcgaW4gcGxhY2UuCi0tICAgIGFjX3NyY2Rpcj0uCi0tICAgIGlmIHRlc3QgLXogIiRhY190b3BfYnVpbGRkaXIiOyB0aGVuCi0tICAgICAgIGFjX3RvcF9zcmNkaXI9LgotLSAgICBlbHNlCi0tICAgICAgIGFjX3RvcF9zcmNkaXI9YGVjaG8gJGFjX3RvcF9idWlsZGRpciB8IHNlZCAncywvJCwsJ2AKLS0gICAgZmkgOzsKLS0gIFtcXC9dKiB8ID86W1xcL10qICkgICMgQWJzb2x1dGUgcGF0aC4KLS0gICAgYWNfc3JjZGlyPSRzcmNkaXIkYWNfZGlyX3N1ZmZpeDsKLS0gICAgYWNfdG9wX3NyY2Rpcj0kc3JjZGlyIDs7Ci0tICAqKSAjIFJlbGF0aXZlIHBhdGguCi0tICAgIGFjX3NyY2Rpcj0kYWNfdG9wX2J1aWxkZGlyJHNyY2RpciRhY19kaXJfc3VmZml4Ci0tICAgIGFjX3RvcF9zcmNkaXI9JGFjX3RvcF9idWlsZGRpciRzcmNkaXIgOzsKLS1lc2FjCi0tIyBEb24ndCBibGluZGx5IHBlcmZvcm0gYSBgY2QgIiRhY19kaXIiLyRhY19mb28gJiYgcHdkYCBzaW5jZSAkYWNfZm9vIGNhbiBiZQotLSMgYWJzb2x1dGUuCi0tYWNfYWJzX2J1aWxkZGlyPWBjZCAiJGFjX2RpciIgJiYgY2QgJGFjX2J1aWxkZGlyICYmIHB3ZGAKLS1hY19hYnNfdG9wX2J1aWxkZGlyPWBjZCAiJGFjX2RpciIgJiYgY2QgJHthY190b3BfYnVpbGRkaXJ9LiAmJiBwd2RgCi0tYWNfYWJzX3NyY2Rpcj1gY2QgIiRhY19kaXIiICYmIGNkICRhY19zcmNkaXIgJiYgcHdkYAotLWFjX2Fic190b3Bfc3JjZGlyPWBjZCAiJGFjX2RpciIgJiYgY2QgJGFjX3RvcF9zcmNkaXIgJiYgcHdkYAotLQotLSAgICBjZCAkYWNfZGlyCi0tICAgICMgQ2hlY2sgZm9yIGd1ZXN0ZWQgY29uZmlndXJlOyBvdGhlcndpc2UgZ2V0IEN5Z251cyBzdHlsZSBjb25maWd1cmUuCi0tICAgIGlmIHRlc3QgLWYgJGFjX3NyY2Rpci9jb25maWd1cmUuZ251OyB0aGVuCi0tICAgICAgZWNobwotLSAgICAgICRTSEVMTCAkYWNfc3JjZGlyL2NvbmZpZ3VyZS5nbnUgIC0taGVscD1yZWN1cnNpdmUKLS0gICAgZWxpZiB0ZXN0IC1mICRhY19zcmNkaXIvY29uZmlndXJlOyB0aGVuCi0tICAgICAgZWNobwotLSAgICAgICRTSEVMTCAkYWNfc3JjZGlyL2NvbmZpZ3VyZSAgLS1oZWxwPXJlY3Vyc2l2ZQotLSAgICBlbGlmIHRlc3QgLWYgJGFjX3NyY2Rpci9jb25maWd1cmUuYWMgfHwKLS0gICAgICAgICAgIHRlc3QgLWYgJGFjX3NyY2Rpci9jb25maWd1cmUuaW47IHRoZW4KLS0gICAgICBlY2hvCi0tICAgICAgJGFjX2NvbmZpZ3VyZSAtLWhlbHAKLS0gICAgZWxzZQotLSAgICAgIGVjaG8gIiRhc19tZTogV0FSTklORzogbm8gY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBpcyBpbiAkYWNfZGlyIiA+JjIKLS0gICAgZmkKLS0gICAgY2QgJGFjX3BvcGRpcgotLSAgZG9uZQotLWZpCi0tCi0tdGVzdCAtbiAiJGFjX2luaXRfaGVscCIgJiYgZXhpdCAwCi0taWYgJGFjX2luaXRfdmVyc2lvbjsgdGhlbgotLSAgY2F0IDw8XF9BQ0VPRgotLQotLUNvcHlyaWdodCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyCi0tRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tVGhpcyBjb25maWd1cmUgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLS1naXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuCi0tX0FDRU9GCi0tICBleGl0IDAKLS1maQotLWV4ZWMgNT5jb25maWcubG9nCi0tY2F0ID4mNSA8PF9BQ0VPRgotLVRoaXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlCi0tcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KLS0KLS1JdCB3YXMgY3JlYXRlZCBieSAkYXNfbWUsIHdoaWNoIHdhcwotLWdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi41Ny4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcwotLQotLSAgJCAkMCAkQAotLQotLV9BQ0VPRgotLXsKLS1jYXQgPDxfQVNVTkFNRQotLSMjIC0tLS0tLS0tLSAjIwotLSMjIFBsYXRmb3JtLiAjIwotLSMjIC0tLS0tLS0tLSAjIwotLQotLWhvc3RuYW1lID0gYChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgCi0tdW5hbWUgLW0gPSBgKHVuYW1lIC1tKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCi0tdW5hbWUgLXIgPSBgKHVuYW1lIC1yKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCi0tdW5hbWUgLXMgPSBgKHVuYW1lIC1zKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCi0tdW5hbWUgLXYgPSBgKHVuYW1lIC12KSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCi0tCi0tL3Vzci9iaW4vdW5hbWUgLXAgPSBgKC91c3IvYmluL3VuYW1lIC1wKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCi0tL2Jpbi91bmFtZSAtWCAgICAgPSBgKC9iaW4vdW5hbWUgLVgpIDI+L2Rldi9udWxsICAgICB8fCBlY2hvIHVua25vd25gCi0tCi0tL2Jpbi9hcmNoICAgICAgICAgICAgICA9IGAoL2Jpbi9hcmNoKSAyPi9kZXYvbnVsbCAgICAgICAgICAgICAgfHwgZWNobyB1bmtub3duYAotLS91c3IvYmluL2FyY2ggLWsgICAgICAgPSBgKC91c3IvYmluL2FyY2ggLWspIDI+L2Rldi9udWxsICAgICAgIHx8IGVjaG8gdW5rbm93bmAKLS0vdXNyL2NvbnZleC9nZXRzeXNpbmZvID0gYCgvdXNyL2NvbnZleC9nZXRzeXNpbmZvKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCi0taG9zdGluZm8gICAgICAgICAgICAgICA9IGAoaG9zdGluZm8pIDI+L2Rldi9udWxsICAgICAgICAgICAgICAgfHwgZWNobyB1bmtub3duYAotLS9iaW4vbWFjaGluZSAgICAgICAgICAgPSBgKC9iaW4vbWFjaGluZSkgMj4vZGV2L251bGwgICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKLS0vdXNyL2Jpbi9vc2xldmVsICAgICAgID0gYCgvdXNyL2Jpbi9vc2xldmVsKSAyPi9kZXYvbnVsbCAgICAgICB8fCBlY2hvIHVua25vd25gCi0tL2Jpbi91bml2ZXJzZSAgICAgICAgICA9IGAoL2Jpbi91bml2ZXJzZSkgMj4vZGV2L251bGwgICAgICAgICAgfHwgZWNobyB1bmtub3duYAotLQotLV9BU1VOQU1FCi0tCi0tYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotLWZvciBhc19kaXIgaW4gJFBBVEgKLS1kbwotLSAgSUZTPSRhc19zYXZlX0lGUwotLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLS0gIGVjaG8gIlBBVEg6ICRhc19kaXIiCi0tZG9uZQotLQotLX0gPiY1Ci0tCi0tY2F0ID4mNSA8PF9BQ0VPRgotLQotLQotLSMjIC0tLS0tLS0tLS0tICMjCi0tIyMgQ29yZSB0ZXN0cy4gIyMKLS0jIyAtLS0tLS0tLS0tLSAjIwotLQotLV9BQ0VPRgotLQotLQotLSMgS2VlcCBhIHRyYWNlIG9mIHRoZSBjb21tYW5kIGxpbmUuCi0tIyBTdHJpcCBvdXQgLS1uby1jcmVhdGUgYW5kIC0tbm8tcmVjdXJzaW9uIHNvIHRoZXkgZG8gbm90IHBpbGUgdXAuCi0tIyBTdHJpcCBvdXQgLS1zaWxlbnQgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIHJlY29yZCBpdCBmb3IgZnV0dXJlIHJ1bnMuCi0tIyBBbHNvIHF1b3RlIGFueSBhcmdzIGNvbnRhaW5pbmcgc2hlbGwgbWV0YS1jaGFyYWN0ZXJzLgotLSMgTWFrZSB0d28gcGFzc2VzIHRvIGFsbG93IGZvciBwcm9wZXIgZHVwbGljYXRlLWFyZ3VtZW50IHN1cHByZXNzaW9uLgotLWFjX2NvbmZpZ3VyZV9hcmdzPQotLWFjX2NvbmZpZ3VyZV9hcmdzMD0KLS1hY19jb25maWd1cmVfYXJnczE9Ci0tYWNfc2VwPQotLWFjX211c3Rfa2VlcF9uZXh0PWZhbHNlCi0tZm9yIGFjX3Bhc3MgaW4gMSAyCi0tZG8KLS0gIGZvciBhY19hcmcKLS0gIGRvCi0tICAgIGNhc2UgJGFjX2FyZyBpbgotLSAgICAtbm8tY3JlYXRlIHwgLS1uby1jKiB8IC1uIHwgLW5vLXJlY3Vyc2lvbiB8IC0tbm8tciopIGNvbnRpbnVlIDs7Ci0tICAgIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBcCi0tICAgIHwgLXNpbGVudCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0tc2lsZSB8IC0tc2lsKQotLSAgICAgIGNvbnRpbnVlIDs7Ci0tICAgICoiICIqfCoiCSIqfCpbXFtcXVx+XCNcJFxeXCZcKlwoXClce1x9XFxcfFw7XDxcPlw/XCJcJ10qKQotLSAgICAgIGFjX2FyZz1gZWNobyAiJGFjX2FyZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImAgOzsKLS0gICAgZXNhYwotLSAgICBjYXNlICRhY19wYXNzIGluCi0tICAgIDEpIGFjX2NvbmZpZ3VyZV9hcmdzMD0iJGFjX2NvbmZpZ3VyZV9hcmdzMCAnJGFjX2FyZyciIDs7Ci0tICAgIDIpCi0tICAgICAgYWNfY29uZmlndXJlX2FyZ3MxPSIkYWNfY29uZmlndXJlX2FyZ3MxICckYWNfYXJnJyIKLS0gICAgICBpZiB0ZXN0ICRhY19tdXN0X2tlZXBfbmV4dCA9IHRydWU7IHRoZW4KLS0gICAgICAgIGFjX211c3Rfa2VlcF9uZXh0PWZhbHNlICMgR290IHZhbHVlLCBiYWNrIHRvIG5vcm1hbC4KLS0gICAgICBlbHNlCi0tICAgICAgICBjYXNlICRhY19hcmcgaW4KLS0gICAgICAgICAgKj0qIHwgLS1jb25maWctY2FjaGUgfCAtQyB8IC1kaXNhYmxlLSogfCAtLWRpc2FibGUtKiBcCi0tICAgICAgICAgIHwgLWVuYWJsZS0qIHwgLS1lbmFibGUtKiB8IC1nYXMgfCAtLWcqIHwgLW5mcCB8IC0tbmYqIFwKLS0gICAgICAgICAgfCAtcSB8IC1xdWlldCB8IC0tcSogfCAtc2lsZW50IHwgLS1zaWwqIHwgLXYgfCAtdmVyYiogXAotLSAgICAgICAgICB8IC13aXRoLSogfCAtLXdpdGgtKiB8IC13aXRob3V0LSogfCAtLXdpdGhvdXQtKiB8IC0teCkKLS0gICAgICAgICAgICBjYXNlICIkYWNfY29uZmlndXJlX2FyZ3MwICIgaW4KLS0gICAgICAgICAgICAgICIkYWNfY29uZmlndXJlX2FyZ3MxIioiICckYWNfYXJnJyAiKiApIGNvbnRpbnVlIDs7Ci0tICAgICAgICAgICAgZXNhYwotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICAgIC0qICkgYWNfbXVzdF9rZWVwX25leHQ9dHJ1ZSA7OwotLSAgICAgICAgZXNhYwotLSAgICAgIGZpCi0tICAgICAgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyRhY19zZXAnJGFjX2FyZyciCi0tICAgICAgIyBHZXQgcmlkIG9mIHRoZSBsZWFkaW5nIHNwYWNlLgotLSAgICAgIGFjX3NlcD0iICIKLS0gICAgICA7OwotLSAgICBlc2FjCi0tICBkb25lCi0tZG9uZQotLSRhc191bnNldCBhY19jb25maWd1cmVfYXJnczAgfHwgdGVzdCAiJHthY19jb25maWd1cmVfYXJnczArc2V0fSIgIT0gc2V0IHx8IHsgYWNfY29uZmlndXJlX2FyZ3MwPTsgZXhwb3J0IGFjX2NvbmZpZ3VyZV9hcmdzMDsgfQotLSRhc191bnNldCBhY19jb25maWd1cmVfYXJnczEgfHwgdGVzdCAiJHthY19jb25maWd1cmVfYXJnczErc2V0fSIgIT0gc2V0IHx8IHsgYWNfY29uZmlndXJlX2FyZ3MxPTsgZXhwb3J0IGFjX2NvbmZpZ3VyZV9hcmdzMTsgfQotLQotLSMgV2hlbiBpbnRlcnJ1cHRlZCBvciBleGl0J2QsIGNsZWFudXAgdGVtcG9yYXJ5IGZpbGVzLCBhbmQgY29tcGxldGUKLS0jIGNvbmZpZy5sb2cuICBXZSByZW1vdmUgY29tbWVudHMgYmVjYXVzZSBhbnl3YXkgdGhlIHF1b3RlcyBpbiB0aGVyZQotLSMgd291bGQgY2F1c2UgcHJvYmxlbXMgb3IgbG9vayB1Z2x5LgotLSMgV0FSTklORzogQmUgc3VyZSBub3QgdG8gdXNlIHNpbmdsZSBxdW90ZXMgaW4gdGhlcmUsIGFzIHNvbWUgc2hlbGxzLAotLSMgc3VjaCBhcyBvdXIgRFUgNS4wIGZyaWVuZCwgd2lsbCB0aGVuIGBjbG9zZScgdGhlIHRyYXAuCi0tdHJhcCAnZXhpdF9zdGF0dXM9JD8KLS0gICMgU2F2ZSBpbnRvIGNvbmZpZy5sb2cgc29tZSBpbmZvcm1hdGlvbiB0aGF0IG1pZ2h0IGhlbHAgaW4gZGVidWdnaW5nLgotLSAgewotLSAgICBlY2hvCi0tCi0tICAgIGNhdCA8PFxfQVNCT1gKLS0jIyAtLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgQ2FjaGUgdmFyaWFibGVzLiAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKLS1fQVNCT1gKLS0gICAgZWNobwotLSAgICAjIFRoZSBmb2xsb3dpbmcgd2F5IG9mIHdyaXRpbmcgdGhlIGNhY2hlIG1pc2hhbmRsZXMgbmV3bGluZXMgaW4gdmFsdWVzLAotLXsKLS0gIChzZXQpIDI+JjEgfAotLSAgICBjYXNlIGAoYWNfc3BhY2U9JyInIicgJyInIic7IHNldCB8IGdyZXAgYWNfc3BhY2UpIDI+JjFgIGluCi0tICAgICphY19zcGFjZT1cICopCi0tICAgICAgc2VkIC1uIFwKLS0gICAgICAgICJzLyciJyInLyciJyInXFxcXCciJyInJyInIicvZzsKLS0gICAgCSAgcy9eXFwoW18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9hbG51bV0qXFwpPVxcKC4qXFwpL1xcMT0nIiciJ1xcMiciJyInL3AiCi0tICAgICAgOzsKLS0gICAgKikKLS0gICAgICBzZWQgLW4gXAotLSAgICAgICAgInMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKlxcKT1cXCguKlxcKS9cXDE9XFwyL3AiCi0tICAgICAgOzsKLS0gICAgZXNhYzsKLS19Ci0tICAgIGVjaG8KLS0KLS0gICAgY2F0IDw8XF9BU0JPWAotLSMjIC0tLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgT3V0cHV0IHZhcmlhYmxlcy4gIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLSAjIwotLV9BU0JPWAotLSAgICBlY2hvCi0tICAgIGZvciBhY192YXIgaW4gJGFjX3N1YnN0X3ZhcnMKLS0gICAgZG8KLS0gICAgICBldmFsIGFjX3ZhbD0kYGVjaG8gJGFjX3ZhcmAKLS0gICAgICBlY2hvICIkYWNfdmFyPSciJyInJGFjX3ZhbCciJyInIgotLSAgICBkb25lIHwgc29ydAotLSAgICBlY2hvCi0tCi0tICAgIGlmIHRlc3QgLW4gIiRhY19zdWJzdF9maWxlcyI7IHRoZW4KLS0gICAgICBjYXQgPDxcX0FTQk9YCi0tIyMgLS0tLS0tLS0tLS0tLSAjIwotLSMjIE91dHB1dCBmaWxlcy4gIyMKLS0jIyAtLS0tLS0tLS0tLS0tICMjCi0tX0FTQk9YCi0tICAgICAgZWNobwotLSAgICAgIGZvciBhY192YXIgaW4gJGFjX3N1YnN0X2ZpbGVzCi0tICAgICAgZG8KLS0JZXZhbCBhY192YWw9JGBlY2hvICRhY192YXJgCi0tICAgICAgICBlY2hvICIkYWNfdmFyPSciJyInJGFjX3ZhbCciJyInIgotLSAgICAgIGRvbmUgfCBzb3J0Ci0tICAgICAgZWNobwotLSAgICBmaQotLQotLSAgICBpZiB0ZXN0IC1zIGNvbmZkZWZzLmg7IHRoZW4KLS0gICAgICBjYXQgPDxcX0FTQk9YCi0tIyMgLS0tLS0tLS0tLS0gIyMKLS0jIyBjb25mZGVmcy5oLiAjIwotLSMjIC0tLS0tLS0tLS0tICMjCi0tX0FTQk9YCi0tICAgICAgZWNobwotLSAgICAgIHNlZCAiL14kL2QiIGNvbmZkZWZzLmggfCBzb3J0Ci0tICAgICAgZWNobwotLSAgICBmaQotLSAgICB0ZXN0ICIkYWNfc2lnbmFsIiAhPSAwICYmCi0tICAgICAgZWNobyAiJGFzX21lOiBjYXVnaHQgc2lnbmFsICRhY19zaWduYWwiCi0tICAgIGVjaG8gIiRhc19tZTogZXhpdCAkZXhpdF9zdGF0dXMiCi0tICB9ID4mNQotLSAgcm0gLWYgY29yZSBjb3JlLiogKi5jb3JlICYmCi0tICBybSAtcmYgY29uZnRlc3QqIGNvbmZkZWZzKiBjb25mJCQqICRhY19jbGVhbl9maWxlcyAmJgotLSAgICBleGl0ICRleGl0X3N0YXR1cwotLSAgICAgJyAwCi0tZm9yIGFjX3NpZ25hbCBpbiAxIDIgMTMgMTU7IGRvCi0tICB0cmFwICdhY19zaWduYWw9JyRhY19zaWduYWwnOyB7IChleGl0IDEpOyBleGl0IDE7IH0nICRhY19zaWduYWwKLS1kb25lCi0tYWNfc2lnbmFsPTAKLS0KLS0jIGNvbmZkZWZzLmggYXZvaWRzIE9TIGNvbW1hbmQgbGluZSBsZW5ndGggbGltaXRzIHRoYXQgREVGUyBjYW4gZXhjZWVkLgotLXJtIC1yZiBjb25mdGVzdCogY29uZmRlZnMuaAotLSMgQUlYIGNwcCBsb3NlcyBvbiBhbiBlbXB0eSBmaWxlLCBzbyBtYWtlIHN1cmUgaXQgY29udGFpbnMgYXQgbGVhc3QgYSBuZXdsaW5lLgotLWVjaG8gPmNvbmZkZWZzLmgKLS0KLS0jIFByZWRlZmluZWQgcHJlcHJvY2Vzc29yIHZhcmlhYmxlcy4KLS0KLS1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0tI2RlZmluZSBQQUNLQUdFX05BTUUgIiRQQUNLQUdFX05BTUUiCi0tX0FDRU9GCi0tCi0tCi0tY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotLSNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICIkUEFDS0FHRV9UQVJOQU1FIgotLV9BQ0VPRgotLQotLQotLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLS0jZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAiJFBBQ0tBR0VfVkVSU0lPTiIKLS1fQUNFT0YKLS0KLS0KLS1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0tI2RlZmluZSBQQUNLQUdFX1NUUklORyAiJFBBQ0tBR0VfU1RSSU5HIgotLV9BQ0VPRgotLQotLQotLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLS0jZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICIkUEFDS0FHRV9CVUdSRVBPUlQiCi0tX0FDRU9GCi0tCi0tCi0tIyBMZXQgdGhlIHNpdGUgZmlsZSBzZWxlY3QgYW4gYWx0ZXJuYXRlIGNhY2hlIGZpbGUgaWYgaXQgd2FudHMgdG8uCi0gIyBQcmVmZXIgZXhwbGljaXRseSBzZWxlY3RlZCBmaWxlIHRvIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQgb25lcy4KLSBpZiB0ZXN0IC16ICIkQ09ORklHX1NJVEUiOyB0aGVuCi0gICBpZiB0ZXN0ICJ4JHByZWZpeCIgIT0geE5PTkU7IHRoZW4KLUBAIC0xMTcxLDEwNiArNDk4LDQyIEBACi0gZmkKLSBmb3IgYWNfc2l0ZV9maWxlIGluICRDT05GSUdfU0lURTsgZG8KLSAgIGlmIHRlc3QgLXIgIiRhY19zaXRlX2ZpbGUiOyB0aGVuCi0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGxvYWRpbmcgc2l0ZSBzY3JpcHQgJGFjX3NpdGVfZmlsZSIgPiY1Ci0tZWNobyAiJGFzX21lOiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUiID4mNjt9Ci0tICAgIHNlZCAncy9eL3wgLycgIiRhY19zaXRlX2ZpbGUiID4mNQotKyAgICBlY2hvICJsb2FkaW5nIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUiCi0gICAgIC4gIiRhY19zaXRlX2ZpbGUiCi0gICBmaQotIGRvbmUKLSAKLSBpZiB0ZXN0IC1yICIkY2FjaGVfZmlsZSI7IHRoZW4KLS0gICMgU29tZSB2ZXJzaW9ucyBvZiBiYXNoIHdpbGwgZmFpbCB0byBzb3VyY2UgL2Rldi9udWxsIChzcGVjaWFsCi0tICAjIGZpbGVzIGFjdHVhbGx5KSwgc28gd2UgYXZvaWQgZG9pbmcgdGhhdC4KLS0gIGlmIHRlc3QgLWYgIiRjYWNoZV9maWxlIjsgdGhlbgotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBsb2FkaW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjUKLS1lY2hvICIkYXNfbWU6IGxvYWRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9Ci0tICAgIGNhc2UgJGNhY2hlX2ZpbGUgaW4KLS0gICAgICBbXFwvXSogfCA/OltcXC9dKiApIC4gJGNhY2hlX2ZpbGU7OwotLSAgICAgICopICAgICAgICAgICAgICAgICAgICAgIC4gLi8kY2FjaGVfZmlsZTs7Ci0tICAgIGVzYWMKLS0gIGZpCi0rICBlY2hvICJsb2FkaW5nIGNhY2hlICRjYWNoZV9maWxlIgotKyAgLiAkY2FjaGVfZmlsZQotIGVsc2UKLS0gIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGNyZWF0aW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjUKLS1lY2hvICIkYXNfbWU6IGNyZWF0aW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQotLSAgPiRjYWNoZV9maWxlCi0rICBlY2hvICJjcmVhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIKLSsgID4gJGNhY2hlX2ZpbGUKLSBmaQotIAotLSMgQ2hlY2sgdGhhdCB0aGUgcHJlY2lvdXMgdmFyaWFibGVzIHNhdmVkIGluIHRoZSBjYWNoZSBoYXZlIGtlcHQgdGhlIHNhbWUKLS0jIHZhbHVlLgotLWFjX2NhY2hlX2NvcnJ1cHRlZD1mYWxzZQotLWZvciBhY192YXIgaW4gYChzZXQpIDI+JjEgfAotLSAgICAgICAgICAgICAgIHNlZCAtbiAncy9eYWNfZW52X1woW2EtekEtWl8wLTldKlwpX3NldD0uKi9cMS9wJ2A7IGRvCi0tICBldmFsIGFjX29sZF9zZXQ9XCRhY19jdl9lbnZfJHthY192YXJ9X3NldAotLSAgZXZhbCBhY19uZXdfc2V0PVwkYWNfZW52XyR7YWNfdmFyfV9zZXQKLS0gIGV2YWwgYWNfb2xkX3ZhbD0iXCRhY19jdl9lbnZfJHthY192YXJ9X3ZhbHVlIgotLSAgZXZhbCBhY19uZXdfdmFsPSJcJGFjX2Vudl8ke2FjX3Zhcn1fdmFsdWUiCi0tICBjYXNlICRhY19vbGRfc2V0LCRhY19uZXdfc2V0IGluCi0tICAgIHNldCwpCi0tICAgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IFxgJGFjX3Zhcicgd2FzIHNldCB0byBcYCRhY19vbGRfdmFsJyBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBcYCRhY192YXInIHdhcyBzZXQgdG8gXGAkYWNfb2xkX3ZhbCcgaW4gdGhlIHByZXZpb3VzIHJ1biIgPiYyO30KLS0gICAgICBhY19jYWNoZV9jb3JydXB0ZWQ9OiA7OwotLSAgICAsc2V0KQotLSAgICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBcYCRhY192YXInIHdhcyBub3Qgc2V0IGluIHRoZSBwcmV2aW91cyBydW4iID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IFxgJGFjX3Zhcicgd2FzIG5vdCBzZXQgaW4gdGhlIHByZXZpb3VzIHJ1biIgPiYyO30KLS0gICAgICBhY19jYWNoZV9jb3JydXB0ZWQ9OiA7OwotLSAgICAsKTs7Ci0tICAgICopCi0tICAgICAgaWYgdGVzdCAieCRhY19vbGRfdmFsIiAhPSAieCRhY19uZXdfdmFsIjsgdGhlbgotLSAgICAgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IFxgJGFjX3ZhcicgaGFzIGNoYW5nZWQgc2luY2UgdGhlIHByZXZpb3VzIHJ1bjoiID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IFxgJGFjX3ZhcicgaGFzIGNoYW5nZWQgc2luY2UgdGhlIHByZXZpb3VzIHJ1bjoiID4mMjt9Ci0tICAgICAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiAgIGZvcm1lciB2YWx1ZTogICRhY19vbGRfdmFsIiA+JjUKLS1lY2hvICIkYXNfbWU6ICAgZm9ybWVyIHZhbHVlOiAgJGFjX29sZF92YWwiID4mMjt9Ci0tICAgICAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiAgIGN1cnJlbnQgdmFsdWU6ICRhY19uZXdfdmFsIiA+JjUKLS1lY2hvICIkYXNfbWU6ICAgY3VycmVudCB2YWx1ZTogJGFjX25ld192YWwiID4mMjt9Ci0tICAgICAgICBhY19jYWNoZV9jb3JydXB0ZWQ9OgotLSAgICAgIGZpOzsKLS0gIGVzYWMKLS0gICMgUGFzcyBwcmVjaW91cyB2YXJpYWJsZXMgdG8gY29uZmlnLnN0YXR1cy4KLS0gIGlmIHRlc3QgIiRhY19uZXdfc2V0IiA9IHNldDsgdGhlbgotLSAgICBjYXNlICRhY19uZXdfdmFsIGluCi0tICAgICoiICIqfCoiCSIqfCpbXFtcXVx+XCNcJFxeXCZcKlwoXClce1x9XFxcfFw7XDxcPlw/XCJcJ10qKQotLSAgICAgIGFjX2FyZz0kYWNfdmFyPWBlY2hvICIkYWNfbmV3X3ZhbCIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImAgOzsKLS0gICAgKikgYWNfYXJnPSRhY192YXI9JGFjX25ld192YWwgOzsKLS0gICAgZXNhYwotLSAgICBjYXNlICIgJGFjX2NvbmZpZ3VyZV9hcmdzICIgaW4KLS0gICAgICAqIiAnJGFjX2FyZycgIiopIDs7ICMgQXZvaWQgZHVwcy4gIFVzZSBvZiBxdW90ZXMgZW5zdXJlcyBhY2N1cmFjeS4KLS0gICAgICAqKSBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzICckYWNfYXJnJyIgOzsKLS0gICAgZXNhYwotLSAgZmkKLS1kb25lCi0taWYgJGFjX2NhY2hlX2NvcnJ1cHRlZDsgdGhlbgotLSAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNoYW5nZXMgaW4gdGhlIGVudmlyb25tZW50IGNhbiBjb21wcm9taXNlIHRoZSBidWlsZCIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogY2hhbmdlcyBpbiB0aGUgZW52aXJvbm1lbnQgY2FuIGNvbXByb21pc2UgdGhlIGJ1aWxkIiA+JjI7fQotLSAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogcnVuIFxgbWFrZSBkaXN0Y2xlYW4nIGFuZC9vciBcYHJtICRjYWNoZV9maWxlJyBhbmQgc3RhcnQgb3ZlciIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogcnVuIFxgbWFrZSBkaXN0Y2xlYW4nIGFuZC9vciBcYHJtICRjYWNoZV9maWxlJyBhbmQgc3RhcnQgb3ZlciIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLS1maQotLQotIGFjX2V4dD1jCi0rIyBDRkxBR1MgaXMgbm90IGluIGFjX2NwcCBiZWNhdXNlIC1nLCAtTywgZXRjLiBhcmUgbm90IHZhbGlkIGNwcCBvcHRpb25zLgotIGFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCi0tYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotLWFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi0tYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQotK2FjX2NvbXBpbGU9JyR7Q0MtY2N9IC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgMT4mNScKLSthY19saW5rPScke0NDLWNjfSAtbyBjb25mdGVzdCR7YWNfZXhlZXh0fSAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTIDE+JjUnCi0rY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2NjX2Nyb3NzCi0gCi0rYWNfZXhlZXh0PQotK2FjX29iamV4dD1vCi0raWYgKGVjaG8gInRlc3RpbmdcYyI7IGVjaG8gMSwyLDMpIHwgZ3JlcCBjID4vZGV2L251bGw7IHRoZW4KLSsgICMgU3RhcmRlbnQgVmlzdHJhIFNWUjQgZ3JlcCBsYWNrcyAtZSwgc2F5cyBnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1LgotKyAgaWYgKGVjaG8gLW4gdGVzdGluZzsgZWNobyAxLDIsMykgfCBzZWQgcy8tbi94bi8gfCBncmVwIHhuID4vZGV2L251bGw7IHRoZW4KLSsgICAgYWNfbj0gYWNfYz0nCi0rJyBhY190PScJJwotKyAgZWxzZQotKyAgICBhY19uPS1uIGFjX2M9IGFjX3Q9Ci0rICBmaQotK2Vsc2UKLSsgIGFjX249IGFjX2M9J1xjJyBhY190PQotK2ZpCi0gCi0gCi0gCi0tCi0tCi0tCi0tCi0tCi0tCi0tCi0tCi0tCi0tCi0tCi0tCi0tCi0tCi0tCi0tCi0gYWNfYXV4X2Rpcj0KLSBmb3IgYWNfZGlyIGluICRzcmNkaXIgJHNyY2Rpci8uLiAkc3JjZGlyLy4uLy4uOyBkbwotICAgaWYgdGVzdCAtZiAkYWNfZGlyL2luc3RhbGwtc2g7IHRoZW4KLUBAIC0xMjgxLDc0MCArNTQ0LDMxMiBAQAotICAgICBhY19hdXhfZGlyPSRhY19kaXIKLSAgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC5zaCAtYyIKLSAgICAgYnJlYWsKLS0gIGVsaWYgdGVzdCAtZiAkYWNfZGlyL3NodG9vbDsgdGhlbgotLSAgICBhY19hdXhfZGlyPSRhY19kaXIKLS0gICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvc2h0b29sIGluc3RhbGwgLWMiCi0tICAgIGJyZWFrCi0gICBmaQotIGRvbmUKLSBpZiB0ZXN0IC16ICIkYWNfYXV4X2RpciI7IHRoZW4KLS0gIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBmaW5kIGluc3RhbGwtc2ggb3IgaW5zdGFsbC5zaCBpbiAkc3JjZGlyICRzcmNkaXIvLi4gJHNyY2Rpci8uLi8uLiIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGZpbmQgaW5zdGFsbC1zaCBvciBpbnN0YWxsLnNoIGluICRzcmNkaXIgJHNyY2Rpci8uLiAkc3JjZGlyLy4uLy4uIiA+JjI7fQotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotKyAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBjYW4gbm90IGZpbmQgaW5zdGFsbC1zaCBvciBpbnN0YWxsLnNoIGluICRzcmNkaXIgJHNyY2Rpci8uLiAkc3JjZGlyLy4uLy4uIiAxPiYyOyBleGl0IDE7IH0KLSBmaQotLWFjX2NvbmZpZ19ndWVzcz0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcyIKLS1hY19jb25maWdfc3ViPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIKLS1hY19jb25maWd1cmU9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWd1cmUiICMgVGhpcyBzaG91bGQgYmUgQ3lnbnVzIGNvbmZpZ3VyZS4KLSthY19jb25maWdfZ3Vlc3M9JGFjX2F1eF9kaXIvY29uZmlnLmd1ZXNzCi0rYWNfY29uZmlnX3N1Yj0kYWNfYXV4X2Rpci9jb25maWcuc3ViCi0rYWNfY29uZmlndXJlPSRhY19hdXhfZGlyL2NvbmZpZ3VyZSAjIFRoaXMgc2hvdWxkIGJlIEN5Z251cyBjb25maWd1cmUuCi0gCi0tIyBNYWtlIHN1cmUgd2UgY2FuIHJ1biBjb25maWcuc3ViLgotLSRhY19jb25maWdfc3ViIHN1bjQgPi9kZXYvbnVsbCAyPiYxIHx8Ci0tICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBjYW5ub3QgcnVuICRhY19jb25maWdfc3ViIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgcnVuICRhY19jb25maWdfc3ViIiA+JjI7fQotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotIAotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZSIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZS4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X2J1aWxkK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWVsc2UKLS0gIGFjX2N2X2J1aWxkX2FsaWFzPSRidWlsZF9hbGlhcwotLXRlc3QgLXogIiRhY19jdl9idWlsZF9hbGlhcyIgJiYKLS0gIGFjX2N2X2J1aWxkX2FsaWFzPWAkYWNfY29uZmlnX2d1ZXNzYAotLXRlc3QgLXogIiRhY19jdl9idWlsZF9hbGlhcyIgJiYKLS0gIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBndWVzcyBidWlsZCB0eXBlOyB5b3UgbXVzdCBzcGVjaWZ5IG9uZSIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGd1ZXNzIGJ1aWxkIHR5cGU7IHlvdSBtdXN0IHNwZWNpZnkgb25lIiA+JjI7fQotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotLWFjX2N2X2J1aWxkPWAkYWNfY29uZmlnX3N1YiAkYWNfY3ZfYnVpbGRfYWxpYXNgIHx8Ci0tICB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiAkYWNfY29uZmlnX3N1YiAkYWNfY3ZfYnVpbGRfYWxpYXMgZmFpbGVkIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiAkYWNfY29uZmlnX3N1YiAkYWNfY3ZfYnVpbGRfYWxpYXMgZmFpbGVkIiA+JjI7fQotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotKyMgRG8gc29tZSBlcnJvciBjaGVja2luZyBhbmQgZGVmYXVsdGluZyBmb3IgdGhlIGhvc3QgYW5kIHRhcmdldCB0eXBlLgotKyMgVGhlIGlucHV0cyBhcmU6Ci0rIyAgICBjb25maWd1cmUgLS1ob3N0PUhPU1QgLS10YXJnZXQ9VEFSR0VUIC0tYnVpbGQ9QlVJTEQgTk9OT1BUCi0rIwotKyMgVGhlIHJ1bGVzIGFyZToKLSsjIDEuIFlvdSBhcmUgbm90IGFsbG93ZWQgdG8gc3BlY2lmeSAtLWhvc3QsIC0tdGFyZ2V0LCBhbmQgbm9ub3B0IGF0IHRoZQotKyMgICAgc2FtZSB0aW1lLgotKyMgMi4gSG9zdCBkZWZhdWx0cyB0byBub25vcHQuCi0rIyAzLiBJZiBub25vcHQgaXMgbm90IHNwZWNpZmllZCwgdGhlbiBob3N0IGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGhvc3QsCi0rIyAgICBhcyBkZXRlcm1pbmVkIGJ5IGNvbmZpZy5ndWVzcy4KLSsjIDQuIFRhcmdldCBhbmQgYnVpbGQgZGVmYXVsdCB0byBub25vcHQuCi0rIyA1LiBJZiBub25vcHQgaXMgbm90IHNwZWNpZmllZCwgdGhlbiB0YXJnZXQgYW5kIGJ1aWxkIGRlZmF1bHQgdG8gaG9zdC4KLSAKLSsjIFRoZSBhbGlhc2VzIHNhdmUgdGhlIG5hbWVzIHRoZSB1c2VyIHN1cHBsaWVkLCB3aGlsZSAkaG9zdCBldGMuCi0rIyB3aWxsIGdldCBjYW5vbmljYWxpemVkLgotK2Nhc2UgJGhvc3QtLS0kdGFyZ2V0LS0tJG5vbm9wdCBpbgotK05PTkUtLS0qLS0tKiB8ICotLS1OT05FLS0tKiB8ICotLS0qLS0tTk9ORSkgOzsKLSsqKSB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IGNhbiBvbmx5IGNvbmZpZ3VyZSBmb3Igb25lIGhvc3QgYW5kIG9uZSB0YXJnZXQgYXQgYSB0aW1lIiAxPiYyOyBleGl0IDE7IH0gOzsKLStlc2FjCi0rCi0rCi0rIyBNYWtlIHN1cmUgd2UgY2FuIHJ1biBjb25maWcuc3ViLgotK2lmICR7Q09ORklHX1NIRUxMLS9iaW4vc2h9ICRhY19jb25maWdfc3ViIHN1bjQgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLStlbHNlIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogY2FuIG5vdCBydW4gJGFjX2NvbmZpZ19zdWIiIDE+JjI7IGV4aXQgMTsgfQotIGZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2J1aWxkIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfYnVpbGQiID4mNgotLWJ1aWxkPSRhY19jdl9idWlsZAotLWJ1aWxkX2NwdT1gZWNobyAkYWNfY3ZfYnVpbGQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYAotLWJ1aWxkX3ZlbmRvcj1gZWNobyAkYWNfY3ZfYnVpbGQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYAotLWJ1aWxkX29zPWBlY2hvICRhY19jdl9idWlsZCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgCi0gCi0rZWNobyAkYWNfbiAiY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZSIiLi4uICRhY19jIiAxPiY2Ci0rZWNobyAiY29uZmlndXJlOjU4NTogY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZSIgPiY1Ci0gCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZS4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X2hvc3Qrc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0tZWxzZQotLSAgYWNfY3ZfaG9zdF9hbGlhcz0kaG9zdF9hbGlhcwotLXRlc3QgLXogIiRhY19jdl9ob3N0X2FsaWFzIiAmJgotLSAgYWNfY3ZfaG9zdF9hbGlhcz0kYWNfY3ZfYnVpbGRfYWxpYXMKLS1hY19jdl9ob3N0PWAkYWNfY29uZmlnX3N1YiAkYWNfY3ZfaG9zdF9hbGlhc2AgfHwKLS0gIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6ICRhY19jb25maWdfc3ViICRhY19jdl9ob3N0X2FsaWFzIGZhaWxlZCIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogJGFjX2NvbmZpZ19zdWIgJGFjX2N2X2hvc3RfYWxpYXMgZmFpbGVkIiA+JjI7fQotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotK2hvc3RfYWxpYXM9JGhvc3QKLStjYXNlICIkaG9zdF9hbGlhcyIgaW4KLStOT05FKQotKyAgY2FzZSAkbm9ub3B0IGluCi0rICBOT05FKQotKyAgICBpZiBob3N0X2FsaWFzPWAke0NPTkZJR19TSEVMTC0vYmluL3NofSAkYWNfY29uZmlnX2d1ZXNzYDsgdGhlbiA6Ci0rICAgIGVsc2UgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBjYW4gbm90IGd1ZXNzIGhvc3QgdHlwZTsgeW91IG11c3Qgc3BlY2lmeSBvbmUiIDE+JjI7IGV4aXQgMTsgfQotKyAgICBmaSA7OwotKyAgKikgaG9zdF9hbGlhcz0kbm9ub3B0IDs7Ci0rICBlc2FjIDs7Ci0rZXNhYwotIAotLWZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2hvc3QiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl9ob3N0IiA+JjYKLS1ob3N0PSRhY19jdl9ob3N0Ci0taG9zdF9jcHU9YGVjaG8gJGFjX2N2X2hvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYAotLWhvc3RfdmVuZG9yPWBlY2hvICRhY19jdl9ob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDIvJ2AKLS1ob3N0X29zPWBlY2hvICRhY19jdl9ob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKLStob3N0PWAke0NPTkZJR19TSEVMTC0vYmluL3NofSAkYWNfY29uZmlnX3N1YiAkaG9zdF9hbGlhc2AKLStob3N0X2NwdT1gZWNobyAkaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wxLydgCi0raG9zdF92ZW5kb3I9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYAotK2hvc3Rfb3M9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAotK2VjaG8gIiRhY190IiIkaG9zdCIgMT4mNgotIAotK2VjaG8gJGFjX24gImNoZWNraW5nIHRhcmdldCBzeXN0ZW0gdHlwZSIiLi4uICRhY19jIiAxPiY2Ci0rZWNobyAiY29uZmlndXJlOjYwNjogY2hlY2tpbmcgdGFyZ2V0IHN5c3RlbSB0eXBlIiA+JjUKLSAKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgdGFyZ2V0IHN5c3RlbSB0eXBlIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIHRhcmdldCBzeXN0ZW0gdHlwZS4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X3RhcmdldCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0tICBhY19jdl90YXJnZXRfYWxpYXM9JHRhcmdldF9hbGlhcwotLXRlc3QgIngkYWNfY3ZfdGFyZ2V0X2FsaWFzIiA9ICJ4IiAmJgotLSAgYWNfY3ZfdGFyZ2V0X2FsaWFzPSRhY19jdl9ob3N0X2FsaWFzCi0tYWNfY3ZfdGFyZ2V0PWAkYWNfY29uZmlnX3N1YiAkYWNfY3ZfdGFyZ2V0X2FsaWFzYCB8fAotLSAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogJGFjX2NvbmZpZ19zdWIgJGFjX2N2X3RhcmdldF9hbGlhcyBmYWlsZWQiID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6ICRhY19jb25maWdfc3ViICRhY19jdl90YXJnZXRfYWxpYXMgZmFpbGVkIiA+JjI7fQotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotK3RhcmdldF9hbGlhcz0kdGFyZ2V0Ci0rY2FzZSAiJHRhcmdldF9hbGlhcyIgaW4KLStOT05FKQotKyAgY2FzZSAkbm9ub3B0IGluCi0rICBOT05FKSB0YXJnZXRfYWxpYXM9JGhvc3RfYWxpYXMgOzsKLSsgICopIHRhcmdldF9hbGlhcz0kbm9ub3B0IDs7Ci0rICBlc2FjIDs7Ci0rZXNhYwotIAotLWZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X3RhcmdldCIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3RhcmdldCIgPiY2Ci0tdGFyZ2V0PSRhY19jdl90YXJnZXQKLS10YXJnZXRfY3B1PWBlY2hvICRhY19jdl90YXJnZXQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYAotLXRhcmdldF92ZW5kb3I9YGVjaG8gJGFjX2N2X3RhcmdldCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wyLydgCi0tdGFyZ2V0X29zPWBlY2hvICRhY19jdl90YXJnZXQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAotK3RhcmdldD1gJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0gJGFjX2NvbmZpZ19zdWIgJHRhcmdldF9hbGlhc2AKLSt0YXJnZXRfY3B1PWBlY2hvICR0YXJnZXQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYAotK3RhcmdldF92ZW5kb3I9YGVjaG8gJHRhcmdldCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wyLydgCi0rdGFyZ2V0X29zPWBlY2hvICR0YXJnZXQgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAotK2VjaG8gIiRhY190IiIkdGFyZ2V0IiAxPiY2Ci0gCi0rZWNobyAkYWNfbiAiY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZTo2MjQ6IGNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiA+JjUKLSAKLS0jIFRoZSBhbGlhc2VzIHNhdmUgdGhlIG5hbWVzIHRoZSB1c2VyIHN1cHBsaWVkLCB3aGlsZSAkaG9zdCBldGMuCi0tIyB3aWxsIGdldCBjYW5vbmljYWxpemVkLgotLXRlc3QgLW4gIiR0YXJnZXRfYWxpYXMiICYmCi0rYnVpbGRfYWxpYXM9JGJ1aWxkCi0rY2FzZSAiJGJ1aWxkX2FsaWFzIiBpbgotK05PTkUpCi0rICBjYXNlICRub25vcHQgaW4KLSsgIE5PTkUpIGJ1aWxkX2FsaWFzPSRob3N0X2FsaWFzIDs7Ci0rICAqKSBidWlsZF9hbGlhcz0kbm9ub3B0IDs7Ci0rICBlc2FjIDs7Ci0rZXNhYwotKwotK2J1aWxkPWAke0NPTkZJR19TSEVMTC0vYmluL3NofSAkYWNfY29uZmlnX3N1YiAkYnVpbGRfYWxpYXNgCi0rYnVpbGRfY3B1PWBlY2hvICRidWlsZCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wxLydgCi0rYnVpbGRfdmVuZG9yPWBlY2hvICRidWlsZCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wyLydgCi0rYnVpbGRfb3M9YGVjaG8gJGJ1aWxkIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKLStlY2hvICIkYWNfdCIiJGJ1aWxkIiAxPiY2Ci0rCi0rdGVzdCAiJGhvc3RfYWxpYXMiICE9ICIkdGFyZ2V0X2FsaWFzIiAmJgotICAgdGVzdCAiJHByb2dyYW1fcHJlZml4JHByb2dyYW1fc3VmZml4JHByb2dyYW1fdHJhbnNmb3JtX25hbWUiID0gXAotICAgICBOT05FTk9ORXMseCx4LCAmJgotICAgcHJvZ3JhbV9wcmVmaXg9JHt0YXJnZXRfYWxpYXN9LQotLWFjX2V4dD1jCi0tYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKLS1hY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi0tYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLS1hY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251Ci0taWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9Z2NjOyBhY193b3JkPSQyCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWVsc2UKLS0gIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KLS0gIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0tZWxzZQotLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLS1mb3IgYXNfZGlyIGluICRQQVRICi0tZG8KLS0gIElGUz0kYXNfc2F2ZV9JRlMKLS0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0tICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLS0gIGlmICRhc19leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQ0M9IiR7YWNfdG9vbF9wcmVmaXh9Z2NjIgotLSAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0tICAgIGJyZWFrIDIKLS0gIGZpCi0tZG9uZQotLWRvbmUKLSAKLS1maQotLWZpCi0tQ0M9JGFjX2N2X3Byb2dfQ0MKLS1pZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkQ0MiID4mNQotLWVjaG8gIiR7RUNIT19UfSRDQyIgPiY2Ci0tZWxzZQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogbm8iID4mNQotLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLS1maQotLQotLWZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQ0MiOyB0aGVuCi0tICBhY19jdF9DQz0kQ0MKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZ2NjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLSsjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0gc2V0IGR1bW15IGdjYzsgYWNfd29yZD0kMgotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9DQytzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLStlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZTo2NDk6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0raWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfQ0MnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotKyAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0tICBpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCi0tICBhY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNfY3RfQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotLWVsc2UKLS1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0NDPSJnY2MiCi0tICAgIGVjaG8gIiRhc19tZTokTElORU5POiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLS0gICAgYnJlYWsgMgotLSAgZmkKLS1kb25lCi0tZG9uZQotLQotLWZpCi0tZmkKLS1hY19jdF9DQz0kYWNfY3ZfcHJvZ19hY19jdF9DQwotLWlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdF9DQyIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N0X0NDIiA+JjYKLS1lbHNlCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBubyIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9bm8iID4mNgotLWZpCi0tCi0tICBDQz0kYWNfY3RfQ0MKLS1lbHNlCi0tICBDQz0iJGFjX2N2X3Byb2dfQ0MiCi0tZmkKLS0KLS1pZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCi0tICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9Y2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWNjOyBhY193b3JkPSQyCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWVsc2UKLSAgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KLSAgIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0gZWxzZQotLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLS1mb3IgYXNfZGlyIGluICRQQVRICi0tZG8KLS0gIElGUz0kYXNfc2F2ZV9JRlMKLS0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0tICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLS0gIGlmICRhc19leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQ0M9IiR7YWNfdG9vbF9wcmVmaXh9Y2MiCi0tICAgIGVjaG8gIiRhc19tZTokTElORU5POiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLS0gICAgYnJlYWsgMgotLSAgZmkKLS1kb25lCi0tZG9uZQotLQotKyAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iOiIKLSsgIGFjX2R1bW15PSIkUEFUSCIKLSsgIGZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwotKyAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgotKyAgICBpZiB0ZXN0IC1mICRhY19kaXIvJGFjX3dvcmQ7IHRoZW4KLSsgICAgICBhY19jdl9wcm9nX0NDPSJnY2MiCi0rICAgICAgYnJlYWsKLSsgICAgZmkKLSsgIGRvbmUKLSsgIElGUz0iJGFjX3NhdmVfaWZzIgotIGZpCi0gZmkKLS1DQz0kYWNfY3ZfcHJvZ19DQwotK0NDPSIkYWNfY3ZfcHJvZ19DQyIKLSBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkQ0MiID4mNQotLWVjaG8gIiR7RUNIT19UfSRDQyIgPiY2Ci0rICBlY2hvICIkYWNfdCIiJENDIiAxPiY2Ci0gZWxzZQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogbm8iID4mNQotLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLSsgIGVjaG8gIiRhY190IiJubyIgMT4mNgotIGZpCi0gCi0tZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19DQyI7IHRoZW4KLS0gIGFjX2N0X0NDPSRDQwotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15IGNjOyBhY193b3JkPSQyCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0NDK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWVsc2UKLS0gIGlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KLS0gIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRhY19jdF9DQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0tZWxzZQotLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLS1mb3IgYXNfZGlyIGluICRQQVRICi0tZG8KLS0gIElGUz0kYXNfc2F2ZV9JRlMKLS0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0tICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLS0gIGlmICRhc19leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9ImNjIgotLSAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0tICAgIGJyZWFrIDIKLS0gIGZpCi0tZG9uZQotLWRvbmUKLS0KLS1maQotLWZpCi0tYWNfY3RfQ0M9JGFjX2N2X3Byb2dfYWNfY3RfQ0MKLS1pZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3RfQ0MiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdF9DQyIgPiY2Ci0tZWxzZQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogbm8iID4mNQotLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLS1maQotLQotLSAgQ0M9JGFjX2N0X0NDCi0tZWxzZQotLSAgQ0M9IiRhY19jdl9wcm9nX0NDIgotLWZpCi0tCi0tZmkKLSBpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCi0gICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImNjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLSBzZXQgZHVtbXkgY2M7IGFjX3dvcmQ9JDIKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0rZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLStlY2hvICJjb25maWd1cmU6Njc5OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0NDJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSsgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgotICAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLSBlbHNlCi0rICBJRlM9IiR7SUZTPSAJfSI7IGFjX3NhdmVfaWZzPSIkSUZTIjsgSUZTPSI6IgotICAgYWNfcHJvZ19yZWplY3RlZD1ubwotLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLS1mb3IgYXNfZGlyIGluICRQQVRICi0tZG8KLS0gIElGUz0kYXNfc2F2ZV9JRlMKLS0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0tICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLS0gIGlmICRhc19leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGlmIHRlc3QgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID0gIi91c3IvdWNiL2NjIjsgdGhlbgotLSAgICAgICBhY19wcm9nX3JlamVjdGVkPXllcwotLSAgICAgICBjb250aW51ZQotLSAgICAgZmkKLS0gICAgYWNfY3ZfcHJvZ19DQz0iY2MiCi0tICAgIGVjaG8gIiRhc19tZTokTElORU5POiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLS0gICAgYnJlYWsgMgotLSAgZmkKLS1kb25lCi0tZG9uZQotLQotKyAgYWNfZHVtbXk9IiRQQVRIIgotKyAgZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCi0rICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0rICAgIGlmIHRlc3QgLWYgJGFjX2Rpci8kYWNfd29yZDsgdGhlbgotKyAgICAgIGlmIHRlc3QgIiRhY19kaXIvJGFjX3dvcmQiID0gIi91c3IvdWNiL2NjIjsgdGhlbgotKyAgICAgICAgYWNfcHJvZ19yZWplY3RlZD15ZXMKLSsJY29udGludWUKLSsgICAgICBmaQotKyAgICAgIGFjX2N2X3Byb2dfQ0M9ImNjIgotKyAgICAgIGJyZWFrCi0rICAgIGZpCi0rICBkb25lCi0rICBJRlM9IiRhY19zYXZlX2lmcyIKLSBpZiB0ZXN0ICRhY19wcm9nX3JlamVjdGVkID0geWVzOyB0aGVuCi0gICAjIFdlIGZvdW5kIGEgYm9nb24gaW4gdGhlIHBhdGgsIHNvIG1ha2Ugc3VyZSB3ZSBuZXZlciB1c2UgaXQuCi0gICBzZXQgZHVtbXkgJGFjX2N2X3Byb2dfQ0MKLSAgIHNoaWZ0Ci0tICBpZiB0ZXN0ICQjICE9IDA7IHRoZW4KLSsgIGlmIHRlc3QgJCMgLWd0IDA7IHRoZW4KLSAgICAgIyBXZSBjaG9zZSBhIGRpZmZlcmVudCBjb21waWxlciBmcm9tIHRoZSBib2d1cyBvbmUuCi0gICAgICMgSG93ZXZlciwgaXQgaGFzIHRoZSBzYW1lIGJhc2VuYW1lLCBzbyB0aGUgYm9nb24gd2lsbCBiZSBjaG9zZW4KLSAgICAgIyBmaXJzdCBpZiB3ZSBzZXQgQ0MgdG8ganVzdCB0aGUgYmFzZW5hbWU7IHVzZSB0aGUgZnVsbCBmaWxlIG5hbWUuCi0gICAgIHNoaWZ0Ci0tICAgIGFjX2N2X3Byb2dfQ0M9IiRhc19kaXIvJGFjX3dvcmQkezErJyAnfSRAIgotKyAgICBzZXQgZHVtbXkgIiRhY19kaXIvJGFjX3dvcmQiICIkQCIKLSsgICAgc2hpZnQKLSsgICAgYWNfY3ZfcHJvZ19DQz0iJEAiCi0gICBmaQotIGZpCi0gZmkKLSBmaQotLUNDPSRhY19jdl9wcm9nX0NDCi0rQ0M9IiRhY19jdl9wcm9nX0NDIgotIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRDQyIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JENDIiA+JjYKLSsgIGVjaG8gIiRhY190IiIkQ0MiIDE+JjYKLSBlbHNlCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBubyIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9bm8iID4mNgotKyAgZWNobyAiJGFjX3QiIm5vIiAxPiY2Ci0gZmkKLSAKLS1maQotLWlmIHRlc3QgLXogIiRDQyI7IHRoZW4KLS0gIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gIGZvciBhY19wcm9nIGluIGNsCi0tICBkbwotLSAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0rICBpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCi0rICAgIGNhc2UgImB1bmFtZSAtc2AiIGluCi0rICAgICp3aW4zMiogfCAqV0lOMzIqKQotKyAgICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiY2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBjbDsgYWNfd29yZD0kMgotK2VjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci0rZWNobyAiY29uZmlndXJlOjczMDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19DQycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0rICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KLSAgIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0gZWxzZQotLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLS1mb3IgYXNfZGlyIGluICRQQVRICi0tZG8KLS0gIElGUz0kYXNfc2F2ZV9JRlMKLS0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0tICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLS0gIGlmICRhc19leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQ0M9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgotLSAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0tICAgIGJyZWFrIDIKLS0gIGZpCi0tZG9uZQotLWRvbmUKLS0KLSsgIElGUz0iJHtJRlM9IAl9IjsgYWNfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IjoiCi0rICBhY19kdW1teT0iJFBBVEgiCi0rICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KLSsgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSsgICAgaWYgdGVzdCAtZiAkYWNfZGlyLyRhY193b3JkOyB0aGVuCi0rICAgICAgYWNfY3ZfcHJvZ19DQz0iY2wiCi0rICAgICAgYnJlYWsKLSsgICAgZmkKLSsgIGRvbmUKLSsgIElGUz0iJGFjX3NhdmVfaWZzIgotIGZpCi0gZmkKLS1DQz0kYWNfY3ZfcHJvZ19DQwotK0NDPSIkYWNfY3ZfcHJvZ19DQyIKLSBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkQ0MiID4mNQotLWVjaG8gIiR7RUNIT19UfSRDQyIgPiY2Ci0rICBlY2hvICIkYWNfdCIiJENDIiAxPiY2Ci0gZWxzZQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogbm8iID4mNQotLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLSsgIGVjaG8gIiRhY190IiJubyIgMT4mNgotIGZpCi0tCi0tICAgIHRlc3QgLW4gIiRDQyIgJiYgYnJlYWsKLS0gIGRvbmUKLS1maQotLWlmIHRlc3QgLXogIiRDQyI7IHRoZW4KLS0gIGFjX2N0X0NDPSRDQwotLSAgZm9yIGFjX3Byb2cgaW4gY2wKLS1kbwotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0NDK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWVsc2UKLS0gIGlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KLS0gIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRhY19jdF9DQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0tZWxzZQotLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLS1mb3IgYXNfZGlyIGluICRQQVRICi0tZG8KLS0gIElGUz0kYXNfc2F2ZV9JRlMKLS0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0tICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLS0gIGlmICRhc19leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRhY19wcm9nIgotLSAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0tICAgIGJyZWFrIDIKLSsgOzsKLSsgICAgZXNhYwotICAgZmkKLS1kb25lCi0tZG9uZQotLQotKyAgdGVzdCAteiAiJENDIiAmJiB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IG5vIGFjY2VwdGFibGUgY2MgZm91bmQgaW4gXCRQQVRIIiAxPiYyOyBleGl0IDE7IH0KLSBmaQotLWZpCi0tYWNfY3RfQ0M9JGFjX2N2X3Byb2dfYWNfY3RfQ0MKLS1pZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3RfQ0MiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdF9DQyIgPiY2Ci0tZWxzZQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogbm8iID4mNQotLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLS1maQotIAotLSAgdGVzdCAtbiAiJGFjX2N0X0NDIiAmJiBicmVhawotLWRvbmUKLStlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyICgkQ0MgJENGTEFHUyAkTERGTEFHUykgd29ya3MiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZTo3NjI6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgKCRDQyAkQ0ZMQUdTICRMREZMQUdTKSB3b3JrcyIgPiY1Ci0gCi0tICBDQz0kYWNfY3RfQ0MKLS1maQotK2FjX2V4dD1jCi0rIyBDRkxBR1MgaXMgbm90IGluIGFjX2NwcCBiZWNhdXNlIC1nLCAtTywgZXRjLiBhcmUgbm90IHZhbGlkIGNwcCBvcHRpb25zLgotK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCi0rYWNfY29tcGlsZT0nJHtDQy1jY30gLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCAxPiY1JwotK2FjX2xpbms9JyR7Q0MtY2N9IC1vIGNvbmZ0ZXN0JHthY19leGVleHR9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgMT4mNScKLStjcm9zc19jb21waWxpbmc9JGFjX2N2X3Byb2dfY2NfY3Jvc3MKLSAKLS1maQotK2NhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDwgRU9GCi0gCi0rI2xpbmUgNzczICJjb25maWd1cmUiCi0rI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0tdGVzdCAteiAiJENDIiAmJiB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBubyBhY2NlcHRhYmxlIEMgY29tcGlsZXIgZm91bmQgaW4gXCRQQVRICi0tU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IG5vIGFjY2VwdGFibGUgQyBjb21waWxlciBmb3VuZCBpbiBcJFBBVEgKLS1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLS0KLS0jIFByb3ZpZGUgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29tcGlsZXIuCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IiBcCi0tICAgICAiY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgdmVyc2lvbiIgPiY1Ci0tYWNfY29tcGlsZXI9YHNldCBYICRhY19jb21waWxlOyBlY2hvICQyYAotLXsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVyIC0tdmVyc2lvbiA8L2Rldi9udWxsID4mNVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZXIgLS12ZXJzaW9uIDwvZGV2L251bGwgPiY1KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9Ci0teyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZXIgLXYgPC9kZXYvbnVsbCA+JjVcIiIpID4mNQotLSAgKGV2YWwgJGFjX2NvbXBpbGVyIC12IDwvZGV2L251bGwgPiY1KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9Ci0teyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZXIgLVYgPC9kZXYvbnVsbCA+JjVcIiIpID4mNQotLSAgKGV2YWwgJGFjX2NvbXBpbGVyIC1WIDwvZGV2L251bGwgPiY1KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9Ci0tCi0tY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0tCi0taW50Ci0tbWFpbiAoKQotLXsKLS0KLS0gIDsKLS0gIHJldHVybiAwOwotLX0KLS1fQUNFT0YKLS1hY19jbGVhbl9maWxlc19zYXZlPSRhY19jbGVhbl9maWxlcwotLWFjX2NsZWFuX2ZpbGVzPSIkYWNfY2xlYW5fZmlsZXMgYS5vdXQgYS5leGUgYi5vdXQiCi0tIyBUcnkgdG8gY3JlYXRlIGFuIGV4ZWN1dGFibGUgd2l0aG91dCAtbyBmaXJzdCwgZGlzcmVnYXJkIGEub3V0LgotLSMgSXQgd2lsbCBoZWxwIHVzIGRpYWdub3NlIGJyb2tlbiBjb21waWxlcnMsIGFuZCBmaW5kaW5nIG91dCBhbiBpbnR1aXRpb24KLS0jIG9mIGV4ZWV4dC4KLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgZGVmYXVsdCBvdXRwdXQiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgZGVmYXVsdCBvdXRwdXQuLi4gJEVDSE9fQyIgPiY2Ci0tYWNfbGlua19kZWZhdWx0PWBlY2hvICIkYWNfbGluayIgfCBzZWQgJ3MvIC1vICpjb25mdGVzdFteIF0qLy8nYAotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2xpbmtfZGVmYXVsdFwiIikgPiY1Ci0tICAoZXZhbCAkYWNfbGlua19kZWZhdWx0KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB0aGVuCi0tICAjIEZpbmQgdGhlIG91dHB1dCwgc3RhcnRpbmcgZnJvbSB0aGUgbW9zdCBsaWtlbHkuICBUaGlzIHNjaGVtZSBpcwotLSMgbm90IHJvYnVzdCB0byBqdW5rIGluIGAuJywgaGVuY2UgZ28gdG8gd2lsZGNhcmRzIChhLiopIG9ubHkgYXMgYSBsYXN0Ci0tIyByZXNvcnQuCi0tCi0tIyBCZSBjYXJlZnVsIHRvIGluaXRpYWxpemUgdGhpcyB2YXJpYWJsZSwgc2luY2UgaXQgdXNlZCB0byBiZSBjYWNoZWQuCi0tIyBPdGhlcndpc2UgYW4gb2xkIGNhY2hlIHZhbHVlIG9mIGBubycgbGVkIHRvIGBFWEVFWFQgPSBubycgaW4gYSBNYWtlZmlsZS4KLS1hY19jdl9leGVleHQ9Ci0tIyBiLm91dCBpcyBjcmVhdGVkIGJ5IGk5NjAgY29tcGlsZXJzLgotLWZvciBhY19maWxlIGluIGFfb3V0LmV4ZSBhLmV4ZSBjb25mdGVzdC5leGUgYS5vdXQgY29uZnRlc3QgYS4qIGNvbmZ0ZXN0LiogYi5vdXQKLS1kbwotLSAgdGVzdCAtZiAiJGFjX2ZpbGUiIHx8IGNvbnRpbnVlCi0tICBjYXNlICRhY19maWxlIGluCi0tICAgICouJGFjX2V4dCB8ICoueGNvZmYgfCAqLnRkcyB8ICouZCB8ICoucGRiIHwgKi54U1lNIHwgKi5iYiB8ICouYmJnIHwgKi5vIHwgKi5vYmogKQotLSAgICAgICAgOzsKLS0gICAgY29uZnRlc3QuJGFjX2V4dCApCi0tICAgICAgICAjIFRoaXMgaXMgdGhlIHNvdXJjZSBmaWxlLgotLSAgICAgICAgOzsKLS0gICAgW2FiXS5vdXQgKQotLSAgICAgICAgIyBXZSBmb3VuZCB0aGUgZGVmYXVsdCBleGVjdXRhYmxlLCBidXQgZXhlZXh0PScnIGlzIG1vc3QKLS0gICAgICAgICMgY2VydGFpbmx5IHJpZ2h0LgotLSAgICAgICAgYnJlYWs7OwotLSAgICAqLiogKQotLSAgICAgICAgYWNfY3ZfZXhlZXh0PWBleHByICIkYWNfZmlsZSIgOiAnW14uXSpcKFwuLipcKSdgCi0tICAgICAgICAjIEZJWE1FOiBJIGJlbGlldmUgd2UgZXhwb3J0IGFjX2N2X2V4ZWV4dCBmb3IgTGlidG9vbCwKLS0gICAgICAgICMgYnV0IGl0IHdvdWxkIGJlIGNvb2wgdG8gZmluZCBvdXQgaWYgaXQncyB0cnVlLiAgRG9lcyBhbnlib2R5Ci0tICAgICAgICAjIG1haW50YWluIExpYnRvb2w/IC0tYWtpbS4KLS0gICAgICAgIGV4cG9ydCBhY19jdl9leGVleHQKLS0gICAgICAgIGJyZWFrOzsKLS0gICAgKiApCi0tICAgICAgICBicmVhazs7Ci0tICBlc2FjCi0tZG9uZQotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLXsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IEMgY29tcGlsZXIgY2Fubm90IGNyZWF0ZSBleGVjdXRhYmxlcwotLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBDIGNvbXBpbGVyIGNhbm5vdCBjcmVhdGUgZXhlY3V0YWJsZXMKLS1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiYyO30KLS0gICB7IChleGl0IDc3KTsgZXhpdCA3NzsgfTsgfQotLWZpCi0tCi0tYWNfZXhlZXh0PSRhY19jdl9leGVleHQKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfZmlsZSIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2ZpbGUiID4mNgotLQotLSMgQ2hlY2sgdGhlIGNvbXBpbGVyIHByb2R1Y2VzIGV4ZWN1dGFibGVzIHdlIGNhbiBydW4uICBJZiBub3QsIGVpdGhlcgotLSMgdGhlIGNvbXBpbGVyIGlzIGJyb2tlbiwgb3Igd2UgY3Jvc3MgY29tcGlsZS4KLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciB3b3JrcyIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIHdvcmtzLi4uICRFQ0hPX0MiID4mNgotLSMgRklYTUU6IFRoZXNlIGNyb3NzIGNvbXBpbGVyIGhhY2tzIHNob3VsZCBiZSByZW1vdmVkIGZvciBBdXRvY29uZiAzLjAKLS0jIElmIG5vdCBjcm9zcyBjb21waWxpbmcsIGNoZWNrIHRoYXQgd2UgY2FuIHJ1biBhIHNpbXBsZSBwcm9ncmFtLgotLWlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciICE9IHllczsgdGhlbgotLSAgaWYgeyBhY190cnk9Jy4vJGFjX2ZpbGUnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotLSAgICBjcm9zc19jb21waWxpbmc9bm8KLSttYWluKCl7cmV0dXJuKDApO30KLStFT0YKLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjc3ODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0rICBhY19jdl9wcm9nX2NjX3dvcmtzPXllcwotKyAgIyBJZiB3ZSBjYW4ndCBydW4gYSB0cml2aWFsIHByb2dyYW0sIHdlIGFyZSBwcm9iYWJseSB1c2luZyBhIGNyb3NzIGNvbXBpbGVyLgotKyAgaWYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfY2NfY3Jvc3M9bm8KLSAgIGVsc2UKLS0gICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBtYXliZTsgdGhlbgotLQljcm9zc19jb21waWxpbmc9eWVzCi0tICAgIGVsc2UKLS0JeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogY2Fubm90IHJ1biBDIGNvbXBpbGVkIHByb2dyYW1zLgotLUlmIHlvdSBtZWFudCB0byBjcm9zcyBjb21waWxlLCB1c2UgXGAtLWhvc3QnLgotLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgcnVuIEMgY29tcGlsZWQgcHJvZ3JhbXMuCi0tSWYgeW91IG1lYW50IHRvIGNyb3NzIGNvbXBpbGUsIHVzZSBcYC0taG9zdCcuCi0tU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iID4mMjt9Ci0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tICAgIGZpCi0rICAgIGFjX2N2X3Byb2dfY2NfY3Jvc3M9eWVzCi0gICBmaQotK2Vsc2UKLSsgIGVjaG8gImNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0rICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLSsgIGFjX2N2X3Byb2dfY2Nfd29ya3M9bm8KLSBmaQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IHllcyIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9eWVzIiA+JjYKLStybSAtZnIgY29uZnRlc3QqCi0rYWNfZXh0PWMKLSsjIENGTEFHUyBpcyBub3QgaW4gYWNfY3BwIGJlY2F1c2UgLWcsIC1PLCBldGMuIGFyZSBub3QgdmFsaWQgY3BwIG9wdGlvbnMuCi0rYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKLSthY19jb21waWxlPScke0NDLWNjfSAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0IDE+JjUnCi0rYWNfbGluaz0nJHtDQy1jY30gLW8gY29uZnRlc3Qke2FjX2V4ZWV4dH0gJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyAxPiY1JwotK2Nyb3NzX2NvbXBpbGluZz0kYWNfY3ZfcHJvZ19jY19jcm9zcwotIAotLXJtIC1mIGEub3V0IGEuZXhlIGNvbmZ0ZXN0JGFjX2N2X2V4ZWV4dCBiLm91dAotLWFjX2NsZWFuX2ZpbGVzPSRhY19jbGVhbl9maWxlc19zYXZlCi0tIyBDaGVjayB0aGUgY29tcGlsZXIgcHJvZHVjZXMgZXhlY3V0YWJsZXMgd2UgY2FuIHJ1bi4gIElmIG5vdCwgZWl0aGVyCi0tIyB0aGUgY29tcGlsZXIgaXMgYnJva2VuLCBvciB3ZSBjcm9zcyBjb21waWxlLgotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyB3aGV0aGVyIHdlIGFyZSBjcm9zcyBjb21waWxpbmciID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nLi4uICRFQ0hPX0MiID4mNgotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRjcm9zc19jb21waWxpbmciID4mNQotLWVjaG8gIiR7RUNIT19UfSRjcm9zc19jb21waWxpbmciID4mNgotLQotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3Igc3VmZml4IG9mIGV4ZWN1dGFibGVzIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBzdWZmaXggb2YgZXhlY3V0YWJsZXMuLi4gJEVDSE9fQyIgPiY2Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlua1wiIikgPiY1Ci0tICAoZXZhbCAkYWNfbGluaykgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgdGhlbgotLSAgIyBJZiBib3RoIGBjb25mdGVzdC5leGUnIGFuZCBgY29uZnRlc3QnIGFyZSBgcHJlc2VudCcgKHdlbGwsIG9ic2VydmFibGUpCi0tIyBjYXRjaCBgY29uZnRlc3QuZXhlJy4gIEZvciBpbnN0YW5jZSB3aXRoIEN5Z3dpbiwgYGxzIGNvbmZ0ZXN0JyB3aWxsCi0tIyB3b3JrIHByb3Blcmx5IChpLmUuLCByZWZlciB0byBgY29uZnRlc3QuZXhlJyksIHdoaWxlIGl0IHdvbid0IHdpdGgKLS0jIGBybScuCi0tZm9yIGFjX2ZpbGUgaW4gY29uZnRlc3QuZXhlIGNvbmZ0ZXN0IGNvbmZ0ZXN0Lio7IGRvCi0tICB0ZXN0IC1mICIkYWNfZmlsZSIgfHwgY29udGludWUKLS0gIGNhc2UgJGFjX2ZpbGUgaW4KLS0gICAgKi4kYWNfZXh0IHwgKi54Y29mZiB8ICoudGRzIHwgKi5kIHwgKi5wZGIgfCAqLnhTWU0gfCAqLmJiIHwgKi5iYmcgfCAqLm8gfCAqLm9iaiApIDs7Ci0tICAgICouKiApIGFjX2N2X2V4ZWV4dD1gZXhwciAiJGFjX2ZpbGUiIDogJ1teLl0qXChcLi4qXCknYAotLSAgICAgICAgICBleHBvcnQgYWNfY3ZfZXhlZXh0Ci0tICAgICAgICAgIGJyZWFrOzsKLS0gICAgKiApIGJyZWFrOzsKLS0gIGVzYWMKLS1kb25lCi0tZWxzZQotLSAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogY2Fubm90IGNvbXB1dGUgc3VmZml4IG9mIGV4ZWN1dGFibGVzOiBjYW5ub3QgY29tcGlsZSBhbmQgbGluawotLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgY29tcHV0ZSBzdWZmaXggb2YgZXhlY3V0YWJsZXM6IGNhbm5vdCBjb21waWxlIGFuZCBsaW5rCi0tU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iID4mMjt9Ci0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0rZWNobyAiJGFjX3QiIiRhY19jdl9wcm9nX2NjX3dvcmtzIiAxPiY2Ci0raWYgdGVzdCAkYWNfY3ZfcHJvZ19jY193b3JrcyA9IG5vOyB0aGVuCi0rICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IGluc3RhbGxhdGlvbiBvciBjb25maWd1cmF0aW9uIHByb2JsZW06IEMgY29tcGlsZXIgY2Fubm90IGNyZWF0ZSBleGVjdXRhYmxlcy4iIDE+JjI7IGV4aXQgMTsgfQotIGZpCi0rZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciAoJENDICRDRkxBR1MgJExERkxBR1MpIGlzIGEgY3Jvc3MtY29tcGlsZXIiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZTo4MDQ6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgKCRDQyAkQ0ZMQUdTICRMREZMQUdTKSBpcyBhIGNyb3NzLWNvbXBpbGVyIiA+JjUKLStlY2hvICIkYWNfdCIiJGFjX2N2X3Byb2dfY2NfY3Jvc3MiIDE+JjYKLStjcm9zc19jb21waWxpbmc9JGFjX2N2X3Byb2dfY2NfY3Jvc3MKLSAKLS1ybSAtZiBjb25mdGVzdCRhY19jdl9leGVleHQKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfZXhlZXh0IiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfZXhlZXh0IiA+JjYKLS0KLS1ybSAtZiBjb25mdGVzdC4kYWNfZXh0Ci0tRVhFRVhUPSRhY19jdl9leGVleHQKLS1hY19leGVleHQ9JEVYRUVYVAotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3Igc3VmZml4IG9mIG9iamVjdCBmaWxlcyIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igc3VmZml4IG9mIG9iamVjdCBmaWxlcy4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X29iamV4dCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLStlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyBHTlUgQyIiLi4uICRhY19jIiAxPiY2Ci0rZWNobyAiY29uZmlndXJlOjgwOTogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgR05VIEMiID4mNQotK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX2djYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0rICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLS0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLQotLWludAotLW1haW4gKCkKLS17Ci0tCi0tICA7Ci0tICByZXR1cm4gMDsKLS19Ci0tX0FDRU9GCi0tcm0gLWYgY29uZnRlc3QubyBjb25mdGVzdC5vYmoKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB0aGVuCi0tICBmb3IgYWNfZmlsZSBpbiBgKGxzIGNvbmZ0ZXN0Lm8gY29uZnRlc3Qub2JqOyBscyBjb25mdGVzdC4qKSAyPi9kZXYvbnVsbGA7IGRvCi0tICBjYXNlICRhY19maWxlIGluCi0tICAgICouJGFjX2V4dCB8ICoueGNvZmYgfCAqLnRkcyB8ICouZCB8ICoucGRiIHwgKi54U1lNIHwgKi5iYiB8ICouYmJnICkgOzsKLS0gICAgKikgYWNfY3Zfb2JqZXh0PWBleHByICIkYWNfZmlsZSIgOiAnLipcLlwoLipcKSdgCi0tICAgICAgIGJyZWFrOzsKLS0gIGVzYWMKLS1kb25lCi0rICBjYXQgPiBjb25mdGVzdC5jIDw8RU9GCi0rI2lmZGVmIF9fR05VQ19fCi0rICB5ZXM7Ci0rI2VuZGlmCi0rRU9GCi0raWYgeyBhY190cnk9JyR7Q0MtY2N9IC1FIGNvbmZ0ZXN0LmMnOyB7IChldmFsIGVjaG8gY29uZmlndXJlOjgxODogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH07IH0gfCBlZ3JlcCB5ZXMgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rICBhY19jdl9wcm9nX2djYz15ZXMKLSBlbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS17IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBjYW5ub3QgY29tcHV0ZSBzdWZmaXggb2Ygb2JqZWN0IGZpbGVzOiBjYW5ub3QgY29tcGlsZQotLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgY29tcHV0ZSBzdWZmaXggb2Ygb2JqZWN0IGZpbGVzOiBjYW5ub3QgY29tcGlsZQotLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjI7fQotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotKyAgYWNfY3ZfcHJvZ19nY2M9bm8KLSBmaQotLQotLXJtIC1mIGNvbmZ0ZXN0LiRhY19jdl9vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotIGZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X29iamV4dCIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N2X29iamV4dCIgPiY2Ci0tT0JKRVhUPSRhY19jdl9vYmpleHQKLS1hY19vYmpleHQ9JE9CSkVYVAotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyB0aGUgR05VIEMgY29tcGlsZXIiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIGNvbXBpbGVyLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfY19jb21waWxlcl9nbnUrc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0tZWxzZQotLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0taW50Ci0tbWFpbiAoKQotLXsKLS0jaWZuZGVmIF9fR05VQ19fCi0tICAgICAgIGNob2tlIG1lCi0tI2VuZGlmCi0rZWNobyAiJGFjX3QiIiRhY19jdl9wcm9nX2djYyIgMT4mNgotIAotLSAgOwotLSAgcmV0dXJuIDA7Ci0tfQotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0tICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0tICBhY19jb21waWxlcl9nbnU9eWVzCi0raWYgdGVzdCAkYWNfY3ZfcHJvZ19nY2MgPSB5ZXM7IHRoZW4KLSsgIEdDQz15ZXMKLSBlbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS1hY19jb21waWxlcl9nbnU9bm8KLSsgIEdDQz0KLSBmaQotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotLWFjX2N2X2NfY29tcGlsZXJfZ251PSRhY19jb21waWxlcl9nbnUKLSAKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9jX2NvbXBpbGVyX2dudSIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2NfY29tcGlsZXJfZ251IiA+JjYKLS1HQ0M9YHRlc3QgJGFjX2NvbXBpbGVyX2dudSA9IHllcyAmJiBlY2hvIHllc2AKLS1hY190ZXN0X0NGTEFHUz0ke0NGTEFHUytzZXR9Ci0tYWNfc2F2ZV9DRkxBR1M9JENGTEFHUwotLUNGTEFHUz0iLWciCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIHdoZXRoZXIgJENDIGFjY2VwdHMgLWciID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciAkQ0MgYWNjZXB0cyAtZy4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfY2NfZytzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLSthY190ZXN0X0NGTEFHUz0iJHtDRkxBR1Mrc2V0fSIKLSthY19zYXZlX0NGTEFHUz0iJENGTEFHUyIKLStDRkxBR1M9Ci0rZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciAke0NDLWNjfSBhY2NlcHRzIC1nIiIuLi4gJGFjX2MiIDE+JjYKLStlY2hvICJjb25maWd1cmU6ODM3OiBjaGVja2luZyB3aGV0aGVyICR7Q0MtY2N9IGFjY2VwdHMgLWciID4mNQotK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX2NjX2cnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotKyAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0KLS1pbnQKLS1tYWluICgpCi0tewotLQotLSAgOwotLSAgcmV0dXJuIDA7Ci0tfQotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0tICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0rICBlY2hvICd2b2lkIGYoKXt9JyA+IGNvbmZ0ZXN0LmMKLStpZiB0ZXN0IC16ICJgJHtDQy1jY30gLWcgLWMgY29uZnRlc3QuYyAyPiYxYCI7IHRoZW4KLSAgIGFjX2N2X3Byb2dfY2NfZz15ZXMKLSBlbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLSsgIGFjX2N2X3Byb2dfY2NfZz1ubwotK2ZpCi0rcm0gLWYgY29uZnRlc3QqCi0gCi0tYWNfY3ZfcHJvZ19jY19nPW5vCi0gZmkKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9wcm9nX2NjX2ciID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl9wcm9nX2NjX2ciID4mNgotKwotK2VjaG8gIiRhY190IiIkYWNfY3ZfcHJvZ19jY19nIiAxPiY2Ci0gaWYgdGVzdCAiJGFjX3Rlc3RfQ0ZMQUdTIiA9IHNldDsgdGhlbgotLSAgQ0ZMQUdTPSRhY19zYXZlX0NGTEFHUwotKyAgQ0ZMQUdTPSIkYWNfc2F2ZV9DRkxBR1MiCi0gZWxpZiB0ZXN0ICRhY19jdl9wcm9nX2NjX2cgPSB5ZXM7IHRoZW4KLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgIENGTEFHUz0iLWcgLU8yIgotQEAgLTIwMjgsMzA0ICs4NjMsMzcgQEAKLSAgICAgQ0ZMQUdTPQotICAgZmkKLSBmaQotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJENDIG9wdGlvbiB0byBhY2NlcHQgQU5TSSBDIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkQ0Mgb3B0aW9uIHRvIGFjY2VwdCBBTlNJIEMuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9wcm9nX2NjX3N0ZGMrc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0tZWxzZQotLSAgYWNfY3ZfcHJvZ19jY19zdGRjPW5vCi0tYWNfc2F2ZV9DQz0kQ0MKLS1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0tI2luY2x1ZGUgPHN0ZGlvLmg+Ci0tI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotLS8qIE1vc3Qgb2YgdGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgc3RvbGVuIGZyb20gUkNTIDUuNydzIHNyYy9jb25mLnNoLiAgKi8KLS1zdHJ1Y3QgYnVmIHsgaW50IHg7IH07Ci0tRklMRSAqICgqcmNzb3BlbikgKHN0cnVjdCBidWYgKiwgc3RydWN0IHN0YXQgKiwgaW50KTsKLS1zdGF0aWMgY2hhciAqZSAocCwgaSkKLS0gICAgIGNoYXIgKipwOwotLSAgICAgaW50IGk7Ci0tewotLSAgcmV0dXJuIHBbaV07Ci0tfQotLXN0YXRpYyBjaGFyICpmIChjaGFyICogKCpnKSAoY2hhciAqKiwgaW50KSwgY2hhciAqKnAsIC4uLikKLS17Ci0tICBjaGFyICpzOwotLSAgdmFfbGlzdCB2OwotLSAgdmFfc3RhcnQgKHYscCk7Ci0tICBzID0gZyAocCwgdmFfYXJnICh2LGludCkpOwotLSAgdmFfZW5kICh2KTsKLS0gIHJldHVybiBzOwotLX0KLS1pbnQgdGVzdCAoaW50IGksIGRvdWJsZSB4KTsKLS1zdHJ1Y3QgczEge2ludCAoKmYpIChpbnQgYSk7fTsKLS1zdHJ1Y3QgczIge2ludCAoKmYpIChkb3VibGUgYSk7fTsKLS1pbnQgcGFpcm5hbWVzIChpbnQsIGNoYXIgKiosIEZJTEUgKigqKShzdHJ1Y3QgYnVmICosIHN0cnVjdCBzdGF0ICosIGludCksIGludCwgaW50KTsKLS1pbnQgYXJnYzsKLS1jaGFyICoqYXJndjsKLS1pbnQKLS1tYWluICgpCi0tewotLXJldHVybiBmIChlLCBhcmd2LCAwKSAhPSBhcmd2WzBdICB8fCAgZiAoZSwgYXJndiwgMSkgIT0gYXJndlsxXTsKLS0gIDsKLS0gIHJldHVybiAwOwotLX0KLS1fQUNFT0YKLS0jIERvbid0IHRyeSBnY2MgLWFuc2k7IHRoYXQgdHVybnMgb2ZmIHVzZWZ1bCBleHRlbnNpb25zIGFuZAotLSMgYnJlYWtzIHNvbWUgc3lzdGVtcycgaGVhZGVyIGZpbGVzLgotLSMgQUlYCQkJLXFsYW5nbHZsPWFuc2kKLS0jIFVsdHJpeCBhbmQgT1NGLzEJLXN0ZDEKLS0jIEhQLVVYIDEwLjIwIGFuZCBsYXRlcgktQWUKLS0jIEhQLVVYIG9sZGVyIHZlcnNpb25zCS1BYSAtRF9IUFVYX1NPVVJDRQotLSMgU1ZSNAkJCS1YYyAtRF9fRVhURU5TSU9OU19fCi0tZm9yIGFjX2FyZyBpbiAiIiAtcWxhbmdsdmw9YW5zaSAtc3RkMSAtQWUgIi1BYSAtRF9IUFVYX1NPVVJDRSIgIi1YYyAtRF9fRVhURU5TSU9OU19fIgotLWRvCi0tICBDQz0iJGFjX3NhdmVfQ0MgJGFjX2FyZyIKLS0gIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0tICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0tICBhY19jdl9wcm9nX2NjX3N0ZGM9JGFjX2FyZwotLWJyZWFrCi0tZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0gCi0tZmkKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0tZG9uZQotLXJtIC1mIGNvbmZ0ZXN0LiRhY19leHQgY29uZnRlc3QuJGFjX29iamV4dAotLUNDPSRhY19zYXZlX0NDCi0tCi0tZmkKLS0KLS1jYXNlICJ4JGFjX2N2X3Byb2dfY2Nfc3RkYyIgaW4KLS0gIHh8eG5vKQotLSAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBub25lIG5lZWRlZCIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9bm9uZSBuZWVkZWQiID4mNiA7OwotLSAgKikKLS0gICAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X3Byb2dfY2Nfc3RkYyIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N2X3Byb2dfY2Nfc3RkYyIgPiY2Ci0tICAgIENDPSIkQ0MgJGFjX2N2X3Byb2dfY2Nfc3RkYyIgOzsKLS1lc2FjCi0tCi0tIyBTb21lIHBlb3BsZSB1c2UgYSBDKysgY29tcGlsZXIgdG8gY29tcGlsZSBDLiAgU2luY2Ugd2UgdXNlIGBleGl0JywKLS0jIGluIEMrKyB3ZSBuZWVkIHRvIGRlY2xhcmUgaXQuICBJbiBjYXNlIHNvbWVvbmUgdXNlcyB0aGUgc2FtZSBjb21waWxlcgotLSMgZm9yIGJvdGggY29tcGlsaW5nIEMgYW5kIEMrKyB3ZSBuZWVkIHRvIGhhdmUgdGhlIEMrKyBjb21waWxlciBkZWNpZGUKLS0jIHRoZSBkZWNsYXJhdGlvbiBvZiBleGl0LCBzaW5jZSBpdCdzIHRoZSBtb3N0IGRlbWFuZGluZyBlbnZpcm9ubWVudC4KLS1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jaWZuZGVmIF9fY3BsdXNwbHVzCi0tICBjaG9rZSBtZQotLSNlbmRpZgotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0tICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0tICBmb3IgYWNfZGVjbGFyYXRpb24gaW4gXAotLSAgICcnXAotLSAgICcjaW5jbHVkZSA8c3RkbGliLmg+JyBcCi0tICAgJ2V4dGVybiAiQyIgdm9pZCBzdGQ6OmV4aXQgKGludCkgdGhyb3cgKCk7IHVzaW5nIHN0ZDo6ZXhpdDsnIFwKLS0gICAnZXh0ZXJuICJDIiB2b2lkIHN0ZDo6ZXhpdCAoaW50KTsgdXNpbmcgc3RkOjpleGl0OycgXAotLSAgICdleHRlcm4gIkMiIHZvaWQgZXhpdCAoaW50KSB0aHJvdyAoKTsnIFwKLS0gICAnZXh0ZXJuICJDIiB2b2lkIGV4aXQgKGludCk7JyBcCi0tICAgJ3ZvaWQgZXhpdCAoaW50KTsnCi0tZG8KLS0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSNpbmNsdWRlIDxzdGRsaWIuaD4KLS0kYWNfZGVjbGFyYXRpb24KLS1pbnQKLS1tYWluICgpCi0tewotLWV4aXQgKDQyKTsKLS0gIDsKLS0gIHJldHVybiAwOwotLX0KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotLSAgOgotKyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicmFubGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgcmFubGliOyBhY193b3JkPSQyCi0rZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLStlY2hvICJjb25maWd1cmU6ODcxOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX1JBTkxJQicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0rICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLWNvbnRpbnVlCi0tZmkKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSRhY19kZWNsYXJhdGlvbgotLWludAotLW1haW4gKCkKLS17Ci0tZXhpdCAoNDIpOwotLSAgOwotLSAgcmV0dXJuIDA7Ci0tfQotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0tICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0tICBicmVhawotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLWZpCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tZG9uZQotLXJtIC1mIGNvbmZ0ZXN0KgotLWlmIHRlc3QgLW4gIiRhY19kZWNsYXJhdGlvbiI7IHRoZW4KLS0gIGVjaG8gJyNpZmRlZiBfX2NwbHVzcGx1cycgPj5jb25mZGVmcy5oCi0tICBlY2hvICRhY19kZWNsYXJhdGlvbiAgICAgID4+Y29uZmRlZnMuaAotLSAgZWNobyAnI2VuZGlmJyAgICAgICAgICAgICA+PmNvbmZkZWZzLmgKLS1maQotLQotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLWZpCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tYWNfZXh0PWMKLS1hY19jcHA9JyRDUFAgJENQUEZMQUdTJwotLWFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKLS1hY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotLWFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKLS0KLS1pZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9cmFubGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1yYW5saWI7IGFjX3dvcmQ9JDIKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfUkFOTElCK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWVsc2UKLSAgIGlmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCi0gICBhY19jdl9wcm9nX1JBTkxJQj0iJFJBTkxJQiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0gZWxzZQotLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLS1mb3IgYXNfZGlyIGluICRQQVRICi0tZG8KLS0gIElGUz0kYXNfc2F2ZV9JRlMKLS0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0tICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLS0gIGlmICRhc19leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfUkFOTElCPSIke2FjX3Rvb2xfcHJlZml4fXJhbmxpYiIKLS0gICAgZWNobyAiJGFzX21lOiRMSU5FTk86IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotLSAgICBicmVhayAyCi0tICBmaQotLWRvbmUKLS1kb25lCi0tCi0rICBJRlM9IiR7SUZTPSAJfSI7IGFjX3NhdmVfaWZzPSIkSUZTIjsgSUZTPSI6IgotKyAgYWNfZHVtbXk9IiRQQVRIIgotKyAgZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCi0rICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0rICAgIGlmIHRlc3QgLWYgJGFjX2Rpci8kYWNfd29yZDsgdGhlbgotKyAgICAgIGFjX2N2X3Byb2dfUkFOTElCPSJyYW5saWIiCi0rICAgICAgYnJlYWsKLSsgICAgZmkKLSsgIGRvbmUKLSsgIElGUz0iJGFjX3NhdmVfaWZzIgotKyAgdGVzdCAteiAiJGFjX2N2X3Byb2dfUkFOTElCIiAmJiBhY19jdl9wcm9nX1JBTkxJQj0iOiIKLSBmaQotIGZpCi0tUkFOTElCPSRhY19jdl9wcm9nX1JBTkxJQgotK1JBTkxJQj0iJGFjX2N2X3Byb2dfUkFOTElCIgotIGlmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkUkFOTElCIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kUkFOTElCIiA+JjYKLSsgIGVjaG8gIiRhY190IiIkUkFOTElCIiAxPiY2Ci0gZWxzZQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogbm8iID4mNQotLWVjaG8gIiR7RUNIT19UfW5vIiA+JjYKLSsgIGVjaG8gIiRhY190IiJubyIgMT4mNgotIGZpCi0gCi0tZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19SQU5MSUIiOyB0aGVuCi0tICBhY19jdF9SQU5MSUI9JFJBTkxJQgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJyYW5saWIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSByYW5saWI7IGFjX3dvcmQ9JDIKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfUkFOTElCK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWVsc2UKLS0gIGlmIHRlc3QgLW4gIiRhY19jdF9SQU5MSUIiOyB0aGVuCi0tICBhY19jdl9wcm9nX2FjX2N0X1JBTkxJQj0iJGFjX2N0X1JBTkxJQiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0tZWxzZQotLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLS1mb3IgYXNfZGlyIGluICRQQVRICi0tZG8KLS0gIElGUz0kYXNfc2F2ZV9JRlMKLS0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0tICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLS0gIGlmICRhc19leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfYWNfY3RfUkFOTElCPSJyYW5saWIiCi0tICAgIGVjaG8gIiRhc19tZTokTElORU5POiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLS0gICAgYnJlYWsgMgotLSAgZmkKLS1kb25lCi0tZG9uZQotLQotLSAgdGVzdCAteiAiJGFjX2N2X3Byb2dfYWNfY3RfUkFOTElCIiAmJiBhY19jdl9wcm9nX2FjX2N0X1JBTkxJQj0iOiIKLS1maQotLWZpCi0tYWNfY3RfUkFOTElCPSRhY19jdl9wcm9nX2FjX2N0X1JBTkxJQgotLWlmIHRlc3QgLW4gIiRhY19jdF9SQU5MSUIiOyB0aGVuCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3RfUkFOTElCIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3RfUkFOTElCIiA+JjYKLS1lbHNlCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBubyIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9bm8iID4mNgotLWZpCi0tCi0tICBSQU5MSUI9JGFjX2N0X1JBTkxJQgotLWVsc2UKLS0gIFJBTkxJQj0iJGFjX2N2X3Byb2dfUkFOTElCIgotLWZpCi0tCi0gIyBGaW5kIGEgZ29vZCBpbnN0YWxsIHByb2dyYW0uICBXZSBwcmVmZXIgYSBDIHByb2dyYW0gKGZhc3RlciksCi0gIyBzbyBvbmUgc2NyaXB0IGlzIGFzIGdvb2QgYXMgYW5vdGhlci4gIEJ1dCBhdm9pZCB0aGUgYnJva2VuIG9yCi0gIyBpbmNvbXBhdGlibGUgdmVyc2lvbnM6Ci1AQCAtMjMzMywzMDYgKzkwMSwxNTggQEAKLSAjIFN1bk9TIC91c3IvZXRjL2luc3RhbGwKLSAjIElSSVggL3NiaW4vaW5zdGFsbAotICMgQUlYIC9iaW4vaW5zdGFsbAotLSMgQW1pZ2FPUyAvQy9pbnN0YWxsLCB3aGljaCBpbnN0YWxscyBib290YmxvY2tzIG9uIGZsb3BweSBkaXNjcwotICMgQUlYIDQgL3Vzci9iaW4vaW5zdGFsbGJzZCwgd2hpY2ggZG9lc24ndCB3b3JrIHdpdGhvdXQgYSAtZyBmbGFnCi0gIyBBRlMgL3Vzci9hZnN3cy9iaW4vaW5zdGFsbCwgd2hpY2ggbWlzaGFuZGxlcyBub25leGlzdGVudCBhcmdzCi0gIyBTVlI0IC91c3IvdWNiL2luc3RhbGwsIHdoaWNoIHRyaWVzIHRvIHVzZSB0aGUgbm9uZXhpc3RlbnQgZ3JvdXAgInN0YWZmIgotICMgLi9pbnN0YWxsLCB3aGljaCBjYW4gYmUgZXJyb25lb3VzbHkgY3JlYXRlZCBieSBtYWtlIGZyb20gLi9pbnN0YWxsLnNoLgotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgYSBCU0QtY29tcGF0aWJsZSBpbnN0YWxsIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBhIEJTRC1jb21wYXRpYmxlIGluc3RhbGwuLi4gJEVDSE9fQyIgPiY2Ci0rZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGEgQlNEIGNvbXBhdGlibGUgaW5zdGFsbCIiLi4uICRhY19jIiAxPiY2Ci0rZWNobyAiY29uZmlndXJlOjkxMDogY2hlY2tpbmcgZm9yIGEgQlNEIGNvbXBhdGlibGUgaW5zdGFsbCIgPiY1Ci0gaWYgdGVzdCAteiAiJElOU1RBTEwiOyB0aGVuCi0taWYgdGVzdCAiJHthY19jdl9wYXRoX2luc3RhbGwrc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0raWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3BhdGhfaW5zdGFsbCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0rICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLS0gIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLS1mb3IgYXNfZGlyIGluICRQQVRICi0tZG8KLS0gIElGUz0kYXNfc2F2ZV9JRlMKLS0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0tICAjIEFjY291bnQgZm9yIHBlb3BsZSB3aG8gcHV0IHRyYWlsaW5nIHNsYXNoZXMgaW4gUEFUSCBlbGVtZW50cy4KLS1jYXNlICRhc19kaXIvIGluCi0tICAuLyB8IC4vLyB8IC9jQy8qIHwgXAotLSAgL2V0Yy8qIHwgL3Vzci9zYmluLyogfCAvdXNyL2V0Yy8qIHwgL3NiaW4vKiB8IC91c3IvYWZzd3MvYmluLyogfCBcCi0tICAvdXNyL3VjYi8qICkgOzsKLS0gICopCi0tICAgICMgT1NGMSBhbmQgU0NPIE9EVCAzLjAgaGF2ZSB0aGVpciBvd24gbmFtZXMgZm9yIGluc3RhbGwuCi0tICAgICMgRG9uJ3QgdXNlIGluc3RhbGxic2QgZnJvbSBPU0Ygc2luY2UgaXQgaW5zdGFsbHMgc3R1ZmYgYXMgcm9vdAotLSAgICAjIGJ5IGRlZmF1bHQuCi0tICAgIGZvciBhY19wcm9nIGluIGdpbnN0YWxsIHNjb2luc3QgaW5zdGFsbDsgZG8KLS0gICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLS0gICAgICAgIGlmICRhc19leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiOyB0aGVuCi0tICAgICAgICAgIGlmIHRlc3QgJGFjX3Byb2cgPSBpbnN0YWxsICYmCi0tICAgICAgICAgICAgZ3JlcCBkc3Btc2cgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiID4vZGV2L251bGwgMj4mMTsgdGhlbgotLSAgICAgICAgICAgICMgQUlYIGluc3RhbGwuICBJdCBoYXMgYW4gaW5jb21wYXRpYmxlIGNhbGxpbmcgY29udmVudGlvbi4KLS0gICAgICAgICAgICA6Ci0tICAgICAgICAgIGVsaWYgdGVzdCAkYWNfcHJvZyA9IGluc3RhbGwgJiYKLS0gICAgICAgICAgICBncmVwIHB3cGx1cyAiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0tICAgICAgICAgICAgIyBwcm9ncmFtLXNwZWNpZmljIGluc3RhbGwgc2NyaXB0IHVzZWQgYnkgSFAgcHdwbHVzLS1kb24ndCB1c2UuCi0tICAgICAgICAgICAgOgotLSAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgYWNfY3ZfcGF0aF9pbnN0YWxsPSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IC1jIgotLSAgICAgICAgICAgIGJyZWFrIDMKLS0gICAgICAgICAgZmkKLS0gICAgICAgIGZpCi0rICAgIElGUz0iJHtJRlM9IAl9IjsgYWNfc2F2ZV9JRlM9IiRJRlMiOyBJRlM9IjoiCi0rICBmb3IgYWNfZGlyIGluICRQQVRIOyBkbwotKyAgICAjIEFjY291bnQgZm9yIHBlb3BsZSB3aG8gcHV0IHRyYWlsaW5nIHNsYXNoZXMgaW4gUEFUSCBlbGVtZW50cy4KLSsgICAgY2FzZSAiJGFjX2Rpci8iIGluCi0rICAgIC98Li98Li8vfC9ldGMvKnwvdXNyL3NiaW4vKnwvdXNyL2V0Yy8qfC9zYmluLyp8L3Vzci9hZnN3cy9iaW4vKnwvdXNyL3VjYi8qKSA7OwotKyAgICAqKQotKyAgICAgICMgT1NGMSBhbmQgU0NPIE9EVCAzLjAgaGF2ZSB0aGVpciBvd24gbmFtZXMgZm9yIGluc3RhbGwuCi0rICAgICAgIyBEb24ndCB1c2UgaW5zdGFsbGJzZCBmcm9tIE9TRiBzaW5jZSBpdCBpbnN0YWxscyBzdHVmZiBhcyByb290Ci0rICAgICAgIyBieSBkZWZhdWx0LgotKyAgICAgIGZvciBhY19wcm9nIGluIGdpbnN0YWxsIHNjb2luc3QgaW5zdGFsbDsgZG8KLSsgICAgICAgIGlmIHRlc3QgLWYgJGFjX2Rpci8kYWNfcHJvZzsgdGhlbgotKwkgIGlmIHRlc3QgJGFjX3Byb2cgPSBpbnN0YWxsICYmCi0rICAgICAgICAgICAgZ3JlcCBkc3Btc2cgJGFjX2Rpci8kYWNfcHJvZyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsJICAgICMgQUlYIGluc3RhbGwuICBJdCBoYXMgYW4gaW5jb21wYXRpYmxlIGNhbGxpbmcgY29udmVudGlvbi4KLSsJICAgIDoKLSsJICBlbHNlCi0rCSAgICBhY19jdl9wYXRoX2luc3RhbGw9IiRhY19kaXIvJGFjX3Byb2cgLWMiCi0rCSAgICBicmVhayAyCi0rCSAgZmkKLSsJZmkKLSAgICAgICBkb25lCi0tICAgIGRvbmUKLS0gICAgOzsKLS1lc2FjCi0tZG9uZQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsgIGRvbmUKLSsgIElGUz0iJGFjX3NhdmVfSUZTIgotIAotLQotIGZpCi0gICBpZiB0ZXN0ICIke2FjX2N2X3BhdGhfaW5zdGFsbCtzZXR9IiA9IHNldDsgdGhlbgotLSAgICBJTlNUQUxMPSRhY19jdl9wYXRoX2luc3RhbGwKLSsgICAgSU5TVEFMTD0iJGFjX2N2X3BhdGhfaW5zdGFsbCIKLSAgIGVsc2UKLSAgICAgIyBBcyBhIGxhc3QgcmVzb3J0LCB1c2UgdGhlIHNsb3cgc2hlbGwgc2NyaXB0LiAgV2UgZG9uJ3QgY2FjaGUgYQotICAgICAjIHBhdGggZm9yIElOU1RBTEwgd2l0aGluIGEgc291cmNlIGRpcmVjdG9yeSwgYmVjYXVzZSB0aGF0IHdpbGwKLSAgICAgIyBicmVhayBvdGhlciBwYWNrYWdlcyB1c2luZyB0aGUgY2FjaGUgaWYgdGhhdCBkaXJlY3RvcnkgaXMKLSAgICAgIyByZW1vdmVkLCBvciBpZiB0aGUgcGF0aCBpcyByZWxhdGl2ZS4KLS0gICAgSU5TVEFMTD0kYWNfaW5zdGFsbF9zaAotKyAgICBJTlNUQUxMPSIkYWNfaW5zdGFsbF9zaCIKLSAgIGZpCi0gZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkSU5TVEFMTCIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JElOU1RBTEwiID4mNgotK2VjaG8gIiRhY190IiIkSU5TVEFMTCIgMT4mNgotIAotICMgVXNlIHRlc3QgLXogYmVjYXVzZSBTdW5PUzQgc2ggbWlzaGFuZGxlcyBicmFjZXMgaW4gJHt2YXItdmFsfS4KLSAjIEl0IHRoaW5rcyB0aGUgZmlyc3QgY2xvc2UgYnJhY2UgZW5kcyB0aGUgdmFyaWFibGUgc3Vic3RpdHV0aW9uLgotIHRlc3QgLXogIiRJTlNUQUxMX1BST0dSQU0iICYmIElOU1RBTExfUFJPR1JBTT0nJHtJTlNUQUxMfScKLSAKLS10ZXN0IC16ICIkSU5TVEFMTF9TQ1JJUFQiICYmIElOU1RBTExfU0NSSVBUPScke0lOU1RBTEx9JwotK3Rlc3QgLXogIiRJTlNUQUxMX1NDUklQVCIgJiYgSU5TVEFMTF9TQ1JJUFQ9JyR7SU5TVEFMTF9QUk9HUkFNfScKLSAKLSB0ZXN0IC16ICIkSU5TVEFMTF9EQVRBIiAmJiBJTlNUQUxMX0RBVEE9JyR7SU5TVEFMTH0gLW0gNjQ0JwotIAotLWlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0raWYgdGVzdCAkaG9zdCAhPSAkYnVpbGQ7IHRoZW4KLSsgIGFjX3Rvb2xfcHJlZml4PSR7aG9zdF9hbGlhc30tCi0rZWxzZQotKyAgYWNfdG9vbF9wcmVmaXg9Ci0rZmkKLSsKLSsjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotK2VjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci0rZWNobyAiY29uZmlndXJlOjk3MTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19BUicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0rICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgIGlmIHRlc3QgLW4gIiRBUiI7IHRoZW4KLSAgIGFjX2N2X3Byb2dfQVI9IiRBUiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0gZWxzZQotLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLS1mb3IgYXNfZGlyIGluICRQQVRICi0tZG8KLS0gIElGUz0kYXNfc2F2ZV9JRlMKLS0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0tICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLS0gIGlmICRhc19leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCi0tICAgIGVjaG8gIiRhc19tZTokTElORU5POiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLS0gICAgYnJlYWsgMgotLSAgZmkKLS1kb25lCi0tZG9uZQotLQotKyAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iOiIKLSsgIGFjX2R1bW15PSIkUEFUSCIKLSsgIGZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwotKyAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgotKyAgICBpZiB0ZXN0IC1mICRhY19kaXIvJGFjX3dvcmQ7IHRoZW4KLSsgICAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgotKyAgICAgIGJyZWFrCi0rICAgIGZpCi0rICBkb25lCi0rICBJRlM9IiRhY19zYXZlX2lmcyIKLSsgIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIiAmJiBhY19jdl9wcm9nX0FSPSJhciIKLSBmaQotIGZpCi0tQVI9JGFjX2N2X3Byb2dfQVIKLStBUj0iJGFjX2N2X3Byb2dfQVIiCi0gaWYgdGVzdCAtbiAiJEFSIjsgdGhlbgotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJEFSIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kQVIiID4mNgotKyAgZWNobyAiJGFjX3QiIiRBUiIgMT4mNgotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IG5vIiA+JjUKLS1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci0rICBlY2hvICIkYWNfdCIibm8iIDE+JjYKLSBmaQotIAotLWZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCi0tICBhY19jdF9BUj0kQVIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0tICBpZiB0ZXN0IC1uICIkYWNfY3RfQVIiOyB0aGVuCi0tICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfY3RfQVIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotLWVsc2UKLS1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiAkYXNfZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKLS0gICAgZWNobyAiJGFzX21lOiRMSU5FTk86IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotLSAgICBicmVhayAyCi0tICBmaQotLWRvbmUKLS1kb25lCi0gCi0tZmkKLS1maQotLWFjX2N0X0FSPSRhY19jdl9wcm9nX2FjX2N0X0FSCi0taWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsgdGhlbgotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N0X0FSIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3RfQVIiID4mNgotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6IG5vIiA+JjUKLS1lY2hvICIke0VDSE9fVH1ubyIgPiY2Ci0tZmkKLSAKLS0gIEFSPSRhY19jdF9BUgotK2VjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgYnl0ZSBvcmRlcmluZyBpcyBiaWdlbmRpYW4iIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZToxMDAxOiBjaGVja2luZyB3aGV0aGVyIGJ5dGUgb3JkZXJpbmcgaXMgYmlnZW5kaWFuIiA+JjUKLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfY19iaWdlbmRpYW4nK3NldH0nYFwiID0gc2V0IjsgdGhlbgotKyAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0tICBBUj0iJGFjX2N2X3Byb2dfQVIiCi0tZmkKLS0KLS0KLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgd2hldGhlciBieXRlIG9yZGVyaW5nIGlzIGJpZ2VuZGlhbiIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyIGJ5dGUgb3JkZXJpbmcgaXMgYmlnZW5kaWFuLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfY19iaWdlbmRpYW4rc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0tZWxzZQotLSAgIyBTZWUgaWYgc3lzL3BhcmFtLmggZGVmaW5lcyB0aGUgQllURV9PUkRFUiBtYWNyby4KLS1jYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsgIGFjX2N2X2NfYmlnZW5kaWFuPXVua25vd24KLSsjIFNlZSBpZiBzeXMvcGFyYW0uaCBkZWZpbmVzIHRoZSBCWVRFX09SREVSIG1hY3JvLgotK2NhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSsjbGluZSAxMDA4ICJjb25maWd1cmUiCi0rI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLStpbnQgbWFpbigpIHsKLSAKLS1pbnQKLS1tYWluICgpCi0tewotICNpZiAhQllURV9PUkRFUiB8fCAhQklHX0VORElBTiB8fCAhTElUVExFX0VORElBTgotICBib2d1cyBlbmRpYW4gbWFjcm9zCi0gI2VuZGlmCi0tCi0tICA7Ci0tICByZXR1cm4gMDsKLS19Ci0tX0FDRU9GCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLS0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLSs7IHJldHVybiAwOyB9Ci0rRU9GCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMDE5OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0rICBybSAtcmYgY29uZnRlc3QqCi0gICAjIEl0IGRvZXM7IG5vdyBzZWUgd2hldGhlciBpdCBkZWZpbmVkIHRvIEJJR19FTkRJQU4gb3Igbm90LgotLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotK2NhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSsjbGluZSAxMDIzICJjb25maWd1cmUiCi0rI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLStpbnQgbWFpbigpIHsKLSAKLS1pbnQKLS1tYWluICgpCi0tewotICNpZiBCWVRFX09SREVSICE9IEJJR19FTkRJQU4KLSAgbm90IGJpZyBlbmRpYW4KLSAjZW5kaWYKLS0KLS0gIDsKLS0gIHJldHVybiAwOwotLX0KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotKzsgcmV0dXJuIDA7IH0KLStFT0YKLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwMzQ6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLSsgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGFjX2N2X2NfYmlnZW5kaWFuPXllcwotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLWFjX2N2X2NfYmlnZW5kaWFuPW5vCi0rICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0rICBybSAtcmYgY29uZnRlc3QqCi0rICBhY19jdl9jX2JpZ2VuZGlhbj1ubwotIGZpCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0rcm0gLWYgY29uZnRlc3QqCi0gZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tIyBJdCBkb2VzIG5vdDsgY29tcGlsZSBhIHRlc3QgcHJvZ3JhbS4KLS1pZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgotLSAgIyB0cnkgdG8gZ3Vlc3MgdGhlIGVuZGlhbm5lc3MgYnkgZ3JlcHBpbmcgdmFsdWVzIGludG8gYW4gb2JqZWN0IGZpbGUKLS0gIGFjX2N2X2NfYmlnZW5kaWFuPXVua25vd24KLS0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLXNob3J0IGFzY2lpX21tW10gPSB7IDB4NDI0OSwgMHg0NzY1LCAweDZFNDQsIDB4Njk2MSwgMHg2RTUzLCAweDc5NTMsIDAgfTsKLS1zaG9ydCBhc2NpaV9paVtdID0geyAweDY5NEMsIDB4NTQ1NCwgMHg2NTZDLCAweDZFNDUsIDB4Njk0NCwgMHg2RTYxLCAwIH07Ci0tdm9pZCBfYXNjaWkgKCkgeyBjaGFyICpzID0gKGNoYXIgKikgYXNjaWlfbW07IHMgPSAoY2hhciAqKSBhc2NpaV9paTsgfQotLXNob3J0IGViY2RpY19paVtdID0geyAweDg5RDMsIDB4RTNFMywgMHg4NTkzLCAweDk1QzUsIDB4ODlDNCwgMHg5NTgxLCAwIH07Ci0tc2hvcnQgZWJjZGljX21tW10gPSB7IDB4QzJDOSwgMHhDNzg1LCAweDk1QzQsIDB4ODk4MSwgMHg5NUUyLCAweEE4RTIsIDAgfTsKLS12b2lkIF9lYmNkaWMgKCkgeyBjaGFyICpzID0gKGNoYXIgKikgZWJjZGljX21tOyBzID0gKGNoYXIgKikgZWJjZGljX2lpOyB9Ci0taW50Ci0tbWFpbiAoKQotLXsKLS0gX2FzY2lpICgpOyBfZWJjZGljICgpOwotLSAgOwotLSAgcmV0dXJuIDA7Ci0tfQotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0tICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0tICBpZiBncmVwIEJJR2VuRGlhblN5UyBjb25mdGVzdC4kYWNfb2JqZXh0ID4vZGV2L251bGwgOyB0aGVuCi0tICBhY19jdl9jX2JpZ2VuZGlhbj15ZXMKLSsgIGVjaG8gImNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0rICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLSBmaQotLWlmIGdyZXAgTGlUVGxlRW5EaWFuIGNvbmZ0ZXN0LiRhY19vYmpleHQgPi9kZXYvbnVsbCA7IHRoZW4KLS0gIGlmIHRlc3QgIiRhY19jdl9jX2JpZ2VuZGlhbiIgPSB1bmtub3duOyB0aGVuCi0tICAgIGFjX2N2X2NfYmlnZW5kaWFuPW5vCi0tICBlbHNlCi0tICAgICMgZmluZGluZyBib3RoIHN0cmluZ3MgaXMgdW5saWtlbHkgdG8gaGFwcGVuLCBidXQgd2hvIGtub3dzPwotLSAgICBhY19jdl9jX2JpZ2VuZGlhbj11bmtub3duCi0tICBmaQotLWZpCi0rcm0gLWYgY29uZnRlc3QqCi0raWYgdGVzdCAkYWNfY3ZfY19iaWdlbmRpYW4gPSB1bmtub3duOyB0aGVuCi0raWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KLSsgICAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBjYW4gbm90IHJ1biB0ZXN0IHByb2dyYW0gd2hpbGUgY3Jvc3MgY29tcGlsaW5nIiAxPiYyOyBleGl0IDE7IH0KLSBlbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS1maQotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotLWVsc2UKLS0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLWludAotLW1haW4gKCkKLS17Ci0rICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTA1NCAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotK21haW4gKCkgewotICAgLyogQXJlIHdlIGxpdHRsZSBvciBiaWcgZW5kaWFuPyAgRnJvbSBIYXJiaXNvbiZTdGVlbGUuICAqLwotICAgdW5pb24KLSAgIHsKLUBAIC0yNjQyLDUyICsxMDYyLDMxIEBACi0gICB1LmwgPSAxOwotICAgZXhpdCAodS5jW3NpemVvZiAobG9uZykgLSAxXSA9PSAxKTsKLSB9Ci0tX0FDRU9GCi0tcm0gLWYgY29uZnRlc3QkYWNfZXhlZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlua1wiIikgPiY1Ci0tICAoZXZhbCAkYWNfbGluaykgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJiB7IGFjX3RyeT0nLi9jb25mdGVzdCRhY19leGVleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotK0VPRgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTA2NzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAotK3RoZW4KLSAgIGFjX2N2X2NfYmlnZW5kaWFuPW5vCi0gZWxzZQotLSAgZWNobyAiJGFzX21lOiBwcm9ncmFtIGV4aXRlZCB3aXRoIHN0YXR1cyAkYWNfc3RhdHVzIiA+JjUKLS1lY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS0oIGV4aXQgJGFjX3N0YXR1cyApCi0tYWNfY3ZfY19iaWdlbmRpYW49eWVzCi0rICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0rICBybSAtZnIgY29uZnRlc3QqCi0rICBhY19jdl9jX2JpZ2VuZGlhbj15ZXMKLSBmaQotLXJtIC1mIGNvcmUgY29yZS4qICouY29yZSBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotK3JtIC1mciBjb25mdGVzdCoKLSBmaQotKwotIGZpCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfY19iaWdlbmRpYW4iID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl9jX2JpZ2VuZGlhbiIgPiY2Ci0tY2FzZSAkYWNfY3ZfY19iaWdlbmRpYW4gaW4KLS0gIHllcykKLSAKLS1jYXQgPj5jb25mZGVmcy5oIDw8XF9BQ0VPRgotK2VjaG8gIiRhY190IiIkYWNfY3ZfY19iaWdlbmRpYW4iIDE+JjYKLStpZiB0ZXN0ICRhY19jdl9jX2JpZ2VuZGlhbiA9IHllczsgdGhlbgotKyAgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCi0gI2RlZmluZSBXT1JEU19CSUdFTkRJQU4gMQotLV9BQ0VPRgotLSA7OwotLSAgbm8pCi0tICAgICA7OwotLSAgKikKLS0gICAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogdW5rbm93biBlbmRpYW5uZXNzCi0tcHJlc2V0dGluZyBhY19jdl9jX2JpZ2VuZGlhbj1ubyAob3IgeWVzKSB3aWxsIGhlbHAiID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IHVua25vd24gZW5kaWFubmVzcwotLXByZXNldHRpbmcgYWNfY3ZfY19iaWdlbmRpYW49bm8gKG9yIHllcykgd2lsbCBoZWxwIiA+JjI7fQotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfSA7OwotLWVzYWMKLStFT0YKLSAKLStmaQotIAotKwotIGlmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgotIAlDRkxBR1M9IiRDRkxBR1MgLVdhbGwiCi0gZmkKLUBAIC0yNjk3LDE0ICsxMDk2LDEzIEBACi0gICBjYXNlICIke2VuYWJsZXZhbH0iIGluCi0gICAgICAgICAgICAgICAgICB5ZXMpIHNoYXJlZD10cnVlIDs7Ci0gICAgICAgICAgICAgICAgICBubykgc2hhcmVkPWZhbHNlIDs7Ci0tICAgICAgICAgICAgICAgICAqKSB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciBzaGFyZWQgb3B0aW9ucyIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3Igc2hhcmVkIG9wdGlvbnMiID4mMjt9Ci0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9IDs7Ci0rICAgICAgICAgICAgICAgICAqKSB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IGJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIHNoYXJlZCBvcHRpb25zIiAxPiYyOyBleGl0IDE7IH0gOzsKLSAgICAgICAgICAgICAgICAgIGVzYWMKLSBlbHNlCi0gICBzaGFyZWQ9ZmFsc2UKLS1maTsKLStmaQotIAotKwotIGNhc2UgIiR0YXJnZXRfY3B1IiBpbgotICAgICAgaTM4NnxpNDg2fGk1ODZ8aTY4NikKLSAJVEFSR0VUX0NQVT1pMzg2Ci1AQCAtMjcxMiw3ICsxMTEwLDcgQEAKLSAgICAgICopCi0gICAgICAgICBUQVJHRVRfQ1BVPSR0YXJnZXRfY3B1Ci0gICAgICA7OwotLWVzYWMKLStlc2FjICAgICAKLSBUQVJHRVRfT1M9JHRhcmdldF9vcwotIAotIE02OEtDQz0KLUBAIC0yNzI2LDcgKzExMjQsNyBAQAotIAkJTTY4S0NDPS91c3IvbTY4ay1wYWxtb3MvYmluL2djYwotIAkJIyBHZW5lcmljIGJ1aWxkIGlzIEFSTSBvciBNNjhLIChwcm9iYWJseSBBUk0gdGhvdWdoKQotICAgICAgICAgICAgICAgICBDQz0iL3Vzci8kVEFSR0VUX0NQVS1wYWxtb3MvYmluL2djYyIKLS0JCWlmIHRlc3QgIiR0YXJnZXRfY3B1IiA9ICJhcm0iCi0rCQlpZiB0ZXN0ICIkdGFyZ2V0X2NwdSIgPSAiYXJtIiAKLSAgICAgICAgICAgICAgICAgdGhlbgotICAgICAgICAgICAgICAgICAgICBDQz0iJENDIC1mUElDIC1tYXJjaD1hcm12NHQiCi0gICAgICAgICAgICAgICAgIGZpCi1AQCAtMjc2Miw3ICsxMTYwLDcgQEAKLSAgICAgICopCi0gICAgICAgICBIT1NUX0NQVT0kaG9zdF9jcHUKLSAgICAgIDs7Ci0tZXNhYwotK2VzYWMgICAgIAotIEhPU1RfT1M9JGhvc3Rfb3MKLSAKLSAKLUBAIC0yODAwLDEzOCArMTE5OCw5MSBAQAotICAgY2FzZSAiJHtlbmFibGV2YWx9IiBpbgotICAgICAgICAgICAgICAgICAgeWVzKSBzb2NrZXRzPXRydWUgOzsKLSAgICAgICAgICAgICAgICAgIG5vKSBzb2NrZXRzPWZhbHNlIDs7Ci0tICAgICAgICAgICAgICAgICAqKSB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciBzb2NrZXRzIG9wdGlvbnMiID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IGJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIHNvY2tldHMgb3B0aW9ucyIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0gOzsKLSsgICAgICAgICAgICAgICAgICopIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3Igc29ja2V0cyBvcHRpb25zIiAxPiYyOyBleGl0IDE7IH0gOzsKLSAgICAgICAgICAgICAgICAgIGVzYWMKLSBlbHNlCi0gICBzb2NrZXRzPXRydWUKLS1maTsKLStmaQotKwotIGlmIHRlc3QgIiRzb2NrZXRzIiA9IGZhbHNlOyB0aGVuCi0tICAgY2F0ID4+Y29uZmRlZnMuaCA8PFxfQUNFT0YKLSsgICBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKLSAjZGVmaW5lIENTVF9OT19TT0NLRVRTIDEKLS1fQUNFT0YKLStFT0YKLSAKLSBmaQotIAotLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotK2NhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSsjbGluZSAxMjE2ICJjb25maWd1cmUiCi0rI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0taW50Ci0tbWFpbiAoKQotLXsKLStpbnQgbWFpbigpIHsKLSAgc3RydWN0IGEgeyB1bmlvbiB7IGZsb2F0IGI7IGludCBjOyB9IGQ7IH07Ci0tICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYSBlID0geyAuZD17IC5iPTMuMTQgfSB9OwotLSAgOwotLSAgcmV0dXJuIDA7Ci0tfQotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0tICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0rICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYSBlID0geyAuZD17IC5iPTMuMTQgfSB9OyAKLSs7IHJldHVybiAwOyB9Ci0rRU9GCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMjI0OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0rICBybSAtcmYgY29uZnRlc3QqCi0gICB1bmlvbmluaXQ9eWVzCi0gZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tdW5pb25pbml0PW5vCi0rICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0rICBybSAtcmYgY29uZnRlc3QqCi0rICB1bmlvbmluaXQ9bm8KLSBmaQotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotK3JtIC1mIGNvbmZ0ZXN0KgotIGlmIHRlc3QgIiR1bmlvbmluaXQiID0gbm87IHRoZW4KLS0gICBjYXQgPj5jb25mZGVmcy5oIDw8XF9BQ0VPRgotKyAgIGNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRgotICNkZWZpbmUgTk9fVU5JT05fSU5JVElBTElaQVRJT04gMQotLV9BQ0VPRgotK0VPRgotIAotIGZpCi0gCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBtbWFwIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBtbWFwLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfZnVuY19tbWFwK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotK2VjaG8gJGFjX24gImNoZWNraW5nIGZvciBtbWFwIiIuLi4gJGFjX2MiIDE+JjYKLStlY2hvICJjb25maWd1cmU6MTI0MjogY2hlY2tpbmcgZm9yIG1tYXAiID4mNQotK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jX21tYXAnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotKyAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSsjbGluZSAxMjQ3ICJjb25maWd1cmUiCi0rI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAotLSAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIG1tYXAgKCk7IGJlbG93LgotLSAgICBQcmVmZXIgPGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRlZmluZWQsIHNpbmNlCi0tICAgIDxsaW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4gICovCi0tI2lmZGVmIF9fU1REQ19fCi0tIyBpbmNsdWRlIDxsaW1pdHMuaD4KLS0jZWxzZQotLSMgaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2VuZGlmCi0rICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgbW1hcCgpOyBiZWxvdy4gICovCi0rI2luY2x1ZGUgPGFzc2VydC5oPgotIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi0tI2lmZGVmIF9fY3BsdXNwbHVzCi0tZXh0ZXJuICJDIgotLXsKLS0jZW5kaWYKLSAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCi0tICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KLS1jaGFyIG1tYXAgKCk7Ci0rICAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCi0rY2hhciBtbWFwKCk7Ci0rCi0raW50IG1haW4oKSB7Ci0rCi0gLyogVGhlIEdOVSBDIGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwotICAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAotICAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBfXyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KLSAjaWYgZGVmaW5lZCAoX19zdHViX21tYXApIHx8IGRlZmluZWQgKF9fc3R1Yl9fX21tYXApCi0gY2hva2UgbWUKLSAjZWxzZQotLWNoYXIgKCpmKSAoKSA9IG1tYXA7Ci0rbW1hcCgpOwotICNlbmRpZgotLSNpZmRlZiBfX2NwbHVzcGx1cwotLX0KLS0jZW5kaWYKLSAKLS1pbnQKLS1tYWluICgpCi0tewotLXJldHVybiBmICE9IG1tYXA7Ci0tICA7Ci0tICByZXR1cm4gMDsKLS19Ci0tX0FDRU9GCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdCRhY19leGVleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19saW5rXCIiKSA+JjUKLS0gIChldmFsICRhY19saW5rKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0tICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0JwotLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLS0gIGFjX2N2X2Z1bmNfbW1hcD15ZXMKLSs7IHJldHVybiAwOyB9Ci0rRU9GCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMjcwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSsgIHJtIC1yZiBjb25mdGVzdCoKLSsgIGV2YWwgImFjX2N2X2Z1bmNfbW1hcD15ZXMiCi0gZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tYWNfY3ZfZnVuY19tbWFwPW5vCi0rICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0rICBybSAtcmYgY29uZnRlc3QqCi0rICBldmFsICJhY19jdl9mdW5jX21tYXA9bm8iCi0gZmkKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0rcm0gLWYgY29uZnRlc3QqCi0gZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfZnVuY19tbWFwIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfZnVuY19tbWFwIiA+JjYKLS1pZiB0ZXN0ICRhY19jdl9mdW5jX21tYXAgPSB5ZXM7IHRoZW4KLSsKLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyRhY19jdl9mdW5jXydtbWFwYFwiID0geWVzIjsgdGhlbgotKyAgZWNobyAiJGFjX3QiInllcyIgMT4mNgotICAgTU1BUFRZUEU9cG9zaXgKLStlbHNlCi0rICBlY2hvICIkYWNfdCIibm8iIDE+JjYKLSBmaQotIAotIAotQEAgLTI5NTYsMTAyOCArMTMwNywyNjYgQEAKLSAKLSAKLSBBVURJT0RSSVZFUj1ub25lCi0tYWNfZXh0PWMKLS1hY19jcHA9JyRDUFAgJENQUEZMQUdTJwotLWFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKLS1hY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotLWFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IuLi4gJEVDSE9fQyIgPiY2Ci0rZWNobyAkYWNfbiAiY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZToxMzEyOiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvciIgPiY1Ci0gIyBPbiBTdW5zLCBzb21ldGltZXMgJENQUCBuYW1lcyBhIGRpcmVjdG9yeS4KLSBpZiB0ZXN0IC1uICIkQ1BQIiAmJiB0ZXN0IC1kICIkQ1BQIjsgdGhlbgotICAgQ1BQPQotIGZpCi0gaWYgdGVzdCAteiAiJENQUCI7IHRoZW4KLS0gIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19DUFArc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0raWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfQ1BQJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSsgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotLSAgICAgICMgRG91YmxlIHF1b3RlcyBiZWNhdXNlIENQUCBuZWVkcyB0byBiZSBleHBhbmRlZAotLSAgICBmb3IgQ1BQIGluICIkQ0MgLUUiICIkQ0MgLUUgLXRyYWRpdGlvbmFsLWNwcCIgIi9saWIvY3BwIgotLSAgICBkbwotLSAgICAgIGFjX3ByZXByb2Nfb2s9ZmFsc2UKLS1mb3IgYWNfY19wcmVwcm9jX3dhcm5fZmxhZyBpbiAnJyB5ZXMKLS1kbwotLSAgIyBVc2UgYSBoZWFkZXIgZmlsZSB0aGF0IGNvbWVzIHdpdGggZ2NjLCBzbyBjb25maWd1cmluZyBnbGliYwotLSAgIyB3aXRoIGEgZnJlc2ggY3Jvc3MtY29tcGlsZXIgd29ya3MuCi0tICAjIFByZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18gaXMgZGVmaW5lZCwgc2luY2UKLS0gICMgPGxpbWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVlc3RhbmRpbmcgY29tcGlsZXJzLgotKyAgICAjIFRoaXMgbXVzdCBiZSBpbiBkb3VibGUgcXVvdGVzLCBub3Qgc2luZ2xlIHF1b3RlcywgYmVjYXVzZSBDUFAgbWF5IGdldAotKyAgIyBzdWJzdGl0dXRlZCBpbnRvIHRoZSBNYWtlZmlsZSBhbmQgIiR7Q0MtY2N9IiB3aWxsIGNvbmZ1c2UgbWFrZS4KLSsgIENQUD0iJHtDQy1jY30gLUUiCi0gICAjIE9uIHRoZSBOZVhULCBjYyAtRSBydW5zIHRoZSBjb2RlIHRocm91Z2ggdGhlIGNvbXBpbGVyJ3MgcGFyc2VyLAotLSAgIyBub3QganVzdCB0aHJvdWdoIGNwcC4gIlN5bnRheCBlcnJvciIgaXMgaGVyZSB0byBjYXRjaCB0aGlzIGNhc2UuCi0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0jaWZkZWYgX19TVERDX18KLS0jIGluY2x1ZGUgPGxpbWl0cy5oPgotLSNlbHNlCi0tIyBpbmNsdWRlIDxhc3NlcnQuaD4KLS0jZW5kaWYKLS0gICAgICAgICAgICAgICAgICAgICBTeW50YXggZXJyb3IKLS1fQUNFT0YKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCi0tICBhY19zdGF0dXM9JD8KLS0gIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCi0tICBybSAtZiBjb25mdGVzdC5lcjEKLS0gIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCi0tICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotLSAgICBhY19jcHBfZXJyPSRhY19jX3ByZXByb2Nfd2Fybl9mbGFnCi0tICBlbHNlCi0tICAgIGFjX2NwcF9lcnI9Ci0tICBmaQotLWVsc2UKLS0gIGFjX2NwcF9lcnI9eWVzCi0tZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KLSsgICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuCi0rICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTMyNyAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLStTeW50YXggRXJyb3IKLStFT0YKLSthY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgotK3sgKGV2YWwgZWNobyBjb25maWd1cmU6MTMzMzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KLSthY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCi0raWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KLSAgIDoKLSBlbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS0gICMgQnJva2VuOiBmYWlscyBvbiB2YWxpZCBpbnB1dC4KLS1jb250aW51ZQotLWZpCi0tcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLS0KLS0gICMgT0ssIHdvcmtzIG9uIHNhbmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub24tZXhpc3RlbnQgaGVhZGVycwotLSAgIyBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGhvdy4KLS0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSNpbmNsdWRlIDxhY19ub25leGlzdGVudC5oPgotLV9BQ0VPRgotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKLS0gIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKLS0gIGFjX3N0YXR1cz0kPwotLSAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLS0gIHJtIC1mIGNvbmZ0ZXN0LmVyMQotLSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KLS0gIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCi0tICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKLS0gIGVsc2UKLS0gICAgYWNfY3BwX2Vycj0KLS0gIGZpCi0tZWxzZQotLSAgYWNfY3BwX2Vycj15ZXMKLS1maQotLWlmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgotLSAgIyBCcm9rZW46IHN1Y2Nlc3Mgb24gaW52YWxpZCBpbnB1dC4KLS1jb250aW51ZQotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLSAgIyBQYXNzZXMgYm90aCB0ZXN0cy4KLS1hY19wcmVwcm9jX29rPToKLS1icmVhawotLWZpCi0tcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLS0KLS1kb25lCi0tIyBCZWNhdXNlIG9mIGBicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUgd2FzIHNraXBwZWQuCi0tcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLS1pZiAkYWNfcHJlcHJvY19vazsgdGhlbgotLSAgYnJlYWsKLS1maQotLQotLSAgICBkb25lCi0tICAgIGFjX2N2X3Byb2dfQ1BQPSRDUFAKLS0KLS1maQotLSAgQ1BQPSRhY19jdl9wcm9nX0NQUAotLWVsc2UKLS0gIGFjX2N2X3Byb2dfQ1BQPSRDUFAKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRDUFAiID4mNQotLWVjaG8gIiR7RUNIT19UfSRDUFAiID4mNgotLWFjX3ByZXByb2Nfb2s9ZmFsc2UKLS1mb3IgYWNfY19wcmVwcm9jX3dhcm5fZmxhZyBpbiAnJyB5ZXMKLS1kbwotLSAgIyBVc2UgYSBoZWFkZXIgZmlsZSB0aGF0IGNvbWVzIHdpdGggZ2NjLCBzbyBjb25maWd1cmluZyBnbGliYwotLSAgIyB3aXRoIGEgZnJlc2ggY3Jvc3MtY29tcGlsZXIgd29ya3MuCi0tICAjIFByZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18gaXMgZGVmaW5lZCwgc2luY2UKLS0gICMgPGxpbWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVlc3RhbmRpbmcgY29tcGlsZXJzLgotLSAgIyBPbiB0aGUgTmVYVCwgY2MgLUUgcnVucyB0aGUgY29kZSB0aHJvdWdoIHRoZSBjb21waWxlcidzIHBhcnNlciwKLS0gICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50YXggZXJyb3IiIGlzIGhlcmUgdG8gY2F0Y2ggdGhpcyBjYXNlLgotLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0tI2lmZGVmIF9fU1REQ19fCi0tIyBpbmNsdWRlIDxsaW1pdHMuaD4KLS0jZWxzZQotLSMgaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2VuZGlmCi0tICAgICAgICAgICAgICAgICAgICAgU3ludGF4IGVycm9yCi0tX0FDRU9GCi0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQotLSAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgotLSAgcm0gLWYgY29uZnRlc3QuZXIxCi0tICBjYXQgY29uZnRlc3QuZXJyID4mNQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgotLSAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KLS0gICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZwotLSAgZWxzZQotLSAgICBhY19jcHBfZXJyPQotLSAgZmkKLS1lbHNlCi0tICBhY19jcHBfZXJyPXllcwotLWZpCi0taWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCi0rICBlY2hvICIkYWNfZXJyIiA+JjUKLSsgIGVjaG8gImNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0rICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLSsgIHJtIC1yZiBjb25mdGVzdCoKLSsgIENQUD0iJHtDQy1jY30gLUUgLXRyYWRpdGlvbmFsLWNwcCIKLSsgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSsjbGluZSAxMzQ0ICJjb25maWd1cmUiCi0rI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0rI2luY2x1ZGUgPGFzc2VydC5oPgotK1N5bnRheCBFcnJvcgotK0VPRgotK2FjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi0reyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMzUwOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQotK2FjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKLStpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgotICAgOgotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLSAgIyBCcm9rZW46IGZhaWxzIG9uIHZhbGlkIGlucHV0LgotLWNvbnRpbnVlCi0tZmkKLS1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAotLQotLSAgIyBPSywgd29ya3Mgb24gc2FuZSBjYXNlcy4gIE5vdyBjaGVjayB3aGV0aGVyIG5vbi1leGlzdGVudCBoZWFkZXJzCi0tICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgotLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0tI2luY2x1ZGUgPGFjX25vbmV4aXN0ZW50Lmg+Ci0tX0FDRU9GCi0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQotLSAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgotLSAgcm0gLWYgY29uZnRlc3QuZXIxCi0tICBjYXQgY29uZnRlc3QuZXJyID4mNQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgotLSAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KLS0gICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZwotLSAgZWxzZQotLSAgICBhY19jcHBfZXJyPQotLSAgZmkKLS1lbHNlCi0tICBhY19jcHBfZXJyPXllcwotLWZpCi0taWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCi0tICAjIEJyb2tlbjogc3VjY2VzcyBvbiBpbnZhbGlkIGlucHV0LgotLWNvbnRpbnVlCi0tZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tICAjIFBhc3NlcyBib3RoIHRlc3RzLgotLWFjX3ByZXByb2Nfb2s9OgotLWJyZWFrCi0tZmkKLS1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAotLQotLWRvbmUKLS0jIEJlY2F1c2Ugb2YgYGJyZWFrJywgX0FDX1BSRVBST0NfSUZFTFNFJ3MgY2xlYW5pbmcgY29kZSB3YXMgc2tpcHBlZC4KLS1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAotLWlmICRhY19wcmVwcm9jX29rOyB0aGVuCi0rICBlY2hvICIkYWNfZXJyIiA+JjUKLSsgIGVjaG8gImNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0rICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLSsgIHJtIC1yZiBjb25mdGVzdCoKLSsgIENQUD0iJHtDQy1jY30gLW5vbG9nbyAtRSIKLSsgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSsjbGluZSAxMzYxICJjb25maWd1cmUiCi0rI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0rI2luY2x1ZGUgPGFzc2VydC5oPgotK1N5bnRheCBFcnJvcgotK0VPRgotK2FjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi0reyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMzY3OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQotK2FjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKLStpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgotICAgOgotIGVsc2UKLS0gIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IEMgcHJlcHJvY2Vzc29yIFwiJENQUFwiIGZhaWxzIHNhbml0eSBjaGVjawotLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBDIHByZXByb2Nlc3NvciBcIiRDUFBcIiBmYWlscyBzYW5pdHkgY2hlY2sKLS1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLSsgIGVjaG8gIiRhY19lcnIiID4mNQotKyAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLSsgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotKyAgcm0gLXJmIGNvbmZ0ZXN0KgotKyAgQ1BQPS9saWIvY3BwCi0gZmkKLS0KLS1hY19leHQ9YwotLWFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCi0tYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotLWFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi0tYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQotLQotLQotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgZWdyZXAiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIGVncmVwLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19lZ3JlcCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0tICBpZiBlY2hvIGEgfCAoZ3JlcCAtRSAnKGF8YiknKSA+L2Rldi9udWxsIDI+JjEKLS0gICAgdGhlbiBhY19jdl9wcm9nX2VncmVwPSdncmVwIC1FJwotLSAgICBlbHNlIGFjX2N2X3Byb2dfZWdyZXA9J2VncmVwJwotLSAgICBmaQotK3JtIC1mIGNvbmZ0ZXN0KgotIGZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X3Byb2dfZWdyZXAiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl9wcm9nX2VncmVwIiA+JjYKLS0gRUdSRVA9JGFjX2N2X3Byb2dfZWdyZXAKLS0KLS0KLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3RkYytzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0jaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPHN0ZGFyZy5oPgotLSNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8ZmxvYXQuaD4KLS0KLS1pbnQKLS1tYWluICgpCi0tewotLQotLSAgOwotLSAgcmV0dXJuIDA7Ci0tfQotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0tICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0tICBhY19jdl9oZWFkZXJfc3RkYz15ZXMKLS1lbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS1hY19jdl9oZWFkZXJfc3RkYz1ubwotLWZpCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tCi0taWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KLS0gICMgU3VuT1MgNC54IHN0cmluZy5oIGRvZXMgbm90IGRlY2xhcmUgbWVtKiwgY29udHJhcnkgdG8gQU5TSS4KLS0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSNpbmNsdWRlIDxzdHJpbmcuaD4KLS0KLS1fQUNFT0YKLS1pZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgIm1lbWNociIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0tICA6Ci0tZWxzZQotLSAgYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KLS1maQotIHJtIC1mIGNvbmZ0ZXN0KgotLQotIGZpCi0tCi0taWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KLS0gICMgSVNDIDIuMC4yIHN0ZGxpYi5oIGRvZXMgbm90IGRlY2xhcmUgZnJlZSwgY29udHJhcnkgdG8gQU5TSS4KLS0gIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSNpbmNsdWRlIDxzdGRsaWIuaD4KLS0KLS1fQUNFT0YKLS1pZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgImZyZWUiID4vZGV2L251bGwgMj4mMTsgdGhlbgotLSAgOgotLWVsc2UKLS0gIGFjX2N2X2hlYWRlcl9zdGRjPW5vCi0tZmkKLSBybSAtZiBjb25mdGVzdCoKLS0KLSsgIGFjX2N2X3Byb2dfQ1BQPSIkQ1BQIgotIGZpCi0tCi0taWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KLS0gICMgL2Jpbi9jYyBpbiBJcml4LTQuMC41IGdldHMgbm9uLUFOU0kgY3R5cGUgbWFjcm9zIHVubGVzcyB1c2luZyAtYW5zaS4KLS0gIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCi0tICA6Ci0rICBDUFA9IiRhY19jdl9wcm9nX0NQUCIKLSBlbHNlCi0tICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0jbGluZSAkTElORU5PICJjb25maWd1cmUiCi0tLyogY29uZmRlZnMuaC4gICovCi0tX0FDRU9GCi0tY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0tY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS0jaW5jbHVkZSA8Y3R5cGUuaD4KLS0jaWYgKCgnICcgJiAweDBGRikgPT0gMHgwMjApCi0tIyBkZWZpbmUgSVNMT1dFUihjKSAoJ2EnIDw9IChjKSAmJiAoYykgPD0gJ3onKQotLSMgZGVmaW5lIFRPVVBQRVIoYykgKElTTE9XRVIoYykgPyAnQScgKyAoKGMpIC0gJ2EnKSA6IChjKSkKLS0jZWxzZQotLSMgZGVmaW5lIElTTE9XRVIoYykgXAotLSAgICAgICAgICAgICAgICAgICAoKCdhJyA8PSAoYykgJiYgKGMpIDw9ICdpJykgXAotLSAgICAgICAgICAgICAgICAgICAgIHx8ICgnaicgPD0gKGMpICYmIChjKSA8PSAncicpIFwKLS0gICAgICAgICAgICAgICAgICAgICB8fCAoJ3MnIDw9IChjKSAmJiAoYykgPD0gJ3onKSkKLS0jIGRlZmluZSBUT1VQUEVSKGMpIChJU0xPV0VSKGMpID8gKChjKSB8IDB4NDApIDogKGMpKQotLSNlbmRpZgotLQotLSNkZWZpbmUgWE9SKGUsIGYpICgoKGUpICYmICEoZikpIHx8ICghKGUpICYmIChmKSkpCi0taW50Ci0tbWFpbiAoKQotLXsKLS0gIGludCBpOwotLSAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQotLSAgICBpZiAoWE9SIChpc2xvd2VyIChpKSwgSVNMT1dFUiAoaSkpCi0tICAgICAgICB8fCB0b3VwcGVyIChpKSAhPSBUT1VQUEVSIChpKSkKLS0gICAgICBleGl0KDIpOwotLSAgZXhpdCAoMCk7Ci0tfQotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0JGFjX2V4ZWV4dAotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2xpbmtcIiIpID4mNQotLSAgKGV2YWwgJGFjX2xpbmspIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfZXhlZXh0JwotLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLS0gIDoKLS1lbHNlCi0tICBlY2hvICIkYXNfbWU6IHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICRhY19zdGF0dXMiID4mNQotLWVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLSggZXhpdCAkYWNfc3RhdHVzICkKLS1hY19jdl9oZWFkZXJfc3RkYz1ubwotKyAgYWNfY3ZfcHJvZ19DUFA9IiRDUFAiCi0gZmkKLS1ybSAtZiBjb3JlIGNvcmUuKiAqLmNvcmUgZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1maQotLWZpCi0tZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX3N0ZGMiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl9oZWFkZXJfc3RkYyIgPiY2Ci0taWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KLStlY2hvICIkYWNfdCIiJENQUCIgMT4mNgotIAotLWNhdCA+PmNvbmZkZWZzLmggPDxcX0FDRU9GCi0tI2RlZmluZSBTVERDX0hFQURFUlMgMQotLV9BQ0VPRgotLQotLWZpCi0tCi0tIyBPbiBJUklYIDUuMywgc3lzL3R5cGVzIGFuZCBpbnR0eXBlcy5oIGFyZSBjb25mbGljdGluZy4KLS0KLS0KLS0KLS0KLS0KLS0KLS0KLS0KLS0KLS1mb3IgYWNfaGVhZGVyIGluIHN5cy90eXBlcy5oIHN5cy9zdGF0Lmggc3RkbGliLmggc3RyaW5nLmggbWVtb3J5Lmggc3RyaW5ncy5oIFwKLS0gICAgICAgICAgICAgICAgICBpbnR0eXBlcy5oIHN0ZGludC5oIHVuaXN0ZC5oCi0tZG8KLS1hc19hY19IZWFkZXI9YGVjaG8gImFjX2N2X2hlYWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY19oZWFkZXIiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19oZWFkZXIuLi4gJEVDSE9fQyIgPiY2Ci0taWYgZXZhbCAidGVzdCBcIlwkeyRhc19hY19IZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLSthY19zYWZlPWBlY2hvICJzeXMvc291bmRjYXJkLmgiIHwgc2VkICd5JS4vKy0lX19wXyUnYAotK2VjaG8gJGFjX24gImNoZWNraW5nIGZvciBzeXMvc291bmRjYXJkLmgiIi4uLiAkYWNfYyIgMT4mNgotK2VjaG8gImNvbmZpZ3VyZToxMzkzOiBjaGVja2luZyBmb3Igc3lzL3NvdW5kY2FyZC5oIiA+JjUKLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSsgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotLSAgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0tJGFjX2luY2x1ZGVzX2RlZmF1bHQKLS0KLS0jaW5jbHVkZSA8JGFjX2hlYWRlcj4KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotLSAgICAgICAgIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0tICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhlbgotLSAgZXZhbCAiJGFzX2FjX0hlYWRlcj15ZXMiCi0tZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tZXZhbCAiJGFzX2FjX0hlYWRlcj1ubyIKLS1maQotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotLWZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4mNQotLWVjaG8gIiR7RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjYKLS1pZiB0ZXN0IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgID0geWVzOyB0aGVuCi0tICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0tI2RlZmluZSBgZWNobyAiSEFWRV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKLS1fQUNFT0YKLS0KLS1maQotLQotLWRvbmUKLS0KLS0KLS1pZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9zeXNfc291bmRjYXJkX2grc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3Igc3lzL3NvdW5kY2FyZC5oIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBzeXMvc291bmRjYXJkLmguLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3lzX3NvdW5kY2FyZF9oK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9zeXNfc291bmRjYXJkX2giID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl9oZWFkZXJfc3lzX3NvdW5kY2FyZF9oIiA+JjYKLS1lbHNlCi0tICAjIElzIHRoZSBoZWFkZXIgY29tcGlsYWJsZT8KLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgc3lzL3NvdW5kY2FyZC5oIHVzYWJpbGl0eSIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBzeXMvc291bmRjYXJkLmggdXNhYmlsaXR5Li4uICRFQ0hPX0MiID4mNgotLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSRhY19pbmNsdWRlc19kZWZhdWx0Ci0rICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTM5OCAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotICNpbmNsdWRlIDxzeXMvc291bmRjYXJkLmg+Ci0tX0FDRU9GCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLS0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLS0gIGFjX2hlYWRlcl9jb21waWxlcj15ZXMKLStFT0YKLSthY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgotK3sgKGV2YWwgZWNobyBjb25maWd1cmU6MTQwMzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KLSthY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCi0raWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KLSsgIHJtIC1yZiBjb25mdGVzdCoKLSsgIGV2YWwgImFjX2N2X2hlYWRlcl8kYWNfc2FmZT15ZXMiCi0gZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tYWNfaGVhZGVyX2NvbXBpbGVyPW5vCi0rICBlY2hvICIkYWNfZXJyIiA+JjUKLSsgIGVjaG8gImNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0rICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLSsgIHJtIC1yZiBjb25mdGVzdCoKLSsgIGV2YWwgImFjX2N2X2hlYWRlcl8kYWNfc2FmZT1ubyIKLSBmaQotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19oZWFkZXJfY29tcGlsZXIiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19oZWFkZXJfY29tcGlsZXIiID4mNgotLQotLSMgSXMgdGhlIGhlYWRlciBwcmVzZW50PwotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBzeXMvc291bmRjYXJkLmggcHJlc2VuY2UiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgc3lzL3NvdW5kY2FyZC5oIHByZXNlbmNlLi4uICRFQ0hPX0MiID4mNgotLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSNpbmNsdWRlIDxzeXMvc291bmRjYXJkLmg+Ci0tX0FDRU9GCi0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQotLSAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgotLSAgcm0gLWYgY29uZnRlc3QuZXIxCi0tICBjYXQgY29uZnRlc3QuZXJyID4mNQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgotLSAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KLS0gICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZwotLSAgZWxzZQotLSAgICBhY19jcHBfZXJyPQotLSAgZmkKLS1lbHNlCi0tICBhY19jcHBfZXJyPXllcwotK3JtIC1mIGNvbmZ0ZXN0KgotIGZpCi0taWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCi0tICBhY19oZWFkZXJfcHJlcHJvYz15ZXMKLS1lbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS0gIGFjX2hlYWRlcl9wcmVwcm9jPW5vCi0tZmkKLS1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19oZWFkZXJfcHJlcHJvYyIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRlcl9wcmVwcm9jIiA+JjYKLS0KLS0jIFNvPyAgV2hhdCBhYm91dCB0aGlzIGhlYWRlcj8KLS1jYXNlICRhY19oZWFkZXJfY29tcGlsZXI6JGFjX2hlYWRlcl9wcmVwcm9jIGluCi0tICB5ZXM6bm8gKQotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBzeXMvc291bmRjYXJkLmg6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mNQotLWVjaG8gIiRhc19tZTogV0FSTklORzogc3lzL3NvdW5kY2FyZC5oOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIsIHJlamVjdGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IhIiA+JjI7fQotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBzeXMvc291bmRjYXJkLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHN5cy9zb3VuZGNhcmQuaDogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mMjt9Ci0tICAgICgKLS0gICAgICBjYXQgPDxcX0FTQk9YCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgUmVwb3J0IHRoaXMgdG8gYnVnLWF1dG9jb25mQGdudS5vcmcuICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tX0FTQk9YCi0tICAgICkgfAotLSAgICAgIHNlZCAicy9eLyRhc19tZTogV0FSTklORzogICAgIC8iID4mMgotLSAgICA7OwotLSAgbm86eWVzICkKLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogc3lzL3NvdW5kY2FyZC5oOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGlsZWQiID4mNQotLWVjaG8gIiRhc19tZTogV0FSTklORzogc3lzL3NvdW5kY2FyZC5oOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGlsZWQiID4mMjt9Ci0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IHN5cy9zb3VuZGNhcmQuaDogY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHN5cy9zb3VuZGNhcmQuaDogY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjI7fQotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBzeXMvc291bmRjYXJkLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHN5cy9zb3VuZGNhcmQuaDogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mMjt9Ci0tICAgICgKLS0gICAgICBjYXQgPDxcX0FTQk9YCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgUmVwb3J0IHRoaXMgdG8gYnVnLWF1dG9jb25mQGdudS5vcmcuICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tX0FTQk9YCi0tICAgICkgfAotLSAgICAgIHNlZCAicy9eLyRhc19tZTogV0FSTklORzogICAgIC8iID4mMgotLSAgICA7OwotLWVzYWMKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIHN5cy9zb3VuZGNhcmQuaCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igc3lzL3NvdW5kY2FyZC5oLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX3N5c19zb3VuZGNhcmRfaCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0tICBhY19jdl9oZWFkZXJfc3lzX3NvdW5kY2FyZF9oPSRhY19oZWFkZXJfcHJlcHJvYwotLWZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9zeXNfc291bmRjYXJkX2giID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl9oZWFkZXJfc3lzX3NvdW5kY2FyZF9oIiA+JjYKLS0KLS1maQotLWlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zeXNfc291bmRjYXJkX2ggPSB5ZXM7IHRoZW4KLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyRhY19jdl9oZWFkZXJfJyRhY19zYWZlYFwiID0geWVzIjsgdGhlbgotKyAgZWNobyAiJGFjX3QiInllcyIgMT4mNgotICAgQVVESU9EUklWRVI9Im9zcyIKLSAgICAgICAgICAgICAgICBBVURJT0RFRlM9LURDU1RfQVVESU9fTElOVVgKLStlbHNlCi0rICBlY2hvICIkYWNfdCIibm8iIDE+JjYKLSBmaQotIAotLQotLWlmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX21hY2hpbmVfc291bmRjYXJkX2grc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgbWFjaGluZS9zb3VuZGNhcmQuaCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbWFjaGluZS9zb3VuZGNhcmQuaC4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9tYWNoaW5lX3NvdW5kY2FyZF9oK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9tYWNoaW5lX3NvdW5kY2FyZF9oIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfaGVhZGVyX21hY2hpbmVfc291bmRjYXJkX2giID4mNgotK2FjX3NhZmU9YGVjaG8gIm1hY2hpbmUvc291bmRjYXJkLmgiIHwgc2VkICd5JS4vKy0lX19wXyUnYAotK2VjaG8gJGFjX24gImNoZWNraW5nIGZvciBtYWNoaW5lL3NvdW5kY2FyZC5oIiIuLi4gJGFjX2MiIDE+JjYKLStlY2hvICJjb25maWd1cmU6MTQyNzogY2hlY2tpbmcgZm9yIG1hY2hpbmUvc291bmRjYXJkLmgiID4mNQotK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotKyAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0tICAjIElzIHRoZSBoZWFkZXIgY29tcGlsYWJsZT8KLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgbWFjaGluZS9zb3VuZGNhcmQuaCB1c2FiaWxpdHkiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgbWFjaGluZS9zb3VuZGNhcmQuaCB1c2FiaWxpdHkuLi4gJEVDSE9fQyIgPiY2Ci0tY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0tJGFjX2luY2x1ZGVzX2RlZmF1bHQKLSsgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSsjbGluZSAxNDMyICJjb25maWd1cmUiCi0rI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gI2luY2x1ZGUgPG1hY2hpbmUvc291bmRjYXJkLmg+Ci0tX0FDRU9GCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLS0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLS0gIGFjX2hlYWRlcl9jb21waWxlcj15ZXMKLStFT0YKLSthY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgotK3sgKGV2YWwgZWNobyBjb25maWd1cmU6MTQzNzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KLSthY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCi0raWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KLSsgIHJtIC1yZiBjb25mdGVzdCoKLSsgIGV2YWwgImFjX2N2X2hlYWRlcl8kYWNfc2FmZT15ZXMiCi0gZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tYWNfaGVhZGVyX2NvbXBpbGVyPW5vCi0rICBlY2hvICIkYWNfZXJyIiA+JjUKLSsgIGVjaG8gImNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0rICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLSsgIHJtIC1yZiBjb25mdGVzdCoKLSsgIGV2YWwgImFjX2N2X2hlYWRlcl8kYWNfc2FmZT1ubyIKLSBmaQotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19oZWFkZXJfY29tcGlsZXIiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19oZWFkZXJfY29tcGlsZXIiID4mNgotLQotLSMgSXMgdGhlIGhlYWRlciBwcmVzZW50PwotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBtYWNoaW5lL3NvdW5kY2FyZC5oIHByZXNlbmNlIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIG1hY2hpbmUvc291bmRjYXJkLmggcHJlc2VuY2UuLi4gJEVDSE9fQyIgPiY2Ci0tY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0tI2luY2x1ZGUgPG1hY2hpbmUvc291bmRjYXJkLmg+Ci0tX0FDRU9GCi0taWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRcIiIpID4mNQotLSAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAyPmNvbmZ0ZXN0LmVyMQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgotLSAgcm0gLWYgY29uZnRlc3QuZXIxCi0tICBjYXQgY29uZnRlc3QuZXJyID4mNQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgotLSAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KLS0gICAgYWNfY3BwX2Vycj0kYWNfY19wcmVwcm9jX3dhcm5fZmxhZwotLSAgZWxzZQotLSAgICBhY19jcHBfZXJyPQotLSAgZmkKLS1lbHNlCi0tICBhY19jcHBfZXJyPXllcwotK3JtIC1mIGNvbmZ0ZXN0KgotIGZpCi0taWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCi0tICBhY19oZWFkZXJfcHJlcHJvYz15ZXMKLS1lbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS0gIGFjX2hlYWRlcl9wcmVwcm9jPW5vCi0tZmkKLS1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19oZWFkZXJfcHJlcHJvYyIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRlcl9wcmVwcm9jIiA+JjYKLS0KLS0jIFNvPyAgV2hhdCBhYm91dCB0aGlzIGhlYWRlcj8KLS1jYXNlICRhY19oZWFkZXJfY29tcGlsZXI6JGFjX2hlYWRlcl9wcmVwcm9jIGluCi0tICB5ZXM6bm8gKQotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBtYWNoaW5lL3NvdW5kY2FyZC5oOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIsIHJlamVjdGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IhIiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IG1hY2hpbmUvc291bmRjYXJkLmg6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mMjt9Ci0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IG1hY2hpbmUvc291bmRjYXJkLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IG1hY2hpbmUvc291bmRjYXJkLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjI7fQotLSAgICAoCi0tICAgICAgY2F0IDw8XF9BU0JPWAotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIFJlcG9ydCB0aGlzIHRvIGJ1Zy1hdXRvY29uZkBnbnUub3JnLiAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLV9BU0JPWAotLSAgICApIHwKLS0gICAgICBzZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAgICAvIiA+JjIKLS0gICAgOzsKLS0gIG5vOnllcyApCi0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IG1hY2hpbmUvc291bmRjYXJkLmg6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21waWxlZCIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBtYWNoaW5lL3NvdW5kY2FyZC5oOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGlsZWQiID4mMjt9Ci0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IG1hY2hpbmUvc291bmRjYXJkLmg6IGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBtYWNoaW5lL3NvdW5kY2FyZC5oOiBjaGVjayBmb3IgbWlzc2luZyBwcmVyZXF1aXNpdGUgaGVhZGVycz8iID4mMjt9Ci0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IG1hY2hpbmUvc291bmRjYXJkLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IG1hY2hpbmUvc291bmRjYXJkLmg6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0IiA+JjI7fQotLSAgICAoCi0tICAgICAgY2F0IDw8XF9BU0JPWAotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIFJlcG9ydCB0aGlzIHRvIGJ1Zy1hdXRvY29uZkBnbnUub3JnLiAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLV9BU0JPWAotLSAgICApIHwKLS0gICAgICBzZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAgICAvIiA+JjIKLS0gICAgOzsKLS1lc2FjCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBtYWNoaW5lL3NvdW5kY2FyZC5oIiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBtYWNoaW5lL3NvdW5kY2FyZC5oLi4uICRFQ0hPX0MiID4mNgotLWlmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX21hY2hpbmVfc291bmRjYXJkX2grc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0tZWxzZQotLSAgYWNfY3ZfaGVhZGVyX21hY2hpbmVfc291bmRjYXJkX2g9JGFjX2hlYWRlcl9wcmVwcm9jCi0tZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX21hY2hpbmVfc291bmRjYXJkX2giID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl9oZWFkZXJfbWFjaGluZV9zb3VuZGNhcmRfaCIgPiY2Ci0tCi0tZmkKLS1pZiB0ZXN0ICRhY19jdl9oZWFkZXJfbWFjaGluZV9zb3VuZGNhcmRfaCA9IHllczsgdGhlbgotK2lmIGV2YWwgInRlc3QgXCJgZWNobyAnJGFjX2N2X2hlYWRlcl8nJGFjX3NhZmVgXCIgPSB5ZXMiOyB0aGVuCi0rICBlY2hvICIkYWNfdCIieWVzIiAxPiY2Ci0gICBBVURJT0RSSVZFUj0ib3NzIgotICAgICAgICAgICAgICAgIEFVRElPREVGUz0tRENTVF9BVURJT19GUkVFQlNECi0rZWxzZQotKyAgZWNobyAiJGFjX3QiIm5vIiAxPiY2Ci0gZmkKLSAKLS0KLS1pZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9zeXNfYXVkaW9pb19oK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIHN5cy9hdWRpb2lvLmgiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHN5cy9hdWRpb2lvLmguLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3lzX2F1ZGlvaW9faCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfc3lzX2F1ZGlvaW9faCIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2hlYWRlcl9zeXNfYXVkaW9pb19oIiA+JjYKLSthY19zYWZlPWBlY2hvICJzeXMvYXVkaW9pby5oIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKLStlY2hvICRhY19uICJjaGVja2luZyBmb3Igc3lzL2F1ZGlvaW8uaCIiLi4uICRhY19jIiAxPiY2Ci0rZWNobyAiY29uZmlndXJlOjE0NjE6IGNoZWNraW5nIGZvciBzeXMvYXVkaW9pby5oIiA+JjUKLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSsgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotLSAgIyBJcyB0aGUgaGVhZGVyIGNvbXBpbGFibGU/Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIHN5cy9hdWRpb2lvLmggdXNhYmlsaXR5IiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIHN5cy9hdWRpb2lvLmggdXNhYmlsaXR5Li4uICRFQ0hPX0MiID4mNgotLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSRhY19pbmNsdWRlc19kZWZhdWx0Ci0rICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTQ2NiAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotICNpbmNsdWRlIDxzeXMvYXVkaW9pby5oPgotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0tICAgICAgICAgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0tICBhY19oZWFkZXJfY29tcGlsZXI9eWVzCi0rRU9GCi0rYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLSt7IChldmFsIGVjaG8gY29uZmlndXJlOjE0NzE6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Ci0rYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAotK2lmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCi0rICBybSAtcmYgY29uZnRlc3QqCi0rICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9eWVzIgotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLWFjX2hlYWRlcl9jb21waWxlcj1ubwotKyAgZWNobyAiJGFjX2VyciIgPiY1Ci0rICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0rICBybSAtcmYgY29uZnRlc3QqCi0rICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9bm8iCi0gZmkKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjYKLS0KLS0jIElzIHRoZSBoZWFkZXIgcHJlc2VudD8KLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgc3lzL2F1ZGlvaW8uaCBwcmVzZW5jZSIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBzeXMvYXVkaW9pby5oIHByZXNlbmNlLi4uICRFQ0hPX0MiID4mNgotLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSNpbmNsdWRlIDxzeXMvYXVkaW9pby5oPgotLV9BQ0VPRgotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKLS0gIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKLS0gIGFjX3N0YXR1cz0kPwotLSAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLS0gIHJtIC1mIGNvbmZ0ZXN0LmVyMQotLSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KLS0gIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCi0tICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKLS0gIGVsc2UKLS0gICAgYWNfY3BwX2Vycj0KLS0gIGZpCi0tZWxzZQotLSAgYWNfY3BwX2Vycj15ZXMKLStybSAtZiBjb25mdGVzdCoKLSBmaQotLWlmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgotLSAgYWNfaGVhZGVyX3ByZXByb2M9eWVzCi0tZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tICBhY19oZWFkZXJfcHJlcHJvYz1ubwotLWZpCi0tcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfaGVhZGVyX3ByZXByb2MiID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19oZWFkZXJfcHJlcHJvYyIgPiY2Ci0tCi0tIyBTbz8gIFdoYXQgYWJvdXQgdGhpcyBoZWFkZXI/Ci0tY2FzZSAkYWNfaGVhZGVyX2NvbXBpbGVyOiRhY19oZWFkZXJfcHJlcHJvYyBpbgotLSAgeWVzOm5vICkKLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogc3lzL2F1ZGlvaW8uaDogYWNjZXB0ZWQgYnkgdGhlIGNvbXBpbGVyLCByZWplY3RlZCBieSB0aGUgcHJlcHJvY2Vzc29yISIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBzeXMvYXVkaW9pby5oOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIsIHJlamVjdGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IhIiA+JjI7fQotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBzeXMvYXVkaW9pby5oOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBzeXMvYXVkaW9pby5oOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiYyO30KLS0gICAgKAotLSAgICAgIGNhdCA8PFxfQVNCT1gKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyBSZXBvcnQgdGhpcyB0byBidWctYXV0b2NvbmZAZ251Lm9yZy4gIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS1fQVNCT1gKLS0gICAgKSB8Ci0tICAgICAgc2VkICJzL14vJGFzX21lOiBXQVJOSU5HOiAgICAgLyIgPiYyCi0tICAgIDs7Ci0tICBubzp5ZXMgKQotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBzeXMvYXVkaW9pby5oOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGlsZWQiID4mNQotLWVjaG8gIiRhc19tZTogV0FSTklORzogc3lzL2F1ZGlvaW8uaDogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjI7fQotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBzeXMvYXVkaW9pby5oOiBjaGVjayBmb3IgbWlzc2luZyBwcmVyZXF1aXNpdGUgaGVhZGVycz8iID4mNQotLWVjaG8gIiRhc19tZTogV0FSTklORzogc3lzL2F1ZGlvaW8uaDogY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjI7fQotLSAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiBzeXMvYXVkaW9pby5oOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiBzeXMvYXVkaW9pby5oOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiYyO30KLS0gICAgKAotLSAgICAgIGNhdCA8PFxfQVNCT1gKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyBSZXBvcnQgdGhpcyB0byBidWctYXV0b2NvbmZAZ251Lm9yZy4gIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS1fQVNCT1gKLS0gICAgKSB8Ci0tICAgICAgc2VkICJzL14vJGFzX21lOiBXQVJOSU5HOiAgICAgLyIgPiYyCi0tICAgIDs7Ci0tZXNhYwotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3Igc3lzL2F1ZGlvaW8uaCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3Igc3lzL2F1ZGlvaW8uaC4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9zeXNfYXVkaW9pb19oK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWVsc2UKLS0gIGFjX2N2X2hlYWRlcl9zeXNfYXVkaW9pb19oPSRhY19oZWFkZXJfcHJlcHJvYwotLWZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9zeXNfYXVkaW9pb19oIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfaGVhZGVyX3N5c19hdWRpb2lvX2giID4mNgotLQotLWZpCi0taWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N5c19hdWRpb2lvX2ggPSB5ZXM7IHRoZW4KLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyRhY19jdl9oZWFkZXJfJyRhY19zYWZlYFwiID0geWVzIjsgdGhlbgotKyAgZWNobyAiJGFjX3QiInllcyIgMT4mNgotICAgQVVESU9EUklWRVI9InN1biIKLSAgICAgICAgICAgICAgICBBVURJT0RFRlM9LURDU1RfQVVESU9fU1VOT1MKLStlbHNlCi0rICBlY2hvICIkYWNfdCIibm8iIDE+JjYKLSBmaQotIAotLQotLWlmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX21tc3lzdGVtX2grc2V0fSIgPSBzZXQ7IHRoZW4KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgbW1zeXN0ZW0uaCIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgbW1zeXN0ZW0uaC4uLiAkRUNIT19DIiA+JjYKLS1pZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9tbXN5c3RlbV9oK3NldH0iID0gc2V0OyB0aGVuCi0tICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWZpCi0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9tbXN5c3RlbV9oIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfY3ZfaGVhZGVyX21tc3lzdGVtX2giID4mNgotKyBhY19zYWZlPWBlY2hvICJhbHNhL2Fzb3VuZGxpYi5oIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKLStlY2hvICRhY19uICJjaGVja2luZyBmb3IgYWxzYS9hc291bmRsaWIuaCIiLi4uICRhY19jIiAxPiY2Ci0rZWNobyAiY29uZmlndXJlOjE0OTU6IGNoZWNraW5nIGZvciBhbHNhL2Fzb3VuZGxpYi5oIiA+JjUKLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSsgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotLSAgIyBJcyB0aGUgaGVhZGVyIGNvbXBpbGFibGU/Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIG1tc3lzdGVtLmggdXNhYmlsaXR5IiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nIG1tc3lzdGVtLmggdXNhYmlsaXR5Li4uICRFQ0hPX0MiID4mNgotLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSRhY19pbmNsdWRlc19kZWZhdWx0Ci0tI2luY2x1ZGUgPG1tc3lzdGVtLmg+Ci0tX0FDRU9GCi0tcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotLSAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLS0gICAgICAgICB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLS0gIGFjX2hlYWRlcl9jb21waWxlcj15ZXMKLSsgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSsjbGluZSAxNTAwICJjb25maWd1cmUiCi0rI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0rI2luY2x1ZGUgPGFsc2EvYXNvdW5kbGliLmg+Ci0rRU9GCi0rYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLSt7IChldmFsIGVjaG8gY29uZmlndXJlOjE1MDU6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Ci0rYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAotK2lmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCi0rICBybSAtcmYgY29uZnRlc3QqCi0rICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9eWVzIgotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLWFjX2hlYWRlcl9jb21waWxlcj1ubwotKyAgZWNobyAiJGFjX2VyciIgPiY1Ci0rICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotKyAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0rICBybSAtcmYgY29uZnRlc3QqCi0rICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9bm8iCi0gZmkKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjYKLS0KLS0jIElzIHRoZSBoZWFkZXIgcHJlc2VudD8KLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgbW1zeXN0ZW0uaCBwcmVzZW5jZSIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBtbXN5c3RlbS5oIHByZXNlbmNlLi4uICRFQ0hPX0MiID4mNgotLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLSNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSNpbmNsdWRlIDxtbXN5c3RlbS5oPgotLV9BQ0VPRgotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0XCIiKSA+JjUKLS0gIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5jb25mdGVzdC5lcjEKLS0gIGFjX3N0YXR1cz0kPwotLSAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLS0gIHJtIC1mIGNvbmZ0ZXN0LmVyMQotLSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KLS0gIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCi0tICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcKLS0gIGVsc2UKLS0gICAgYWNfY3BwX2Vycj0KLS0gIGZpCi0tZWxzZQotLSAgYWNfY3BwX2Vycj15ZXMKLStybSAtZiBjb25mdGVzdCoKLSBmaQotLWlmIHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgotLSAgYWNfaGVhZGVyX3ByZXByb2M9eWVzCi0raWYgZXZhbCAidGVzdCBcImBlY2hvICckYWNfY3ZfaGVhZGVyXyckYWNfc2FmZWBcIiA9IHllcyI7IHRoZW4KLSsgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjYKLSsgIEFVRElPRFJJVkVSPSJhbHNhIgotKwkgICAgICAgQVVESU9ERUZTPS1EQ1NUX0FVRElPX0FMU0EKLSsgICAgICAgICAgICAgICBBVURJT0xJQlM9LWxhc291bmQKLSBlbHNlCi0tICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS0KLS0gIGFjX2hlYWRlcl9wcmVwcm9jPW5vCi0rICBlY2hvICIkYWNfdCIibm8iIDE+JjYKLSBmaQotLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2hlYWRlcl9wcmVwcm9jIiA+JjUKLS1lY2hvICIke0VDSE9fVH0kYWNfaGVhZGVyX3ByZXByb2MiID4mNgotIAotLSMgU28/ICBXaGF0IGFib3V0IHRoaXMgaGVhZGVyPwotLWNhc2UgJGFjX2hlYWRlcl9jb21waWxlcjokYWNfaGVhZGVyX3ByZXByb2MgaW4KLS0gIHllczpubyApCi0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6IG1tc3lzdGVtLmg6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mNQotLWVjaG8gIiRhc19tZTogV0FSTklORzogbW1zeXN0ZW0uaDogYWNjZXB0ZWQgYnkgdGhlIGNvbXBpbGVyLCByZWplY3RlZCBieSB0aGUgcHJlcHJvY2Vzc29yISIgPiYyO30KLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogbW1zeXN0ZW0uaDogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mNQotLWVjaG8gIiRhc19tZTogV0FSTklORzogbW1zeXN0ZW0uaDogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mMjt9Ci0tICAgICgKLS0gICAgICBjYXQgPDxcX0FTQk9YCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgUmVwb3J0IHRoaXMgdG8gYnVnLWF1dG9jb25mQGdudS5vcmcuICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tX0FTQk9YCi0tICAgICkgfAotLSAgICAgIHNlZCAicy9eLyRhc19tZTogV0FSTklORzogICAgIC8iID4mMgotLSAgICA7OwotLSAgbm86eWVzICkKLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogbW1zeXN0ZW0uaDogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IG1tc3lzdGVtLmg6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21waWxlZCIgPiYyO30KLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogbW1zeXN0ZW0uaDogY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IG1tc3lzdGVtLmg6IGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiYyO30KLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogbW1zeXN0ZW0uaDogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mNQotLWVjaG8gIiRhc19tZTogV0FSTklORzogbW1zeXN0ZW0uaDogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mMjt9Ci0tICAgICgKLS0gICAgICBjYXQgPDxcX0FTQk9YCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgUmVwb3J0IHRoaXMgdG8gYnVnLWF1dG9jb25mQGdudS5vcmcuICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tX0FTQk9YCi0tICAgICkgfAotLSAgICAgIHNlZCAicy9eLyRhc19tZTogV0FSTklORzogICAgIC8iID4mMgotLSAgICA7OwotLWVzYWMKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIG1tc3lzdGVtLmgiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIG1tc3lzdGVtLmguLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9oZWFkZXJfbW1zeXN0ZW1faCtzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLSthY19zYWZlPWBlY2hvICJtbXN5c3RlbS5oIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKLStlY2hvICRhY19uICJjaGVja2luZyBmb3IgbW1zeXN0ZW0uaCIiLi4uICRhY19jIiAxPiY2Ci0rZWNobyAiY29uZmlndXJlOjE1MzA6IGNoZWNraW5nIGZvciBtbXN5c3RlbS5oIiA+JjUKLStpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSsgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotLSAgYWNfY3ZfaGVhZGVyX21tc3lzdGVtX2g9JGFjX2hlYWRlcl9wcmVwcm9jCi0rICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0rI2xpbmUgMTUzNSAiY29uZmlndXJlIgotKyNpbmNsdWRlICJjb25mZGVmcy5oIgotKyNpbmNsdWRlIDxtbXN5c3RlbS5oPgotK0VPRgotK2FjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi0reyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNTQwOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQotK2FjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKLStpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgotKyAgcm0gLXJmIGNvbmZ0ZXN0KgotKyAgZXZhbCAiYWNfY3ZfaGVhZGVyXyRhY19zYWZlPXllcyIKLStlbHNlCi0rICBlY2hvICIkYWNfZXJyIiA+JjUKLSsgIGVjaG8gImNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0rICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLSsgIHJtIC1yZiBjb25mdGVzdCoKLSsgIGV2YWwgImFjX2N2X2hlYWRlcl8kYWNfc2FmZT1ubyIKLSBmaQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19jdl9oZWFkZXJfbW1zeXN0ZW1faCIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2N2X2hlYWRlcl9tbXN5c3RlbV9oIiA+JjYKLS0KLStybSAtZiBjb25mdGVzdCoKLSBmaQotLWlmIHRlc3QgJGFjX2N2X2hlYWRlcl9tbXN5c3RlbV9oID0geWVzOyB0aGVuCi0raWYgZXZhbCAidGVzdCBcImBlY2hvICckYWNfY3ZfaGVhZGVyXyckYWNfc2FmZWBcIiA9IHllcyI7IHRoZW4KLSsgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjYKLSAgIEFVRElPRFJJVkVSPSJ3aW5jZSIKLSAJICAgICAgIEFVRElPREVGUz0tRENTVF9BVURJT19XSU5DRQotIAkgICAgICAgQVVESU9MSUJTPS1sd2lubW0KLStlbHNlCi0rICBlY2hvICIkYWNfdCIibm8iIDE+JjYKLSBmaQotIAotIAotLQotLQotICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYXVkaW8gb3IgLS13aXRob3V0LWF1ZGlvIHdhcyBnaXZlbi4KLSBpZiB0ZXN0ICIke3dpdGhfYXVkaW8rc2V0fSIgPSBzZXQ7IHRoZW4KLSAgIHdpdGh2YWw9IiR3aXRoX2F1ZGlvIgotLSAgQVVESU9EUklWRVI9JHdpdGhfYXVkaW8KLS1maTsKLSsgIEFVRElPRFJJVkVSPSR3aXRoX2F1ZGlvIAotK2ZpCi0gCi0rCi0gaWYgdGVzdCAieCRBVURJT0RFRlMiID0geDsgdGhlbgotICAgICBjYXNlICIkQVVESU9EUklWRVIiIGluCi0gCWxpbnV4fG9zcykKLUBAIC00MDA2LDM0ICsxNTk1LDM0IEBACi0gCi0gCi0gCi0tCi0gIyBDaGVjayB3aGV0aGVyIC0td2l0aC1sYW5nIG9yIC0td2l0aG91dC1sYW5nIHdhcyBnaXZlbi4KLSBpZiB0ZXN0ICIke3dpdGhfbGFuZytzZXR9IiA9IHNldDsgdGhlbgotICAgd2l0aHZhbD0iJHdpdGhfbGFuZyIKLS0gIEZMX0xBTkc9JHdpdGhfbGFuZwotLWZpOwotKyAgRkxfTEFORz0kd2l0aF9sYW5nIAotK2ZpCi0rCi0gaWYgdGVzdCAieCR3aXRoX2xhbmciID0gIngiOyB0aGVuCi0gICAgICAgICBGTF9MQU5HPSJ1c2VuZ2xpc2giCi0gZmkKLSAKLSAKLS0KLSAjIENoZWNrIHdoZXRoZXIgLS13aXRoLXZveCBvciAtLXdpdGhvdXQtdm94IHdhcyBnaXZlbi4KLSBpZiB0ZXN0ICIke3dpdGhfdm94K3NldH0iID0gc2V0OyB0aGVuCi0gICB3aXRodmFsPSIkd2l0aF92b3giCi0tICBGTF9WT1g9JHdpdGhfdm94Ci0tZmk7Ci0rICBGTF9WT1g9JHdpdGhfdm94IAotK2ZpCi0rCi0gaWYgdGVzdCAieCR3aXRoX3ZveCIgPSAieCI7IHRoZW4KLSAgICAgICAgIEZMX1ZPWD0iY211X3VzX2thbCIKLSBmaQotIAotIAotLQotICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGV4IG9yIC0td2l0aG91dC1sZXggd2FzIGdpdmVuLgotIGlmIHRlc3QgIiR7d2l0aF9sZXgrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgIHdpdGh2YWw9IiR3aXRoX2xleCIKLS0gIEZMX0xFWD0kd2l0aF9sZXgKLS1maTsKLSsgIEZMX0xFWD0kd2l0aF9sZXggCi0rZmkKLSsKLSBpZiB0ZXN0ICJ4JHdpdGhfbGV4IiA9ICJ4IjsgdGhlbgotICAgICAgICAgRkxfTEVYPSJjbXVsZXgiCi0gZmkKLUBAIC00MDQxLDkyMSArMTYzMCwzMDAgQEAKLSAKLSAKLSAKLS0gICAgICAgICAgICAgICAgICAgIGFjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBjb25maWcvY29uZmlnIGNvbmZpZy9zeXN0ZW0ubWFrIgotLWNhdCA+Y29uZmNhY2hlIDw8XF9BQ0VPRgotK3RyYXAgJycgMSAyIDE1Ci0rY2F0ID4gY29uZmNhY2hlIDw8XEVPRgotICMgVGhpcyBmaWxlIGlzIGEgc2hlbGwgc2NyaXB0IHRoYXQgY2FjaGVzIHRoZSByZXN1bHRzIG9mIGNvbmZpZ3VyZQotICMgdGVzdHMgcnVuIG9uIHRoaXMgc3lzdGVtIHNvIHRoZXkgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGNvbmZpZ3VyZQotLSMgc2NyaXB0cyBhbmQgY29uZmlndXJlIHJ1bnMsIHNlZSBjb25maWd1cmUncyBvcHRpb24gLS1jb25maWctY2FjaGUuCi0tIyBJdCBpcyBub3QgdXNlZnVsIG9uIG90aGVyIHN5c3RlbXMuICBJZiBpdCBjb250YWlucyByZXN1bHRzIHlvdSBkb24ndAotLSMgd2FudCB0byBrZWVwLCB5b3UgbWF5IHJlbW92ZSBvciBlZGl0IGl0LgotKyMgc2NyaXB0cyBhbmQgY29uZmlndXJlIHJ1bnMuICBJdCBpcyBub3QgdXNlZnVsIG9uIG90aGVyIHN5c3RlbXMuCi0rIyBJZiBpdCBjb250YWlucyByZXN1bHRzIHlvdSBkb24ndCB3YW50IHRvIGtlZXAsIHlvdSBtYXkgcmVtb3ZlIG9yIGVkaXQgaXQuCi0gIwotLSMgY29uZmlnLnN0YXR1cyBvbmx5IHBheXMgYXR0ZW50aW9uIHRvIHRoZSBjYWNoZSBmaWxlIGlmIHlvdSBnaXZlIGl0Ci0tIyB0aGUgLS1yZWNoZWNrIG9wdGlvbiB0byByZXJ1biBjb25maWd1cmUuCi0rIyBCeSBkZWZhdWx0LCBjb25maWd1cmUgdXNlcyAuL2NvbmZpZy5jYWNoZSBhcyB0aGUgY2FjaGUgZmlsZSwKLSsjIGNyZWF0aW5nIGl0IGlmIGl0IGRvZXMgbm90IGV4aXN0IGFscmVhZHkuICBZb3UgY2FuIGdpdmUgY29uZmlndXJlCi0rIyB0aGUgLS1jYWNoZS1maWxlPUZJTEUgb3B0aW9uIHRvIHVzZSBhIGRpZmZlcmVudCBjYWNoZSBmaWxlOyB0aGF0IGlzCi0rIyB3aGF0IGNvbmZpZ3VyZSBkb2VzIHdoZW4gaXQgY2FsbHMgY29uZmlndXJlIHNjcmlwdHMgaW4KLSsjIHN1YmRpcmVjdG9yaWVzLCBzbyB0aGV5IHNoYXJlIHRoZSBjYWNoZS4KLSsjIEdpdmluZyAtLWNhY2hlLWZpbGU9L2Rldi9udWxsIGRpc2FibGVzIGNhY2hpbmcsIGZvciBkZWJ1Z2dpbmcgY29uZmlndXJlLgotKyMgY29uZmlnLnN0YXR1cyBvbmx5IHBheXMgYXR0ZW50aW9uIHRvIHRoZSBjYWNoZSBmaWxlIGlmIHlvdSBnaXZlIGl0IHRoZQotKyMgLS1yZWNoZWNrIG9wdGlvbiB0byByZXJ1biBjb25maWd1cmUuCi0gIwotLSMgYGFjX2N2X2Vudl9mb28nIHZhcmlhYmxlcyAoc2V0IG9yIHVuc2V0KSB3aWxsIGJlIG92ZXJyaWRkZW4gd2hlbgotLSMgbG9hZGluZyB0aGlzIGZpbGUsIG90aGVyICp1bnNldCogYGFjX2N2X2Zvbycgd2lsbCBiZSBhc3NpZ25lZCB0aGUKLS0jIGZvbGxvd2luZyB2YWx1ZXMuCi0tCi0tX0FDRU9GCi0tCi0rRU9GCi0gIyBUaGUgZm9sbG93aW5nIHdheSBvZiB3cml0aW5nIHRoZSBjYWNoZSBtaXNoYW5kbGVzIG5ld2xpbmVzIGluIHZhbHVlcywKLSAjIGJ1dCB3ZSBrbm93IG9mIG5vIHdvcmthcm91bmQgdGhhdCBpcyBzaW1wbGUsIHBvcnRhYmxlLCBhbmQgZWZmaWNpZW50LgotICMgU28sIGRvbid0IHB1dCBuZXdsaW5lcyBpbiBjYWNoZSB2YXJpYWJsZXMnIHZhbHVlcy4KLSAjIFVsdHJpeCBzaCBzZXQgd3JpdGVzIHRvIHN0ZGVyciBhbmQgY2FuJ3QgYmUgcmVkaXJlY3RlZCBkaXJlY3RseSwKLSAjIGFuZCBzZXRzIHRoZSBoaWdoIGJpdCBpbiB0aGUgY2FjaGUgZmlsZSB1bmxlc3Mgd2UgYXNzaWduIHRvIHRoZSB2YXJzLgotLXsKLS0gIChzZXQpIDI+JjEgfAotLSAgICBjYXNlIGAoYWNfc3BhY2U9JyAnOyBzZXQgfCBncmVwIGFjX3NwYWNlKSAyPiYxYCBpbgotLSAgICAqYWNfc3BhY2U9XCAqKQotLSAgICAgICMgYHNldCcgZG9lcyBub3QgcXVvdGUgY29ycmVjdGx5LCBzbyBhZGQgcXVvdGVzIChkb3VibGUtcXVvdGUKLS0gICAgICAjIHN1YnN0aXR1dGlvbiB0dXJucyBcXFxcIGludG8gXFwsIGFuZCBzZWQgdHVybnMgXFwgaW50byBcKS4KLS0gICAgICBzZWQgLW4gXAotLSAgICAgICAgInMvJy8nXFxcXCcnL2c7Ci0tICAgIAkgIHMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKlxcKT1cXCguKlxcKS9cXDE9J1xcMicvcCIKLS0gICAgICA7OwotLSAgICAqKQotLSAgICAgICMgYHNldCcgcXVvdGVzIGNvcnJlY3RseSBhcyByZXF1aXJlZCBieSBQT1NJWCwgc28gZG8gbm90IGFkZCBxdW90ZXMuCi0tICAgICAgc2VkIC1uIFwKLS0gICAgICAgICJzL15cXChbXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSpcXCk9XFwoLipcXCkvXFwxPVxcMi9wIgotLSAgICAgIDs7Ci0tICAgIGVzYWM7Ci0tfSB8Ci0tICBzZWQgJwotLSAgICAgdCBjbGVhcgotLSAgICAgOiBjbGVhcgotLSAgICAgcy9eXChbXj1dKlwpPVwoLipbe31dLipcKSQvdGVzdCAiJHtcMStzZXR9IiA9IHNldCB8fCAmLwotLSAgICAgdCBlbmQKLS0gICAgIC9eYWNfY3ZfZW52LyFzL15cKFtePV0qXCk9XCguKlwpJC9cMT0ke1wxPVwyfS8KLS0gICAgIDogZW5kJyA+PmNvbmZjYWNoZQotLWlmIGRpZmYgJGNhY2hlX2ZpbGUgY29uZmNhY2hlID4vZGV2L251bGwgMj4mMTsgdGhlbiA6OyBlbHNlCi0rKHNldCkgMj4mMSB8Ci0rICBjYXNlIGAoYWNfc3BhY2U9JyAnOyBzZXQgfCBncmVwIGFjX3NwYWNlKSAyPiYxYCBpbgotKyAgKmFjX3NwYWNlPVwgKikKLSsgICAgIyBgc2V0JyBkb2VzIG5vdCBxdW90ZSBjb3JyZWN0bHksIHNvIGFkZCBxdW90ZXMgKGRvdWJsZS1xdW90ZSBzdWJzdGl0dXRpb24KLSsgICAgIyB0dXJucyBcXFxcIGludG8gXFwsIGFuZCBzZWQgdHVybnMgXFwgaW50byBcKS4KLSsgICAgc2VkIC1uIFwKLSsgICAgICAtZSAicy8nLydcXFxcJycvZyIgXAotKyAgICAgIC1lICJzL15cXChbYS16QS1aMC05X10qX2N2X1thLXpBLVowLTlfXSpcXCk9XFwoLipcXCkvXFwxPVwke1xcMT0nXFwyJ30vcCIKLSsgICAgOzsKLSsgICopCi0rICAgICMgYHNldCcgcXVvdGVzIGNvcnJlY3RseSBhcyByZXF1aXJlZCBieSBQT1NJWCwgc28gZG8gbm90IGFkZCBxdW90ZXMuCi0rICAgIHNlZCAtbiAtZSAncy9eXChbYS16QS1aMC05X10qX2N2X1thLXpBLVowLTlfXSpcKT1cKC4qXCkvXDE9JHtcMT1cMn0vcCcKLSsgICAgOzsKLSsgIGVzYWMgPj4gY29uZmNhY2hlCi0raWYgY21wIC1zICRjYWNoZV9maWxlIGNvbmZjYWNoZTsgdGhlbgotKyAgOgotK2Vsc2UKLSAgIGlmIHRlc3QgLXcgJGNhY2hlX2ZpbGU7IHRoZW4KLS0gICAgdGVzdCAieCRjYWNoZV9maWxlIiAhPSAieC9kZXYvbnVsbCIgJiYgZWNobyAidXBkYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiCi0tICAgIGNhdCBjb25mY2FjaGUgPiRjYWNoZV9maWxlCi0rICAgIGVjaG8gInVwZGF0aW5nIGNhY2hlICRjYWNoZV9maWxlIgotKyAgICBjYXQgY29uZmNhY2hlID4gJGNhY2hlX2ZpbGUKLSAgIGVsc2UKLSAgICAgZWNobyAibm90IHVwZGF0aW5nIHVud3JpdGFibGUgY2FjaGUgJGNhY2hlX2ZpbGUiCi0gICBmaQotIGZpCi0gcm0gLWYgY29uZmNhY2hlCi0gCi0rdHJhcCAncm0gLWZyIGNvbmZ0ZXN0KiBjb25mZGVmcyogY29yZSBjb3JlLiogKi5jb3JlICRhY19jbGVhbl9maWxlczsgZXhpdCAxJyAxIDIgMTUKLSsKLSB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORSAmJiBwcmVmaXg9JGFjX2RlZmF1bHRfcHJlZml4Ci0gIyBMZXQgbWFrZSBleHBhbmQgZXhlY19wcmVmaXguCi0gdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtwcmVmaXh9JwotIAotLSMgVlBBVEggbWF5IGNhdXNlIHRyb3VibGUgd2l0aCBzb21lIG1ha2VzLCBzbyB3ZSByZW1vdmUgJChzcmNkaXIpLAotLSMgJHtzcmNkaXJ9IGFuZCBAc3JjZGlyQCBmcm9tIFZQQVRIIGlmIHNyY2RpciBpcyAiLiIsIHN0cmlwIGxlYWRpbmcgYW5kCi0tIyB0cmFpbGluZyBjb2xvbnMgYW5kIHRoZW4gcmVtb3ZlIHRoZSB3aG9sZSBsaW5lIGlmIFZQQVRIIGJlY29tZXMgZW1wdHkKLS0jIChhY3R1YWxseSB3ZSBsZWF2ZSBhbiBlbXB0eSBsaW5lIHRvIHByZXNlcnZlIGxpbmUgbnVtYmVycykuCi0rIyBBbnkgYXNzaWdubWVudCB0byBWUEFUSCBjYXVzZXMgU3VuIG1ha2UgdG8gb25seSBleGVjdXRlCi0rIyB0aGUgZmlyc3Qgc2V0IG9mIGRvdWJsZS1jb2xvbiBydWxlcywgc28gcmVtb3ZlIGl0IGlmIG5vdCBuZWVkZWQuCi0rIyBJZiB0aGVyZSBpcyBhIGNvbG9uIGluIHRoZSBwYXRoLCB3ZSBuZWVkIHRvIGtlZXAgaXQuCi0gaWYgdGVzdCAieCRzcmNkaXIiID0geC47IHRoZW4KLS0gIGFjX3Zwc3ViPScvXlsgCV0qVlBBVEhbIAldKj0vewotLXMvOipcJChzcmNkaXIpOiovOi87Ci0tcy86Klwke3NyY2Rpcn06Ki86LzsKLS1zLzoqQHNyY2RpckA6Ki86LzsKLS1zL15cKFtePV0qPVsgCV0qXCk6Ki9cMS87Ci0tcy86KiQvLzsKLS1zL15bXj1dKj1bIAldKiQvLzsKLS19JwotKyAgYWNfdnBzdWI9Jy9eWyAJXSpWUEFUSFsgCV0qPVteOl0qJC9kJwotIGZpCi0gCi0rdHJhcCAncm0gLWYgJENPTkZJR19TVEFUVVMgY29uZnRlc3QqOyBleGl0IDEnIDEgMiAxNQotKwotICMgVHJhbnNmb3JtIGNvbmZkZWZzLmggaW50byBERUZTLgotICMgUHJvdGVjdCBhZ2FpbnN0IHNoZWxsIGV4cGFuc2lvbiB3aGlsZSBleGVjdXRpbmcgTWFrZWZpbGUgcnVsZXMuCi0gIyBQcm90ZWN0IGFnYWluc3QgTWFrZWZpbGUgbWFjcm8gZXhwYW5zaW9uLgotLSMKLS0jIElmIHRoZSBmaXJzdCBzZWQgc3Vic3RpdHV0aW9uIGlzIGV4ZWN1dGVkICh3aGljaCBsb29rcyBmb3IgbWFjcm9zIHRoYXQKLS0jIHRha2UgYXJndW1lbnRzKSwgdGhlbiB3ZSBicmFuY2ggdG8gdGhlIHF1b3RlIHNlY3Rpb24uICBPdGhlcndpc2UsCi0tIyBsb29rIGZvciBhIG1hY3JvIHRoYXQgZG9lc24ndCB0YWtlIGFyZ3VtZW50cy4KLS1jYXQgPmNvbmZkZWYyb3B0LnNlZCA8PFxfQUNFT0YKLS10IGNsZWFyCi0tOiBjbGVhcgotLXMsXlsgCV0qI1sgCV0qZGVmaW5lWyAJXVsgCV0qXChbXiAJKF1bXiAJKF0qKFteKV0qKVwpWyAJXSpcKC4qXCksLURcMT1cMixnCi0tdCBxdW90ZQotLXMsXlsgCV0qI1sgCV0qZGVmaW5lWyAJXVsgCV0qXChbXiAJXVteIAldKlwpWyAJXSpcKC4qXCksLURcMT1cMixnCi0tdCBxdW90ZQotLWQKLS06IHF1b3RlCi0tcyxbIAlgfiMkXiYqKCl7fVxcfDsnIjw+P10sXFwmLGcKLS1zLFxbLFxcJixnCi0tcyxcXSxcXCYsZwotLXMsXCQsJCQsZwotLXAKLS1fQUNFT0YKLS0jIFdlIHVzZSBlY2hvIHRvIGF2b2lkIGFzc3VtaW5nIGEgcGFydGljdWxhciBsaW5lLWJyZWFraW5nIGNoYXJhY3Rlci4KLS0jIFRoZSBleHRyYSBkb3QgaXMgdG8gcHJldmVudCB0aGUgc2hlbGwgZnJvbSBjb25zdW1pbmcgdHJhaWxpbmcKLS0jIGxpbmUtYnJlYWtzIGZyb20gdGhlIHN1Yi1jb21tYW5kIG91dHB1dC4gIEEgbGluZS1icmVhayB3aXRoaW4KLS0jIHNpbmdsZS1xdW90ZXMgZG9lc24ndCB3b3JrIGJlY2F1c2UsIGlmIHRoaXMgc2NyaXB0IGlzIGNyZWF0ZWQgaW4gYQotLSMgcGxhdGZvcm0gdGhhdCB1c2VzIHR3byBjaGFyYWN0ZXJzIGZvciBsaW5lLWJyZWFrcyAoZS5nLiwgRE9TKSwgdHIKLS0jIHdvdWxkIGJyZWFrLgotLWFjX0xGX2FuZF9ET1Q9YGVjaG87IGVjaG8gLmAKLS1ERUZTPWBzZWQgLW4gLWYgY29uZmRlZjJvcHQuc2VkIGNvbmZkZWZzLmggfCB0ciAiJGFjX0xGX2FuZF9ET1QiICcgLidgCi0tcm0gLWYgY29uZmRlZjJvcHQuc2VkCi0rY2F0ID4gY29uZnRlc3QuZGVmcyA8PFxFT0YKLStzJSNkZWZpbmUgXChbQS1aYS16X11bQS1aYS16MC05X10qXCkgKlwoLipcKSUtRFwxPVwyJWcKLStzJVsgCWB+IyReJiooKXt9XFx8OyciPD4/XSVcXCYlZwotK3MlXFslXFwmJWcKLStzJVxdJVxcJiVnCi0rcyVcJCUkJCVnCi0rRU9GCi0rREVGUz1gc2VkIC1mIGNvbmZ0ZXN0LmRlZnMgY29uZmRlZnMuaCB8IHRyICdcMDEyJyAnICdgCi0rcm0gLWYgY29uZnRlc3QuZGVmcwotIAotIAotLWFjX2xpYm9ianM9Ci0tYWNfbHRsaWJvYmpzPQotLWZvciBhY19pIGluIDogJExJQk9CSlM7IGRvIHRlc3QgIngkYWNfaSIgPSB4OiAmJiBjb250aW51ZQotLSAgIyAxLiBSZW1vdmUgdGhlIGV4dGVuc2lvbiwgYW5kICRVIGlmIGFscmVhZHkgaW5zdGFsbGVkLgotLSAgYWNfaT1gZWNobyAiJGFjX2kiIHwKLS0gICAgICAgICBzZWQgJ3MvXCRVXC4vLi87cy9cLm8kLy87cy9cLm9iaiQvLydgCi0tICAjIDIuIEFkZCB0aGVtLgotLSAgYWNfbGlib2Jqcz0iJGFjX2xpYm9ianMgJGFjX2lcJFUuJGFjX29iamV4dCIKLS0gIGFjX2x0bGlib2Jqcz0iJGFjX2x0bGlib2JqcyAkYWNfaSInJFUubG8nCi0tZG9uZQotLUxJQk9CSlM9JGFjX2xpYm9ianMKLS0KLS1MVExJQk9CSlM9JGFjX2x0bGlib2JqcwotLQotLQotLQotKyMgV2l0aG91dCB0aGUgIi4vIiwgc29tZSBzaGVsbHMgbG9vayBpbiBQQVRIIGZvciBjb25maWcuc3RhdHVzLgotIDogJHtDT05GSUdfU1RBVFVTPS4vY29uZmlnLnN0YXR1c30KLS1hY19jbGVhbl9maWxlc19zYXZlPSRhY19jbGVhbl9maWxlcwotLWFjX2NsZWFuX2ZpbGVzPSIkYWNfY2xlYW5fZmlsZXMgJENPTkZJR19TVEFUVVMiCi0teyBlY2hvICIkYXNfbWU6JExJTkVOTzogY3JlYXRpbmcgJENPTkZJR19TVEFUVVMiID4mNQotLWVjaG8gIiRhc19tZTogY3JlYXRpbmcgJENPTkZJR19TVEFUVVMiID4mNjt9Ci0tY2F0ID4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRgotLSMhICRTSEVMTAotLSMgR2VuZXJhdGVkIGJ5ICRhc19tZS4KLSsKLStlY2hvIGNyZWF0aW5nICRDT05GSUdfU1RBVFVTCi0rcm0gLWYgJENPTkZJR19TVEFUVVMKLStjYXQgPiAkQ09ORklHX1NUQVRVUyA8PEVPRgotKyMhIC9iaW4vc2gKLSsjIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGNvbmZpZ3VyZS4KLSAjIFJ1biB0aGlzIGZpbGUgdG8gcmVjcmVhdGUgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4KLSsjIFRoaXMgZGlyZWN0b3J5IHdhcyBjb25maWd1cmVkIGFzIGZvbGxvd3MsCi0rIyBvbiBob3N0IGAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYDoKLSsjCi0rIyAkMCAkYWNfY29uZmlndXJlX2FyZ3MKLSsjCi0gIyBDb21waWxlciBvdXRwdXQgcHJvZHVjZWQgYnkgY29uZmlndXJlLCB1c2VmdWwgZm9yIGRlYnVnZ2luZwotLSMgY29uZmlndXJlLCBpcyBpbiBjb25maWcubG9nIGlmIGl0IGV4aXN0cy4KLSsjIGNvbmZpZ3VyZSwgaXMgaW4gLi9jb25maWcubG9nIGlmIGl0IGV4aXN0cy4KLSAKLS1kZWJ1Zz1mYWxzZQotLWFjX2NzX3JlY2hlY2s9ZmFsc2UKLS1hY19jc19zaWxlbnQ9ZmFsc2UKLS1TSEVMTD1cJHtDT05GSUdfU0hFTEwtJFNIRUxMfQotLV9BQ0VPRgotLQotLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRgotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIE00c2ggSW5pdGlhbGl6YXRpb24uICAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLQotLSMgQmUgQm91cm5lIGNvbXBhdGlibGUKLS1pZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLS0gIGVtdWxhdGUgc2gKLS0gIE5VTExDTUQ9OgotLSAgIyBac2ggMy54IGFuZCA0LnggcGVyZm9ybXMgd29yZCBzcGxpdHRpbmcgb24gJHsxKyIkQCJ9LCB3aGljaAotLSAgIyBpcyBjb250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVhdHVyZS4KLS0gIGFsaWFzIC1nICckezErIiRAIn0nPSciJEAiJwotLWVsaWYgdGVzdCAtbiAiJHtCQVNIX1ZFUlNJT04rc2V0fSIgJiYgKHNldCAtbyBwb3NpeCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0tICBzZXQgLW8gcG9zaXgKLS1maQotLQotLSMgU3VwcG9ydCB1bnNldCB3aGVuIHBvc3NpYmxlLgotLWlmIChGT089Rk9POyB1bnNldCBGT08pID4vZGV2L251bGwgMj4mMTsgdGhlbgotLSAgYXNfdW5zZXQ9dW5zZXQKLS1lbHNlCi0tICBhc191bnNldD1mYWxzZQotLWZpCi0tCi0tCi0tIyBXb3JrIGFyb3VuZCBidWdzIGluIHByZS0zLjAgVVdJTiBrc2guCi0tJGFzX3Vuc2V0IEVOViBNQUlMIE1BSUxQQVRICi0tUFMxPSckICcKLS1QUzI9Jz4gJwotLVBTND0nKyAnCi0tCi0tIyBOTFMgbnVpc2FuY2VzLgotLWZvciBhc192YXIgaW4gXAotLSAgTEFORyBMQU5HVUFHRSBMQ19BRERSRVNTIExDX0FMTCBMQ19DT0xMQVRFIExDX0NUWVBFIExDX0lERU5USUZJQ0FUSU9OIFwKLS0gIExDX01FQVNVUkVNRU5UIExDX01FU1NBR0VTIExDX01PTkVUQVJZIExDX05BTUUgTENfTlVNRVJJQyBMQ19QQVBFUiBcCi0tICBMQ19URUxFUEhPTkUgTENfVElNRQotK2FjX2NzX3VzYWdlPSJVc2FnZTogJENPTkZJR19TVEFUVVMgWy0tcmVjaGVja10gWy0tdmVyc2lvbl0gWy0taGVscF0iCi0rZm9yIGFjX29wdGlvbgotIGRvCi0tICBpZiAoc2V0ICt4OyB0ZXN0IC1uICJgKGV2YWwgJGFzX3Zhcj1DOyBleHBvcnQgJGFzX3ZhcikgMj4mMWAiKTsgdGhlbgotLSAgICBldmFsICRhc192YXI9QzsgZXhwb3J0ICRhc192YXIKLS0gIGVsc2UKLS0gICAgJGFzX3Vuc2V0ICRhc192YXIKLS0gIGZpCi0rICBjYXNlICJcJGFjX29wdGlvbiIgaW4KLSsgIC1yZWNoZWNrIHwgLS1yZWNoZWNrIHwgLS1yZWNoZWMgfCAtLXJlY2hlIHwgLS1yZWNoIHwgLS1yZWMgfCAtLXJlIHwgLS1yKQotKyAgICBlY2hvICJydW5uaW5nIFwke0NPTkZJR19TSEVMTC0vYmluL3NofSAkMCAkYWNfY29uZmlndXJlX2FyZ3MgLS1uby1jcmVhdGUgLS1uby1yZWN1cnNpb24iCi0rICAgIGV4ZWMgXCR7Q09ORklHX1NIRUxMLS9iaW4vc2h9ICQwICRhY19jb25maWd1cmVfYXJncyAtLW5vLWNyZWF0ZSAtLW5vLXJlY3Vyc2lvbiA7OwotKyAgLXZlcnNpb24gfCAtLXZlcnNpb24gfCAtLXZlcnNpbyB8IC0tdmVyc2kgfCAtLXZlcnMgfCAtLXZlciB8IC0tdmUgfCAtLXYpCi0rICAgIGVjaG8gIiRDT05GSUdfU1RBVFVTIGdlbmVyYXRlZCBieSBhdXRvY29uZiB2ZXJzaW9uIDIuMTMiCi0rICAgIGV4aXQgMCA7OwotKyAgLWhlbHAgfCAtLWhlbHAgfCAtLWhlbCB8IC0taGUgfCAtLWgpCi0rICAgIGVjaG8gIlwkYWNfY3NfdXNhZ2UiOyBleGl0IDAgOzsKLSsgICopIGVjaG8gIlwkYWNfY3NfdXNhZ2UiOyBleGl0IDEgOzsKLSsgIGVzYWMKLSBkb25lCi0gCi0tIyBSZXF1aXJlZCB0byB1c2UgYmFzZW5hbWUuCi0taWYgZXhwciBhIDogJ1woYVwpJyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLS0gIGFzX2V4cHI9ZXhwcgotLWVsc2UKLS0gIGFzX2V4cHI9ZmFsc2UKLS1maQotK2FjX2dpdmVuX3NyY2Rpcj0kc3JjZGlyCi0rYWNfZ2l2ZW5fSU5TVEFMTD0iJElOU1RBTEwiCi0gCi0taWYgKGJhc2VuYW1lIC8pID4vZGV2L251bGwgMj4mMSAmJiB0ZXN0ICJYYGJhc2VuYW1lIC8gMj4mMWAiID0gIlgvIjsgdGhlbgotLSAgYXNfYmFzZW5hbWU9YmFzZW5hbWUKLS1lbHNlCi0tICBhc19iYXNlbmFtZT1mYWxzZQotLWZpCi0rdHJhcCAncm0gLWZyIGBlY2hvICJjb25maWcvY29uZmlnIGNvbmZpZy9zeXN0ZW0ubWFrIiB8IHNlZCAicy86W14gXSovL2ciYCBjb25mdGVzdCo7IGV4aXQgMScgMSAyIDE1Ci0rRU9GCi0rY2F0ID4+ICRDT05GSUdfU1RBVFVTIDw8RU9GCi0gCi0rIyBQcm90ZWN0IGFnYWluc3QgYmVpbmcgb24gdGhlIHJpZ2h0IHNpZGUgb2YgYSBzZWQgc3Vic3QgaW4gY29uZmlnLnN0YXR1cy4KLStzZWQgJ3MvJUAvQEAvOyBzL0AlL0BALzsgcy8lZ1wkL0BnLzsgL0BnXCQvcy9bXFxcXCYlXS9cXFxcJi9nOwotKyBzL0BALyVALzsgcy9AQC9AJS87IHMvQGdcJC8lZy8nID4gY29uZnRlc3Quc3VicyA8PFxcQ0VPRgotKyRhY192cHN1YgotKyRleHRyYXN1YgotK3MlQFNIRUxMQCUkU0hFTEwlZwotK3MlQENGTEFHU0AlJENGTEFHUyVnCi0rcyVAQ1BQRkxBR1NAJSRDUFBGTEFHUyVnCi0rcyVAQ1hYRkxBR1NAJSRDWFhGTEFHUyVnCi0rcyVARkZMQUdTQCUkRkZMQUdTJWcKLStzJUBERUZTQCUkREVGUyVnCi0rcyVATERGTEFHU0AlJExERkxBR1MlZwotK3MlQExJQlNAJSRMSUJTJWcKLStzJUBleGVjX3ByZWZpeEAlJGV4ZWNfcHJlZml4JWcKLStzJUBwcmVmaXhAJSRwcmVmaXglZwotK3MlQHByb2dyYW1fdHJhbnNmb3JtX25hbWVAJSRwcm9ncmFtX3RyYW5zZm9ybV9uYW1lJWcKLStzJUBiaW5kaXJAJSRiaW5kaXIlZwotK3MlQHNiaW5kaXJAJSRzYmluZGlyJWcKLStzJUBsaWJleGVjZGlyQCUkbGliZXhlY2RpciVnCi0rcyVAZGF0YWRpckAlJGRhdGFkaXIlZwotK3MlQHN5c2NvbmZkaXJAJSRzeXNjb25mZGlyJWcKLStzJUBzaGFyZWRzdGF0ZWRpckAlJHNoYXJlZHN0YXRlZGlyJWcKLStzJUBsb2NhbHN0YXRlZGlyQCUkbG9jYWxzdGF0ZWRpciVnCi0rcyVAbGliZGlyQCUkbGliZGlyJWcKLStzJUBpbmNsdWRlZGlyQCUkaW5jbHVkZWRpciVnCi0rcyVAb2xkaW5jbHVkZWRpckAlJG9sZGluY2x1ZGVkaXIlZwotK3MlQGluZm9kaXJAJSRpbmZvZGlyJWcKLStzJUBtYW5kaXJAJSRtYW5kaXIlZwotK3MlQGhvc3RAJSRob3N0JWcKLStzJUBob3N0X2FsaWFzQCUkaG9zdF9hbGlhcyVnCi0rcyVAaG9zdF9jcHVAJSRob3N0X2NwdSVnCi0rcyVAaG9zdF92ZW5kb3JAJSRob3N0X3ZlbmRvciVnCi0rcyVAaG9zdF9vc0AlJGhvc3Rfb3MlZwotK3MlQHRhcmdldEAlJHRhcmdldCVnCi0rcyVAdGFyZ2V0X2FsaWFzQCUkdGFyZ2V0X2FsaWFzJWcKLStzJUB0YXJnZXRfY3B1QCUkdGFyZ2V0X2NwdSVnCi0rcyVAdGFyZ2V0X3ZlbmRvckAlJHRhcmdldF92ZW5kb3IlZwotK3MlQHRhcmdldF9vc0AlJHRhcmdldF9vcyVnCi0rcyVAYnVpbGRAJSRidWlsZCVnCi0rcyVAYnVpbGRfYWxpYXNAJSRidWlsZF9hbGlhcyVnCi0rcyVAYnVpbGRfY3B1QCUkYnVpbGRfY3B1JWcKLStzJUBidWlsZF92ZW5kb3JAJSRidWlsZF92ZW5kb3IlZwotK3MlQGJ1aWxkX29zQCUkYnVpbGRfb3MlZwotK3MlQENDQCUkQ0MlZwotK3MlQFJBTkxJQkAlJFJBTkxJQiVnCi0rcyVASU5TVEFMTF9QUk9HUkFNQCUkSU5TVEFMTF9QUk9HUkFNJWcKLStzJUBJTlNUQUxMX1NDUklQVEAlJElOU1RBTExfU0NSSVBUJWcKLStzJUBJTlNUQUxMX0RBVEFAJSRJTlNUQUxMX0RBVEElZwotK3MlQEFSQCUkQVIlZwotK3MlQFRBUkdFVF9PU0AlJFRBUkdFVF9PUyVnCi0rcyVAVEFSR0VUX0NQVUAlJFRBUkdFVF9DUFUlZwotK3MlQE02OEtDQ0AlJE02OEtDQyVnCi0rcyVATEVYREVGU0AlJExFWERFRlMlZwotK3MlQFZPWERFRlNAJSRWT1hERUZTJWcKLStzJUBIT1NUX09TQCUkSE9TVF9PUyVnCi0rcyVASE9TVF9DUFVAJSRIT1NUX0NQVSVnCi0rcyVAT1RIRVJMSUJTQCUkT1RIRVJMSUJTJWcKLStzJUBTSEZMQUdTQCUkU0hGTEFHUyVnCi0rcyVATU1BUFRZUEVAJSRNTUFQVFlQRSVnCi0rcyVAU1RESU9UWVBFQCUkU1RESU9UWVBFJWcKLStzJUBDUFBAJSRDUFAlZwotK3MlQEFVRElPRFJJVkVSQCUkQVVESU9EUklWRVIlZwotK3MlQEFVRElPREVGU0AlJEFVRElPREVGUyVnCi0rcyVAQVVESU9MSUJTQCUkQVVESU9MSUJTJWcKLStzJUBGTF9MQU5HQCUkRkxfTEFORyVnCi0rcyVARkxfVk9YQCUkRkxfVk9YJWcKLStzJUBGTF9MRVhAJSRGTF9MRVglZwotK3MlQEVYRUVYVEAlJEVYRUVYVCVnCi0gCi0tIyBOYW1lIG9mIHRoZSBleGVjdXRhYmxlLgotLWFzX21lPWAkYXNfYmFzZW5hbWUgIiQwIiB8fAotLSRhc19leHByIFgvIiQwIiA6ICcuKi9cKFteL11bXi9dKlwpLyokJyBcfCBcCi0tCSBYIiQwIiA6ICdYXCgvL1wpJCcgXHwgXAotLQkgWCIkMCIgOiAnWFwoL1wpJCcgXHwgXAotLQkgLiAgICAgOiAnXCguXCknIDI+L2Rldi9udWxsIHx8Ci0tZWNobyBYLyIkMCIgfAotLSAgICBzZWQgJy9eLipcL1woW14vXVteL10qXClcLyokL3sgcy8vXDEvOyBxOyB9Ci0tICAJICAvXlhcL1woXC9cL1wpJC97IHMvL1wxLzsgcTsgfQotLSAgCSAgL15YXC9cKFwvXCkuKi97IHMvL1wxLzsgcTsgfQotLSAgCSAgcy8uKi8uLzsgcSdgCi0rQ0VPRgotK0VPRgotIAotK2NhdCA+PiAkQ09ORklHX1NUQVRVUyA8PFxFT0YKLSAKLS0jIFBBVEggbmVlZHMgQ1IsIGFuZCBMSU5FTk8gbmVlZHMgQ1IgYW5kIFBBVEguCi0tIyBBdm9pZCBkZXBlbmRpbmcgdXBvbiBDaGFyYWN0ZXIgUmFuZ2VzLgotLWFzX2NyX2xldHRlcnM9J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JwotLWFzX2NyX0xFVFRFUlM9J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJwotLWFzX2NyX0xldHRlcnM9JGFzX2NyX2xldHRlcnMkYXNfY3JfTEVUVEVSUwotLWFzX2NyX2RpZ2l0cz0nMDEyMzQ1Njc4OScKLS1hc19jcl9hbG51bT0kYXNfY3JfTGV0dGVycyRhc19jcl9kaWdpdHMKLS0KLS0jIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4KLS1pZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbgotLSAgZWNobyAiIyEgL2Jpbi9zaCIgPmNvbmYkJC5zaAotLSAgZWNobyAgImV4aXQgMCIgICA+PmNvbmYkJC5zaAotLSAgY2htb2QgK3ggY29uZiQkLnNoCi0tICBpZiAoUEFUSD0iL25vbmV4aXN0ZW50Oy4iOyBjb25mJCQuc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgotLSAgICBQQVRIX1NFUEFSQVRPUj0nOycKLSsjIFNwbGl0IHRoZSBzdWJzdGl0dXRpb25zIGludG8gYml0ZS1zaXplZCBwaWVjZXMgZm9yIHNlZHMgd2l0aAotKyMgc21hbGwgY29tbWFuZCBudW1iZXIgbGltaXRzLCBsaWtlIG9uIERpZ2l0YWwgT1NGLzEgYW5kIEhQLVVYLgotK2FjX21heF9zZWRfY21kcz05MCAjIE1heGltdW0gbnVtYmVyIG9mIGxpbmVzIHRvIHB1dCBpbiBhIHNlZCBzY3JpcHQuCi0rYWNfZmlsZT0xICMgTnVtYmVyIG9mIGN1cnJlbnQgZmlsZS4KLSthY19iZWc9MSAjIEZpcnN0IGxpbmUgZm9yIGN1cnJlbnQgZmlsZS4KLSthY19lbmQ9JGFjX21heF9zZWRfY21kcyAjIExpbmUgYWZ0ZXIgbGFzdCBsaW5lIGZvciBjdXJyZW50IGZpbGUuCi0rYWNfbW9yZV9saW5lcz06Ci0rYWNfc2VkX2NtZHM9IiIKLSt3aGlsZSAkYWNfbW9yZV9saW5lczsgZG8KLSsgIGlmIHRlc3QgJGFjX2JlZyAtZ3QgMTsgdGhlbgotKyAgICBzZWQgIjEsJHthY19iZWd9ZDsgJHthY19lbmR9cSIgY29uZnRlc3Quc3VicyA+IGNvbmZ0ZXN0LnMkYWNfZmlsZQotICAgZWxzZQotLSAgICBQQVRIX1NFUEFSQVRPUj06Ci0rICAgIHNlZCAiJHthY19lbmR9cSIgY29uZnRlc3Quc3VicyA+IGNvbmZ0ZXN0LnMkYWNfZmlsZQotICAgZmkKLS0gIHJtIC1mIGNvbmYkJC5zaAotLWZpCi0tCi0tCi0tICBhc19saW5lbm9fMT0kTElORU5PCi0tICBhc19saW5lbm9fMj0kTElORU5PCi0tICBhc19saW5lbm9fMz1gKGV4cHIgJGFzX2xpbmVub18xICsgMSkgMj4vZGV2L251bGxgCi0tICB0ZXN0ICJ4JGFzX2xpbmVub18xIiAhPSAieCRhc19saW5lbm9fMiIgJiYKLS0gIHRlc3QgIngkYXNfbGluZW5vXzMiICA9ICJ4JGFzX2xpbmVub18yIiAgfHwgewotLSAgIyBGaW5kIHdobyB3ZSBhcmUuICBMb29rIGluIHRoZSBwYXRoIGlmIHdlIGNvbnRhaW4gbm8gcGF0aCBhdCBhbGwKLS0gICMgcmVsYXRpdmUgb3Igbm90LgotLSAgY2FzZSAkMCBpbgotLSAgICAqW1xcL10qICkgYXNfbXlzZWxmPSQwIDs7Ci0tICAgICopIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLS1mb3IgYXNfZGlyIGluICRQQVRICi0tZG8KLS0gIElGUz0kYXNfc2F2ZV9JRlMKLS0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0tICB0ZXN0IC1yICIkYXNfZGlyLyQwIiAmJiBhc19teXNlbGY9JGFzX2Rpci8kMCAmJiBicmVhawotLWRvbmUKLS0KLS0gICAgICAgOzsKLS0gIGVzYWMKLS0gICMgV2UgZGlkIG5vdCBmaW5kIG91cnNlbHZlcywgbW9zdCBwcm9iYWJseSB3ZSB3ZXJlIHJ1biBhcyBgc2ggQ09NTUFORCcKLS0gICMgaW4gd2hpY2ggY2FzZSB3ZSBhcmUgbm90IHRvIGJlIGZvdW5kIGluIHRoZSBwYXRoLgotLSAgaWYgdGVzdCAieCRhc19teXNlbGYiID0geDsgdGhlbgotLSAgICBhc19teXNlbGY9JDAKLS0gIGZpCi0tICBpZiB0ZXN0ICEgLWYgIiRhc19teXNlbGYiOyB0aGVuCi0tICAgIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBmaW5kIG15c2VsZjsgcmVydW4gd2l0aCBhbiBhYnNvbHV0ZSBwYXRoIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgZmluZCBteXNlbGY7IHJlcnVuIHdpdGggYW4gYWJzb2x1dGUgcGF0aCIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLS0gIGZpCi0tICBjYXNlICRDT05GSUdfU0hFTEwgaW4KLS0gICcnKQotLSAgICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0tZm9yIGFzX2RpciBpbiAvYmluJFBBVEhfU0VQQVJBVE9SL3Vzci9iaW4kUEFUSF9TRVBBUkFUT1IkUEFUSAotLWRvCi0tICBJRlM9JGFzX3NhdmVfSUZTCi0tICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotLSAgZm9yIGFzX2Jhc2UgaW4gc2ggYmFzaCBrc2ggc2g1OyBkbwotLQkgY2FzZSAkYXNfZGlyIGluCi0tCSAvKikKLS0JICAgaWYgKCIkYXNfZGlyLyRhc19iYXNlIiAtYyAnCi0tICBhc19saW5lbm9fMT0kTElORU5PCi0tICBhc19saW5lbm9fMj0kTElORU5PCi0tICBhc19saW5lbm9fMz1gKGV4cHIgJGFzX2xpbmVub18xICsgMSkgMj4vZGV2L251bGxgCi0tICB0ZXN0ICJ4JGFzX2xpbmVub18xIiAhPSAieCRhc19saW5lbm9fMiIgJiYKLS0gIHRlc3QgIngkYXNfbGluZW5vXzMiICA9ICJ4JGFzX2xpbmVub18yIiAnKSAyPi9kZXYvbnVsbDsgdGhlbgotLQkgICAgICRhc191bnNldCBCQVNIX0VOViB8fCB0ZXN0ICIke0JBU0hfRU5WK3NldH0iICE9IHNldCB8fCB7IEJBU0hfRU5WPTsgZXhwb3J0IEJBU0hfRU5WOyB9Ci0tCSAgICAgJGFzX3Vuc2V0IEVOViB8fCB0ZXN0ICIke0VOVitzZXR9IiAhPSBzZXQgfHwgeyBFTlY9OyBleHBvcnQgRU5WOyB9Ci0tCSAgICAgQ09ORklHX1NIRUxMPSRhc19kaXIvJGFzX2Jhc2UKLS0JICAgICBleHBvcnQgQ09ORklHX1NIRUxMCi0tCSAgICAgZXhlYyAiJENPTkZJR19TSEVMTCIgIiQwIiAkezErIiRAIn0KLS0JICAgZmk7OwotLQkgZXNhYwotLSAgICAgICBkb25lCi0tZG9uZQotLTs7Ci0tICBlc2FjCi0tCi0tICAjIENyZWF0ZSAkYXNfbWUubGluZW5vIGFzIGEgY29weSBvZiAkYXNfbXlzZWxmLCBidXQgd2l0aCAkTElORU5PCi0tICAjIHVuaWZvcm1seSByZXBsYWNlZCBieSB0aGUgbGluZSBudW1iZXIuICBUaGUgZmlyc3QgJ3NlZCcgaW5zZXJ0cyBhCi0tICAjIGxpbmUtbnVtYmVyIGxpbmUgYmVmb3JlIGVhY2ggbGluZTsgdGhlIHNlY29uZCAnc2VkJyBkb2VzIHRoZSByZWFsCi0tICAjIHdvcmsuICBUaGUgc2Vjb25kIHNjcmlwdCB1c2VzICdOJyB0byBwYWlyIGVhY2ggbGluZS1udW1iZXIgbGluZQotLSAgIyB3aXRoIHRoZSBudW1iZXJlZCBsaW5lLCBhbmQgYXBwZW5kcyB0cmFpbGluZyAnLScgZHVyaW5nCi0tICAjIHN1YnN0aXR1dGlvbiBzbyB0aGF0ICRMSU5FTk8gaXMgbm90IGEgc3BlY2lhbCBjYXNlIGF0IGxpbmUgZW5kLgotLSAgIyAoUmFqYSBSIEhhcmluYXRoIHN1Z2dlc3RlZCBzZWQgJz0nLCBhbmQgUGF1bCBFZ2dlcnQgd3JvdGUgdGhlCi0tICAjIHNlY29uZCAnc2VkJyBzY3JpcHQuICBCbGFtZSBMZWUgRS4gTWNNYWhvbiBmb3Igc2VkJ3Mgc3ludGF4LiAgOi0pCi0tICBzZWQgJz0nIDwkYXNfbXlzZWxmIHwKLS0gICAgc2VkICcKLS0gICAgICBOCi0tICAgICAgcywkLC0sCi0tICAgICAgOiBsb29wCi0tICAgICAgcyxeXChbJyRhc19jcl9kaWdpdHMnXSpcKVwoLipcKVskXUxJTkVOT1woW14nJGFzX2NyX2FsbnVtJ19dXCksXDFcMlwxXDMsCi0tICAgICAgdCBsb29wCi0tICAgICAgcywtJCwsCi0tICAgICAgcyxeWyckYXNfY3JfZGlnaXRzJ10qXG4sLAotLSAgICAnID4kYXNfbWUubGluZW5vICYmCi0tICBjaG1vZCAreCAkYXNfbWUubGluZW5vIHx8Ci0tICAgIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGNhbm5vdCBjcmVhdGUgJGFzX21lLmxpbmVubzsgcmVydW4gd2l0aCBhIFBPU0lYIHNoZWxsIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgY3JlYXRlICRhc19tZS5saW5lbm87IHJlcnVuIHdpdGggYSBQT1NJWCBzaGVsbCIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH0KLS0KLS0gICMgRG9uJ3QgdHJ5IHRvIGV4ZWMgYXMgaXQgY2hhbmdlcyAkWzBdLCBjYXVzaW5nIGFsbCBzb3J0IG9mIHByb2JsZW1zCi0tICAjICh0aGUgZGlybmFtZSBvZiAkWzBdIGlzIG5vdCB0aGUgcGxhY2Ugd2hlcmUgd2UgbWlnaHQgZmluZCB0aGUKLS0gICMgb3JpZ2luYWwgYW5kIHNvIG9uLiAgQXV0b2NvbmYgaXMgZXNwZWNpYWxseSBzZW5zaWJsZSB0byB0aGlzKS4KLS0gIC4gLi8kYXNfbWUubGluZW5vCi0tICAjIEV4aXQgc3RhdHVzIGlzIHRoYXQgb2YgdGhlIGxhc3QgY29tbWFuZC4KLS0gIGV4aXQKLS19Ci0tCi0tCi0tY2FzZSBgZWNobyAidGVzdGluZ1xjIjsgZWNobyAxLDIsM2AsYGVjaG8gLW4gdGVzdGluZzsgZWNobyAxLDIsM2AgaW4KLS0gICpjKiwtbiopIEVDSE9fTj0gRUNIT19DPScKLS0nIEVDSE9fVD0nCScgOzsKLS0gICpjKiwqICApIEVDSE9fTj0tbiBFQ0hPX0M9IEVDSE9fVD0gOzsKLS0gICopICAgICAgIEVDSE9fTj0gRUNIT19DPSdcYycgRUNIT19UPSA7OwotLWVzYWMKLS0KLS1pZiBleHByIGEgOiAnXChhXCknID4vZGV2L251bGwgMj4mMTsgdGhlbgotLSAgYXNfZXhwcj1leHByCi0tZWxzZQotLSAgYXNfZXhwcj1mYWxzZQotLWZpCi0tCi0tcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmZpbGUKLS1lY2hvID5jb25mJCQuZmlsZQotLWlmIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVsbDsgdGhlbgotLSAgIyBXZSBjb3VsZCBqdXN0IGNoZWNrIGZvciBESkdQUDsgYnV0IHRoaXMgdGVzdCBhKSB3b3JrcyBiKSBpcyBtb3JlIGdlbmVyaWMKLS0gICMgYW5kIGMpIHdpbGwgcmVtYWluIHZhbGlkIG9uY2UgREpHUFAgc3VwcG9ydHMgc3ltbGlua3MgKERKR1BQIDIuMDQpLgotLSAgaWYgdGVzdCAtZiBjb25mJCQuZXhlOyB0aGVuCi0tICAgICMgRG9uJ3QgdXNlIGxuIGF0IGFsbDsgd2UgZG9uJ3QgaGF2ZSBhbnkgbGlua3MKLS0gICAgYXNfbG5fcz0nY3AgLXAnCi0rICBpZiB0ZXN0ICEgLXMgY29uZnRlc3QucyRhY19maWxlOyB0aGVuCi0rICAgIGFjX21vcmVfbGluZXM9ZmFsc2UKLSsgICAgcm0gLWYgY29uZnRlc3QucyRhY19maWxlCi0gICBlbHNlCi0tICAgIGFzX2xuX3M9J2xuIC1zJwotKyAgICBpZiB0ZXN0IC16ICIkYWNfc2VkX2NtZHMiOyB0aGVuCi0rICAgICAgYWNfc2VkX2NtZHM9InNlZCAtZiBjb25mdGVzdC5zJGFjX2ZpbGUiCi0rICAgIGVsc2UKLSsgICAgICBhY19zZWRfY21kcz0iJGFjX3NlZF9jbWRzIHwgc2VkIC1mIGNvbmZ0ZXN0LnMkYWNfZmlsZSIKLSsgICAgZmkKLSsgICAgYWNfZmlsZT1gZXhwciAkYWNfZmlsZSArIDFgCi0rICAgIGFjX2JlZz0kYWNfZW5kCi0rICAgIGFjX2VuZD1gZXhwciAkYWNfZW5kICsgJGFjX21heF9zZWRfY21kc2AKLSAgIGZpCi0tZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4KLS0gIGFzX2xuX3M9bG4KLS1lbHNlCi0tICBhc19sbl9zPSdjcCAtcCcKLS1maQotLXJtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxlCi0tCi0taWYgbWtkaXIgLXAgLiAyPi9kZXYvbnVsbDsgdGhlbgotLSAgYXNfbWtkaXJfcD06Ci0tZWxzZQotLSAgYXNfbWtkaXJfcD1mYWxzZQotLWZpCi0tCi0tYXNfZXhlY3V0YWJsZV9wPSJ0ZXN0IC1mIgotLQotLSMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCBDUFAgbmFtZS4KLS1hc190cl9jcHA9InNlZCB5JSokYXNfY3JfbGV0dGVycyVQJGFzX2NyX0xFVFRFUlMlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWciCi0tCi0tIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIHZhcmlhYmxlIG5hbWUuCi0tYXNfdHJfc2g9InNlZCB5JSorJXBwJTtzJVteXyRhc19jcl9hbG51bV0lXyVnIgotLQotLQotLSMgSUZTCi0tIyBXZSBuZWVkIHNwYWNlLCB0YWIgYW5kIG5ldyBsaW5lLCBpbiBwcmVjaXNlbHkgdGhhdCBvcmRlci4KLS1hc19ubD0nCi0tJwotLUlGUz0iIAkkYXNfbmwiCi0tCi0tIyBDRFBBVEguCi0tJGFzX3Vuc2V0IENEUEFUSAotLQotLWV4ZWMgNj4mMQotLQotLSMgT3BlbiB0aGUgbG9nIHJlYWwgc29vbiwgdG8ga2VlcCBcJFswXSBhbmQgc28gb24gbWVhbmluZ2Z1bCwgYW5kIHRvCi0tIyByZXBvcnQgYWN0dWFsIGlucHV0IHZhbHVlcyBvZiBDT05GSUdfRklMRVMgZXRjLiBpbnN0ZWFkIG9mIHRoZWlyCi0tIyB2YWx1ZXMgYWZ0ZXIgb3B0aW9ucyBoYW5kbGluZy4gIExvZ2dpbmcgLS12ZXJzaW9uIGV0Yy4gaXMgT0suCi0tZXhlYyA1Pj5jb25maWcubG9nCi0tewotLSAgZWNobwotLSAgc2VkICdoO3MvLi8tL2c7cy9eLi4uLyMjIC87cy8uLi4kLyAjIy87cDt4O3A7eCcgPDxfQVNCT1gKLS0jIyBSdW5uaW5nICRhc19tZS4gIyMKLS1fQVNCT1gKLS19ID4mNQotLWNhdCA+JjUgPDxfQ1NFT0YKLS0KLS1UaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5ICRhc19tZSwgd2hpY2ggd2FzCi0tZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjU3LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCi0tCi0tICBDT05GSUdfRklMRVMgICAgPSAkQ09ORklHX0ZJTEVTCi0tICBDT05GSUdfSEVBREVSUyAgPSAkQ09ORklHX0hFQURFUlMKLS0gIENPTkZJR19MSU5LUyAgICA9ICRDT05GSUdfTElOS1MKLS0gIENPTkZJR19DT01NQU5EUyA9ICRDT05GSUdfQ09NTUFORFMKLS0gICQgJDAgJEAKLS0KLS1fQ1NFT0YKLS1lY2hvICJvbiBgKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWAiID4mNQotLWVjaG8gPiY1Ci0tX0FDRU9GCi0tCi0tIyBGaWxlcyB0aGF0IGNvbmZpZy5zdGF0dXMgd2FzIG1hZGUgZm9yLgotLWlmIHRlc3QgLW4gIiRhY19jb25maWdfZmlsZXMiOyB0aGVuCi0tICBlY2hvICJjb25maWdfZmlsZXM9XCIkYWNfY29uZmlnX2ZpbGVzXCIiID4+JENPTkZJR19TVEFUVVMKLS1maQotLQotLWlmIHRlc3QgLW4gIiRhY19jb25maWdfaGVhZGVycyI7IHRoZW4KLS0gIGVjaG8gImNvbmZpZ19oZWFkZXJzPVwiJGFjX2NvbmZpZ19oZWFkZXJzXCIiID4+JENPTkZJR19TVEFUVVMKLS1maQotLQotLWlmIHRlc3QgLW4gIiRhY19jb25maWdfbGlua3MiOyB0aGVuCi0tICBlY2hvICJjb25maWdfbGlua3M9XCIkYWNfY29uZmlnX2xpbmtzXCIiID4+JENPTkZJR19TVEFUVVMKLS1maQotLQotLWlmIHRlc3QgLW4gIiRhY19jb25maWdfY29tbWFuZHMiOyB0aGVuCi0tICBlY2hvICJjb25maWdfY29tbWFuZHM9XCIkYWNfY29uZmlnX2NvbW1hbmRzXCIiID4+JENPTkZJR19TVEFUVVMKLS1maQotLQotLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRgotLQotLWFjX2NzX3VzYWdlPSJcCi0tXGAkYXNfbWUnIGluc3RhbnRpYXRlcyBmaWxlcyBmcm9tIHRlbXBsYXRlcyBhY2NvcmRpbmcgdG8gdGhlCi0tY3VycmVudCBjb25maWd1cmF0aW9uLgotLQotLVVzYWdlOiAkMCBbT1BUSU9OU10gW0ZJTEVdLi4uCi0tCi0tICAtaCwgLS1oZWxwICAgICAgIHByaW50IHRoaXMgaGVscCwgdGhlbiBleGl0Ci0tICAtViwgLS12ZXJzaW9uICAgIHByaW50IHZlcnNpb24gbnVtYmVyLCB0aGVuIGV4aXQKLS0gIC1xLCAtLXF1aWV0ICAgICAgZG8gbm90IHByaW50IHByb2dyZXNzIG1lc3NhZ2VzCi0tICAtZCwgLS1kZWJ1ZyAgICAgIGRvbid0IHJlbW92ZSB0ZW1wb3JhcnkgZmlsZXMKLS0gICAgICAtLXJlY2hlY2sgICAgdXBkYXRlICRhc19tZSBieSByZWNvbmZpZ3VyaW5nIGluIHRoZSBzYW1lIGNvbmRpdGlvbnMKLS0gIC0tZmlsZT1GSUxFWzpURU1QTEFURV0KLS0gICAgICAgICAgICAgICAgICAgaW5zdGFudGlhdGUgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBGSUxFCi0tCi0tQ29uZmlndXJhdGlvbiBmaWxlczoKLS0kY29uZmlnX2ZpbGVzCi0tCi0tUmVwb3J0IGJ1Z3MgdG8gPGJ1Zy1hdXRvY29uZkBnbnUub3JnPi4iCi0tX0FDRU9GCi0tCi0tY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YKLS1hY19jc192ZXJzaW9uPSJcXAotLWNvbmZpZy5zdGF0dXMKLS1jb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNTcsCi0tICB3aXRoIG9wdGlvbnMgXFwiYGVjaG8gIiRhY19jb25maWd1cmVfYXJncyIgfCBzZWQgJ3MvW1xcIiJcYFwkXS9cXFxcJi9nJ2BcXCIKLS0KLS1Db3B5cmlnaHQgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMQotLUZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLVRoaXMgY29uZmlnLnN0YXR1cyBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotLWdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iCi0tc3JjZGlyPSRzcmNkaXIKLS1JTlNUQUxMPSIkSU5TVEFMTCIKLS1fQUNFT0YKLS0KLS1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YKLS0jIElmIG5vIGZpbGUgYXJlIHNwZWNpZmllZCBieSB0aGUgdXNlciwgdGhlbiB3ZSBuZWVkIHRvIHByb3ZpZGUgZGVmYXVsdAotLSMgdmFsdWUuICBCeSB3ZSBuZWVkIHRvIGtub3cgaWYgZmlsZXMgd2VyZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIuCi0tYWNfbmVlZF9kZWZhdWx0cz06Ci0td2hpbGUgdGVzdCAkIyAhPSAwCi0tZG8KLS0gIGNhc2UgJDEgaW4KLS0gIC0tKj0qKQotLSAgICBhY19vcHRpb249YGV4cHIgIngkMSIgOiAneFwoW149XSpcKT0nYAotLSAgICBhY19vcHRhcmc9YGV4cHIgIngkMSIgOiAneFtePV0qPVwoLipcKSdgCi0tICAgIGFjX3NoaWZ0PToKLS0gICAgOzsKLS0gIC0qKQotLSAgICBhY19vcHRpb249JDEKLS0gICAgYWNfb3B0YXJnPSQyCi0tICAgIGFjX3NoaWZ0PXNoaWZ0Ci0tICAgIDs7Ci0tICAqKSAjIFRoaXMgaXMgbm90IGFuIG9wdGlvbiwgc28gdGhlIHVzZXIgaGFzIHByb2JhYmx5IGdpdmVuIGV4cGxpY2l0Ci0tICAgICAjIGFyZ3VtZW50cy4KLS0gICAgIGFjX29wdGlvbj0kMQotLSAgICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZTs7Ci0tICBlc2FjCi0tCi0tICBjYXNlICRhY19vcHRpb24gaW4KLS0gICMgSGFuZGxpbmcgb2YgdGhlIG9wdGlvbnMuCi0tX0FDRU9GCi0tY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GCi0tICAtcmVjaGVjayB8IC0tcmVjaGVjayB8IC0tcmVjaGVjIHwgLS1yZWNoZSB8IC0tcmVjaCB8IC0tcmVjIHwgLS1yZSB8IC0tcikKLS0gICAgYWNfY3NfcmVjaGVjaz06IDs7Ci0tICAtLXZlcnNpb24gfCAtLXZlcnMqIHwgLVYgKQotLSAgICBlY2hvICIkYWNfY3NfdmVyc2lvbiI7IGV4aXQgMCA7OwotLSAgLS1oZSB8IC0taCkKLS0gICAgIyBDb25mbGljdCBiZXR3ZWVuIC0taGVscCBhbmQgLS1oZWFkZXIKLS0gICAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogYW1iaWd1b3VzIG9wdGlvbjogJDEKLS1UcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogYW1iaWd1b3VzIG9wdGlvbjogJDEKLS1UcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH07OwotLSAgLS1oZWxwIHwgLS1oZWwgfCAtaCApCi0tICAgIGVjaG8gIiRhY19jc191c2FnZSI7IGV4aXQgMCA7OwotLSAgLS1kZWJ1ZyB8IC0tZCogfCAtZCApCi0tICAgIGRlYnVnPTogOzsKLS0gIC0tZmlsZSB8IC0tZmlsIHwgLS1maSB8IC0tZiApCi0tICAgICRhY19zaGlmdAotLSAgICBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgJGFjX29wdGFyZyIKLS0gICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZTs7Ci0tICAtLWhlYWRlciB8IC0taGVhZGUgfCAtLWhlYWQgfCAtLWhlYSApCi0tICAgICRhY19zaGlmdAotLSAgICBDT05GSUdfSEVBREVSUz0iJENPTkZJR19IRUFERVJTICRhY19vcHRhcmciCi0tICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7OwotLSAgLXEgfCAtcXVpZXQgfCAtLXF1aWV0IHwgLS1xdWllIHwgLS1xdWkgfCAtLXF1IHwgLS1xIFwKLS0gIHwgLXNpbGVudCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0tc2lsZSB8IC0tc2lsIHwgLS1zaSB8IC0tcykKLS0gICAgYWNfY3Nfc2lsZW50PTogOzsKLS0KLS0gICMgVGhpcyBpcyBhbiBlcnJvci4KLS0gIC0qKSB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiB1bnJlY29nbml6ZWQgb3B0aW9uOiAkMQotLVRyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiB1bnJlY29nbml6ZWQgb3B0aW9uOiAkMQotLVRyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiA+JjI7fQotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfSA7OwotLQotLSAgKikgYWNfY29uZmlnX3RhcmdldHM9IiRhY19jb25maWdfdGFyZ2V0cyAkMSIgOzsKLS0KLS0gIGVzYWMKLS0gIHNoaWZ0Ci0gZG9uZQotLQotLWFjX2NvbmZpZ3VyZV9leHRyYV9hcmdzPQotLQotLWlmICRhY19jc19zaWxlbnQ7IHRoZW4KLS0gIGV4ZWMgNj4vZGV2L251bGwKLS0gIGFjX2NvbmZpZ3VyZV9leHRyYV9hcmdzPSIkYWNfY29uZmlndXJlX2V4dHJhX2FyZ3MgLS1zaWxlbnQiCi0raWYgdGVzdCAteiAiJGFjX3NlZF9jbWRzIjsgdGhlbgotKyAgYWNfc2VkX2NtZHM9Y2F0Ci0gZmkKLStFT0YKLSAKLS1fQUNFT0YKLS1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRgotLWlmIFwkYWNfY3NfcmVjaGVjazsgdGhlbgotLSAgZWNobyAicnVubmluZyAkU0hFTEwgJDAgIiAkYWNfY29uZmlndXJlX2FyZ3MgXCRhY19jb25maWd1cmVfZXh0cmFfYXJncyAiIC0tbm8tY3JlYXRlIC0tbm8tcmVjdXJzaW9uIiA+JjYKLS0gIGV4ZWMgJFNIRUxMICQwICRhY19jb25maWd1cmVfYXJncyBcJGFjX2NvbmZpZ3VyZV9leHRyYV9hcmdzIC0tbm8tY3JlYXRlIC0tbm8tcmVjdXJzaW9uCi0tZmkKLStjYXQgPj4gJENPTkZJR19TVEFUVVMgPDxFT0YKLSAKLS1fQUNFT0YKLS0KLS0KLS0KLS0KLS0KLS1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YKLS1mb3IgYWNfY29uZmlnX3RhcmdldCBpbiAkYWNfY29uZmlnX3RhcmdldHMKLS1kbwotLSAgY2FzZSAiJGFjX2NvbmZpZ190YXJnZXQiIGluCi0tICAjIEhhbmRsaW5nIG9mIGFyZ3VtZW50cy4KLS0gICJjb25maWcvY29uZmlnIiApIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBjb25maWcvY29uZmlnIiA7OwotLSAgImNvbmZpZy9zeXN0ZW0ubWFrIiApIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBjb25maWcvc3lzdGVtLm1hayIgOzsKLS0gICopIHsgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogZXJyb3I6IGludmFsaWQgYXJndW1lbnQ6ICRhY19jb25maWdfdGFyZ2V0IiA+JjUKLS1lY2hvICIkYXNfbWU6IGVycm9yOiBpbnZhbGlkIGFyZ3VtZW50OiAkYWNfY29uZmlnX3RhcmdldCIgPiYyO30KLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH07IH07OwotK0NPTkZJR19GSUxFUz1cJHtDT05GSUdfRklMRVMtImNvbmZpZy9jb25maWcgY29uZmlnL3N5c3RlbS5tYWsifQotK0VPRgotK2NhdCA+PiAkQ09ORklHX1NUQVRVUyA8PFxFT0YKLStmb3IgYWNfZmlsZSBpbiAuLiAkQ09ORklHX0ZJTEVTOyBkbyBpZiB0ZXN0ICJ4JGFjX2ZpbGUiICE9IHguLjsgdGhlbgotKyAgIyBTdXBwb3J0ICJvdXRmaWxlWzppbmZpbGVbOmluZmlsZS4uLl1dIiwgZGVmYXVsdGluZyBpbmZpbGU9Im91dGZpbGUuaW4iLgotKyAgY2FzZSAiJGFjX2ZpbGUiIGluCi0rICAqOiopIGFjX2ZpbGVfaW49YGVjaG8gIiRhY19maWxlInxzZWQgJ3MlW146XSo6JSUnYAotKyAgICAgICBhY19maWxlPWBlY2hvICIkYWNfZmlsZSJ8c2VkICdzJTouKiUlJ2AgOzsKLSsgICopIGFjX2ZpbGVfaW49IiR7YWNfZmlsZX0uaW4iIDs7Ci0gICBlc2FjCi0tZG9uZQotIAotLSMgSWYgdGhlIHVzZXIgZGlkIG5vdCB1c2UgdGhlIGFyZ3VtZW50cyB0byBzcGVjaWZ5IHRoZSBpdGVtcyB0byBpbnN0YW50aWF0ZSwKLS0jIHRoZW4gdGhlIGVudnZhciBpbnRlcmZhY2UgaXMgdXNlZC4gIFNldCBvbmx5IHRob3NlIHRoYXQgYXJlIG5vdC4KLS0jIFdlIHVzZSB0aGUgbG9uZyBmb3JtIGZvciB0aGUgZGVmYXVsdCBhc3NpZ25tZW50IGJlY2F1c2Ugb2YgYW4gZXh0cmVtZWx5Ci0tIyBiaXphcnJlIGJ1ZyBvbiBTdW5PUyA0LjEuMy4KLS1pZiAkYWNfbmVlZF9kZWZhdWx0czsgdGhlbgotLSAgdGVzdCAiJHtDT05GSUdfRklMRVMrc2V0fSIgPSBzZXQgfHwgQ09ORklHX0ZJTEVTPSRjb25maWdfZmlsZXMKLS1maQotKyAgIyBBZGp1c3QgYSByZWxhdGl2ZSBzcmNkaXIsIHRvcF9zcmNkaXIsIGFuZCBJTlNUQUxMIGZvciBzdWJkaXJlY3Rvcmllcy4KLSAKLS0jIEhhdmUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvciBjb252ZW5pZW5jZS4gIE1ha2UgaXQgaW4gdGhlIGJ1aWxkIHRyZWUKLS0jIHNpbXBseSBiZWNhdXNlIHRoZXJlIGlzIG5vIHJlYXNvbiB0byBwdXQgaXQgaGVyZSwgYW5kIGluIGFkZGl0aW9uLAotLSMgY3JlYXRpbmcgYW5kIG1vdmluZyBmaWxlcyBmcm9tIC90bXAgY2FuIHNvbWV0aW1lcyBjYXVzZSBwcm9ibGVtcy4KLS0jIENyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnksIGFuZCBob29rIGZvciBpdHMgcmVtb3ZhbCB1bmxlc3MgZGVidWdnaW5nLgotLSRkZWJ1ZyB8fAotLXsKLS0gIHRyYXAgJ2V4aXRfc3RhdHVzPSQ/OyBybSAtcmYgJHRtcCAmJiBleGl0ICRleGl0X3N0YXR1cycgMAotLSAgdHJhcCAneyAoZXhpdCAxKTsgZXhpdCAxOyB9JyAxIDIgMTMgMTUKLS19Ci0tCi0tIyBDcmVhdGUgYSAoc2VjdXJlKSB0bXAgZGlyZWN0b3J5IGZvciB0bXAgZmlsZXMuCi0tCi0tewotLSAgdG1wPWAodW1hc2sgMDc3ICYmIG1rdGVtcCAtZCAtcSAiLi9jb25mc3RhdFhYWFhYWCIpIDI+L2Rldi9udWxsYCAmJgotLSAgdGVzdCAtbiAiJHRtcCIgJiYgdGVzdCAtZCAiJHRtcCIKLS19ICB8fAotLXsKLS0gIHRtcD0uL2NvbmZzdGF0JCQtJFJBTkRPTQotLSAgKHVtYXNrIDA3NyAmJiBta2RpciAkdG1wKQotLX0gfHwKLS17Ci0tICAgZWNobyAiJG1lOiBjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBpbiAuIiA+JjIKLS0gICB7IChleGl0IDEpOyBleGl0IDE7IH0KLS19Ci0tCi0tX0FDRU9GCi0tCi0tY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YKLS0KLS0jCi0tIyBDT05GSUdfRklMRVMgc2VjdGlvbi4KLS0jCi0tCi0tIyBObyBuZWVkIHRvIGdlbmVyYXRlIHRoZSBzY3JpcHRzIGlmIHRoZXJlIGFyZSBubyBDT05GSUdfRklMRVMuCi0tIyBUaGlzIGhhcHBlbnMgZm9yIGluc3RhbmNlIHdoZW4gLi9jb25maWcuc3RhdHVzIGNvbmZpZy5oCi0taWYgdGVzdCAtbiAiXCRDT05GSUdfRklMRVMiOyB0aGVuCi0tICAjIFByb3RlY3QgYWdhaW5zdCBiZWluZyBvbiB0aGUgcmlnaHQgc2lkZSBvZiBhIHNlZCBzdWJzdCBpbiBjb25maWcuc3RhdHVzLgotLSAgc2VkICdzLyxAL0BALzsgcy9ALC9AQC87IHMvLDt0IHRcJC9AO3QgdC87IC9AO3QgdFwkL3MvW1xcXFwmLF0vXFxcXCYvZzsKLS0gICBzL0BALyxALzsgcy9AQC9ALC87IHMvQDt0IHRcJC8sO3QgdC8nID5cJHRtcC9zdWJzLnNlZCA8PFxcQ0VPRgotLXMsQFNIRUxMQCwkU0hFTEwsO3QgdAotLXMsQFBBVEhfU0VQQVJBVE9SQCwkUEFUSF9TRVBBUkFUT1IsO3QgdAotLXMsQFBBQ0tBR0VfTkFNRUAsJFBBQ0tBR0VfTkFNRSw7dCB0Ci0tcyxAUEFDS0FHRV9UQVJOQU1FQCwkUEFDS0FHRV9UQVJOQU1FLDt0IHQKLS1zLEBQQUNLQUdFX1ZFUlNJT05ALCRQQUNLQUdFX1ZFUlNJT04sO3QgdAotLXMsQFBBQ0tBR0VfU1RSSU5HQCwkUEFDS0FHRV9TVFJJTkcsO3QgdAotLXMsQFBBQ0tBR0VfQlVHUkVQT1JUQCwkUEFDS0FHRV9CVUdSRVBPUlQsO3QgdAotLXMsQGV4ZWNfcHJlZml4QCwkZXhlY19wcmVmaXgsO3QgdAotLXMsQHByZWZpeEAsJHByZWZpeCw7dCB0Ci0tcyxAcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZUAsJHByb2dyYW1fdHJhbnNmb3JtX25hbWUsO3QgdAotLXMsQGJpbmRpckAsJGJpbmRpciw7dCB0Ci0tcyxAc2JpbmRpckAsJHNiaW5kaXIsO3QgdAotLXMsQGxpYmV4ZWNkaXJALCRsaWJleGVjZGlyLDt0IHQKLS1zLEBkYXRhZGlyQCwkZGF0YWRpciw7dCB0Ci0tcyxAc3lzY29uZmRpckAsJHN5c2NvbmZkaXIsO3QgdAotLXMsQHNoYXJlZHN0YXRlZGlyQCwkc2hhcmVkc3RhdGVkaXIsO3QgdAotLXMsQGxvY2Fsc3RhdGVkaXJALCRsb2NhbHN0YXRlZGlyLDt0IHQKLS1zLEBsaWJkaXJALCRsaWJkaXIsO3QgdAotLXMsQGluY2x1ZGVkaXJALCRpbmNsdWRlZGlyLDt0IHQKLS1zLEBvbGRpbmNsdWRlZGlyQCwkb2xkaW5jbHVkZWRpciw7dCB0Ci0tcyxAaW5mb2RpckAsJGluZm9kaXIsO3QgdAotLXMsQG1hbmRpckAsJG1hbmRpciw7dCB0Ci0tcyxAYnVpbGRfYWxpYXNALCRidWlsZF9hbGlhcyw7dCB0Ci0tcyxAaG9zdF9hbGlhc0AsJGhvc3RfYWxpYXMsO3QgdAotLXMsQHRhcmdldF9hbGlhc0AsJHRhcmdldF9hbGlhcyw7dCB0Ci0tcyxAREVGU0AsJERFRlMsO3QgdAotLXMsQEVDSE9fQ0AsJEVDSE9fQyw7dCB0Ci0tcyxARUNIT19OQCwkRUNIT19OLDt0IHQKLS1zLEBFQ0hPX1RALCRFQ0hPX1QsO3QgdAotLXMsQExJQlNALCRMSUJTLDt0IHQKLS1zLEBidWlsZEAsJGJ1aWxkLDt0IHQKLS1zLEBidWlsZF9jcHVALCRidWlsZF9jcHUsO3QgdAotLXMsQGJ1aWxkX3ZlbmRvckAsJGJ1aWxkX3ZlbmRvciw7dCB0Ci0tcyxAYnVpbGRfb3NALCRidWlsZF9vcyw7dCB0Ci0tcyxAaG9zdEAsJGhvc3QsO3QgdAotLXMsQGhvc3RfY3B1QCwkaG9zdF9jcHUsO3QgdAotLXMsQGhvc3RfdmVuZG9yQCwkaG9zdF92ZW5kb3IsO3QgdAotLXMsQGhvc3Rfb3NALCRob3N0X29zLDt0IHQKLS1zLEB0YXJnZXRALCR0YXJnZXQsO3QgdAotLXMsQHRhcmdldF9jcHVALCR0YXJnZXRfY3B1LDt0IHQKLS1zLEB0YXJnZXRfdmVuZG9yQCwkdGFyZ2V0X3ZlbmRvciw7dCB0Ci0tcyxAdGFyZ2V0X29zQCwkdGFyZ2V0X29zLDt0IHQKLS1zLEBDQ0AsJENDLDt0IHQKLS1zLEBDRkxBR1NALCRDRkxBR1MsO3QgdAotLXMsQExERkxBR1NALCRMREZMQUdTLDt0IHQKLS1zLEBDUFBGTEFHU0AsJENQUEZMQUdTLDt0IHQKLS1zLEBhY19jdF9DQ0AsJGFjX2N0X0NDLDt0IHQKLS1zLEBFWEVFWFRALCRFWEVFWFQsO3QgdAotLXMsQE9CSkVYVEAsJE9CSkVYVCw7dCB0Ci0tcyxAUkFOTElCQCwkUkFOTElCLDt0IHQKLS1zLEBhY19jdF9SQU5MSUJALCRhY19jdF9SQU5MSUIsO3QgdAotLXMsQElOU1RBTExfUFJPR1JBTUAsJElOU1RBTExfUFJPR1JBTSw7dCB0Ci0tcyxASU5TVEFMTF9TQ1JJUFRALCRJTlNUQUxMX1NDUklQVCw7dCB0Ci0tcyxASU5TVEFMTF9EQVRBQCwkSU5TVEFMTF9EQVRBLDt0IHQKLS1zLEBBUkAsJEFSLDt0IHQKLS1zLEBhY19jdF9BUkAsJGFjX2N0X0FSLDt0IHQKLS1zLEBUQVJHRVRfT1NALCRUQVJHRVRfT1MsO3QgdAotLXMsQFRBUkdFVF9DUFVALCRUQVJHRVRfQ1BVLDt0IHQKLS1zLEBNNjhLQ0NALCRNNjhLQ0MsO3QgdAotLXMsQExFWERFRlNALCRMRVhERUZTLDt0IHQKLS1zLEBWT1hERUZTQCwkVk9YREVGUyw7dCB0Ci0tcyxASE9TVF9PU0AsJEhPU1RfT1MsO3QgdAotLXMsQEhPU1RfQ1BVQCwkSE9TVF9DUFUsO3QgdAotLXMsQE9USEVSTElCU0AsJE9USEVSTElCUyw7dCB0Ci0tcyxAU0hGTEFHU0AsJFNIRkxBR1MsO3QgdAotLXMsQE1NQVBUWVBFQCwkTU1BUFRZUEUsO3QgdAotLXMsQFNURElPVFlQRUAsJFNURElPVFlQRSw7dCB0Ci0tcyxAQ1BQQCwkQ1BQLDt0IHQKLS1zLEBFR1JFUEAsJEVHUkVQLDt0IHQKLS1zLEBBVURJT0RSSVZFUkAsJEFVRElPRFJJVkVSLDt0IHQKLS1zLEBBVURJT0RFRlNALCRBVURJT0RFRlMsO3QgdAotLXMsQEFVRElPTElCU0AsJEFVRElPTElCUyw7dCB0Ci0tcyxARkxfTEFOR0AsJEZMX0xBTkcsO3QgdAotLXMsQEZMX1ZPWEAsJEZMX1ZPWCw7dCB0Ci0tcyxARkxfTEVYQCwkRkxfTEVYLDt0IHQKLS1zLEBMSUJPQkpTQCwkTElCT0JKUyw7dCB0Ci0tcyxATFRMSUJPQkpTQCwkTFRMSUJPQkpTLDt0IHQKLS1DRU9GCi0tCi0tX0FDRU9GCi0tCi0tICBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YKLS0gICMgU3BsaXQgdGhlIHN1YnN0aXR1dGlvbnMgaW50byBiaXRlLXNpemVkIHBpZWNlcyBmb3Igc2VkcyB3aXRoCi0tICAjIHNtYWxsIGNvbW1hbmQgbnVtYmVyIGxpbWl0cywgbGlrZSBvbiBEaWdpdGFsIE9TRi8xIGFuZCBIUC1VWC4KLS0gIGFjX21heF9zZWRfbGluZXM9NDgKLS0gIGFjX3NlZF9mcmFnPTEgIyBOdW1iZXIgb2YgY3VycmVudCBmaWxlLgotLSAgYWNfYmVnPTEgIyBGaXJzdCBsaW5lIGZvciBjdXJyZW50IGZpbGUuCi0tICBhY19lbmQ9JGFjX21heF9zZWRfbGluZXMgIyBMaW5lIGFmdGVyIGxhc3QgbGluZSBmb3IgY3VycmVudCBmaWxlLgotLSAgYWNfbW9yZV9saW5lcz06Ci0tICBhY19zZWRfY21kcz0KLS0gIHdoaWxlICRhY19tb3JlX2xpbmVzOyBkbwotLSAgICBpZiB0ZXN0ICRhY19iZWcgLWd0IDE7IHRoZW4KLS0gICAgICBzZWQgIjEsJHthY19iZWd9ZDsgJHthY19lbmR9cSIgJHRtcC9zdWJzLnNlZCA+JHRtcC9zdWJzLmZyYWcKLS0gICAgZWxzZQotLSAgICAgIHNlZCAiJHthY19lbmR9cSIgJHRtcC9zdWJzLnNlZCA+JHRtcC9zdWJzLmZyYWcKLS0gICAgZmkKLS0gICAgaWYgdGVzdCAhIC1zICR0bXAvc3Vicy5mcmFnOyB0aGVuCi0tICAgICAgYWNfbW9yZV9saW5lcz1mYWxzZQotLSAgICBlbHNlCi0tICAgICAgIyBUaGUgcHVycG9zZSBvZiB0aGUgbGFiZWwgYW5kIG9mIHRoZSBicmFuY2hpbmcgY29uZGl0aW9uIGlzIHRvCi0tICAgICAgIyBzcGVlZCB1cCB0aGUgc2VkIHByb2Nlc3NpbmcgKGlmIHRoZXJlIGFyZSBubyBgQCcgYXQgYWxsLCB0aGVyZQotLSAgICAgICMgaXMgbm8gbmVlZCB0byBicm93c2UgYW55IG9mIHRoZSBzdWJzdGl0dXRpb25zKS4KLS0gICAgICAjIFRoZXNlIGFyZSB0aGUgdHdvIGV4dHJhIHNlZCBjb21tYW5kcyBtZW50aW9uZWQgYWJvdmUuCi0tICAgICAgKGVjaG8gJzp0Ci0tICAvQFthLXpBLVpfXVthLXpBLVpfMC05XSpALyFiJyAmJiBjYXQgJHRtcC9zdWJzLmZyYWcpID4kdG1wL3N1YnMtJGFjX3NlZF9mcmFnLnNlZAotLSAgICAgIGlmIHRlc3QgLXogIiRhY19zZWRfY21kcyI7IHRoZW4KLS0gIAlhY19zZWRfY21kcz0ic2VkIC1mICR0bXAvc3Vicy0kYWNfc2VkX2ZyYWcuc2VkIgotLSAgICAgIGVsc2UKLS0gIAlhY19zZWRfY21kcz0iJGFjX3NlZF9jbWRzIHwgc2VkIC1mICR0bXAvc3Vicy0kYWNfc2VkX2ZyYWcuc2VkIgotLSAgICAgIGZpCi0tICAgICAgYWNfc2VkX2ZyYWc9YGV4cHIgJGFjX3NlZF9mcmFnICsgMWAKLS0gICAgICBhY19iZWc9JGFjX2VuZAotLSAgICAgIGFjX2VuZD1gZXhwciAkYWNfZW5kICsgJGFjX21heF9zZWRfbGluZXNgCi0tICAgIGZpCi0tICBkb25lCi0tICBpZiB0ZXN0IC16ICIkYWNfc2VkX2NtZHMiOyB0aGVuCi0tICAgIGFjX3NlZF9jbWRzPWNhdAotKyAgIyBSZW1vdmUgbGFzdCBzbGFzaCBhbmQgYWxsIHRoYXQgZm9sbG93cyBpdC4gIE5vdCBhbGwgc3lzdGVtcyBoYXZlIGRpcm5hbWUuCi0rICBhY19kaXI9YGVjaG8gJGFjX2ZpbGV8c2VkICdzJS9bXi9dW14vXSokJSUnYAotKyAgaWYgdGVzdCAiJGFjX2RpciIgIT0gIiRhY19maWxlIiAmJiB0ZXN0ICIkYWNfZGlyIiAhPSAuOyB0aGVuCi0rICAgICMgVGhlIGZpbGUgaXMgaW4gYSBzdWJkaXJlY3RvcnkuCi0rICAgIHRlc3QgISAtZCAiJGFjX2RpciIgJiYgbWtkaXIgIiRhY19kaXIiCi0rICAgIGFjX2Rpcl9zdWZmaXg9Ii9gZWNobyAkYWNfZGlyfHNlZCAncyVeXC4vJSUnYCIKLSsgICAgIyBBICIuLi8iIGZvciBlYWNoIGRpcmVjdG9yeSBpbiAkYWNfZGlyX3N1ZmZpeC4KLSsgICAgYWNfZG90cz1gZWNobyAkYWNfZGlyX3N1ZmZpeHxzZWQgJ3MlL1teL10qJS4uLyVnJ2AKLSsgIGVsc2UKLSsgICAgYWNfZGlyX3N1ZmZpeD0gYWNfZG90cz0KLSAgIGZpCi0tZmkgIyB0ZXN0IC1uICIkQ09ORklHX0ZJTEVTIgotIAotLV9BQ0VPRgotLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRgotLWZvciBhY19maWxlIGluIDogJENPTkZJR19GSUxFUzsgZG8gdGVzdCAieCRhY19maWxlIiA9IHg6ICYmIGNvbnRpbnVlCi0tICAjIFN1cHBvcnQgIm91dGZpbGVbOmluZmlsZVs6aW5maWxlLi4uXV0iLCBkZWZhdWx0aW5nIGluZmlsZT0ib3V0ZmlsZS5pbiIuCi0tICBjYXNlICRhY19maWxlIGluCi0tICAtIHwgKjotIHwgKjotOiogKSAjIGlucHV0IGZyb20gc3RkaW4KLS0gICAgICAgIGNhdCA+JHRtcC9zdGRpbgotLSAgICAgICAgYWNfZmlsZV9pbj1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLFteOl0qOiwsJ2AKLS0gICAgICAgIGFjX2ZpbGU9YGVjaG8gIiRhY19maWxlIiB8IHNlZCAncyw6LiosLCdgIDs7Ci0tICAqOiogKSBhY19maWxlX2luPWBlY2hvICIkYWNfZmlsZSIgfCBzZWQgJ3MsW146XSo6LCwnYAotLSAgICAgICAgYWNfZmlsZT1gZWNobyAiJGFjX2ZpbGUiIHwgc2VkICdzLDouKiwsJ2AgOzsKLS0gICogKSAgIGFjX2ZpbGVfaW49JGFjX2ZpbGUuaW4gOzsKLSsgIGNhc2UgIiRhY19naXZlbl9zcmNkaXIiIGluCi0rICAuKSAgc3JjZGlyPS4KLSsgICAgICBpZiB0ZXN0IC16ICIkYWNfZG90cyI7IHRoZW4gdG9wX3NyY2Rpcj0uCi0rICAgICAgZWxzZSB0b3Bfc3JjZGlyPWBlY2hvICRhY19kb3RzfHNlZCAncyUvJCUlJ2A7IGZpIDs7Ci0rICAvKikgc3JjZGlyPSIkYWNfZ2l2ZW5fc3JjZGlyJGFjX2Rpcl9zdWZmaXgiOyB0b3Bfc3JjZGlyPSIkYWNfZ2l2ZW5fc3JjZGlyIiA7OwotKyAgKikgIyBSZWxhdGl2ZSBwYXRoLgotKyAgICBzcmNkaXI9IiRhY19kb3RzJGFjX2dpdmVuX3NyY2RpciRhY19kaXJfc3VmZml4IgotKyAgICB0b3Bfc3JjZGlyPSIkYWNfZG90cyRhY19naXZlbl9zcmNkaXIiIDs7Ci0gICBlc2FjCi0gCi0tICAjIENvbXB1dGUgQHNyY2RpckAsIEB0b3Bfc3JjZGlyQCwgYW5kIEBJTlNUQUxMQCBmb3Igc3ViZGlyZWN0b3JpZXMuCi0tICBhY19kaXI9YChkaXJuYW1lICIkYWNfZmlsZSIpIDI+L2Rldi9udWxsIHx8Ci0tJGFzX2V4cHIgWCIkYWNfZmlsZSIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKLS0gICAgICAgICBYIiRhY19maWxlIiA6ICdYXCgvL1wpW14vXScgXHwgXAotLSAgICAgICAgIFgiJGFjX2ZpbGUiIDogJ1hcKC8vXCkkJyBcfCBcCi0tICAgICAgICAgWCIkYWNfZmlsZSIgOiAnWFwoL1wpJyBcfCBcCi0tICAgICAgICAgLiAgICAgOiAnXCguXCknIDI+L2Rldi9udWxsIHx8Ci0tZWNobyBYIiRhY19maWxlIiB8Ci0tICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97IHMvL1wxLzsgcTsgfQotLSAgCSAgL15YXChcL1wvXClbXi9dLioveyBzLy9cMS87IHE7IH0KLS0gIAkgIC9eWFwoXC9cL1wpJC97IHMvL1wxLzsgcTsgfQotLSAgCSAgL15YXChcL1wpLioveyBzLy9cMS87IHE7IH0KLS0gIAkgIHMvLiovLi87IHEnYAotLSAgeyBpZiAkYXNfbWtkaXJfcDsgdGhlbgotLSAgICBta2RpciAtcCAiJGFjX2RpciIKLS0gIGVsc2UKLS0gICAgYXNfZGlyPSIkYWNfZGlyIgotLSAgICBhc19kaXJzPQotLSAgICB3aGlsZSB0ZXN0ICEgLWQgIiRhc19kaXIiOyBkbwotLSAgICAgIGFzX2RpcnM9IiRhc19kaXIgJGFzX2RpcnMiCi0tICAgICAgYXNfZGlyPWAoZGlybmFtZSAiJGFzX2RpciIpIDI+L2Rldi9udWxsIHx8Ci0tJGFzX2V4cHIgWCIkYXNfZGlyIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXAotLSAgICAgICAgIFgiJGFzX2RpciIgOiAnWFwoLy9cKVteL10nIFx8IFwKLS0gICAgICAgICBYIiRhc19kaXIiIDogJ1hcKC8vXCkkJyBcfCBcCi0tICAgICAgICAgWCIkYXNfZGlyIiA6ICdYXCgvXCknIFx8IFwKLS0gICAgICAgICAuICAgICA6ICdcKC5cKScgMj4vZGV2L251bGwgfHwKLS1lY2hvIFgiJGFzX2RpciIgfAotLSAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQveyBzLy9cMS87IHE7IH0KLS0gIAkgIC9eWFwoXC9cL1wpW14vXS4qL3sgcy8vXDEvOyBxOyB9Ci0tICAJICAvXlhcKFwvXC9cKSQveyBzLy9cMS87IHE7IH0KLS0gIAkgIC9eWFwoXC9cKS4qL3sgcy8vXDEvOyBxOyB9Ci0tICAJICBzLy4qLy4vOyBxJ2AKLS0gICAgZG9uZQotLSAgICB0ZXN0ICEgLW4gIiRhc19kaXJzIiB8fCBta2RpciAkYXNfZGlycwotLSAgZmkgfHwgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIkYWNfZGlyXCIiID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJGFjX2RpclwiIiA+JjI7fQotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfTsgfQotKyAgY2FzZSAiJGFjX2dpdmVuX0lOU1RBTEwiIGluCi0rICBbLyRdKikgSU5TVEFMTD0iJGFjX2dpdmVuX0lOU1RBTEwiIDs7Ci0rICAqKSBJTlNUQUxMPSIkYWNfZG90cyRhY19naXZlbl9JTlNUQUxMIiA7OwotKyAgZXNhYwotIAotLSAgYWNfYnVpbGRkaXI9LgotLQotLWlmIHRlc3QgIiRhY19kaXIiICE9IC47IHRoZW4KLS0gIGFjX2Rpcl9zdWZmaXg9L2BlY2hvICIkYWNfZGlyIiB8IHNlZCAncyxeXC5bXFwvXSwsJ2AKLS0gICMgQSAiLi4vIiBmb3IgZWFjaCBkaXJlY3RvcnkgaW4gJGFjX2Rpcl9zdWZmaXguCi0tICBhY190b3BfYnVpbGRkaXI9YGVjaG8gIiRhY19kaXJfc3VmZml4IiB8IHNlZCAncywvW15cXC9dKiwuLi8sZydgCi0tZWxzZQotLSAgYWNfZGlyX3N1ZmZpeD0gYWNfdG9wX2J1aWxkZGlyPQotLWZpCi0tCi0tY2FzZSAkc3JjZGlyIGluCi0tICAuKSAgIyBObyAtLXNyY2RpciBvcHRpb24uICBXZSBhcmUgYnVpbGRpbmcgaW4gcGxhY2UuCi0tICAgIGFjX3NyY2Rpcj0uCi0tICAgIGlmIHRlc3QgLXogIiRhY190b3BfYnVpbGRkaXIiOyB0aGVuCi0tICAgICAgIGFjX3RvcF9zcmNkaXI9LgotLSAgICBlbHNlCi0tICAgICAgIGFjX3RvcF9zcmNkaXI9YGVjaG8gJGFjX3RvcF9idWlsZGRpciB8IHNlZCAncywvJCwsJ2AKLS0gICAgZmkgOzsKLS0gIFtcXC9dKiB8ID86W1xcL10qICkgICMgQWJzb2x1dGUgcGF0aC4KLS0gICAgYWNfc3JjZGlyPSRzcmNkaXIkYWNfZGlyX3N1ZmZpeDsKLS0gICAgYWNfdG9wX3NyY2Rpcj0kc3JjZGlyIDs7Ci0tICAqKSAjIFJlbGF0aXZlIHBhdGguCi0tICAgIGFjX3NyY2Rpcj0kYWNfdG9wX2J1aWxkZGlyJHNyY2RpciRhY19kaXJfc3VmZml4Ci0tICAgIGFjX3RvcF9zcmNkaXI9JGFjX3RvcF9idWlsZGRpciRzcmNkaXIgOzsKLS1lc2FjCi0tIyBEb24ndCBibGluZGx5IHBlcmZvcm0gYSBgY2QgIiRhY19kaXIiLyRhY19mb28gJiYgcHdkYCBzaW5jZSAkYWNfZm9vIGNhbiBiZQotLSMgYWJzb2x1dGUuCi0tYWNfYWJzX2J1aWxkZGlyPWBjZCAiJGFjX2RpciIgJiYgY2QgJGFjX2J1aWxkZGlyICYmIHB3ZGAKLS1hY19hYnNfdG9wX2J1aWxkZGlyPWBjZCAiJGFjX2RpciIgJiYgY2QgJHthY190b3BfYnVpbGRkaXJ9LiAmJiBwd2RgCi0tYWNfYWJzX3NyY2Rpcj1gY2QgIiRhY19kaXIiICYmIGNkICRhY19zcmNkaXIgJiYgcHdkYAotLWFjX2Fic190b3Bfc3JjZGlyPWBjZCAiJGFjX2RpciIgJiYgY2QgJGFjX3RvcF9zcmNkaXIgJiYgcHdkYAotLQotLQotLSAgY2FzZSAkSU5TVEFMTCBpbgotLSAgW1xcLyRdKiB8ID86W1xcL10qICkgYWNfSU5TVEFMTD0kSU5TVEFMTCA7OwotLSAgKikgYWNfSU5TVEFMTD0kYWNfdG9wX2J1aWxkZGlyJElOU1RBTEwgOzsKLSsgIGVjaG8gY3JlYXRpbmcgIiRhY19maWxlIgotKyAgcm0gLWYgIiRhY19maWxlIgotKyAgY29uZmlndXJlX2lucHV0PSJHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBmcm9tIGBlY2hvICRhY19maWxlX2lufHNlZCAncyUuKi8lJSdgIGJ5IGNvbmZpZ3VyZS4iCi0rICBjYXNlICIkYWNfZmlsZSIgaW4KLSsgICpNYWtlZmlsZSopIGFjX2NvbXN1Yj0iMWlcXAotKyMgJGNvbmZpZ3VyZV9pbnB1dCIgOzsKLSsgICopIGFjX2NvbXN1Yj0gOzsKLSAgIGVzYWMKLSAKLS0gIGlmIHRlc3QgeCIkYWNfZmlsZSIgIT0geC07IHRoZW4KLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNQotLWVjaG8gIiRhc19tZTogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNjt9Ci0tICAgIHJtIC1mICIkYWNfZmlsZSIKLS0gIGZpCi0tICAjIExldCdzIHN0aWxsIHByZXRlbmQgaXQgaXMgYGNvbmZpZ3VyZScgd2hpY2ggaW5zdGFudGlhdGVzIChpLmUuLCBkb24ndAotLSAgIyB1c2UgJGFzX21lKSwgcGVvcGxlIHdvdWxkIGJlIHN1cnByaXNlZCB0byByZWFkOgotLSAgIyAgICAvKiBjb25maWcuaC4gIEdlbmVyYXRlZCBieSBjb25maWcuc3RhdHVzLiAgKi8KLS0gIGlmIHRlc3QgeCIkYWNfZmlsZSIgPSB4LTsgdGhlbgotLSAgICBjb25maWd1cmVfaW5wdXQ9Ci0tICBlbHNlCi0tICAgIGNvbmZpZ3VyZV9pbnB1dD0iJGFjX2ZpbGUuICAiCi0tICBmaQotLSAgY29uZmlndXJlX2lucHV0PSRjb25maWd1cmVfaW5wdXQiR2VuZXJhdGVkIGZyb20gYGVjaG8gJGFjX2ZpbGVfaW4gfAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWQgJ3MsLiovLCwnYCBieSBjb25maWd1cmUuIgotKyAgYWNfZmlsZV9pbnB1dHM9YGVjaG8gJGFjX2ZpbGVfaW58c2VkIC1lICJzJV4lJGFjX2dpdmVuX3NyY2Rpci8lIiAtZSAicyU6JSAkYWNfZ2l2ZW5fc3JjZGlyLyVnImAKLSsgIHNlZCAtZSAiJGFjX2NvbXN1YgotK3MlQGNvbmZpZ3VyZV9pbnB1dEAlJGNvbmZpZ3VyZV9pbnB1dCVnCi0rcyVAc3JjZGlyQCUkc3JjZGlyJWcKLStzJUB0b3Bfc3JjZGlyQCUkdG9wX3NyY2RpciVnCi0rcyVASU5TVEFMTEAlJElOU1RBTEwlZwotKyIgJGFjX2ZpbGVfaW5wdXRzIHwgKGV2YWwgIiRhY19zZWRfY21kcyIpID4gJGFjX2ZpbGUKLStmaTsgZG9uZQotK3JtIC1mIGNvbmZ0ZXN0LnMqCi0gCi0tICAjIEZpcnN0IGxvb2sgZm9yIHRoZSBpbnB1dCBmaWxlcyBpbiB0aGUgYnVpbGQgdHJlZSwgb3RoZXJ3aXNlIGluIHRoZQotLSAgIyBzcmMgdHJlZS4KLS0gIGFjX2ZpbGVfaW5wdXRzPWBJRlM9OgotLSAgICBmb3IgZiBpbiAkYWNfZmlsZV9pbjsgZG8KLS0gICAgICBjYXNlICRmIGluCi0tICAgICAgLSkgZWNobyAkdG1wL3N0ZGluIDs7Ci0tICAgICAgW1xcLyRdKikKLS0gICAgICAgICAjIEFic29sdXRlIChjYW4ndCBiZSBET1Mtc3R5bGUsIGFzIElGUz06KQotLSAgICAgICAgIHRlc3QgLWYgIiRmIiB8fCB7IHsgZWNobyAiJGFzX21lOiRMSU5FTk86IGVycm9yOiBjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiAkZiIgPiY1Ci0tZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogJGYiID4mMjt9Ci0tICAgeyAoZXhpdCAxKTsgZXhpdCAxOyB9OyB9Ci0tICAgICAgICAgZWNobyAkZjs7Ci0tICAgICAgKikgIyBSZWxhdGl2ZQotLSAgICAgICAgIGlmIHRlc3QgLWYgIiRmIjsgdGhlbgotLSAgICAgICAgICAgIyBCdWlsZCB0cmVlCi0tICAgICAgICAgICBlY2hvICRmCi0tICAgICAgICAgZWxpZiB0ZXN0IC1mICIkc3JjZGlyLyRmIjsgdGhlbgotLSAgICAgICAgICAgIyBTb3VyY2UgdHJlZQotLSAgICAgICAgICAgZWNobyAkc3JjZGlyLyRmCi0tICAgICAgICAgZWxzZQotLSAgICAgICAgICAgIyAvZGV2L251bGwgdHJlZQotLSAgICAgICAgICAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjogY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogJGYiID4mNQotLWVjaG8gIiRhc19tZTogZXJyb3I6IGNhbm5vdCBmaW5kIGlucHV0IGZpbGU6ICRmIiA+JjI7fQotLSAgIHsgKGV4aXQgMSk7IGV4aXQgMTsgfTsgfQotLSAgICAgICAgIGZpOzsKLS0gICAgICBlc2FjCi0tICAgIGRvbmVgIHx8IHsgKGV4aXQgMSk7IGV4aXQgMTsgfQotLV9BQ0VPRgotLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GCi0tICBzZWQgIiRhY192cHN1YgotLSRleHRyYXN1YgotLV9BQ0VPRgotLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRgotLTp0Ci0tL0BbYS16QS1aX11bYS16QS1aXzAtOV0qQC8hYgotLXMsQGNvbmZpZ3VyZV9pbnB1dEAsJGNvbmZpZ3VyZV9pbnB1dCw7dCB0Ci0tcyxAc3JjZGlyQCwkYWNfc3JjZGlyLDt0IHQKLS1zLEBhYnNfc3JjZGlyQCwkYWNfYWJzX3NyY2Rpciw7dCB0Ci0tcyxAdG9wX3NyY2RpckAsJGFjX3RvcF9zcmNkaXIsO3QgdAotLXMsQGFic190b3Bfc3JjZGlyQCwkYWNfYWJzX3RvcF9zcmNkaXIsO3QgdAotLXMsQGJ1aWxkZGlyQCwkYWNfYnVpbGRkaXIsO3QgdAotLXMsQGFic19idWlsZGRpckAsJGFjX2Fic19idWlsZGRpciw7dCB0Ci0tcyxAdG9wX2J1aWxkZGlyQCwkYWNfdG9wX2J1aWxkZGlyLDt0IHQKLS1zLEBhYnNfdG9wX2J1aWxkZGlyQCwkYWNfYWJzX3RvcF9idWlsZGRpciw7dCB0Ci0tcyxASU5TVEFMTEAsJGFjX0lOU1RBTEwsO3QgdAotLSIgJGFjX2ZpbGVfaW5wdXRzIHwgKGV2YWwgIiRhY19zZWRfY21kcyIpID4kdG1wL291dAotLSAgcm0gLWYgJHRtcC9zdGRpbgotLSAgaWYgdGVzdCB4IiRhY19maWxlIiAhPSB4LTsgdGhlbgotLSAgICBtdiAkdG1wL291dCAkYWNfZmlsZQotLSAgZWxzZQotLSAgICBjYXQgJHRtcC9vdXQKLS0gICAgcm0gLWYgJHRtcC9vdXQKLS0gIGZpCi0rRU9GCi0rY2F0ID4+ICRDT05GSUdfU1RBVFVTIDw8RU9GCi0gCi0tZG9uZQotLV9BQ0VPRgotK0VPRgotK2NhdCA+PiAkQ09ORklHX1NUQVRVUyA8PFxFT0YKLSAKLS1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YKLS0KLS17IChleGl0IDApOyBleGl0IDA7IH0KLS1fQUNFT0YKLStleGl0IDAKLStFT0YKLSBjaG1vZCAreCAkQ09ORklHX1NUQVRVUwotLWFjX2NsZWFuX2ZpbGVzPSRhY19jbGVhbl9maWxlc19zYXZlCi0rcm0gLWZyIGNvbmZkZWZzKiAkYWNfY2xlYW5fZmlsZXMKLSt0ZXN0ICIkbm9fY3JlYXRlIiA9IHllcyB8fCAke0NPTkZJR19TSEVMTC0vYmluL3NofSAkQ09ORklHX1NUQVRVUyB8fCBleGl0IDEKLSAKLS0KLS0jIGNvbmZpZ3VyZSBpcyB3cml0aW5nIHRvIGNvbmZpZy5sb2csIGFuZCB0aGVuIGNhbGxzIGNvbmZpZy5zdGF0dXMuCi0tIyBjb25maWcuc3RhdHVzIGRvZXMgaXRzIG93biByZWRpcmVjdGlvbiwgYXBwZW5kaW5nIHRvIGNvbmZpZy5sb2cuCi0tIyBVbmZvcnR1bmF0ZWx5LCBvbiBET1MgdGhpcyBmYWlscywgYXMgY29uZmlnLmxvZyBpcyBzdGlsbCBrZXB0IG9wZW4KLS0jIGJ5IGNvbmZpZ3VyZSwgc28gY29uZmlnLnN0YXR1cyB3b24ndCBiZSBhYmxlIHRvIHdyaXRlIHRvIGl0OyBpdHMKLS0jIG91dHB1dCBpcyBzaW1wbHkgZGlzY2FyZGVkLiAgU28gd2UgZXhlYyB0aGUgRkQgdG8gL2Rldi9udWxsLAotLSMgZWZmZWN0aXZlbHkgY2xvc2luZyBjb25maWcubG9nLCBzbyBpdCBjYW4gYmUgcHJvcGVybHkgKHJlKW9wZW5lZCBhbmQKLS0jIGFwcGVuZGVkIHRvIGJ5IGNvbmZpZy5zdGF0dXMuICBXaGVuIGNvbWluZyBiYWNrIHRvIGNvbmZpZ3VyZSwgd2UKLS0jIG5lZWQgdG8gbWFrZSB0aGUgRkQgYXZhaWxhYmxlIGFnYWluLgotLWlmIHRlc3QgIiRub19jcmVhdGUiICE9IHllczsgdGhlbgotLSAgYWNfY3Nfc3VjY2Vzcz06Ci0tICBhY19jb25maWdfc3RhdHVzX2FyZ3M9Ci0tICB0ZXN0ICIkc2lsZW50IiA9IHllcyAmJgotLSAgICBhY19jb25maWdfc3RhdHVzX2FyZ3M9IiRhY19jb25maWdfc3RhdHVzX2FyZ3MgLS1xdWlldCIKLS0gIGV4ZWMgNT4vZGV2L251bGwKLS0gICRTSEVMTCAkQ09ORklHX1NUQVRVUyAkYWNfY29uZmlnX3N0YXR1c19hcmdzIHx8IGFjX2NzX3N1Y2Nlc3M9ZmFsc2UKLS0gIGV4ZWMgNT4+Y29uZmlnLmxvZwotLSAgIyBVc2UgfHwsIG5vdCAmJiwgdG8gYXZvaWQgZXhpdGluZyBmcm9tIHRoZSBpZiB3aXRoICQ/ID0gMSwgd2hpY2gKLS0gICMgd291bGQgbWFrZSBjb25maWd1cmUgZmFpbCBpZiB0aGlzIGlzIHRoZSBsYXN0IGluc3RydWN0aW9uLgotLSAgJGFjX2NzX3N1Y2Nlc3MgfHwgeyAoZXhpdCAxKTsgZXhpdCAxOyB9Ci0tZmkKLS0KLUluZGV4OiBjb25maWd1cmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9jb25maWd1cmUuaW4JKC4uLi9mbGl0ZS0xLjMtb3JpZykJKHJldmlzaW9uIDcpCi0rKysgZmxpdGUtMS4zLXJlbGVhc2UvY29uZmlndXJlLmluCSguLi4vcmVsZWFzZS0xLjIpCShyZXZpc2lvbiA3KQotQEAgLTIwNiwxMCArMjA2LDEwIEBACi0gQUNfQ0hFQ0tfSEVBREVSKHN5cy9hdWRpb2lvLmgsCi0gICAgICAgICAgICAgICBbQVVESU9EUklWRVI9InN1biIKLSAgICAgICAgICAgICAgICBBVURJT0RFRlM9LURDU1RfQVVESU9fU1VOT1NdKQotLWRubCBBQ19DSEVDS19IRUFERVIoc3lzL2Fzb3VuZGxpYi5oLAotLWRubCAgICAgICAgICAgICAgW0FVRElPRFJJVkVSPSJhbHNhIgotLWRubAkgICAgICAgQVVESU9ERUZTPS1EQ1NUX0FVRElPX0FMU0EKLS1kbmwgICAgICAgICAgICAgICBBVURJT0xJQlM9LWxhc291bmRdKQotKyBBQ19DSEVDS19IRUFERVIoYWxzYS9hc291bmRsaWIuaCwKLSsgICAgICAgICAgICAgIFtBVURJT0RSSVZFUj0iYWxzYSIKLSsJICAgICAgIEFVRElPREVGUz0tRENTVF9BVURJT19BTFNBCi0rICAgICAgICAgICAgICAgQVVESU9MSUJTPS1sYXNvdW5kXSkKLSBBQ19DSEVDS19IRUFERVIobW1zeXN0ZW0uaCwKLSAJICAgICAgW0FVRElPRFJJVkVSPSJ3aW5jZSIKLSAJICAgICAgIEFVRElPREVGUz0tRENTVF9BVURJT19XSU5DRQotSW5kZXg6IHNyYy9ocmcvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9zcmMvaHJnL01ha2VmaWxlCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiA3KQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL3NyYy9ocmcvTWFrZWZpbGUJKC4uLi9yZWxlYXNlLTEuMikJKHJldmlzaW9uIDcpCi1AQCAtMzksOSArMzksMTQgQEAKLSBCVUlMRF9ESVJTID0gCi0gQUxMX0RJUlM9IAotIEggPSAKLStpbmNsdWRlICQoVE9QKS9jb25maWcvY29uZmlnCi0gU1JDUyA9IGNzdF91dHRlcmFuY2UuYyBjc3RfcmVsYXRpb24uYyBjc3RfaXRlbS5jIGNzdF9mZmVhdHVyZS5jIFwKLSAgICAgICAgY3N0X3JlbF9pby5jCi0tT0JKUyA9ICQoU1JDUzouYz0ubykKLStpZmRlZiBTSEZMQUdTCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm9zKQotK2Vsc2UKLStPQkpTIDo9ICQoU1JDUzouYz0ubykKLStlbmRpZgotIEZJTEVTID0gTWFrZWZpbGUgJChIKSAkKFNSQ1MpCi0gTElCTkFNRSA9IGZsaXRlCi0gCi1JbmRleDogc3JjL3V0aWxzL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL3V0aWxzL01ha2VmaWxlCSguLi4vZmxpdGUtMS4zLW9yaWcpCShyZXZpc2lvbiA3KQotKysrIGZsaXRlLTEuMy1yZWxlYXNlL3NyYy91dGlscy9NYWtlZmlsZQkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC00NCw4ICs0NCwxMyBAQAotICAgICAgICBjc3RfdG9rZW5zdHJlYW0uYyBjc3RfdmFsLmMgY3N0X2ZlYXR1cmVzLmMgXAotICAgICAgICBjc3RfZW5kaWFuLmMgY3N0X3NvY2tldC5jIGNzdF92YWxfY29uc3QuYyBcCi0gICAgICAgIGNzdF92YWxfdXNlci5jIGNzdF9hcmdzLmMgCi0raWZkZWYgU0hGTEFHUwotK09CSlMgOj0gJChTUkNTOi5jPS5vcykgJChNTUFQVFlQRTolPWNzdF9tbWFwXyUub3MpIFwKLSsgICAgICAgICQoU1RESU9UWVBFOiU9Y3N0X2ZpbGVfJS5vcykKLStlbHNlCi0gT0JKUyA6PSAkKFNSQ1M6LmM9Lm8pICQoTU1BUFRZUEU6JT1jc3RfbW1hcF8lLm8pIFwKLSAgICAgICAgICQoU1RESU9UWVBFOiU9Y3N0X2ZpbGVfJS5vKQotK2VuZGlmCi0gRklMRVMgPSBNYWtlZmlsZSAkKEgpICQoU1JDUykgXAotIAljc3RfbW1hcF9wb3NpeC5jIGNzdF9tbWFwX3dpbjMyLmMgY3N0X21tYXBfbm9uZS5jIFwKLSAJY3N0X2ZpbGVfc3RkaW8uYyBjc3RfZmlsZV93aW5jZS5jIGNzdF9maWxlX3BhbG1vcy5jCi1JbmRleDogc3JjL2F1ZGlvL2F1X2Fsc2EuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsaXRlLTEuMy1yZWxlYXNlL3NyYy9hdWRpby9hdV9hbHNhLmMJKC4uLi9mbGl0ZS0xLjMtb3JpZykJKHJldmlzaW9uIDApCi0rKysgZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL2F1ZGlvL2F1X2Fsc2EuYwkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC0wLDAgKzEsMzExIEBACi0rLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0rLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0rLyogICAgICAgICAgICAgICAgICBMYW5ndWFnZSBUZWNobm9sb2dpZXMgSW5zdGl0dXRlICAgICAgICAgICAgICAgICAgICAgICovCi0rLyogICAgICAgICAgICAgICAgICAgICBDYXJuZWdpZSBNZWxsb24gVW5pdmVyc2l0eSAgICAgICAgICAgICAgICAgICAgICAgICovCi0rLyogICAgICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0rLyogICAgICAgICAgICAgICAgICAgICAgICBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0rLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0rLyogIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byB1c2UgYW5kIGRpc3RyaWJ1dGUgICovCi0rLyogIHRoaXMgc29mdHdhcmUgYW5kIGl0cyBkb2N1bWVudGF0aW9uIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICovCi0rLyogIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICovCi0rLyogIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGlzIHdvcmssIGFuZCB0byAgICAgICovCi0rLyogIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhpcyB3b3JrIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byAgICovCi0rLyogIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0rLyogICAxLiBUaGUgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mICAgICovCi0rLyogICAgICBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuICAgICAgICAgICAgICAgICAgICAgICAgICovCi0rLyogICAyLiBBbnkgbW9kaWZpY2F0aW9ucyBtdXN0IGJlIGNsZWFybHkgbWFya2VkIGFzIHN1Y2guICAgICAgICAgICAgICAgICovCi0rLyogICAzLiBPcmlnaW5hbCBhdXRob3JzJyBuYW1lcyBhcmUgbm90IGRlbGV0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICovCi0rLyogICA0LiBUaGUgYXV0aG9ycycgbmFtZXMgYXJlIG5vdCB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyAgICovCi0rLyogICAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gICAgICAgICovCi0rLyogICAgICBwZXJtaXNzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0rLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0rLyogIENBUk5FR0lFIE1FTExPTiBVTklWRVJTSVRZIEFORCBUSEUgQ09OVFJJQlVUT1JTIFRPIFRISVMgV09SSyAgICAgICAgICovCi0rLyogIERJU0NMQUlNIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUsIElOQ0xVRElORyAgICAgICovCi0rLyogIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLCBJTiBOTyBFVkVOVCAgICovCi0rLyogIFNIQUxMIENBUk5FR0lFIE1FTExPTiBVTklWRVJTSVRZIE5PUiBUSEUgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSAgICAgICovCi0rLyogIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTICAgICovCi0rLyogIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiAgICovCi0rLyogIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sICAgICAgICAgICovCi0rLyogIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GICAgICAgICovCi0rLyogIFRISVMgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0rLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0rLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0rLyogICAgICAgICAgICAgQXV0aG9yOiAgTHVrYXMgTG9laHJlciAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0rLyogICAgICAgICAgICAgICBEYXRlOiAgSmFudWFyeSAyMDA1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0rLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0rLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0rLyogIE5hdGl2ZSBhY2Nlc3MgdG8gYWxzYSBhdWRpbyBkZXZpY2VzIG9uIExpbnV4ICAgICAgICAgICAgICAgICAgICAgICAgICovCi0rLyogIFRlc3RlZCB3aXRoIGxpYmFzb3VuZCB2ZXJzaW9uIDEuMC4xMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0rLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0rCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rI2luY2x1ZGUgPGFzc2VydC5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgotKwotKyNpbmNsdWRlICJjc3Rfc3RyaW5nLmgiCi0rI2luY2x1ZGUgImNzdF93YXZlLmgiCi0rI2luY2x1ZGUgImNzdF9hdWRpby5oIgotKwotKyNpbmNsdWRlIDxhbHNhL2Fzb3VuZGxpYi5oPgotKwotKwotKy8qc3RhdGljIGNoYXIgKnBjbV9kZXZfbmFtZSA9ICJodzowLDAiOyAqLwotK3N0YXRpYyBjaGFyICpwY21fZGV2X25hbWUgPSJkZWZhdWx0IjsKLSsKLStzdGF0aWMgaW5saW5lIHZvaWQgcHJpbnRfcGNtX3N0YXRlKHNuZF9wY21fdCAqaGFuZGxlLCBjaGFyICptc2cpCi0rewotKyAgZnByaW50ZihzdGRlcnIsICJQQ00gc3RhdGUgYXQgJXMgPSAlc1xuIiwgbXNnLAotKwkJICBzbmRfcGNtX3N0YXRlX25hbWUoc25kX3BjbV9zdGF0ZShoYW5kbGUpKSk7Ci0rfQotKwotK2NzdF9hdWRpb2RldiAqYXVkaW9fb3Blbl9hbHNhKGludCBzcHMsIGludCBjaGFubmVscywgY3N0X2F1ZGlvZm10IGZtdCkKLSt7Ci0rICBjc3RfYXVkaW9kZXYgKmFkOwotKyAgdW5zaWduZWQgCWludCByZWFsX3JhdGU7Ci0rICBpbnQgZXJyOwotKwotKyAgLyogYWxzYSBzcGVjaWZpYyBzdHVmZiAqLwotKyAgc25kX3BjbV90ICpwY21faGFuZGxlOyAgICAgICAgICAKLSsgIHNuZF9wY21fc3RyZWFtX3Qgc3RyZWFtID0gU05EX1BDTV9TVFJFQU1fUExBWUJBQ0s7Ci0rICBzbmRfcGNtX2h3X3BhcmFtc190ICpod3BhcmFtczsKLSsgIHNuZF9wY21fZm9ybWF0X3QgZm9ybWF0OwotKyAgc25kX3BjbV9hY2Nlc3NfdCBhY2Nlc3MgPSBTTkRfUENNX0FDQ0VTU19SV19JTlRFUkxFQVZFRDsKLSsKLSsgIC8qIEFsbG9jYXRlIHRoZSBzbmRfcGNtX2h3X3BhcmFtc190IHN0cnVjdHVyZSBvbiB0aGUgc3RhY2suICovCi0rICBzbmRfcGNtX2h3X3BhcmFtc19hbGxvY2EoJmh3cGFyYW1zKTsKLSsKLSsgIC8qIE9wZW4gcGNtIGRldmljZSAqLwotKyAgZXJyID0gc25kX3BjbV9vcGVuKCZwY21faGFuZGxlLCBwY21fZGV2X25hbWUsIHN0cmVhbSwgMCk7Ci0rICBpZiAoZXJyIDwgMCkgCi0rICB7Ci0rCWNzdF9lcnJtc2coImF1ZGlvX29wZW5fYWxzYTogZmFpbGVkIHRvIG9wZW4gYXVkaW8gZGV2aWNlICVzLiAlc1xuIiwKLSsJCQkgICBwY21fZGV2X25hbWUsIHNuZF9zdHJlcnJvcihlcnIpKTsKLSsJcmV0dXJuIE5VTEw7Ci0rICB9Ci0rCi0rICAvKiBJbml0IGh3cGFyYW1zIHdpdGggZnVsbCBjb25maWd1cmF0aW9uIHNwYWNlICovCi0rICBlcnIgPSBzbmRfcGNtX2h3X3BhcmFtc19hbnkocGNtX2hhbmRsZSwgaHdwYXJhbXMpOwotKyAgaWYgKGVyciA8IDApIAotKyAgewotKwlzbmRfcGNtX2Nsb3NlKHBjbV9oYW5kbGUpOwotKwljc3RfZXJybXNnKCJhdWRpb19vcGVuX2Fsc2E6IGZhaWxlZCB0byBnZXQgaGFyZHdhcmUgcGFyYW1ldGVycyBmcm9tIGF1ZGlvIGRldmljZS4gJXNcbiIsIHNuZF9zdHJlcnJvcihlcnIpKTsKLSsJcmV0dXJuIE5VTEw7Ci0rICB9Ci0rCi0rICAvKiBTZXQgYWNjZXNzIG1vZGUgKi8KLSsgIGVyciA9IHNuZF9wY21faHdfcGFyYW1zX3NldF9hY2Nlc3MocGNtX2hhbmRsZSwgaHdwYXJhbXMsIGFjY2Vzcyk7Ci0rICBpZiAoZXJyIDwgMCkgCi0rICB7Ci0rCXNuZF9wY21fY2xvc2UocGNtX2hhbmRsZSk7Ci0rCWNzdF9lcnJtc2coImF1ZGlvX29wZW5fYWxzYTogZmFpbGVkIHRvIHNldCBhY2Nlc3MgbW9kZS4gJXMuXG4iLCBzbmRfc3RyZXJyb3IoZXJyKSk7Ci0rCXJldHVybiBOVUxMOwotKyAgfQotKwotKyAgLyogRGV0ZXJtaW5lIG1hdGNoaW5nIGFsc2Egc2FtcGxlIGZvcm1hdCAqLwotKyAgLyogVGhpcyBjb3VsZCBiZSBpbXBsZW1lbnRlZCBpbiBhIG1vcmUgKi8KLSsgIC8qIGZsZXhpYmxlIHdheSAoYnl0ZSBvcmRlciBjb252ZXJzaW9uKS4gKi8KLSsgIHN3aXRjaCAoZm10KQotKyAgewotKyAgY2FzZSBDU1RfQVVESU9fTElORUFSMTY6Ci0rCWlmIChDU1RfTElUVExFX0VORElBTikKLSsJICBmb3JtYXQgPSBTTkRfUENNX0ZPUk1BVF9TMTZfTEU7Ci0rCWVsc2UKLSsJICBmb3JtYXQgPSBTTkRfUENNX0ZPUk1BVF9TMTZfQkU7Ci0rCWJyZWFrOwotKyAgY2FzZSBDU1RfQVVESU9fTElORUFSODoKLSsJZm9ybWF0ID0gU05EX1BDTV9GT1JNQVRfVTg7Ci0rCWJyZWFrOwotKyAgY2FzZSBDU1RfQVVESU9fTVVMQVc6Ci0rCWZvcm1hdCA9IFNORF9QQ01fRk9STUFUX01VX0xBVzsKLSsJYnJlYWs7Ci0rICBkZWZhdWx0OgotKwlzbmRfcGNtX2Nsb3NlKHBjbV9oYW5kbGUpOwotKwljc3RfZXJybXNnKCJhdWRpb19vcGVuX2Fsc2E6IGZhaWxlZCB0byBmaW5kIHN1aXRhYmxlIGZvcm1hdC5cbiIpOwotKwlyZXR1cm4gTlVMTDsKLSsJYnJlYWs7Ci0rICB9Ci0rCi0rICAvKiBTZXQgc2FtYmxlIGZvcm1hdCAqLwotKyAgZXJyID0gc25kX3BjbV9od19wYXJhbXNfc2V0X2Zvcm1hdChwY21faGFuZGxlLCBod3BhcmFtcywgZm9ybWF0KTsKLSsgIGlmIChlcnIgPDApIAotKyAgewotKwlzbmRfcGNtX2Nsb3NlKHBjbV9oYW5kbGUpOwotKwljc3RfZXJybXNnKCJhdWRpb19vcGVuX2Fsc2E6IGZhaWxlZCB0byBzZXQgZm9ybWF0LiAlcy5cbiIsIHNuZF9zdHJlcnJvcihlcnIpKTsKLSsJcmV0dXJuIE5VTEw7Ci0rICB9Ci0rCi0rICAvKiBTZXQgc2FtcGxlIHJhdGUgbmVhciB0aGUgZGlzaXJlZCByYXRlICovCi0rICByZWFsX3JhdGUgPSBzcHM7Ci0rICBlcnIgPSBzbmRfcGNtX2h3X3BhcmFtc19zZXRfcmF0ZV9uZWFyKHBjbV9oYW5kbGUsIGh3cGFyYW1zLCAmcmVhbF9yYXRlLCAwKTsKLSsgIGlmIChlcnIgPCAwKSAgIAotKyAgewotKwlzbmRfcGNtX2Nsb3NlKHBjbV9oYW5kbGUpOwotKwljc3RfZXJybXNnKCJhdWRpb19vcGVuX2Fsc2E6IGZhaWxlZCB0byBzZXQgc2FtcGxlIHJhdGUgbmVhciAlZC4gJXMuXG4iLCBzcHMsIHNuZF9zdHJlcnJvcihlcnIpKTsKLSsJcmV0dXJuIE5VTEw7Ci0rICB9Ci0rICAvKkZJWE1FOiAgVGhpcyBpcyBwcm9iYWJseSB0b28gc3RyaWN0ICovCi0rICBhc3NlcnQoc3BzID09IHJlYWxfcmF0ZSk7Ci0rCi0rICAvKiBTZXQgbnVtYmVyIG9mIGNoYW5uZWxzICovCi0rICBhc3NlcnQoY2hhbm5lbHMgPjApOwotKyAgZXJyID0gc25kX3BjbV9od19wYXJhbXNfc2V0X2NoYW5uZWxzKHBjbV9oYW5kbGUsIGh3cGFyYW1zLCBjaGFubmVscyk7Ci0rICBpZiAoZXJyIDwgMCkgCi0rICB7Ci0rCXNuZF9wY21fY2xvc2UocGNtX2hhbmRsZSk7Ci0rCWNzdF9lcnJtc2coImF1ZGlvX29wZW5fYWxzYTogZmFpbGVkIHRvIHNldCBudW1iZXIgb2YgY2hhbm5lbHMgdG8gJWQuICVzLlxuIiwgY2hhbm5lbHMsIHNuZF9zdHJlcnJvcihlcnIpKTsKLSsJcmV0dXJuIE5VTEw7Ci0rICB9Ci0rCi0rICAvKiBDb21taXQgaGFyZHdhcmUgcGFyYW1ldGVycyAqLwotKyAgZXJyID0gc25kX3BjbV9od19wYXJhbXMocGNtX2hhbmRsZSwgaHdwYXJhbXMpOwotKyAgaWYgKGVyciA8IDApIAotKyAgewotKwlzbmRfcGNtX2Nsb3NlKHBjbV9oYW5kbGUpOwotKwljc3RfZXJybXNnKCJhdWRpb19vcGVuX2Fsc2E6IGZhaWxlZCB0byBzZXQgaHcgcGFyYW1ldGVycy4gJXMuXG4iLCBzbmRfc3RyZXJyb3IoZXJyKSk7Ci0rCXJldHVybiBOVUxMOwotKyAgfQotKwotKyAgLyogTWFrZSBzdXJlIHRoZSBkZXZpY2UgaXMgcmVhZHkgdG8gYWNjZXB0IGRhdGEgKi8KLSsgIGFzc2VydChzbmRfcGNtX3N0YXRlKHBjbV9oYW5kbGUpID09IFNORF9QQ01fU1RBVEVfUFJFUEFSRUQpOwotKwotKyAgLyogV3JpdGUgaGFyZHdhcmUgcGFyYW1ldGVycyB0byBmbGl0ZSBhdWRpbyBkZXZpY2UgZGF0YSBzdHJ1Y3R1cmUgKi8KLSsgIGFkID0gY3N0X2FsbG9jKGNzdF9hdWRpb2RldiwgMSk7Ci0rICBhc3NlcnQoYWQgIT0gTlVMTCk7Ci0rICBhZC0+cmVhbF9zcHMgPSBhZC0+c3BzID0gc3BzOwotKyAgYWQtPnJlYWxfY2hhbm5lbHMgPSBhZC0+Y2hhbm5lbHMgPSBjaGFubmVsczsKLSsgIGFkLT5yZWFsX2ZtdCA9IGFkLT5mbXQgPSBmbXQ7Ci0rICBhZC0+cGxhdGZvcm1fZGF0YSA9ICh2b2lkICopIHBjbV9oYW5kbGU7Ci0rCi0rICByZXR1cm4gYWQ7Ci0rfQotKwotK2ludCBhdWRpb19jbG9zZV9hbHNhKGNzdF9hdWRpb2RldiAqYWQpCi0rewotKyAgaW50IHJlc3VsdDsKLSsgIHNuZF9wY21fdCAqcGNtX2hhbmRsZTsKLSsKLSsgIGlmIChhZCA9PSBOVUxMKQotKwlyZXR1cm4gMDsKLSsKLSsgIHBjbV9oYW5kbGUgPSAoc25kX3BjbV90ICopIGFkLT5wbGF0Zm9ybV9kYXRhOwotKyAgcmVzdWx0ID0gc25kX3BjbV9jbG9zZShwY21faGFuZGxlKTsKLSsgIGlmIChyZXN1bHQgPCAwKQotKyAgewotKwljc3RfZXJybXNnKCJhdWRpb19jbG9zZV9hbHNhOiBFcnJvcjogJXMuXG4iLCBzbmRfc3RyZXJyb3IocmVzdWx0KSk7Ci0rICB9Ci0rICBjc3RfZnJlZShhZCk7Ci0rICByZXR1cm4gcmVzdWx0OwotK30KLSsKLSsvKiBSZXR1cm5zIHplcm8gaWYgcmVjb3Zlcnkgd2FzIHN1Y2Nlc3NmdWwuICovCi0rc3RhdGljIGludCByZWNvdmVyX2Zyb21fZXJyb3Ioc25kX3BjbV90ICpwY21faGFuZGxlLCBzc2l6ZV90IHJlcykKLSt7Ci0rICBpZiAocmVzID09IC1FUElQRSkgLyogeHJ1biAqLwotKyAgewotKwlyZXMgPSBzbmRfcGNtX3ByZXBhcmUocGNtX2hhbmRsZSk7Ci0rCWlmIChyZXMgPCAwKSAKLSsJewotKwkgIC8qIEZhaWxlZCB0byByZWNvdmVyIGZyb20geHJ1biAqLwotKwkgIGNzdF9lcnJtc2coInJlY292ZXJfZnJvbV93cml0ZV9lcnJvcjogZmFpbGVkIHRvIHJlY292ZXIgZnJvbSB4cnVuLiAlc1xuLiIsIHNuZF9zdHJlcnJvcihyZXMpKTsKLSsJICByZXR1cm4gcmVzOwotKwl9Ci0rICB9IAotKyAgZWxzZSBpZiAocmVzID09IC1FU1RSUElQRSkgLyogU3VzcGVuZCAqLwotKyAgewotKwl3aGlsZSAoKHJlcyA9IHNuZF9wY21fcmVzdW1lKHBjbV9oYW5kbGUpKSA9PSAtRUFHQUlOKSAKLSsJewotKwkgIHNuZF9wY21fd2FpdChwY21faGFuZGxlLCAxMDAwKTsKLSsJfQotKwlpZiAocmVzIDwgMCkgCi0rCXsKLSsJICByZXMgPSBzbmRfcGNtX3ByZXBhcmUocGNtX2hhbmRsZSk7Ci0rCSAgaWYgKHJlcyA8MCkgCi0rCSAgewotKwkJLyogUmVzdW1lIGZhaWxlZCAqLwotKwkJY3N0X2Vycm1zZygiYXVkaW9fcmVjb3Zlcl9mcm9tX3dyaXRlX2Vycm9yOiBmYWlsZWQgdG8gcmVzdW1lIGFmdGVyIHN1c3BlbmQuICVzXG4uIiwgc25kX3N0cmVycm9yKHJlcykpOwotKwkJcmV0dXJuIHJlczsKLSsJICB9Ci0rCX0KLSsgIH0gCi0rICBlbHNlIGlmIChyZXMgPCAwKSAKLSsgIHsKLSsJLyogVW5rbm93biBmYWlsdXJlICovCi0rCWNzdF9lcnJtc2coImF1ZGlvX3JlY292ZXJfZnJvbV93cml0ZV9lcnJvcjogJXMuXG4iLCBzbmRfc3RyZXJyb3IocmVzKSk7Ci0rCXJldHVybiByZXM7Ci0rICB9Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0raW50IGF1ZGlvX3dyaXRlX2Fsc2EoY3N0X2F1ZGlvZGV2ICphZCwgdm9pZCAqc2FtcGxlcywgaW50IG51bV9ieXRlcykKLSt7Ci0rICBzaXplX3QgZnJhbWVfc2l6ZTsKLSsgIHNzaXplX3QgbnVtX2ZyYW1lcywgcmVzOwotKyAgc25kX3BjbV90ICpwY21faGFuZGxlOwotKyAgY2hhciAqYnVmID0gKGNoYXIgKikgc2FtcGxlczsKLSsKLSsgIC8qIERldGVybWluZSBmcmFtZSBzaXplIGluIGJ5dGVzICovCi0rICBmcmFtZV9zaXplICA9IGF1ZGlvX2JwcyhhZC0+cmVhbF9mbXQpICogYWQtPnJlYWxfY2hhbm5lbHM7Ci0rICAvKiBSZXF1aXJlIHRoYXQgb25seSBjb21wbGV0ZSBmcmFtZXMgYXJlIGhhbmRlZCBpbiAqLwotKyAgYXNzZXJ0KChudW1fYnl0ZXMgJSBmcmFtZV9zaXplKSA9PSAwKTsKLSsgIG51bV9mcmFtZXMgPSBudW1fYnl0ZXMgLyBmcmFtZV9zaXplOwotKyAgcGNtX2hhbmRsZSA9IChzbmRfcGNtX3QgKikgYWQtPnBsYXRmb3JtX2RhdGE7Ci0rCi0rICB3aGlsZSAobnVtX2ZyYW1lcyA+IDApIAotKyAgewotKwlyZXMgPSBzbmRfcGNtX3dyaXRlaShwY21faGFuZGxlLCBidWYsIG51bV9mcmFtZXMpOwotKwlpZiAocmVzICE9IG51bV9mcmFtZXMpIAotKwl7Ci0rCSAgaWYgKHJlcyA9PSAtRUFHQUlOIHx8IChyZXMgPiAwICYmIHJlcyA8IG51bV9mcmFtZXMpKSAKLSsJICB7Ci0rCQlzbmRfcGNtX3dhaXQocGNtX2hhbmRsZSwgMTAwKTsKLSsJICB9Ci0rCSAgZWxzZSBpZiAocmVjb3Zlcl9mcm9tX2Vycm9yKHBjbV9oYW5kbGUsIHJlcykgPCAwKSAKLSsJICB7Ci0rCQlyZXR1cm4gLTE7Ci0rCSAgfQotKwl9Ci0rCi0rCWlmIChyZXMgPjApIAotKwl7Ci0rCSAgbnVtX2ZyYW1lcyAtPSByZXM7Ci0rCSAgYnVmICs9IHJlcyAqIGZyYW1lX3NpemU7Ci0rCX0KLSsgIH0KLSsgIHJldHVybiBudW1fYnl0ZXM7Ci0rfQotKwotK2ludCBhdWRpb19mbHVzaF9hbHNhKGNzdF9hdWRpb2RldiAqYWQpCi0rewotKyAgaW50IHJlc3VsdDsKLSsgIHJlc3VsdCA9IHNuZF9wY21fZHJhaW4oKHNuZF9wY21fdCAqKSBhZC0+cGxhdGZvcm1fZGF0YSk7Ci0rICBpZiAocmVzdWx0IDwgMCkKLSsgIHsKLSsJY3N0X2Vycm1zZygiYXVkaW9fZmx1c2hfYWxzYTogRXJyb3I6ICVzLlxuIiwgc25kX3N0cmVycm9yKHJlc3VsdCkpOwotKyAgfQotKwkvKiBQcmVwYXJlIGRldmljZSBmb3IgbW9yZSBkYXRhICovCi0rICByZXN1bHQgPSBzbmRfcGNtX3ByZXBhcmUoKHNuZF9wY21fdCAqKSBhZC0+cGxhdGZvcm1fZGF0YSk7Ci0raWYgKHJlc3VsdCA8IDApCi0rICB7Ci0rCWNzdF9lcnJtc2coImF1ZGlvX2ZsdXNoX2Fsc2E6IEVycm9yOiAlcy5cbiIsIHNuZF9zdHJlcnJvcihyZXN1bHQpKTsKLSsgIH0KLSsgIHJldHVybiByZXN1bHQ7Ci0rfQotKwotK2ludCBhdWRpb19kcmFpbl9hbHNhKGNzdF9hdWRpb2RldiAqYWQpCi0rewotKyAgaW50IHJlc3VsdDsKLSsgIHJlc3VsdCA9IHNuZF9wY21fZHJvcCgoc25kX3BjbV90ICopIGFkLT5wbGF0Zm9ybV9kYXRhKTsKLSsgIGlmIChyZXN1bHQgPCAwKQotKyAgewotKwljc3RfZXJybXNnKCJhdWRpb19kcmFpbl9hbHNhOiBFcnJvcjogJXMuXG4iLCBzbmRfc3RyZXJyb3IocmVzdWx0KSk7Ci0rICB9Ci0rLyogUHJlcGFyZSBkZXZpY2UgZm9yIG1vcmUgZGF0YSAqLwotKyAgcmVzdWx0ID0gc25kX3BjbV9wcmVwYXJlKChzbmRfcGNtX3QgKikgYWQtPnBsYXRmb3JtX2RhdGEpOwotK2lmIChyZXN1bHQgPCAwKQotKyAgewotKwljc3RfZXJybXNnKCJhdWRpb19kcmFpbl9hbHNhOiBFcnJvcjogJXMuXG4iLCBzbmRfc3RyZXJyb3IocmVzdWx0KSk7Ci0rICB9Ci0rICByZXR1cm4gcmVzdWx0OwotK30KLUluZGV4OiBzcmMvYXVkaW8vTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9zcmMvYXVkaW8vTWFrZWZpbGUJKC4uLi9mbGl0ZS0xLjMtb3JpZykJKHJldmlzaW9uIDcpCi0rKysgZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL2F1ZGlvL01ha2VmaWxlCSguLi4vcmVsZWFzZS0xLjIpCShyZXZpc2lvbiA3KQotQEAgLTQzLDkgKzQzLDEzIEBACi0gCi0gQkFTRVNSQ1MgPSBhdWNsaWVudC5jIGF1c2VydmVyLmMgYXVkaW8uYyAKLSBTUkNTID0gJChCQVNFU1JDUykgJChBVURJT0RSSVZFUjolPWF1XyUuYykKLS1PQkpTID0gJChTUkNTOi5jPS5vKQotK2lmZGVmIFNIRkxBR1MKLStPQkpTIDo9ICQoU1JDUzouYz0ub3MpCi0rZWxzZQotK09CSlMgOj0gJChTUkNTOi5jPS5vKQotK2VuZGlmCi0gRklMRVMgPSBNYWtlZmlsZSAkKEgpICQoQkFTRVNSQ1MpIGF1X2NvbW1hbmQuYyBhdV9ub25lLmMgXAotLQlhdV9vc3MuYyBhdV9zdW4uYyBhdV93aW5jZS5jIGF1X3BhbG1vcy5jCi0rCWF1X29zcy5jIGF1X3N1bi5jIGF1X3dpbmNlLmMgYXVfcGFsbW9zLmMgYXVfYWxzYS5jCi0gTElCTkFNRSA9IGZsaXRlCi0gCi0gTE9DQUxfSU5DTFVERVMgPSAtSS4gJChBVURJT0RFRlMpCi1JbmRleDogc3JjL2xleGljb24vTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9zcmMvbGV4aWNvbi9NYWtlZmlsZQkoLi4uL2ZsaXRlLTEuMy1vcmlnKQkocmV2aXNpb24gNykKLSsrKyBmbGl0ZS0xLjMtcmVsZWFzZS9zcmMvbGV4aWNvbi9NYWtlZmlsZQkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC0zOCw4ICszOCwxMyBAQAotIERJUk5BTUU9c3JjL2xleGljb24KLSBCVUlMRF9ESVJTID0gCi0gQUxMX0RJUlM9IAotK2luY2x1ZGUgJChUT1ApL2NvbmZpZy9jb25maWcKLSBTUkNTID0gY3N0X2xleGljb24uYyBjc3RfbHRzLmMgY3N0X2x0c19yZXdyaXRlcy5jCi0tT0JKUyA9ICQoU1JDUzouYz0ubykKLStpZmRlZiBTSEZMQUdTCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm9zKQotK2Vsc2UKLStPQkpTIDo9ICQoU1JDUzouYz0ubykKLStlbmRpZgotIEZJTEVTID0gTWFrZWZpbGUgJChTUkNTKQotIExJQk5BTUUgPSBmbGl0ZQotIAotSW5kZXg6IHNyYy9zeW50aC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsaXRlLTEuMy1yZWxlYXNlL3NyYy9zeW50aC9NYWtlZmlsZQkoLi4uL2ZsaXRlLTEuMy1vcmlnKQkocmV2aXNpb24gNykKLSsrKyBmbGl0ZS0xLjMtcmVsZWFzZS9zcmMvc3ludGgvTWFrZWZpbGUJKC4uLi9yZWxlYXNlLTEuMikJKHJldmlzaW9uIDcpCi1AQCAtMzgsOSArMzgsMTQgQEAKLSBESVJOQU1FPXNyYy9zeW50aAotIEJVSUxEX0RJUlMgPSAKLSBBTExfRElSUz0gCi0raW5jbHVkZSAkKFRPUCkvY29uZmlnL2NvbmZpZwotIFNSQ1MgPSBjc3Rfc3ludGguYyBjc3RfdXR0X3V0aWxzLmMgY3N0X3ZvaWNlLmMgY3N0X3Bob25lc2V0LmMgXAotICAgICAgICBmbGl0ZS5jIAotLU9CSlMgPSAkKFNSQ1M6LmM9Lm8pCi0raWZkZWYgU0hGTEFHUwotK09CSlMgOj0gJChTUkNTOi5jPS5vcykKLStlbHNlCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm8pCi0rZW5kaWYKLSBGSUxFUyA9IE1ha2VmaWxlICQoU1JDUykKLSBMSUJOQU1FID0gZmxpdGUKLSAKLUluZGV4OiBzcmMvc3BlZWNoL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL3NwZWVjaC9NYWtlZmlsZQkoLi4uL2ZsaXRlLTEuMy1vcmlnKQkocmV2aXNpb24gNykKLSsrKyBmbGl0ZS0xLjMtcmVsZWFzZS9zcmMvc3BlZWNoL01ha2VmaWxlCSguLi4vcmVsZWFzZS0xLjIpCShyZXZpc2lvbiA3KQotQEAgLTM5LDkgKzM5LDE0IEBACi0gQlVJTERfRElSUyA9IAotIEFMTF9ESVJTPSAKLSBIID0gCi0raW5jbHVkZSAkKFRPUCkvY29uZmlnL2NvbmZpZwotIFNSQ1MgPSBjc3Rfd2F2ZS5jIGNzdF93YXZlX2lvLmMgY3N0X3RyYWNrLmMgY3N0X3RyYWNrX2lvLmMgXAotICAgICAgICBjc3Rfd2F2ZV91dGlscy5jIGNzdF9scGNyZXMuYyByYXRlY29udi5jCi0tT0JKUyA9ICQoU1JDUzouYz0ubykKLStpZmRlZiBTSEZMQUdTCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm9zKQotK2Vsc2UKLStPQkpTIDo9ICQoU1JDUzouYz0ubykKLStlbmRpZgotIEZJTEVTID0gTWFrZWZpbGUgJChIKSAkKFNSQ1MpCi0gTElCTkFNRSA9IGZsaXRlCi0gCi1JbmRleDogc3JjL3dhdmVzeW50aC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsaXRlLTEuMy1yZWxlYXNlL3NyYy93YXZlc3ludGgvTWFrZWZpbGUJKC4uLi9mbGl0ZS0xLjMtb3JpZykJKHJldmlzaW9uIDcpCi0rKysgZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL3dhdmVzeW50aC9NYWtlZmlsZQkoLi4uL3JlbGVhc2UtMS4yKQkocmV2aXNpb24gNykKLUBAIC0zOCw5ICszOCwxNCBAQAotIERJUk5BTUU9c3JjL3dhdmVzeW50aAotIEJVSUxEX0RJUlMgPSAKLSBBTExfRElSUz0KLStpbmNsdWRlICQoVE9QKS9jb25maWcvY29uZmlnCi0gU1JDUyA9IGNzdF91bml0cy5jIGNzdF9zaWdwci5jIGNzdF9jbHVuaXRzLmMgY3N0X2RpcGhvbmUuYyBcCi0gICAgICAgIGNzdF9zaWdwckZQLmMgY3N0X3N0cy5jIGNzdF9yZWZscGMuYwotLU9CSlMgPSAkKFNSQ1M6LmM9Lm8pCi0raWZkZWYgU0hGTEFHUwotK09CSlMgOj0gJChTUkNTOi5jPS5vcykKLStlbHNlCi0rT0JKUyA6PSAkKFNSQ1M6LmM9Lm8pCi0rZW5kaWYKLSBMSUJOQU1FID0gZmxpdGUKLSBGSUxFUyA9IE1ha2VmaWxlICQoU1JDUykKLSAKLUluZGV4OiBzcmMvcmVnZXgvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9zcmMvcmVnZXgvTWFrZWZpbGUJKC4uLi9mbGl0ZS0xLjMtb3JpZykJKHJldmlzaW9uIDcpCi0rKysgZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL3JlZ2V4L01ha2VmaWxlCSguLi4vcmVsZWFzZS0xLjIpCShyZXZpc2lvbiA3KQotQEAgLTQyLDggKzQyLDEzIEBACi0gRElSTkFNRT1zcmMvcmVnZXgKLSBCVUlMRF9ESVJTID0gCi0gQUxMX0RJUlM9IAotK2luY2x1ZGUgJChUT1ApL2NvbmZpZy9jb25maWcKLSBTUkNTID0gY3N0X3JlZ2V4LmMgcmVnZXhwLmMgcmVnc3ViLmMKLS1PQkpTID0gJChTUkNTOi5jPS5vKQotK2lmZGVmIFNIRkxBR1MKLStPQkpTIDo9ICQoU1JDUzouYz0ub3MpCi0rZWxzZQotK09CSlMgOj0gJChTUkNTOi5jPS5vKQotK2VuZGlmCi0gRklMRVMgPSBNYWtlZmlsZSAkKEgpICQoU1JDUykKLSBMSUJOQU1FID0gZmxpdGUKLSAKLUluZGV4OiBzcmMvc3RhdHMvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9zcmMvc3RhdHMvTWFrZWZpbGUJKC4uLi9mbGl0ZS0xLjMtb3JpZykJKHJldmlzaW9uIDcpCi0rKysgZmxpdGUtMS4zLXJlbGVhc2Uvc3JjL3N0YXRzL01ha2VmaWxlCSguLi4vcmVsZWFzZS0xLjIpCShyZXZpc2lvbiA3KQotQEAgLTM5LDggKzM5LDEzIEBACi0gQlVJTERfRElSUyA9IAotIEFMTF9ESVJTPSAKLSBIID0gCi0raW5jbHVkZSAkKFRPUCkvY29uZmlnL2NvbmZpZwotIFNSQ1MgPSBjc3RfY2FydC5jIGNzdF92aXRlcmJpLmMgY3N0X3NzLmMKLS1PQkpTID0gJChTUkNTOi5jPS5vKQotK2lmZGVmIFNIRkxBR1MKLStPQkpTIDo9ICQoU1JDUzouYz0ub3MpCi0rZWxzZQotK09CSlMgOj0gJChTUkNTOi5jPS5vKQotK2VuZGlmCi0gRklMRVMgPSBNYWtlZmlsZSAkKEgpICQoU1JDUykKLSBMSUJOQU1FID0gZmxpdGUKLSAKLUluZGV4OiBjb25maWcvY29tbW9uX21ha2VfcnVsZXMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGl0ZS0xLjMtcmVsZWFzZS9jb25maWcvY29tbW9uX21ha2VfcnVsZXMJKC4uLi9mbGl0ZS0xLjMtb3JpZykJKHJldmlzaW9uIDcpCi0rKysgZmxpdGUtMS4zLXJlbGVhc2UvY29uZmlnL2NvbW1vbl9tYWtlX3J1bGVzCSguLi4vcmVsZWFzZS0xLjIpCShyZXZpc2lvbiA3KQotQEAgLTczLDEyICs3MywxMyBAQAotIGlmZGVmIFNIRkxBR1MKLSBTT09CSlMgPSAkKE9CSlM6Lm89Lm9zKQotIEZVTExTSE9CSlMgPSAkKFNPT0JKUzolPSQoT0JKRElSKS8lKQotLWlmZGVmIExJQk5BTUUKLS1BTEwgKz0gJChPQkpESVIpLy5idWlsZF9zbwotKyNpZmRlZiBMSUJOQU1FCi0rI0FMTCArPSAkKE9CSkRJUikvLmJ1aWxkX3NvCi0rI2VuZGlmCi0gZW5kaWYKLS1lbmRpZgotIGlmZGVmIExJQk5BTUUKLSBBTEwgKz0gJChPQkpESVIpLy5idWlsZF9saWIKLStBTEwgKz0gJChPQkpESVIpLy5idWlsZF9zbwotIGVuZGlmCi0gIyBPbmx5IGRvIHNvbWUgZGlyZWN0b3JpZXMgd2hlbiB5b3UgYXJlIG5vdCBjcm9zcyBjb21waWxpbmcKLSBpZmVxICgkKEhPU1RfUExBVEZPUk0pLCQoVEFSR0VUX1BMQVRGT1JNKSkKLUBAIC0xMTcsMTQgKzExOCwxNyBAQAotIAlAIHRvdWNoICQoT0JKRElSKS8uYnVpbGRfc28KLSAKLSAjIFVzZWQgaW4gdGhlIGxpYi8gZGlyZWN0b3J5IGFuZCBpbiBidWlsZGluZyBuZXcgdm9pY2VzCi0tJChPQkpESVIpLyUuc286ICUuc2hhcmVkLmEKLSsjJChPQkpESVIpLyUuc286ICUuc2hhcmVkLmEKLSslLnNvOiAlLnNoYXJlZC5hCi0gCUAgZWNobyBtYWtpbmcgJEAKLSAJQCBybSAtcmYgc2hhcmVkX29zICYmIG1rZGlyIHNoYXJlZF9vcwotIAlAIHJtIC1mICRAICQoTElCRElSKS8kQC4ke1BST0pFQ1RfVkVSU0lPTn0gJChMSUJESVIpLyRALiR7UFJPSkVDVF9TSExJQl9WRVJTSU9OfSAKLSAJQCAoY2Qgc2hhcmVkX29zICYmIGFyIHggLi4vJDwpCi0gCUAgKGNkIHNoYXJlZF9vcyAmJiAkKENDKSAtc2hhcmVkIC1XbCwtc29uYW1lLCRALiR7UFJPSkVDVF9TSExJQl9WRVJTSU9OfSAtbyAuLi8kQC4ke1BST0pFQ1RfVkVSU0lPTn0gKi5vcykKLS0JQCBsbiAtcyAkKExJQkRJUikvJEAuJHtQUk9KRUNUX1ZFUlNJT059ICQoTElCRElSKS8kQC4ke1BST0pFQ1RfU0hMSUJfVkVSU0lPTn0KLS0JQCBsbiAtcyAkKExJQkRJUikvJEAuJHtQUk9KRUNUX1NITElCX1ZFUlNJT059ICQoTElCRElSKS8kQAotKwkjQCBsbiAtcyAkKExJQkRJUikvJEAuJHtQUk9KRUNUX1ZFUlNJT059ICQoTElCRElSKS8kQC4ke1BST0pFQ1RfU0hMSUJfVkVSU0lPTn0KLSsJI0AgbG4gLXMgJChMSUJESVIpLyRALiR7UFJPSkVDVF9TSExJQl9WRVJTSU9OfSAkKExJQkRJUikvJEAKLSsJQCBsbiAtcyAkQC4ke1BST0pFQ1RfVkVSU0lPTn0gJEAuJHtQUk9KRUNUX1NITElCX1ZFUlNJT059Ci0rCUAgbG4gLXMgJEAuJHtQUk9KRUNUX1NITElCX1ZFUlNJT059ICRACi0gCUAgcm0gLXJmIHNoYXJlZF9vcwotIAotICQoT0JKRElSKS8ubWFrZV9idWlsZF9kaXJzOgotSW5kZXg6IGxpYi9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsaXRlLTEuMy1yZWxlYXNlL2xpYi9NYWtlZmlsZQkoLi4uL2ZsaXRlLTEuMy1vcmlnKQkocmV2aXNpb24gMCkKLSsrKyBmbGl0ZS0xLjMtcmVsZWFzZS9saWIvTWFrZWZpbGUJKC4uLi9yZWxlYXNlLTEuMikJKHJldmlzaW9uIDcpCi1AQCAtMCwwICsxLDcwIEBACi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCi0rIyMgICAgICAgICAgICAgICAgICBMYW5ndWFnZSBUZWNobm9sb2dpZXMgSW5zdGl0dXRlICAgICAgICAgICAgICAgICAgICAgICMjCi0rIyMgICAgICAgICAgICAgICAgICAgICBDYXJuZWdpZSBNZWxsb24gVW5pdmVyc2l0eSAgICAgICAgICAgICAgICAgICAgICAgICMjCi0rIyMgICAgICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCi0rIyMgICAgICAgICAgICAgICAgICAgICAgICBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCi0rIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCi0rIyMgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byB1c2UgYW5kIGRpc3RyaWJ1dGUgICMjCi0rIyMgIHRoaXMgc29mdHdhcmUgYW5kIGl0cyBkb2N1bWVudGF0aW9uIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyAgICMjCi0rIyMgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgICMjCi0rIyMgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGlzIHdvcmssIGFuZCB0byAgICAgICMjCi0rIyMgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhpcyB3b3JrIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byAgICMjCi0rIyMgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCi0rIyMgICAxLiBUaGUgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mICAgICMjCi0rIyMgICAgICBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuICAgICAgICAgICAgICAgICAgICAgICAgICMjCi0rIyMgICAyLiBBbnkgbW9kaWZpY2F0aW9ucyBtdXN0IGJlIGNsZWFybHkgbWFya2VkIGFzIHN1Y2guICAgICAgICAgICAgICAgICMjCi0rIyMgICAzLiBPcmlnaW5hbCBhdXRob3JzJyBuYW1lcyBhcmUgbm90IGRlbGV0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICMjCi0rIyMgICA0LiBUaGUgYXV0aG9ycycgbmFtZXMgYXJlIG5vdCB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyAgICMjCi0rIyMgICAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gICAgICAgICMjCi0rIyMgICAgICBwZXJtaXNzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCi0rIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCi0rIyMgIENBUk5FR0lFIE1FTExPTiBVTklWRVJTSVRZIEFORCBUSEUgQ09OVFJJQlVUT1JTIFRPIFRISVMgV09SSyAgICAgICAgICMjCi0rIyMgIERJU0NMQUlNIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUsIElOQ0xVRElORyAgICAgICMjCi0rIyMgIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLCBJTiBOTyBFVkVOVCAgICMjCi0rIyMgIFNIQUxMIENBUk5FR0lFIE1FTExPTiBVTklWRVJTSVRZIE5PUiBUSEUgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSAgICAgICMjCi0rIyMgIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTICAgICMjCi0rIyMgIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiAgICMjCi0rIyMgIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sICAgICAgICAgICMjCi0rIyMgIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GICAgICAgICMjCi0rIyMgIFRISVMgU09GVFdBUkUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCi0rIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCi0rIyMgICAgRkxJVEUgbGlicmFyaWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCi0rIyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rVE9QPS4uCi0rRElSTkFNRT1saWIKLStCVUlMRF9ESVJTID0gCi0rQUxMX0RJUlM9Ci0rRklMRVMgPSBNYWtlZmlsZQotK0xJQk5BTUVTID0gZmxpdGUgZmxpdGVfY211bGV4IGZsaXRlX3VzZW5nbGlzaCBcCi0rICAgICAgICAgICBmbGl0ZV9jbXVfdXNfa2FsIGZsaXRlX2NtdV91c19rYWwxNiBmbGl0ZV9jbXVfdGltZV9hd2IKLSsKLStTVEFUSUNMSUJTPSAkKExJQk5BTUVTOiU9bGliJS5hKQotK1NIQVJFREFSTElCUz0gJChMSUJOQU1FUzolPWxpYiUuc2hhcmVkLmEpCi0rI1NIQVJFRExJQlMgPSAkKExJQk5BTUVTOiU9bGliJS5zbykKLStTSEFSRURMSUJTID0gJChTSEFSRURBUkxJQlM6JS5zaGFyZWQuYT0lLnNvKQotK1ZFUlNJT05TSEFSRURMSUJTID0gJChTSEFSRURMSUJTOiU9JS4ke1BST0pFQ1RfVkVSU0lPTn0pIFwKLSsgICAgICAgICAgICAgICAgICAgICQoU0hBUkVETElCUzolPSUuJHtQUk9KRUNUX1NITElCX1ZFUlNJT059KQotK0FMTF9MSUJTID0gJChTVEFUSUNMSUJTKSAkKFNIQVJFRExJQlMpICQoVkVSU0lPTlNIQVJFRExJQlMpCi0rCi0rQUxMID0gc2hhcmVkX2xpYnMKLSsKLStMT0NBTF9DTEVBTj0qLmEgKi5zbyAqLnNvLiR7UFJPSkVDVF9WRVJTSU9OfSAqLnNvLiR7UFJPSkVDVF9TSExJQl9WRVJTSU9OfQotKwotK2luY2x1ZGUgJChUT1ApL2NvbmZpZy9jb21tb25fbWFrZV9ydWxlcwotKwotK2lmZGVmIFNIRkxBR1MKLStzaGFyZWRfbGliczogJChTSEFSRURMSUJTKQotK2Vsc2UKLStzaGFyZWRfbGliczogbm90aGluZwotK2VuZGlmCi0rCi0raW5zdGFsbDoKLSsJQCBjcCAtdmYgJChMSUJESVIpLyogLgotKwlAICQoTUFLRSkgc2hhcmVkX2xpYnMKLSsJQCBlY2hvIEFSTElCUzogJChTSEFSRURBUkxJQlMpCi0rCUAgZWNobyBTSEFSTElCUzogJChTSEFSRURMSUJTKQotKwlAIHRhciBjdmYgLSAkKEFMTF9MSUJTKSB8ICggY2QgJChJTlNUQUxMTElCRElSKSAmJiB0YXIgeGYgLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmx0ay9mbHRrLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbHRrL2ZsdGsuYmIKaW5kZXggNjE5ZDE0Mi4uZWM5ZTA0YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbHRrL2ZsdGsuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbHRrL2ZsdGsuYmIKQEAgLTIsNyArMiwxMCBAQAogCiBERVBFTkRTID0gImFsc2EtbGliIHpsaWIganBlZyBsaWJwbmcgbGlieGV4dCBsaWJ4ZnQiCiAKLWluaGVyaXQgYmluY29uZmlnIGxpYl9wYWNrYWdlIGd0ay1pY29uLWNhY2hlIG1pbWUKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGJpbmNvbmZpZyBsaWJfcGFja2FnZSBndGstaWNvbi1jYWNoZSBtaW1lCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMy1DTWFrZS1idWlsZC1Gb3JjZS1zaGFyZWQtbGlicy13aXRoLXVuc3VmZml4ZWQtbmFtZXMucGF0Y2giCiAKIEVYVFJBX09FQ01BS0UgPSAiIFwKICAgICAtRE9QVElPTl9CVUlMRF9TSEFSRURfTElCUz1PTiBcCkBAIC0xNSw2ICsxOCw3IEBACiBQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgZCl9IgogCiBQQUNLQUdFQ09ORklHW2V4YW1wbGVzXSA9ICItRE9QVElPTl9CVUlMRF9FWEFNUExFUz1PTiwtRE9QVElPTl9CVUlMRF9FWEFNUExFUz1PRkYsIgorUEFDS0FHRUNPTkZJR1tjYWlyb10gPSAiLURPUFRJT05fQ0FJUk89T04sLURPUFRJT05fQ0FJUk89T0ZGLGNhaXJvIgogUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi1ET1BUSU9OX1VTRV9HTD1PTiwtRE9QVElPTl9VU0VfR0w9T0ZGLHZpcnR1YWwvbGliZ2wiCiBQQUNLQUdFQ09ORklHW3hpbmVyYW1hXSA9ICItRE9QVElPTl9VU0VfWElORVJBTUE9T04sLURPUFRJT05fVVNFX1hJTkVSQU1BPU9GRixsaWJ4aW5lcmFtYSIKIFBBQ0tBR0VDT05GSUdbeGZpeGVzXSA9ICItRE9QVElPTl9VU0VfWEZJWEVTPU9OLC1ET1BUSU9OX1VTRV9YRklYRVM9T0ZGLGxpYnhmaXhlcyIKQEAgLTMxLDQgKzM1LDEyIEBACiAKIExFQURfU09OQU1FID0gImxpYmZsdGsuc28iCiAKLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L21pbWUiCisjIC5kZXNrdG9wIC8gaWNvbnMgLyBtaW1lIG9ubHkgbmVjZXNzYXJ5IGZvciBmbHVpZCBhcHAKK0ZJTEVTXyR7UE59LWJpbiArPSAiIFwKKyAgICAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucyBcCisgICAgJHtkYXRhZGlyfS9pY29ucyBcCisgICAgJHtkYXRhZGlyfS9taW1lIFwKKyIKKworIyBjbWFrZSBmaWxlcworRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2ZsdGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsdGsvZmx0ay8wMDAzLUNNYWtlLWJ1aWxkLUZvcmNlLXNoYXJlZC1saWJzLXdpdGgtdW5zdWZmaXhlZC1uYW1lcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmx0ay9mbHRrLzAwMDMtQ01ha2UtYnVpbGQtRm9yY2Utc2hhcmVkLWxpYnMtd2l0aC11bnN1ZmZpeGVkLW5hbWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMmY4YWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsdGsvZmx0ay8wMDAzLUNNYWtlLWJ1aWxkLUZvcmNlLXNoYXJlZC1saWJzLXdpdGgtdW5zdWZmaXhlZC1uYW1lcy5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIGJjMzhmYjQxMDQ0NTAzYzlkZWJmNTcxMDkxMGM1MWRkMjk2NzRiNmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNSBEZWMgMjAxNyAyMjoxNDowMSArMDEwMAorU3ViamVjdDogW1BBVENIXSBDTWFrZSBidWlsZDogRm9yY2Ugc2hhcmVkIGxpYnMgd2l0aCB1bnN1ZmZpeGVkIG5hbWVzCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK0ZvciB3aW5kb3dzIGJ1aWxkIHNha2UgQ01ha2UgY29tcGxhaW5zIHdoZW4gYSBwcm9qZWN0IHdhbnRzIHRvIGJ1aWxkIHNoYXJlZCBhbmQKK3N0YXRpYyBsaWJyYXJpZXMgd2l0aCBzYW1lIG5hbWUuIFRoaXMgY2F1c2VkIHRoZSBhdXRob3JzIG9mIGZsdGsgdG8gZ2VuZXJhdGUKK2xpYnJhcmllcyB3aXRoIG5hbWVzIHN1ZmZpeGVkIGJ5ICdfU0hBUkVEJyB3aGVuIGJ1aWxkaW5nIGZsdGsgd2l0aCBjbWFrZSAtCithdXRvdG9vbHMgYnVpbGRzIGRvIG5vdCBzdWZmaXguCisKK1JlYXNvbnMgdG8gYnVpbGQgc2hhcmVkIGxpYnMgd2l0aCBjb3JyZWN0IG5hbWVzOgorCisqIFNoYXJlZCBsaWJyYXJpZXMgYXJlIHRoZSBwcmVmZXJyZWQgY2hvaWNlIGZvciBlbWJlZGRlZCBkZXZpY2VzCisqIFRoZXJlIGFyZSBwcm9qZWN0cyAoZS5nIHlvc2hpbWkpIGV4cGVjdGluZyBzaGFyZWQgbGlicmFyaWVzIHdpdGggdW5zdWZmaXhlZAorICBuYW1lcyAtIGFzIGNyZWF0ZWQgYnkgYXV0b3Rvb2xzIGJ1aWxkLiBUaGVzZSBwcm9qZWN0cyBsaW5rIGFnYWluc3Qgc3RhdGljCisgIGxpYnJhcmllcyBieSBhY2NpZGVudCBjYXVzaW5nIHVudXNhYmxlIGJpbmFyaWVzLgorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorLS0tCisgQ01ha2UvbWFjcm9zLmNtYWtlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvQ01ha2UvbWFjcm9zLmNtYWtlIGIvQ01ha2UvbWFjcm9zLmNtYWtlCitpbmRleCA0ZGVmNjJkLi5hYjY3NWYwIDEwMDY0NAorLS0tIGEvQ01ha2UvbWFjcm9zLmNtYWtlCisrKysgYi9DTWFrZS9tYWNyb3MuY21ha2UKK0BAIC00OSw3ICs0OSw3IEBAIG1hY3JvKEZMX0FERF9MSUJSQVJZIExJQk5BTUUgTElCVFlQRSBMSUJGSUxFUykKKyAJICAgIFBST1BFUlRJRVMKKyAJICAgIFZFUlNJT04gJHtGTFRLX1ZFUlNJT05fRlVMTH0KKyAJICAgIFNPVkVSU0lPTiAke0ZMVEtfVkVSU0lPTl9NQUpPUn0uJHtGTFRLX1ZFUlNJT05fTUlOT1J9CistCSAgICBQUkVGSVggImxpYiIgICAgIyBmb3IgTVNWQyBzdGF0aWMvc2hhcmVkIGNvZXhpc3RlbmNlCisrCSAgICBPVVRQVVRfTkFNRSAke0xJQk5BTUV9IENMRUFOX0RJUkVDVF9PVVRQVVQgMQorIAkgICAgKQorICAgICBlbmRpZiAoJHtMSUJUWVBFfSBTVFJFUVVBTCAiU0hBUkVEIikKKyAKKy0tIAorMi45LjUKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mcmVlcmRwL2ZyZWVyZHAvMDAwMS1GaW5kR1N0cmVhbWVyXzFfMC1maXgtYnVpbGQtZmFpbHVyZS1mb3ItbmV3LWdzdHJlYW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mcmVlcmRwL2ZyZWVyZHAvMDAwMS1GaW5kR1N0cmVhbWVyXzFfMC1maXgtYnVpbGQtZmFpbHVyZS1mb3ItbmV3LWdzdHJlYW1lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWY2NDg1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwLzAwMDEtRmluZEdTdHJlYW1lcl8xXzAtZml4LWJ1aWxkLWZhaWx1cmUtZm9yLW5ldy1nc3RyZWFtZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLUZyb20gYmVhMjdmZDkxOWI2NGVlOGQ5Nzk5NjQwOWUyNzllMWU4M2QxMzU5NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEplYW4tTG91aXMgRHVwb25kIDxqZWFuLWxvdWlzQGR1cG9uZC5iZT4KLURhdGU6IFN1biwgNCBPY3QgMjAxNSAxODoxNzozMyArMDIwMAotU3ViamVjdDogW1BBVENIXSBGaW5kR1N0cmVhbWVyXzFfMDogZml4IGJ1aWxkIGZhaWx1cmUgZm9yIG5ldyBnc3RyZWFtZXIKLSB2ZXJzaW9ucwotCi0tLS0KLSBjbWFrZS9GaW5kR1N0cmVhbWVyXzFfMC5jbWFrZSB8IDMwICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NtYWtlL0ZpbmRHU3RyZWFtZXJfMV8wLmNtYWtlIGIvY21ha2UvRmluZEdTdHJlYW1lcl8xXzAuY21ha2UKLWluZGV4IGY3YmY5OTAuLjNhYThmYzYgMTAwNjQ0Ci0tLS0gYS9jbWFrZS9GaW5kR1N0cmVhbWVyXzFfMC5jbWFrZQotKysrIGIvY21ha2UvRmluZEdTdHJlYW1lcl8xXzAuY21ha2UKLUBAIC01MywxNyArNTMsMTcgQEAgc2V0KEdTVFJFQU1FUl8xXzBfTUlOSU1VTV9WRVJTSU9OIDEuMC41KQotICMgSGVscGVyIG1hY3JvIHRvIGZpbmQgYSBHc3RyZWFtZXIgcGx1Z2luIChvciBHc3RyZWFtZXIgaXRzZWxmKQotICMgICBfY29tcG9uZW50X3ByZWZpeCBpcyBwcmVwZW5kZWQgdG8gdGhlIF9JTkNMVURFX0RJUlMgYW5kIF9MSUJSQVJJRVMgdmFyaWFibGVzIChlZy4gIkdTVFJFQU1FUl8xXzBfQVVESU8iKQotICMgICBfcGtnY29uZmlnX25hbWUgaXMgdGhlIGNvbXBvbmVudCdzIHBrZy1jb25maWcgbmFtZSAoZWcuICJnc3RyZWFtZXItMS4wIiwgb3IgImdzdHJlYW1lci12aWRlby0xLjAiKS4KLS0jICAgX2hlYWRlciBpcyB0aGUgY29tcG9uZW50J3MgaGVhZGVyLCByZWxhdGl2ZSB0byB0aGUgZ3N0cmVhbWVyLTEuMCBkaXJlY3RvcnkgKGVnLiAiZ3N0L2dzdC5oIikuCi0gIyAgIF9saWJyYXJ5IGlzIHRoZSBjb21wb25lbnQncyBsaWJyYXJ5IG5hbWUgKGVnLiAiZ3N0cmVhbWVyLTEuMCIgb3IgImdzdHZpZGVvLTEuMCIpCi0tbWFjcm8oRklORF9HU1RSRUFNRVJfQ09NUE9ORU5UIF9jb21wb25lbnRfcHJlZml4IF9wa2djb25maWdfbmFtZSBfaGVhZGVyIF9saWJyYXJ5KQotK21hY3JvKEZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVCBfY29tcG9uZW50X3ByZWZpeCBfcGtnY29uZmlnX25hbWUgX2xpYnJhcnkpCi0gICAgICMgRklYTUU6IFRoZSBRVUlFVCBrZXl3b3JkIGNhbiBiZSB1c2VkIG9uY2Ugd2UgcmVxdWlyZSBDTWFrZSAyLjguMi4KLS0gICAgcGtnX2NoZWNrX21vZHVsZXMoUENfJHtfY29tcG9uZW50X3ByZWZpeH0gJHtfcGtnY29uZmlnX25hbWV9KQotIAotLSAgICBmaW5kX3BhdGgoJHtfY29tcG9uZW50X3ByZWZpeH1fSU5DTFVERV9ESVJTCi0tICAgICAgICBOQU1FUyAke19oZWFkZXJ9Ci0tICAgICAgICBISU5UUyAke1BDXyR7X2NvbXBvbmVudF9wcmVmaXh9X0lOQ0xVREVfRElSU30gJHtQQ18ke19jb21wb25lbnRfcHJlZml4fV9JTkNMVURFRElSfQotLSAgICAgICAgUEFUSF9TVUZGSVhFUyBnc3RyZWFtZXItMS4wCi0tICAgICkKLSsgICAgc3RyaW5nKFJFR0VYIE1BVENIICIoLiopPj0oLiopIiBfZHVtbXkgIiR7X3BrZ2NvbmZpZ19uYW1lfSIpCi0rICAgIGlmICgiJHtDTUFLRV9NQVRDSF8yfSIgU1RSRVFVQUwgIiIpCi0rICAgICAgICBwa2dfY2hlY2tfbW9kdWxlcyhQQ18ke19jb21wb25lbnRfcHJlZml4fSAiJHtfcGtnY29uZmlnX25hbWV9ID49ICR7R1N0cmVhbWVyX0ZJTkRfVkVSU0lPTn0iKQotKyAgICBlbHNlICgpCi0rICAgICAgICBwa2dfY2hlY2tfbW9kdWxlcyhQQ18ke19jb21wb25lbnRfcHJlZml4fSAke19wa2djb25maWdfbmFtZX0pCi0rICAgIGVuZGlmICgpCi0rICAgIHNldCgke19jb21wb25lbnRfcHJlZml4fV9JTkNMVURFX0RJUlMgJHtQQ18ke19jb21wb25lbnRfcHJlZml4fV9JTkNMVURFX0RJUlN9KQotIAotICAgICBmaW5kX2xpYnJhcnkoJHtfY29tcG9uZW50X3ByZWZpeH1fTElCUkFSSUVTCi0gICAgICAgICBOQU1FUyAke19saWJyYXJ5fSBnc3RyZWFtZXJfYW5kcm9pZAotQEAgLTc4LDggKzc4LDggQEAgZW5kbWFjcm8oKQotICMgMS4xLiBGaW5kIGhlYWRlcnMgYW5kIGxpYnJhcmllcwotIHNldChHTElCX1JPT1RfRElSICR7R1NUUkVBTUVSXzFfMF9ST09UX0RJUn0pCi0gZmluZF9wYWNrYWdlKEdsaWIgUkVRVUlSRUQpCi0tRklORF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl8xXzAgZ3N0cmVhbWVyLTEuMCBnc3QvZ3N0LmggZ3N0cmVhbWVyLTEuMCkKLS1GSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSXzFfMF9CQVNFIGdzdHJlYW1lci1iYXNlLTEuMCBnc3QvZ3N0LmggZ3N0YmFzZS0xLjApCi0rRklORF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl8xXzAgZ3N0cmVhbWVyLTEuMCBnc3RyZWFtZXItMS4wKQotK0ZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfMV8wX0JBU0UgZ3N0cmVhbWVyLWJhc2UtMS4wIGdzdGJhc2UtMS4wKQotIAotICMgMS4yLiBDaGVjayBHc3RyZWFtZXIgdmVyc2lvbgotIGlmIChHU1RSRUFNRVJfMV8wX0lOQ0xVREVfRElSUykKLUBAIC0xMTAsMTEgKzExMCwxMSBAQCBlbmRpZiAoKQotICMgMi4gRmluZCBHc3RyZWFtZXIgcGx1Z2lucwotICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAotLUZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfMV8wX0FQUCBnc3RyZWFtZXItYXBwLTEuMCBnc3QvYXBwL2dzdGFwcHNpbmsuaCBnc3RhcHAtMS4wKQotLUZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfMV8wX0FVRElPIGdzdHJlYW1lci1hdWRpby0xLjAgZ3N0L2F1ZGlvL2F1ZGlvLmggZ3N0YXVkaW8tMS4wKQotLUZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfMV8wX0ZGVCBnc3RyZWFtZXItZmZ0LTEuMCBnc3QvZmZ0L2dzdGZmdC5oIGdzdGZmdC0xLjApCi0tRklORF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJFQU1FUl8xXzBfUEJVVElMUyBnc3RyZWFtZXItcGJ1dGlscy0xLjAgZ3N0L3BidXRpbHMvcGJ1dGlscy5oIGdzdHBidXRpbHMtMS4wKQotLUZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfMV8wX1ZJREVPIGdzdHJlYW1lci12aWRlby0xLjAgZ3N0L3ZpZGVvL3ZpZGVvLmggZ3N0dmlkZW8tMS4wKQotK0ZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfMV8wX0FQUCBnc3RyZWFtZXItYXBwLTEuMCBnc3RhcHAtMS4wKQotK0ZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfMV8wX0FVRElPIGdzdHJlYW1lci1hdWRpby0xLjAgZ3N0YXVkaW8tMS4wKQotK0ZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfMV8wX0ZGVCBnc3RyZWFtZXItZmZ0LTEuMCBnc3RmZnQtMS4wKQotK0ZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfMV8wX1BCVVRJTFMgZ3N0cmVhbWVyLXBidXRpbHMtMS4wIGdzdHBidXRpbHMtMS4wKQotK0ZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfMV8wX1ZJREVPIGdzdHJlYW1lci12aWRlby0xLjAgZ3N0dmlkZW8tMS4wKQotIAotICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIyAzLiBQcm9jZXNzIHRoZSBDT01QT05FTlRTIHBhc3NlZCB0byBGSU5EX1BBQ0tBR0UKLS0tIAotMi42LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mcmVlcmRwL2ZyZWVyZHAvMDAwMS1GaXgtZ3N0cmVhbWVyLTEuMC1kZXRlY3Rpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZyZWVyZHAvZnJlZXJkcC8wMDAxLUZpeC1nc3RyZWFtZXItMS4wLWRldGVjdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTY3Y2JhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mcmVlcmRwL2ZyZWVyZHAvMDAwMS1GaXgtZ3N0cmVhbWVyLTEuMC1kZXRlY3Rpb24ucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSAzNjg5ODk1MjZjMzJjZGY5ZDY4MGEzOTdmZWRlM2NiNzczZmEyNjA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWlrZSBHaWxiZXJ0IDxmbG9wcHltQGdlbnRvby5vcmc+CitEYXRlOiBGcmksIDI4IEp1bCAyMDE3IDE2OjMxOjQxIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBnc3RyZWFtZXItMS4wIGRldGVjdGlvbgorCitVcHN0cmVhbSBTdGF0ZTogQmFja3BvcnQKKworLS0tCisgY21ha2UvRmluZEdTdHJlYW1lcl8xXzAuY21ha2UgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jbWFrZS9GaW5kR1N0cmVhbWVyXzFfMC5jbWFrZSBiL2NtYWtlL0ZpbmRHU3RyZWFtZXJfMV8wLmNtYWtlCitpbmRleCAzYWE4ZmM2Li42ZmJjMGVjIDEwMDY0NAorLS0tIGEvY21ha2UvRmluZEdTdHJlYW1lcl8xXzAuY21ha2UKKysrKyBiL2NtYWtlL0ZpbmRHU3RyZWFtZXJfMV8wLmNtYWtlCitAQCAtNTksNyArNTksNyBAQCBtYWNybyhGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQgX2NvbXBvbmVudF9wcmVmaXggX3BrZ2NvbmZpZ19uYW1lIF9saWJyYXJ5KQorIAorICAgICBzdHJpbmcoUkVHRVggTUFUQ0ggIiguKik+PSguKikiIF9kdW1teSAiJHtfcGtnY29uZmlnX25hbWV9IikKKyAgICAgaWYgKCIke0NNQUtFX01BVENIXzJ9IiBTVFJFUVVBTCAiIikKKy0gICAgICAgIHBrZ19jaGVja19tb2R1bGVzKFBDXyR7X2NvbXBvbmVudF9wcmVmaXh9ICIke19wa2djb25maWdfbmFtZX0gPj0gJHtHU3RyZWFtZXJfRklORF9WRVJTSU9OfSIpCisrICAgICAgICBwa2dfY2hlY2tfbW9kdWxlcyhQQ18ke19jb21wb25lbnRfcHJlZml4fSAiJHtfcGtnY29uZmlnX25hbWV9ID49ICR7R1NUUkVBTUVSXzFfMF9NSU5JTVVNX1ZFUlNJT059IikKKyAgICAgZWxzZSAoKQorICAgICAgICAgcGtnX2NoZWNrX21vZHVsZXMoUENfJHtfY29tcG9uZW50X3ByZWZpeH0gJHtfcGtnY29uZmlnX25hbWV9KQorICAgICBlbmRpZiAoKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZyZWVyZHAvZnJlZXJkcC8wMDAzLWFkZC1taXNzaW5nLWRlZmluZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwLzAwMDMtYWRkLW1pc3NpbmctZGVmaW5lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjBlZGVmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwLzAwMDMtYWRkLW1pc3NpbmctZGVmaW5lLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotbGlid2lucHIvY29tbV9zZXJpYTogZml4IG1pc3NpbmcgZGVmaW5lCi0KLUZyZWVSRFAgdXNlcyBDTVNQQVIsIHdoaWNoIGlzIGRlZmluZWQgYnkgZ2xpYmMgaW4gYml0cy90ZXJtaW9zLmggLgotCi1nbGliYyBoYXMgdHdvIGZsYXZvdXJzIG9mIGJpdHMvdGVybWlvcy5oOiBhIGdlbm1lcmljIG9uZSBhbmQgYW4KLWFyY2hpdGVjdHVyZS1zcGVjaWZpYyBvbmUuIFdoZW4gaW5zdGFsbGluZywgZ2xpYmMgd2lsbCBpbnN0YWxsIHRoZQotYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGZpbGUgaWYgaXQgZXhpc3RzLCBvdGhlcndpc2UgaXQgaW5zdGFsbHMgdGhlCi1nZW5lcmljIGZpbGUuIE9ubHkgQWxwaGEsIE1JUFMsIFBQQyBhbmQgU3BhcmMgaGF2ZSB0aGVpciBvd24KLWJpdHMvdGVybWlvcy5oLgotCi1UaGUgZ2VuZXJpYyBiaXRzL3Rlcm1pb3MuaCwgYXMgd2VsbCBhcyB0aGUgQWxwaGEsIFBQQyBhbmQgU3BhcmMgZmxhdm91cnMKLWRvIGRlZmluZSBDTVNQQVIuIEhvd2V2ZXIsIHRoZSBNSVBTIGZsYXZvdXIgZG9lcyBub3QgZGVmaW5lIGl0LgotCi1EZWZpbmUgQ01TUEFSIHRvIHRoZSB2YWx1ZSBmcm9tIHRoZSBnZW5lcmljIHZhbHVlLCB3aGljaCBpcyBhbHNvIHRoZQotdmFsdWUga25vd24gdG8gdGhlIExpbnV4IGtlcm5lbCBmb3IgTUlQUy4KLQotRml4ZXM6Ci0gICAgaHR0cDovL2F1dG9idWlsZC5idWlsZHJvb3Qub3JnL3Jlc3VsdHMvMGI0LzBiNDc5M2YwYmY5ZjRjNTc5MzM4OTdmMzQ4MDA1NGE0ZTA2NTI4YWQvCi0gICAgaHR0cDovL2F1dG9idWlsZC5idWlsZHJvb3Qub3JnL3Jlc3VsdHMvN2EyLzdhMjI4NGQwYTI5ODcxNThmYTJlNzhmNzg5YjA3YzhjNmZjZGI5NzQvCi0gICAgaHR0cDovL2F1dG9idWlsZC5idWlsZHJvb3Qub3JnL3Jlc3VsdHMvMzg3LzM4NzQwODhjM2NjZDRiYmY3NmVhMGM5MTFjYTFlZjY0YzdkYzlkMWMvCi0gICAgLi4uCi0KLVNpZ25lZC1vZmYtYnk6ICJZYW5uIEUuIE1PUklOIiA8eWFubi5tb3Jpbi4xOTk4QGZyZWUuZnI+Ci1DYzogUGV0ZXIgS29yc2dhYXJkIDxqYWNtZXRAdWNsaWJjLm9yZz4KLUNjOiBUaG9tYXMgUGV0YXp6b25pIDx0aG9tYXMucGV0YXp6b25pQGZyZWUtZWxlY3Ryb25zLmNvbT4KLQotZGlmZiAtZHVyTiBmcmVlcmRwLTE3ODM0YWY3YmIzNzhmODVhM2IzY2M0ZGNhZGFhNTEyNWEzMzdlMTYub3JpZy93aW5wci9saWJ3aW5wci9jb21tL2NvbW1fc2VyaWFsX3N5cy5jIGZyZWVyZHAtMTc4MzRhZjdiYjM3OGY4NWEzYjNjYzRkY2FkYWE1MTI1YTMzN2UxNi93aW5wci9saWJ3aW5wci9jb21tL2NvbW1fc2VyaWFsX3N5cy5jCi0tLS0gZnJlZXJkcC0xNzgzNGFmN2JiMzc4Zjg1YTNiM2NjNGRjYWRhYTUxMjVhMzM3ZTE2Lm9yaWcvd2lucHIvbGlid2lucHIvY29tbS9jb21tX3NlcmlhbF9zeXMuYwkyMDE1LTA5LTA0IDE2OjIwOjE3LjAwMDAwMDAwMCArMDEwMAotKysrIGZyZWVyZHAtMTc4MzRhZjdiYjM3OGY4NWEzYjNjYzRkY2FkYWE1MTI1YTMzN2UxNi93aW5wci9saWJ3aW5wci9jb21tL2NvbW1fc2VyaWFsX3N5cy5jCTIwMTUtMTAtMDQgMTE6MDc6NDEuODY4NTEzNzI2ICswMTAwCi1AQCAtMjcsNiArMjcsMTQgQEAKLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2luY2x1ZGUgPHRlcm1pb3MuaD4KLSsKLSsvKiBnbGliYyBmb3IgTUlQUyBoYXMgaXRzIG93biBiaXRzL3Rlcm1pb3MuaCB3aGljaCBkb2VzIG5vdCBkZWZpbmUKLSsgKiBDTVNQQVIsIHNvIHdlIHZhbXBpcmlzZSB0aGUgdmFsdWUgZnJvbSB0aGUgZ2VuZXJpYyBiaXRzL3Rlcm1pb3MuaAotKyAqLwotKyNpZm5kZWYgQ01TUEFSCi0rI2RlZmluZSBDTVNQQVIgMDEwMDAwMDAwMDAwCi0rI2VuZGlmCi0rCi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotIAotICNpbmNsdWRlICJjb21tX3NlcmlhbF9zeXMuaCIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mcmVlcmRwL2ZyZWVyZHAvd2lucHItbWFrZWNlcnQtQnVpbGQtd2l0aC1pbnN0YWxsLVJQQVRILnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mcmVlcmRwL2ZyZWVyZHAvd2lucHItbWFrZWNlcnQtQnVpbGQtd2l0aC1pbnN0YWxsLVJQQVRILnBhdGNoCmluZGV4IGQyNzlkNmQuLjBkN2RjYzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwL3dpbnByLW1ha2VjZXJ0LUJ1aWxkLXdpdGgtaW5zdGFsbC1SUEFUSC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZyZWVyZHAvZnJlZXJkcC93aW5wci1tYWtlY2VydC1CdWlsZC13aXRoLWluc3RhbGwtUlBBVEgucGF0Y2gKQEAgLTEsMzEgKzEsMzEgQEAKLUZyb20gMjUzZWFmYzhjOGRhODNmYzJiMWE5OWE5ZTQzODI0ZWZjNjEwNWM3YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hbnVlbCBCYWNobWFubiA8bWFudWVsLmJhY2htYW5uQGlvdC5iemg+Ci1EYXRlOiBTdW4sIDQgT2N0IDIwMTUgMTA6NDQ6NDkgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gd2lucHItbWFrZWNlcnQ6IEJ1aWxkIHdpdGggaW5zdGFsbCBSUEFUSAogCiBBcyB3ZSBhcmUgaW5zdGFsbGluZyAid2lucHItbWFrZWNlcnQiIG1hbnVhbGx5LCB3ZSBkbyB3YW50CiB0byByZWZlciB0byB0aGUgbGlicmFyeSBpbiBERVNURElSLCBub3QgdGhlIG9uZSByZXN0aW5nIGluCiB0aGUgYnVpbGQgdHJlZS4KIAotU2lnbmVkLW9mZi1ieTogTWFudWVsIEJhY2htYW5uIDxtYW51ZWwuYmFjaG1hbm5AaW90LmJ6aD4KLS0tLQotIHdpbnByL3Rvb2xzL21ha2VjZXJ0L2NsaS9DTWFrZUxpc3RzLnR4dCB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKK1VwZGF0ZSBpdCBmb3IgMi4wLjAuCiAKLWRpZmYgLS1naXQgYS93aW5wci90b29scy9tYWtlY2VydC9jbGkvQ01ha2VMaXN0cy50eHQgYi93aW5wci90b29scy9tYWtlY2VydC9jbGkvQ01ha2VMaXN0cy50eHQKLWluZGV4IDE3OTU0YzQuLjkwYzQ0NmIgMTAwNjQ0Ci0tLS0gYS93aW5wci90b29scy9tYWtlY2VydC9jbGkvQ01ha2VMaXN0cy50eHQKLSsrKyBiL3dpbnByL3Rvb2xzL21ha2VjZXJ0L2NsaS9DTWFrZUxpc3RzLnR4dAotQEAgLTQ1LDUgKzQ1LDkgQEAgc2V0KCR7TU9EVUxFX1BSRUZJWH1fTElCUyB3aW5wci1tYWtlY2VydC10b29sKQorU2lnbmVkLW9mZi1ieTogTWFudWVsIEJhY2htYW5uIDxtYW51ZWwuYmFjaG1hbm5AaW90LmJ6aD4KK1NpZ25lZC1vZmYtYnk6IFpoZW5nIFJ1b3FpbiA8emhlbmdycS5mbnN0QGNuLmZ1aml0c3UuY29tPgorLS0tCisgd2lucHIvdG9vbHMvbWFrZWNlcnQtY2xpL0NNYWtlTGlzdHMudHh0IHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS93aW5wci90b29scy9tYWtlY2VydC1jbGkvQ01ha2VMaXN0cy50eHQgYi93aW5wci90b29scy9tYWtlY2VydC1jbGkvQ01ha2VMaXN0cy50eHQKK2luZGV4IDc0YWZhMDkuLjhkMDBlZjEgMTAwNjQ0CistLS0gYS93aW5wci90b29scy9tYWtlY2VydC1jbGkvQ01ha2VMaXN0cy50eHQKKysrKyBiL3dpbnByL3Rvb2xzL21ha2VjZXJ0LWNsaS9DTWFrZUxpc3RzLnR4dAorQEAgLTQ0LDYgKzQ0LDkgQEAgc2V0KCR7TU9EVUxFX1BSRUZJWH1fTElCUyB3aW5wci10b29scykKICAKICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtNT0RVTEVfTkFNRX0gJHske01PRFVMRV9QUkVGSVh9X0xJQlN9KQogIAotK3NldF90YXJnZXRfcHJvcGVydGllcygke01PRFVMRV9OQU1FfSBQUk9QRVJUSUVTIAotKwlCVUlMRF9XSVRIX0lOU1RBTExfUlBBVEggMSkKKytzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtNT0RVTEVfTkFNRX0gUFJPUEVSVElFUworKyAgICAgICBCVUlMRF9XSVRIX0lOU1RBTExfUlBBVEggMSkKICsKICBzZXRfcHJvcGVydHkoVEFSR0VUICR7TU9EVUxFX05BTUV9IFBST1BFUlRZIEZPTERFUiAiV2luUFIvVG9vbHMiKQogIAotKworIGluc3RhbGwoVEFSR0VUUyAke01PRFVMRV9OQU1FfSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfQklORElSfSBDT01QT05FTlQgdG9vbHMgRVhQT1JUIFdpblBSVGFyZ2V0cykKIC0tIAotMS44LjMuMQorMi43LjQKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mcmVlcmRwL2ZyZWVyZHBfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mcmVlcmRwL2ZyZWVyZHBfZ2l0LmJiCmluZGV4IGYwYWExYjYuLjg4YWVjOWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZyZWVyZHAvZnJlZXJkcF9naXQuYmIKQEAgLTEwLDE0ICsxMCwxMyBAQAogCiBpbmhlcml0IHBrZ2NvbmZpZyBjbWFrZSBnaXRwa2d2CiAKLVBWID0gIjEuMi41K2dpdHIke1NSQ1BWfSIKK1BWID0gIjIuMC4wK2dpdHIke1NSQ1BWfSIKIFBLR1YgPSAiJHtHSVRQS0dWVEFHfSIKIAotU1JDUkVWID0gIjYyZGE5ZDI4YzY3NDgxNGM4MWMyNDVjMWM3ODgyZWIwZGE3YmU3NmIiCitTUkNSRVYgPSAiMTY0OGRlYjQzNWFkNTIyMDZmN2FhMmFmZTRiNGRmZjcxZDkzMjliYyIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9GcmVlUkRQL0ZyZWVSRFAuZ2l0IFwKICAgICBmaWxlOi8vd2lucHItbWFrZWNlcnQtQnVpbGQtd2l0aC1pbnN0YWxsLVJQQVRILnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1GaW5kR1N0cmVhbWVyXzFfMC1maXgtYnVpbGQtZmFpbHVyZS1mb3ItbmV3LWdzdHJlYW1lLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1hZGQtbWlzc2luZy1kZWZpbmUucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLUZpeC1nc3RyZWFtZXItMS4wLWRldGVjdGlvbi5wYXRjaCBcCiAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCkBAIC01Nyw3ICs1Niw3IEBACiAjIHdlIHdpbGwgbmVlZCB3aW5wci1tYWtlY2VydCB0byBnZW5lcmF0ZSBUTFMgY2VydGlmaWNhdGVzCiBkb19pbnN0YWxsX2FwcGVuZCAoKSB7CiAgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbTc1NSB3aW5wci90b29scy9tYWtlY2VydC9jbGkvd2lucHItbWFrZWNlcnQgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLW03NTUgd2lucHIvdG9vbHMvbWFrZWNlcnQtY2xpL3dpbnByLW1ha2VjZXJ0ICR7RH0ke2JpbmRpcn0KICAgICBybSAtcmYgJHtEfSR7bGliZGlyfS9jbWFrZQogICAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9L2ZyZWVyZHAKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2RfMi4yLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkXzIuMi41LmJiCnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2RfMi4yLjQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2RfMi4yLjUuYmIKaW5kZXggNDkzMmJiNy4uNjNkOWFjZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZF8yLjIuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkXzIuMi41LmJiCkBAIC0xNiw3ICsxNiw3IEBACiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGliZ2QvbGliZ2QuZ2l0O2JyYW5jaD1HRC0yLjIgXAogICAgICAgICAgICIKIAotU1JDUkVWID0gImRlMDk4NzRiMTVhNGM4ODc3MmRiMzVjZWQ4NDIzMzBmNWRlMjNlNzYiCitTUkNSRVYgPSAiODI1NTIzMWI2ODg4OTU5N2QwNGQ0NTFhNzI0MzhhYjkyYTQwNWFiYSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZmxhZ3MvZ2ZsYWdzXzIuMi4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZmxhZ3MvZ2ZsYWdzXzIuMi4wLmJiCmluZGV4IDBlODViM2YuLjI4YjY1MmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2ZsYWdzL2dmbGFnc18yLjIuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dmbGFncy9nZmxhZ3NfMi4yLjAuYmIKQEAgLTE5LDMgKzE5LDUgQEAKIFBBQ0tBR0VTID0rICIke1BOfS1iYXNoLWNvbXBsZXRpb24iCiBGSUxFU18ke1BOfS1iYXNoLWNvbXBsZXRpb24gKz0gIiR7YmluZGlyfS9nZmxhZ3NfY29tcGxldGlvbnMuc2giCiBSREVQRU5EU18ke1BOfS1iYXNoLWNvbXBsZXRpb24gPSAiYmFzaCBiYXNoLWNvbXBsZXRpb24iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nbnVsaWIvZ251bGliXzIwMTctMDgtMjAuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dudWxpYi9nbnVsaWJfMjAxNy0wOC0yMC4xOC5iYgppbmRleCBiNTA1YWMxLi5iNzJmZmE5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dudWxpYi9nbnVsaWJfMjAxNy0wOC0yMC4xOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dudWxpYi9nbnVsaWJfMjAxNy0wOC0yMC4xOC5iYgpAQCAtMjksOCArMjksOCBAQAogZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiCiBkb19wYWNrYWdlW25vZXhlY10gPSAiMSIKIGRvX3BhY2thZ2VkYXRhW25vZXhlY10gPSAiMSIKLWRvX3BhY2thZ2Vfd3JpdGVfaXBrW25vZXhlY10gPSAiMSIKLWRvX3BhY2thZ2Vfd3JpdGVfZGViW25vZXhlY10gPSAiMSIKLWRvX3BhY2thZ2Vfd3JpdGVfcnBtW25vZXhlY10gPSAiMSIKK2RlbHRhc2sgcGFja2FnZV93cml0ZV9pcGsKK2RlbHRhc2sgcGFja2FnZV93cml0ZV9kZWIKK2RlbHRhc2sgcGFja2FnZV93cml0ZV9ycG0KIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLVN1cHBvcnQtQXRvbWljLW9wcy1vbi1jbGFuZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtU3VwcG9ydC1BdG9taWMtb3BzLW9uLWNsYW5nLnBhdGNoCmluZGV4IGU1ODJjMGQuLjJmZDIxYzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtU3VwcG9ydC1BdG9taWMtb3BzLW9uLWNsYW5nLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtU3VwcG9ydC1BdG9taWMtb3BzLW9uLWNsYW5nLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBlYTlmNjRlYjJjZGYzYmU2YzRkYzY1ZmExNDcyZDg1NDYxNmU0M2NhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhYTBhNjMyMDlhZjY4MTNkODcyNTVlYzNhYjMzOWYyZGJiZjI3ZDZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgNiBNYXIgMjAxNyAxMzozODo0NiAtMDgwMAogU3ViamVjdDogW1BBVENIXSBTdXBwb3J0IEF0b21pYyBvcHMgb24gY2xhbmcKQEAgLTksMjUgKzksMjMgQEAKIHRoZSBhdG9taWNzIGFuZCBmYWlscyBmb3IgY2xhbmcKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQorCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAorLS0tCiAgc3JjL2Jhc2UvYXRvbWljb3BzLmggfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvYmFzZS9hdG9taWNvcHMuaCBiL3NyYy9iYXNlL2F0b21pY29wcy5oCi1pbmRleCBiZTAzOGYzLi5mMWEyMWZmIDEwMDY0NAoraW5kZXggZGFjOTViZS4uMzkwNzMzYyAxMDA2NDQKIC0tLSBhL3NyYy9iYXNlL2F0b21pY29wcy5oCiArKysgYi9zcmMvYmFzZS9hdG9taWNvcHMuaAotQEAgLTExOCw3ICsxMTgsNyBAQAorQEAgLTEyNCw3ICsxMjQsNyBAQAogICNpbmNsdWRlICJiYXNlL2F0b21pY29wcy1pbnRlcm5hbHMtbGludXhwcGMuaCIKICAjZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fbWlwc19fKQogICNpbmNsdWRlICJiYXNlL2F0b21pY29wcy1pbnRlcm5hbHMtbWlwcy5oIgogLSNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIEdDQ19WRVJTSU9OID49IDQwNzAwCiArI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgR0NDX1ZFUlNJT04gPj0gNDA3MDAgfHwgZGVmaW5lZChfX2NsYW5nX18pCiAgI2luY2x1ZGUgImJhc2UvYXRvbWljb3BzLWludGVybmFscy1nY2MuaCIKLSAjZWxzZQotICNlcnJvciBZb3UgbmVlZCB0byBpbXBsZW1lbnQgYXRvbWljIG9wZXJhdGlvbnMgZm9yIHRoaXMgYXJjaGl0ZWN0dXJlCi0tLSAKLTIuMTIuMAotCisgI2VsaWYgZGVmaW5lZChfX2NsYW5nX18pICYmIENMQU5HX1ZFUlNJT04gPj0gMzA0MDAKKyAjaW5jbHVkZSAiYmFzZS9hdG9taWNvcHMtaW50ZXJuYWxzLWdjYy5oIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1Vc2UtdWNvbnRleHRfdC1pbnN0ZWFkLW9mLXN0cnVjdC11Y29udGV4dC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtVXNlLXVjb250ZXh0X3QtaW5zdGVhZC1vZi1zdHJ1Y3QtdWNvbnRleHQucGF0Y2gKaW5kZXggNWJkMGI2Zi4uYjMwMzM2MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1Vc2UtdWNvbnRleHRfdC1pbnN0ZWFkLW9mLXN0cnVjdC11Y29udGV4dC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLVVzZS11Y29udGV4dF90LWluc3RlYWQtb2Ytc3RydWN0LXVjb250ZXh0LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAxMmFjMGRjNjc0MmUxYmNkZmFmMTg0MjE4NmM5MDAyZjA4MjBhNWU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyMzBjZDg0NDg2MTQ1YzViYjFkNjlkNGM5YTU0NGUwMGFkYmNjOWI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFNhdCwgMSBKdWwgMjAxNyAxMzoyMToyMSAtMDcwMAogU3ViamVjdDogW1BBVENIXSBVc2UgdWNvbnRleHRfdCBpbnN0ZWFkIG9mIHN0cnVjdCB1Y29udGV4dApAQCAtNiwxMiArNiwxMyBAQAogTmV3ZXIgZ2xpYmMgaGFzIGRyb3BwZWQgdGhlIHVjb250ZXh0IHRhZyBmcm9tIGV4cG9zaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHNyYy9zdGFja3RyYWNlX3Bvd2VycGMtbGludXgtaW5sLmggfCAzICstLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9zdGFja3RyYWNlX3Bvd2VycGMtbGludXgtaW5sLmggYi9zcmMvc3RhY2t0cmFjZV9wb3dlcnBjLWxpbnV4LWlubC5oCi1pbmRleCBhOWJmNzc1Li40N2ZmMmQ3IDEwMDY0NAoraW5kZXggM2IzODQzYi4uYTMwMWE0NiAxMDA2NDQKIC0tLSBhL3NyYy9zdGFja3RyYWNlX3Bvd2VycGMtbGludXgtaW5sLmgKICsrKyBiL3NyYy9zdGFja3RyYWNlX3Bvd2VycGMtbGludXgtaW5sLmgKIEBAIC01Myw3ICs1Myw2IEBACkBAIC0zMSw2ICszMiwzIEBACiAgICAgICAgICAgIC8vIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIHJlc3QsIHNpbmNlIElQIHZhbHVlIGlzIGF0ICd1YycgZmllbGQuQQogICAgICAgICAgfSAqc2lnZnJhbWUgPSByZWludGVycHJldF9jYXN0PHJ0X3NpZ25hbF9mcmFtZV8zMio+KGN1cnJlbnQpOwogICAgICAgICAgcmVzdWx0W25dID0gKHZvaWQqKSBzaWdmcmFtZS0+dWMudWNfbWNvbnRleHQudWNfcmVncy0+Z3JlZ3NbUFRfTklQXTsKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtZGlzYmFsZS1oZWFwLWNoZWNrZXJzLWFuZC1kZWJ1Zy1hbGxvY2F0b3Itb24tbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtZGlzYmFsZS1oZWFwLWNoZWNrZXJzLWFuZC1kZWJ1Zy1hbGxvY2F0b3Itb24tbXVzbC5wYXRjaAppbmRleCA5OTEyN2UxLi5hYjNjZWI5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWRpc2JhbGUtaGVhcC1jaGVja2Vycy1hbmQtZGVidWctYWxsb2NhdG9yLW9uLW11c2wucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1kaXNiYWxlLWhlYXAtY2hlY2tlcnMtYW5kLWRlYnVnLWFsbG9jYXRvci1vbi1tdXNsLnBhdGNoCkBAIC0xLDE5ICsxLDIwIEBACi1Gcm9tIGI1OTYxZjE3ZTlkN2YyYmM0NGRhNjExYjNlNGIyN2M4YTY0MWZjNzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDA2NjA1MTU4ODUyZjkzNjQ1MTkzOTFmYTExMDcwYmE1ZWM0MzAzZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU2F0LCAyIFNlcCAyMDE3IDA4OjA3OjE3IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIGRpc2JhbGUgaGVhcCBjaGVja2VycyBhbmQgZGVidWcgYWxsb2NhdG9yIG9uIG11c2wKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQorCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAorLS0tCiAgY29uZmlndXJlLmFjIHwgMiArKwogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKIAotSW5kZXg6IGdpdC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9jb25maWd1cmUuYWMKLSsrKyBnaXQvY29uZmlndXJlLmFjCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA3MGI0OWEzLi44MTU0YzVjIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKIEBAIC01MSw2ICs1MSw4IEBAIGNhc2UgIiRob3N0IiBpbgogICAgICotY3lnd2luKikgZGVmYXVsdF9lbmFibGVfaGVhcF9jaGVja2VyPW5vOyBkZWZhdWx0X2VuYWJsZV9jcHVfcHJvZmlsZXI9bm87OwogICAgICotZnJlZWJzZCopIGRlZmF1bHRfZW5hYmxlX2hlYXBfY2hlY2tlcj1ubzs7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtZml4LWJ1aWxkLXdpdGgtbXVzbC1saWJjLnBhdGNoCmluZGV4IDc4NjIxYzcuLjBhNzJmZjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtZml4LWJ1aWxkLXdpdGgtbXVzbC1saWJjLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtZml4LWJ1aWxkLXdpdGgtbXVzbC1saWJjLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAxNTc5MTQ5NDFiZDM4ZjFhMzhiYjZiZDcyOTRjYTZjMmJjMWI4ZGNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwMzRlN2RhMDhjM2ZiZmZjYmE4Y2Y4ZDRlMjRhNzFhMTY1NThkYjVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFN1biwgMTYgSnVsIDIwMTcgMTU6NTE6MjggLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gZml4IGJ1aWxkIHdpdGggbXVzbCBsaWJjCkBAIC02LDYgKzYsNyBAQAogUGF0Y2ggZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZ3BlcmZ0b29scy9ncGVyZnRvb2xzL3B1bGwvNzY1LwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgIHwgMSArCiAgc3JjL21hbGxvY19ob29rX21tYXBfbGludXguaCB8IDggKysrKysrLS0KQEAgLTU2LDYgKzU3LDMgQEAKICAvLyBsaWJjJ3MgdmVyc2lvbjoKICBleHRlcm4gIkMiIHZvaWQqIF9fc2JyayhwdHJkaWZmX3QgaW5jcmVtZW50KTsKICAKLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtaW5jbHVkZS1mY250bC5oLWZvci1sb2ZmX3QtZGVmaW5pdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtaW5jbHVkZS1mY250bC5oLWZvci1sb2ZmX3QtZGVmaW5pdGlvbi5wYXRjaAppbmRleCA2NjcwMDhhLi40YzYzZTczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWluY2x1ZGUtZmNudGwuaC1mb3ItbG9mZl90LWRlZmluaXRpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1pbmNsdWRlLWZjbnRsLmgtZm9yLWxvZmZfdC1kZWZpbml0aW9uLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAwNGVhOGUwMDE1MDE5MzFmNGRiZjIwMjg4YWNhNzg0Njk2MTdiMDhhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhMTZhNzNmMDgxOWQyNjIxOWVlODNjZDk4ZWVhODI3ODZkN2MxNzU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFN1biwgMTYgSnVsIDIwMTcgMTk6Mjg6MTcgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBmY250bC5oIGZvciBsb2ZmX3QgZGVmaW5pdGlvbgpAQCAtNyw2ICs3LDcgQEAKIGxpbnV4X3N5c2NhbGxfc3VwcG9ydC5oOjI2NDE6MjY6IGVycm9yOiAnbG9mZl90JyBoYXMgbm90IGJlZW4gZGVjbGFyZWQKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9zdXBwb3J0LmggfCAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKQEAgLTIzLDYgKzI0LDMgQEAKICAKICAjaWZkZWYgX19taXBzX18KICAvKiBJbmNsdWRlIGRlZmluaXRpb25zIG9mIHRoZSBBQkkgY3VycmVudGx5IGluIHVzZS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCi0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy9kaXNhYmxlX2xpYnVud2luZF9hYXJjaDY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvZGlzYWJsZV9saWJ1bndpbmRfYWFyY2g2NC5wYXRjaAppbmRleCBmMjY0NzQwLi5jM2M1Nzg0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy9kaXNhYmxlX2xpYnVud2luZF9hYXJjaDY0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzL2Rpc2FibGVfbGlidW53aW5kX2FhcmNoNjQucGF0Y2gKQEAgLTEsMTUgKzEsMjIgQEAKLURpc2FibGUgbGlidW53aW5kIG9uIGFhcmNoNjQKK0Zyb20gNTY0ZjgwMGUzZTI0NjQ3YzA5NWY3YTMyMWJmM2ViZGNjZmJmNzYyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDIgU2VwIDIwMTcgMTI6MDI6MDQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gRGlzYWJsZSBsaWJ1bndpbmQgb24gYWFyY2g2NAogCiBGaXhlcyBoYW5ncyB3aGVuIHVzaW5nIGxpYnRjbWFsbG9jLnNvCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIAotSW5kZXg6IGdpdC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9jb25maWd1cmUuYWMKLSsrKyBnaXQvY29uZmlndXJlLmFjCi1AQCAtNjksNiArNjksMTEgQEAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTSgsIFtyZQorLS0tCisgY29uZmlndXJlLmFjIHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggODE1NGM1Yy4uMDYzYjI2MCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNjksNiArNjksMTEgQEAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTSgsIFtyZXR1cm4gX19QUEM2NF9fXSldLAogICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0X2VuYWJsZV9saWJ1bndpbmQ9eWVzCiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfdGNtYWxsb2NfcGFnZXNpemU9OF0pCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy9zZ2lkZWYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy9zZ2lkZWYucGF0Y2gKaW5kZXggN2UxYTIzYi4uMTAyNzRhNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvc2dpZGVmLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzL3NnaWRlZi5wYXRjaApAQCAtMSwxMSArMSwxOSBAQAotc2dpZGVmLmggZG9lcyBub3QgZXhpc3Qgb24gbXVzbCBhbmQgaXRzIG5vdCBuZWVkZWQgdG8gY29tcGlsZQorRnJvbSAyNTliNDIwNDQ0YzUyNDYzNzk1YjRiNTgyYTJhYjc1MTExNDllZWE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTYgT2N0IDIwMTcgMjE6MjY6NDAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gc2dpZGVmLmggZG9lcyBub3QgZXhpc3Qgb24gbXVzbCBhbmQgaXRzIG5vdCBuZWVkZWQgdG8gY29tcGlsZQogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogZ2l0L3NyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKLSsrKyBnaXQvc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKKworLS0tCisgc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9zdXBwb3J0LmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzZS9saW51eF9zeXNjYWxsX3N1cHBvcnQuaCBiL3NyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCitpbmRleCA3MDQzMWNhLi5iMjNjYTU5IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKKysrKyBiL3NyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCiBAQCAtMTY0LDcgKzE2NCw3IEBAIGV4dGVybiAiQyIgewogICNpbmNsdWRlIDxlbmRpYW4uaD4KICAjaW5jbHVkZSA8ZmNudGwuaD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaGRkdGVtcC9oZGR0ZW1wL2hkZHRlbXAtMC4zLWJldGExNS1hdXRvZGV0ZWN0LTcxNzQ3OS5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaGRkdGVtcC9oZGR0ZW1wL2hkZHRlbXAtMC4zLWJldGExNS1hdXRvZGV0ZWN0LTcxNzQ3OS5wYXRjaAppbmRleCAxOWY4MzgwLi4xZWM2YTYxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2hkZHRlbXAvaGRkdGVtcC9oZGR0ZW1wLTAuMy1iZXRhMTUtYXV0b2RldGVjdC03MTc0NzkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9oZGR0ZW1wL2hkZHRlbXAvaGRkdGVtcC0wLjMtYmV0YTE1LWF1dG9kZXRlY3QtNzE3NDc5LnBhdGNoCkBAIC0zLDkgKzMsMTAgQEAKIFJlZmVyIHRvOgogaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD03MTc0NzkKIAotZGlmZiAtdXAgaGRkdGVtcC0wLjMtYmV0YTE1L2RvYy9oZGR0ZW1wLjh+IGhkZHRlbXAtMC4zLWJldGExNS9kb2MvaGRkdGVtcC44Ci0tLS0gaGRkdGVtcC0wLjMtYmV0YTE1L2RvYy9oZGR0ZW1wLjh+CTIwMTEtMDgtMTggMDA6MzY6MDUuNjg5MDAxNDcwICswMzAwCi0rKysgaGRkdGVtcC0wLjMtYmV0YTE1L2RvYy9oZGR0ZW1wLjgJMjAxMS0wOC0xOCAwMDo0NDo0Ni43NTMwMDYyNTMgKzAzMDAKK0luZGV4OiBoZGR0ZW1wLTAuMy1iZXRhMTUvZG9jL2hkZHRlbXAuOAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGhkZHRlbXAtMC4zLWJldGExNS5vcmlnL2RvYy9oZGR0ZW1wLjgKKysrKyBoZGR0ZW1wLTAuMy1iZXRhMTUvZG9jL2hkZHRlbXAuOAogQEAgLTE5LDcgKzE5LDcgQEAKICBoZGR0ZW1wIFwtIFV0aWxpdHkgdG8gbW9uaXRvciBoYXJkIGRyaXZlIHRlbXBlcmF0dXJlCiAgLlNIIFNZTk9QU0lTCkBAIC0yNSw5ICsyNiwxMCBAQAogIAogIAogIC5TSCAiT1BUSU9OUyIKLWRpZmYgLXVwIGhkZHRlbXAtMC4zLWJldGExNS9zcmMvaGRkdGVtcC5jfiBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL2hkZHRlbXAuYwotLS0tIGhkZHRlbXAtMC4zLWJldGExNS9zcmMvaGRkdGVtcC5jfgkyMDExLTA4LTE4IDAwOjM2OjA1LjYzODk5Njg2MSArMDMwMAotKysrIGhkZHRlbXAtMC4zLWJldGExNS9zcmMvaGRkdGVtcC5jCTIwMTEtMDgtMTggMDA6MzU6NTUuNDg1MDYwNzk4ICswMzAwCitJbmRleDogaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9oZGR0ZW1wLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBoZGR0ZW1wLTAuMy1iZXRhMTUub3JpZy9zcmMvaGRkdGVtcC5jCisrKysgaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9oZGR0ZW1wLmMKIEBAIC01NCw2ICs1NCw3IEBACiAgI2luY2x1ZGUgPGxpbnV4L2hkcmVnLmg+CiAgI2luY2x1ZGUgPGN0eXBlLmg+CkBAIC00NCw3ICs0Niw3IEBACiAgCiAgICBiYWNrdHJhY2Vfc2lnc2VndigpOwogICAgYmFja3RyYWNlX3NpZ2lsbCgpOwotQEAgLTQxOSwxMSArNDIxLDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgeworQEAgLTQyMywxMSArNDI1LDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICAgICAgZXhpdCgwKTsKICAgIH0KICAgIApAQCAtNTYsNyArNTgsNyBAQAogICAgaWYoZGVidWcpIHsKICAgICAgLyogICAgYXJnYyA9IG9wdGluZCArIDE7Ki8KICAgICAgcXVpZXQgPSAxOwotQEAgLTQzNCw2ICs0MzEsMjMgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgeworQEAgLTQzOCw2ICs0MzUsMjMgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICAgICBleGl0KDEpOwogICAgfQogIApAQCAtODAsNyArODIsNyBAQAogICAgaW5pdF9idXNfdHlwZXMoKTsKICAKICAgIC8qIGNvbGxlY3QgZGlza3MgaW5mb3JtYXRpb25zICovCi1AQCAtNTI3LDYgKzU0MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKK0BAIC01MzEsNiArNTQ1LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICAgZWxzZSB7CiAgICAgIGRvX2RpcmVjdF9tb2RlKGxkaXNrcyk7CiAgICB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2hkZHRlbXAvaGRkdGVtcC9oZGR0ZW1wXzAuMy1iZXRhMTUtNTIuZGlmZiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaGRkdGVtcC9oZGR0ZW1wL2hkZHRlbXBfMC4zLWJldGExNS01Mi5kaWZmCmluZGV4IGY2MWMxNjQuLjA1N2IxZmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaGRkdGVtcC9oZGR0ZW1wL2hkZHRlbXBfMC4zLWJldGExNS01Mi5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaGRkdGVtcC9oZGR0ZW1wL2hkZHRlbXBfMC4zLWJldGExNS01Mi5kaWZmCkBAIC04LDkgKzgsMTEgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiB1bm1haW50YWluZWQKIAorSW5kZXg6IGhkZHRlbXAtMC4zLWJldGExNS9kb2MvaGRkdGVtcC44Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gaGRkdGVtcC0wLjMtYmV0YTE1Lm9yaWcvZG9jL2hkZHRlbXAuOAogKysrIGhkZHRlbXAtMC4zLWJldGExNS9kb2MvaGRkdGVtcC44Ci1AQCAtNTgsNiArNTgsMTAgQEAKK0BAIC01OCw2ICs1OCwxMCBAQCBFeGVjdXRlIGhkZHRlbXAgaW4gVENQL0lQIGRhZW1vbiBtb2RlIChwCiAgLkIgXC1mLCBcLVwtZmlsZT1cZklmaWxlXGZJCiAgU3BlY2lmeSB0aGUgZGF0YWJhc2UgZmlsZSB0byB1c2UuCiAgLlRQCkBAIC0yMSw3ICsyMyw3IEBACiAgLkIgXC1sLCBcLVwtbGlzdGVuPVxmSWFkZHJcZlIKICBMaXN0ZW4gb24gYSBzcGVjaWZpYyBhZGRyZXNzLiAgXGZJYWRkclxmUiBpcyBhIHN0cmluZyBjb250YWluaW5nIGEKICBob3N0IG5hbWUgb3IgYSBudW1lcmljIGhvc3QgYWRkcmVzcyBzdHJpbmcuICBUaGUgbnVtZXJpYyBob3N0IGFkZHJlc3MKLUBAIC04MCw2ICs4NCw5IEBACitAQCAtODAsNiArODQsOSBAQCBzZWNvbmRzLgogIC5CIFwtcSwgXC1cLXF1aWV0CiAgRG9uJ3QgY2hlY2sgaWYgdGhlIGRyaXZlIGlzIHN1cHBvcnRlZC4KICAuVFAKQEAgLTMxLDcgKzMzLDcgQEAKICAuQiBcLXYsIFwtXC12ZXJzaW9uCiAgRGlzcGxheSBoZGR0ZW1wIHZlcnNpb24gbnVtYmVyLgogIC5UUAotQEAgLTk2LDcgKzEwMyw3IEBACitAQCAtOTYsNyArMTAzLDcgQEAgTGlzdGVuIG9uIElQdjYgc29ja2V0cyBvbmx5LgogIC5TSCAiRFJJVkUgREFUQUJBU0UiCiAgSWYgeW91IGtub3cgeW91ciBkcml2ZSBoYXMgYSB0ZW1wZXJhdHVyZSBzZW5zb3IgYnV0IGl0IGlzIGJlaW5nCiAgcmVwb3J0ZWQgdW5zdXBwb3J0ZWQsIHRlbGwgbWUgd2hpY2ggbW9kZWwgYW5kIHdoaWNoIG1hbnVmYWN0dXJlciBpdApAQCAtNDAsNyArNDIsNyBAQAogIGxpbmUgb2YgaGRkdGVtcC5kYiBpcyBlaXRoZXIgYSBjb21tZW50LCBhIGJsYW5rIGxpbmUgb3IgYSBsaW5lCiAgY29udGFpbmluZzoKICAuVFAKLUBAIC0xMTIsNyArMTE5LDcgQEAKK0BAIC0xMTIsNyArMTE5LDcgQEAgc2V0IG9mIGRyaXZlcyBmcm9tIGl0cyBtb2RlbCBuYW1lIG9yIGZybwogIEZlZWRiYWNrIGlzIHdlbGNvbWUgKHNlZSB0aGUgUkVQT1JUIHNlY3Rpb24gYmVsb3cpLgogIAogIC5TSCAiVENQL0lQIERBRU1PTiBNT0RFIgpAQCAtNDksNyArNTEsNyBAQAogIC5QUAogICMgaGRkdGVtcCBTQVRBOi9kZXYvc2RhIFBBVEE6L2Rldi9oZGEKICAuUFAKLUBAIC0xMjAsNyArMTI3LDcgQEAKK0BAIC0xMjAsNyArMTI3LDcgQEAgVG8gdGVzdAogIC5CIGhkZHRlbXAKICBpbiBkYWVtb24gbW9kZSwgc3RhcnQgaXQgbGlrZSB0aGlzOgogIC5QUApAQCAtNTgsNyArNjAsNyBAQAogIC5QUAogIC5QUAogIGFuZCB1c2UKLUBAIC0xNjUsOCArMTcyLDggQEAKK0BAIC0xNjUsOCArMTcyLDggQEAgYW5kIDEyIGFyZSBvZnRlbiByZXBvcnRlZCB0byBtYXRjaCBhIHRlbQogIGludmVzdGlnYXRpb24gdGhleSBkbyBub3QuICBCdXQgZmllbGRzIDE5NCAod2hpY2ggaXMgdGhlIHN0YW5kYXJkCiAgZmllbGQgZm9yIHRlbXBlcmF0dXJlKSBhbmQgMjMxIGFyZSBnb29kIGNhbmRpZGF0ZXMuCiAgLlBQCkBAIC02OSwxMyArNzEsMTUgQEAKICB5b3Vyc2VsZi4KICAKICAuU0ggIkJVR1MiCi1AQCAtMTgzLDUgKzE5MCw1IEBACitAQCAtMTgzLDUgKzE5MCw1IEBAIHN1cHBvcnRlZCBvbiBpMzg2IGFyY2hpdGVjdHVyZXMgb25seS4KICAuUFAKICBFbW1hbnVlbCBWYXJhZ25hdCAoaGRkdGVtcEBndXp1Lm5ldCkuCiAgLlBQCiAtVGhpcyBtYW51YWwgcGFnZSB3YXMgb3JpZ2luYWx5IHdyaXR0ZW4gYnkgQXVyZWxpZW4gSmFybm8gPGF1cmVsMzJAZGViaWFuLm9yZz4sCiArVGhpcyBtYW51YWwgcGFnZSB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGJ5IEF1cmVsaWVuIEphcm5vIDxhdXJlbDMyQGRlYmlhbi5vcmc+LAogIGZvciB0aGUgRGViaWFuIEdOVS9MaW51eCBzeXN0ZW0gKGJ1dCBtYXkgYmUgdXNlZCBieSBvdGhlcnMpLgorSW5kZXg6IGhkZHRlbXAtMC4zLWJldGExNS9wby9mci5wbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGhkZHRlbXAtMC4zLWJldGExNS5vcmlnL3BvL2ZyLnBvCiArKysgaGRkdGVtcC0wLjMtYmV0YTE1L3BvL2ZyLnBvCiBAQCAtNyw5ICs3LDkgQEAKQEAgLTkxLDcgKzk1LDcgQEAKICAiTGFzdC1UcmFuc2xhdG9yOiBBdXJlbGllbiBKYXJubyA8YXVyZWxpZW5AYXVyZWwzMi5uZXQ+XG4iCiAgIkxhbmd1YWdlLVRlYW06IEZSQU5DQUlTIDxmckBsaS5vcmc+XG4iCiAgIk1JTUUtVmVyc2lvbjogMS4wXG4iCi1AQCAtMTcsMjMgKzE3LDcgQEAKK0BAIC0xNywyMyArMTcsNyBAQCBtc2dzdHIgIiIKICAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgogICJYLUdlbmVyYXRvcjogS0JhYmVsIDEuMC4xXG4iCiAgCkBAIC0xMTYsNyArMTIwLDcgQEAKICAjLCBjLWZvcm1hdAogIG1zZ2lkICIiCiAgIlxuIgotQEAgLTQ2LDcgKzMwLDcgQEAKK0BAIC00Niw3ICszMCw3IEBAIG1zZ3N0ciAiIgogICJNb2TobGU6ICVzXG4iCiAgIlxuIgogIApAQCAtMTI1LDcgKzEyOSw3IEBACiAgIywgYy1mb3JtYXQKICBtc2dpZCAiIgogICJXQVJOSU5HOiBEcml2ZSAlcyBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhIHRlbXBlcmF0dXJlIHNlbnNvci5cbiIKLUBAIC02MCw3NSArNDQsNjAgQEAKK0BAIC02MCw3NSArNDQsNjAgQEAgbXNnc3RyICIiCiAgIm5ldCkuXG4iCiAgIkFUVEVOVElPTiA6IFZvaXIgbGVzIG9wdGlvbnMgLS1oZWxwLCAtLWRlYnVnIGV0IC0tZHJpdmViYXNlLlxuIgogIApAQCAtMjE2LDcgKzIyMCw3IEBACiAgIiAgLWIgICAtLWRyaXZlYmFzZSAgIDogIGRpc3BsYXkgZGF0YWJhc2UgZmlsZSBjb250ZW50IHRoYXQgYWxsb3cgaGRkdGVtcCB0b1xuIgogICIgICAgICAgICAgICAgICAgICAgICAgICByZWNvZ25pemUgc3VwcG9ydGVkIGRyaXZlcy5cbiIKICAiICAtRCAgIC0tZGVidWcgICAgICAgOiAgZGlzcGxheSB2YXJpb3VzIFMuTS5BLlIuVC4gZmllbGRzIGFuZCB0aGVpciB2YWx1ZXMuXG4iCi1AQCAtMTM4LDYgKzEwNyw3IEBACitAQCAtMTM4LDYgKzEwNyw3IEBAIG1zZ2lkICIiCiAgIiAgLWQgICAtLWRhZW1vbiAgICAgIDogIHJ1biBoZGR0ZW1wIGluIFRDUC9JUCBkYWVtb24gbW9kZSAocG9ydCAlZCBieSAiCiAgImRlZmF1bHQuKVxuIgogICIgIC1mICAgLS1maWxlPUZJTEUgICA6ICBzcGVjaWZ5IGRhdGFiYXNlIGZpbGUgdG8gdXNlLlxuIgpAQCAtMjI0LDcgKzIyOCw3IEBACiAgIiAgLWwgICAtLWxpc3Rlbj1hZGRyIDogIGxpc3RlbiBvbiBhIHNwZWNpZmljIGludGVyZmFjZSAoaW4gVENQL0lQIGRhZW1vbiAiCiAgIm1vZGUpLlxuIgogICIgIC1uICAgLS1udW1lcmljICAgICA6ICBwcmludCBvbmx5IHRoZSB0ZW1wZXJhdHVyZS5cbiIKLUBAIC0xNDUsNiArMTE1LDggQEAKK0BAIC0xNDUsNiArMTE1LDggQEAgbXNnaWQgIiIKICAiICAtcyAgIC0tc2VwYXJhdG9yPUMgOiAgc2VwYXJhdG9yIHRvIHVzZSBiZXR3ZWVuIGZpZWxkcyAoaW4gVENQL0lQIGRhZW1vbiAiCiAgIm1vZGUpLlxuIgogICIgIC1TICAgLS1zeXNsb2c9cyAgICA6ICBsb2cgdGVtcGVyYXR1cmUgdG8gc3lzbG9nIGV2ZXJ5IHMgc2Vjb25kcy5cbiIKQEAgLTIzMyw3ICsyMzcsNyBAQAogICIgIC1xICAgLS1xdWlldCAgICAgICA6ICBkbyBub3QgY2hlY2sgaWYgdGhlIGRyaXZlIGlzIHN1cHBvcnRlZC5cbiIKICAiICAtdiAgIC0tdmVyc2lvbiAgICAgOiAgZGlzcGxheSBoZGR0ZW1wIHZlcnNpb24gbnVtYmVyLlxuIgogICIgIC13ICAgLS13YWtlLXVwICAgICA6ICB3YWtlLXVwIHRoZSBkcml2ZSBpZiBuZWVkLlxuIgotQEAgLTE1MywxMSArMTI1LDE0IEBACitAQCAtMTUzLDExICsxMjUsMTQgQEAgbXNnaWQgIiIKICAiXG4iCiAgIlJlcG9ydCBidWdzIG9yIG5ldyBkcml2ZXMgdG8gPGhkZHRlbXBAZ3V6dS5uZXQ+LlxuIgogIG1zZ3N0ciAiIgpAQCAtMjQ5LDcgKzI1Myw3IEBACiAgIiAgLWIgICAtLWRyaXZlYmFzZSAgIDogIGFmZmljaGUgbGUgY29udGVudSBkdSBmaWNoaWVyIGRlIGJhc2UgZGUgZG9ubullICIKICAicXVpIFxuIgogICIgICAgICAgICAgICAgICAgICAgICAgICBwZXJtZXQg4CBoZGR0ZW1wIGRlIHJlY29ubmHudHJlIGxlcyBsZWN0ZXVycyAiCi1AQCAtMTcyLDYgKzE0Nyw3IEBACitAQCAtMTcyLDYgKzE0Nyw3IEBAIG1zZ3N0ciAiIgogICJk6WZhdXQpLlxuIgogICIgIC1mICAgLS1maWxlPUZJTEUgICA6ICBzcGVjaWZpZSBsZSBmaWNoaWVyIOAgdXRpbGlzZXIgY29tbWUgYmFzZSBkZSAiCiAgImRvbm7pZXMuXG4iCkBAIC0yNTcsNyArMjYxLDcgQEAKICAiICAtbCAgIC0tbGlzdGVuPWFkZHIgOiAg6WNvdXRlIHN1ciB1bmUgaW50ZXJmYWNlIHNw6WNpZmlxdWUgKGVuIG1vZGUgZOltb24gIgogICJUQ1AvSVApLlxuIgogICIgIC1uICAgLS1udW1lcmljICAgICA6ICBhZmZpY2hlIHNldWxlbWVudCBsYSB0ZW1w6XJhdHVyZS5cbiIKLUBAIC0xODAsNiArMTU2LDggQEAKK0BAIC0xODAsNiArMTU2LDggQEAgbXNnc3RyICIiCiAgImTpbW9uIFRDUC9JUCkuXG4iCiAgIiAgLVMgICAtLXN5c2xvZz1zICAgIDogIGVucmVnaXN0cmUgbGEgdGVtcOlyYXR1cmUgZGFucyBzeXNsb2cgdG91cyBsZXMgcyAiCiAgInNlY29uZGVzLlxuIgpAQCAtMjY2LDcgKzI3MCw3IEBACiAgIiAgLXEgICAtLXF1aWV0ICAgICAgIDogIG5lIHbpcmlmaWUgcGFzIHNpIGxlIGxlY3RldXIgZXN0IHN1cHBvcnTpLlxuIgogICIgIC12ICAgLS12ZXJzaW9uICAgICA6ICBhZmZpY2hlIGxhIHZlcnNpb24gZGUgaGRkdGVtcC5cbiIKICAiICAtdyAgIC0td2FrZS11cCAgICAgOiAgcul2ZWlsbGVyIGxlIGxlY3RldXIgc2kgbuljZXNzYWlyZS5cbiIKLUBAIC0xODgsNjIgKzE2Niw5NSBAQAorQEAgLTE4OCw2MiArMTY2LDk1IEBAIG1zZ3N0ciAiIgogICJcbiIKICAiUmVwb3J0IGJ1Z3Mgb3IgbmV3IGRyaXZlcyB0byA8aGRkdGVtcEBndXp1Lm5ldD4uXG4iCiAgCkBAIC0zNzcsNiArMzgxLDggQEAKICsKICsjfiBtc2dpZCAiZmllbGQoJWQpXHQgPSAlZFxuIgogKyN+IG1zZ3N0ciAiY2hhbXAoJWQpXHQgPSAlZFxuIgorSW5kZXg6IGhkZHRlbXAtMC4zLWJldGExNS9wby9ydS5wbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGhkZHRlbXAtMC4zLWJldGExNS5vcmlnL3BvL3J1LnBvCiArKysgaGRkdGVtcC0wLjMtYmV0YTE1L3BvL3J1LnBvCiBAQCAtNiw4ICs2LDggQEAKQEAgLTM5MCw3ICszOTYsNyBAQAogICJQTy1SZXZpc2lvbi1EYXRlOiAyMDAzLTAzLTA4IDE2OjQyKzAzMDBcbiIKICAiTGFzdC1UcmFuc2xhdG9yOiBNaWNoYWVsIFNoaWdvcmluIDxtaWtlQGFsdGxpbnV4LnJ1PlxuIgogICJMYW5ndWFnZS1UZWFtOiBSdXNzaWFuIDxydUBsaS5vcmc+XG4iCi1AQCAtMTUsMjMgKzE1LDcgQEAKK0BAIC0xNSwyMyArMTUsNyBAQCBtc2dzdHIgIiIKICAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PWtvaTgtclxuIgogICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiAgCkBAIC00MTUsNyArNDIxLDcgQEAKICAjLCBjLWZvcm1hdAogIG1zZ2lkICIiCiAgIlxuIgotQEAgLTQwLDcgKzI0LDcgQEAKK0BAIC00MCw3ICsyNCw3IEBAIG1zZ2lkICIiCiAgIlxuIgogIG1zZ3N0ciAiIgogIApAQCAtNDI0LDcgKzQzMCw3IEBACiAgIywgYy1mb3JtYXQKICBtc2dpZCAiIgogICJXQVJOSU5HOiBEcml2ZSAlcyBkb2Vzbid0IHNlZW0gdG8gaGF2ZSBhIHRlbXBlcmF0dXJlIHNlbnNvci5cbiIKLUBAIC01Myw3MiArMzcsNTkgQEAKK0BAIC01Myw3MiArMzcsNTkgQEAgbXNnc3RyICIiCiAgIvfu6e3h7unlOiDl08zJINfZINTP3s7PINrOwcXUxSwg3tTPIMTB1N7JyyDF09TYLCDOwdDJ28nUxSBoZGR0ZW1wQGd1enUubmV0XG4iCiAgIvfu6e3h7unlOiAo080uIM/Qw8nJIC0taGVscCwgLS1kZWJ1ZyDJIC0tZHJpdmViYXNlKS5cbiIKICAKQEAgLTUxMiw3ICs1MTgsNyBAQAogICIgIC1iICAgLS1kcml2ZWJhc2UgICA6ICBkaXNwbGF5IGRhdGFiYXNlIGZpbGUgY29udGVudCB0aGF0IGFsbG93IGhkZHRlbXAgdG9cbiIKICAiICAgICAgICAgICAgICAgICAgICAgICAgcmVjb2duaXplIHN1cHBvcnRlZCBkcml2ZXMuXG4iCiAgIiAgLUQgICAtLWRlYnVnICAgICAgIDogIGRpc3BsYXkgdmFyaW91cyBTLk0uQS5SLlQuIGZpZWxkcyBhbmQgdGhlaXIgdmFsdWVzLlxuIgotQEAgLTEyOCw2ICs5OSw3IEBACitAQCAtMTI4LDYgKzk5LDcgQEAgbXNnaWQgIiIKICAiICAtZCAgIC0tZGFlbW9uICAgICAgOiAgcnVuIGhkZHRlbXAgaW4gVENQL0lQIGRhZW1vbiBtb2RlIChwb3J0ICVkIGJ5ICIKICAiZGVmYXVsdC4pXG4iCiAgIiAgLWYgICAtLWZpbGU9RklMRSAgIDogIHNwZWNpZnkgZGF0YWJhc2UgZmlsZSB0byB1c2UuXG4iCkBAIC01MjAsNyArNTI2LDcgQEAKICAiICAtbCAgIC0tbGlzdGVuPWFkZHIgOiAgbGlzdGVuIG9uIGEgc3BlY2lmaWMgaW50ZXJmYWNlIChpbiBUQ1AvSVAgZGFlbW9uICIKICAibW9kZSkuXG4iCiAgIiAgLW4gICAtLW51bWVyaWMgICAgIDogIHByaW50IG9ubHkgdGhlIHRlbXBlcmF0dXJlLlxuIgotQEAgLTEzNSw2ICsxMDcsOCBAQAorQEAgLTEzNSw2ICsxMDcsOCBAQCBtc2dpZCAiIgogICIgIC1zICAgLS1zZXBhcmF0b3I9QyA6ICBzZXBhcmF0b3IgdG8gdXNlIGJldHdlZW4gZmllbGRzIChpbiBUQ1AvSVAgZGFlbW9uICIKICAibW9kZSkuXG4iCiAgIiAgLVMgICAtLXN5c2xvZz1zICAgIDogIGxvZyB0ZW1wZXJhdHVyZSB0byBzeXNsb2cgZXZlcnkgcyBzZWNvbmRzLlxuIgpAQCAtNTI5LDcgKzUzNSw3IEBACiAgIiAgLXEgICAtLXF1aWV0ICAgICAgIDogIGRvIG5vdCBjaGVjayBpZiB0aGUgZHJpdmUgaXMgc3VwcG9ydGVkLlxuIgogICIgIC12ICAgLS12ZXJzaW9uICAgICA6ICBkaXNwbGF5IGhkZHRlbXAgdmVyc2lvbiBudW1iZXIuXG4iCiAgIiAgLXcgICAtLXdha2UtdXAgICAgIDogIHdha2UtdXAgdGhlIGRyaXZlIGlmIG5lZWQuXG4iCi1AQCAtMTY4LDU5ICsxNDIsOTAgQEAKK0BAIC0xNjgsNTkgKzE0Miw5MCBAQCBtc2dzdHIgIiIKICAiXG4iCiAgIvPPz8Ldxc7J0SDPwiDP28nCy8HIIMkgxMHOztnFIMTM0SDEydPLz9cgz9TQ0sHXzNHK1MUgzsEgPGhkZHRlbXBAZ3V6dS5uZXQ+LlxuIgogIApAQCAtNjM2LDYgKzY0Miw4IEBACiArCiArI34gbXNnaWQgImZpZWxkKCVkKVx0ID0gJWRcbiIKICsjfiBtc2dzdHIgItDPzMUoJWQpXHQgPSAlZFxuIgorSW5kZXg6IGhkZHRlbXAtMC4zLWJldGExNS9wby9zdi5wbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGhkZHRlbXAtMC4zLWJldGExNS5vcmlnL3BvL3N2LnBvCiArKysgaGRkdGVtcC0wLjMtYmV0YTE1L3BvL3N2LnBvCiBAQCAtNiw4ICs2LDggQEAKQEAgLTY0OSw3ICs2NTcsNyBAQAogICJQTy1SZXZpc2lvbi1EYXRlOiAyMDA1LTExLTAyIDE5OjAzKzAxMDBcbiIKICAiTGFzdC1UcmFuc2xhdG9yOiBEYW5pZWwgTnlsYW5kZXIgPHBvQGRhbmllbG55bGFuZGVyLnNlPlxuIgogICJMYW5ndWFnZS1UZWFtOiBTd2VkaXNoIDxzdkBsaS5vcmc+XG4iCi1AQCAtMTcsMjMgKzE3LDcgQEAKK0BAIC0xNywyMyArMTcsNyBAQCBtc2dzdHIgIiIKICAiWC1Qb2VkaXQtTGFuZ3VhZ2U6IHN3ZVxuIgogICJYLVBvZWRpdC1Db3VudHJ5OiBzd2VcbiIKICAKQEAgLTY3NCw3ICs2ODIsNyBAQAogICMsIGMtZm9ybWF0CiAgbXNnaWQgIiIKICAiXG4iCi1AQCAtNDYsNyArMzAsNyBAQAorQEAgLTQ2LDcgKzMwLDcgQEAgbXNnc3RyICIiCiAgIk1vZGVsbDogJXNcbiIKICAiXG4iCiAgCkBAIC02ODMsNyArNjkxLDcgQEAKICAjLCBjLWZvcm1hdAogIG1zZ2lkICIiCiAgIldBUk5JTkc6IERyaXZlICVzIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGEgdGVtcGVyYXR1cmUgc2Vuc29yLlxuIgotQEAgLTYwLDc2ICs0NCw2MyBAQAorQEAgLTYwLDc2ICs0NCw2MyBAQCBtc2dzdHIgIiIKICAibmV0KS5cbiIKICAiVkFSTklORzogU2UgLS1oZWxwLCAtLWRlYnVnIG9jaCAtLWRyaXZlYmFzZSBmbGFnZ29ybmEuXG4iCiAgCkBAIC03NzcsNyArNzg1LDcgQEAKICAiICAtYiAgIC0tZHJpdmViYXNlICAgOiAgZGlzcGxheSBkYXRhYmFzZSBmaWxlIGNvbnRlbnQgdGhhdCBhbGxvdyBoZGR0ZW1wIHRvXG4iCiAgIiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29nbml6ZSBzdXBwb3J0ZWQgZHJpdmVzLlxuIgogICIgIC1EICAgLS1kZWJ1ZyAgICAgICA6ICBkaXNwbGF5IHZhcmlvdXMgUy5NLkEuUi5ULiBmaWVsZHMgYW5kIHRoZWlyIHZhbHVlcy5cbiIKLUBAIC0xMzksNiArMTEwLDcgQEAKK0BAIC0xMzksNiArMTEwLDcgQEAgbXNnaWQgIiIKICAiICAtZCAgIC0tZGFlbW9uICAgICAgOiAgcnVuIGhkZHRlbXAgaW4gVENQL0lQIGRhZW1vbiBtb2RlIChwb3J0ICVkIGJ5ICIKICAiZGVmYXVsdC4pXG4iCiAgIiAgLWYgICAtLWZpbGU9RklMRSAgIDogIHNwZWNpZnkgZGF0YWJhc2UgZmlsZSB0byB1c2UuXG4iCkBAIC03ODUsNyArNzkzLDcgQEAKICAiICAtbCAgIC0tbGlzdGVuPWFkZHIgOiAgbGlzdGVuIG9uIGEgc3BlY2lmaWMgaW50ZXJmYWNlIChpbiBUQ1AvSVAgZGFlbW9uICIKICAibW9kZSkuXG4iCiAgIiAgLW4gICAtLW51bWVyaWMgICAgIDogIHByaW50IG9ubHkgdGhlIHRlbXBlcmF0dXJlLlxuIgotQEAgLTE0Niw2ICsxMTgsOCBAQAorQEAgLTE0Niw2ICsxMTgsOCBAQCBtc2dpZCAiIgogICIgIC1zICAgLS1zZXBhcmF0b3I9QyA6ICBzZXBhcmF0b3IgdG8gdXNlIGJldHdlZW4gZmllbGRzIChpbiBUQ1AvSVAgZGFlbW9uICIKICAibW9kZSkuXG4iCiAgIiAgLVMgICAtLXN5c2xvZz1zICAgIDogIGxvZyB0ZW1wZXJhdHVyZSB0byBzeXNsb2cgZXZlcnkgcyBzZWNvbmRzLlxuIgpAQCAtNzk0LDcgKzgwMiw3IEBACiAgIiAgLXEgICAtLXF1aWV0ICAgICAgIDogIGRvIG5vdCBjaGVjayBpZiB0aGUgZHJpdmUgaXMgc3VwcG9ydGVkLlxuIgogICIgIC12ICAgLS12ZXJzaW9uICAgICA6ICBkaXNwbGF5IGhkZHRlbXAgdmVyc2lvbiBudW1iZXIuXG4iCiAgIiAgLXcgICAtLXdha2UtdXAgICAgIDogIHdha2UtdXAgdGhlIGRyaXZlIGlmIG5lZWQuXG4iCi1AQCAtMTg0LDYxICsxNTgsOTEgQEAKK0BAIC0xODQsNjEgKzE1OCw5MSBAQCBtc2dzdHIgIiIKICAiXG4iCiAgIlJhcHBvcnRlcmEgYnVnZ2FyIGVsbGVyIG55YSBo5XJkZGlza2FyIHRpbGwgPGhkZHRlbXBAZ3V6dS5uZXQ+LlxuIgogIApAQCAtOTAxLDkgKzkwOSwxMSBAQAogKwogKyN+IG1zZ2lkICJmaWVsZCglZClcdCA9ICVkXG4iCiArI34gbXNnc3RyICJm5Gx0KCVkKVx0ID0gJWRcbiIKK0luZGV4OiBoZGR0ZW1wLTAuMy1iZXRhMTUvcG8vcHQucG8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBoZGR0ZW1wLTAuMy1iZXRhMTUub3JpZy9wby9wdC5wbwogKysrIGhkZHRlbXAtMC4zLWJldGExNS9wby9wdC5wbwotQEAgLTcsNyArNyw3IEBACitAQCAtNyw3ICs3LDcgQEAgbXNnaWQgIiIKICBtc2dzdHIgIiIKICAiUHJvamVjdC1JZC1WZXJzaW9uOiBoZGR0ZW1wIDAuMy1iZXRhMTRcbiIKICAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgpAQCAtOTEyLDcgKzkyMiw3IEBACiAgIlBPLVJldmlzaW9uLURhdGU6IDIwMDYtMDMtMjkgMjM6MjIrMDAwMFxuIgogICJMYXN0LVRyYW5zbGF0b3I6IE1pZ3VlbCBGaWd1ZWlyZWRvIDxlbG1pZ0BkZWJpYW5wLm9yZz5cbiIKICAiTGFuZ3VhZ2UtVGVhbTogUG9ydHVndWVzZSA8dHJhZHV6QGRlYmlhbnB0Lm9yZz5cbiIKLUBAIC0xNSwyMyArMTUsNyBAQAorQEAgLTE1LDIzICsxNSw3IEBAIG1zZ3N0ciAiIgogICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLThcbiIKICAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgogIApAQCAtOTM3LDcgKzk0Nyw3IEBACiAgIywgYy1mb3JtYXQKICBtc2dpZCAiIgogICJcbiIKLUBAIC00NCw3ICsyOCw3IEBACitAQCAtNDQsNyArMjgsNyBAQCBtc2dzdHIgIiIKICAiTW9kZWxvOiAlc1xuIgogICJcbiIKICAKQEAgLTk0Niw3ICs5NTYsNyBAQAogICMsIGMtZm9ybWF0CiAgbXNnaWQgIiIKICAiV0FSTklORzogRHJpdmUgJXMgZG9lc24ndCBzZWVtIHRvIGhhdmUgYSB0ZW1wZXJhdHVyZSBzZW5zb3IuXG4iCi1AQCAtNTQsNzkgKzM4LDY4IEBACitAQCAtNTQsNzkgKzM4LDY4IEBAIG1zZ2lkICIiCiAgbXNnc3RyICIiCiAgIkFWSVNPOiBPIGRpc2NvICVzIG7Do28gcGFyZWNlIHRlciB1bSBzZW5zb3IgZGUgdGVtcGVyYXR1cmEuXG4iCiAgIkFWSVNPOiBJc3RvIG7Do28gc2lnbmlmaWNhIHF1ZSBuw6NvIHRlbSBuZW5odW0uXG4iCkBAIC0xMDQ3LDcgKzEwNTcsNyBAQAogICIgIC1iICAgLS1kcml2ZWJhc2UgICA6ICBkaXNwbGF5IGRhdGFiYXNlIGZpbGUgY29udGVudCB0aGF0IGFsbG93IGhkZHRlbXAgdG9cbiIKICAiICAgICAgICAgICAgICAgICAgICAgICAgcmVjb2duaXplIHN1cHBvcnRlZCBkcml2ZXMuXG4iCiAgIiAgLUQgICAtLWRlYnVnICAgICAgIDogIGRpc3BsYXkgdmFyaW91cyBTLk0uQS5SLlQuIGZpZWxkcyBhbmQgdGhlaXIgdmFsdWVzLlxuIgotQEAgLTEzNiw2ICsxMDksNyBAQAorQEAgLTEzNiw2ICsxMDksNyBAQCBtc2dpZCAiIgogICIgIC1kICAgLS1kYWVtb24gICAgICA6ICBydW4gaGRkdGVtcCBpbiBUQ1AvSVAgZGFlbW9uIG1vZGUgKHBvcnQgJWQgYnkgIgogICJkZWZhdWx0LilcbiIKICAiICAtZiAgIC0tZmlsZT1GSUxFICAgOiAgc3BlY2lmeSBkYXRhYmFzZSBmaWxlIHRvIHVzZS5cbiIKQEAgLTEwNTUsNyArMTA2NSw3IEBACiAgIiAgLWwgICAtLWxpc3Rlbj1hZGRyIDogIGxpc3RlbiBvbiBhIHNwZWNpZmljIGludGVyZmFjZSAoaW4gVENQL0lQIGRhZW1vbiAiCiAgIm1vZGUpLlxuIgogICIgIC1uICAgLS1udW1lcmljICAgICA6ICBwcmludCBvbmx5IHRoZSB0ZW1wZXJhdHVyZS5cbiIKLUBAIC0xNDMsNiArMTE3LDggQEAKK0BAIC0xNDMsNiArMTE3LDggQEAgbXNnaWQgIiIKICAiICAtcyAgIC0tc2VwYXJhdG9yPUMgOiAgc2VwYXJhdG9yIHRvIHVzZSBiZXR3ZWVuIGZpZWxkcyAoaW4gVENQL0lQIGRhZW1vbiAiCiAgIm1vZGUpLlxuIgogICIgIC1TICAgLS1zeXNsb2c9cyAgICA6ICBsb2cgdGVtcGVyYXR1cmUgdG8gc3lzbG9nIGV2ZXJ5IHMgc2Vjb25kcy5cbiIKQEAgLTEwNjQsNyArMTA3NCw3IEBACiAgIiAgLXEgICAtLXF1aWV0ICAgICAgIDogIGRvIG5vdCBjaGVjayBpZiB0aGUgZHJpdmUgaXMgc3VwcG9ydGVkLlxuIgogICIgIC12ICAgLS12ZXJzaW9uICAgICA6ICBkaXNwbGF5IGhkZHRlbXAgdmVyc2lvbiBudW1iZXIuXG4iCiAgIiAgLXcgICAtLXdha2UtdXAgICAgIDogIHdha2UtdXAgdGhlIGRyaXZlIGlmIG5lZWQuXG4iCi1AQCAtMTU2LDE5ICsxMzIsMjMgQEAKK0BAIC0xNTYsMTkgKzEzMiwyMyBAQCBtc2dzdHIgIiIKICAiICAgaGRkdGVtcCBtb3N0cmEgYSB0ZW1wZXJhdHVyYSBkb3MgZGlzY29zIGluZGljYWRvcyBubyBhcmd1bWVudG8uXG4iCiAgIiAgIE9zIGRpc2NvcyB0w6ptIGRlIHN1cG9ydGFyIFMuTS5BLlIuVC5cbiIKICAiXG4iCkBAIC0xMDk2LDcgKzExMDYsNyBAQAogICIgIC1xICAgLS1xdWlldCAgICAgICA6ICBuw6NvIHZlcmlmaWNhciBzZSBvIGRpc2NvIMOpIHN1cG9ydGFkby5cbiIKICAiICAtdiAgIC0tdmVyc2lvbiAgICAgOiAgbW9zdHJhciBvIG7Dum1lcm8gZGEgdmVyc8OjbyBkbyBoZGR0ZW1wLlxuIgogICIgIC13ICAgLS13YWtlLXVwICAgICA6ICBhY29yZGFyIG8gZGlzY28gc2UgbmVjZXNzw6FyaW8uXG4iCi1AQCAtMTc3LDU4ICsxNTcsOTMgQEAKK0BAIC0xNzcsNTggKzE1Nyw5MyBAQCBtc2dzdHIgIiIKICAiXG4iCiAgIlJlbGF0YXIgYnVncyBvdSBub3ZvcyBkaXNjb3MgcGFyYSA8aGRkdGVtcEBndXp1Lm5ldD4uXG4iCiAgCkBAIC0xMjA4LDcgKzEyMTgsOSBAQAogKwogKyN+IG1zZ2lkICJmaWVsZCglZClcdCA9ICVkXG4iCiArI34gbXNnc3RyICJjYW1wbyglZClcdCA9ICVkXG4iCi0tLS0gaGRkdGVtcC0wLjMtYmV0YTE1Lm9yaWcvcG8vZGUucG8KK0luZGV4OiBoZGR0ZW1wLTAuMy1iZXRhMTUvcG8vZGUucG8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwKICsrKyBoZGR0ZW1wLTAuMy1iZXRhMTUvcG8vZGUucG8KIEBAIC0wLDAgKzEsMjUwIEBACiArIyBHZXJtYW4gdHJhbnNsYXRpb24gb2YgaGRkdGVtcC4KQEAgLTE0NjEsMTIgKzE0NzMsMTYgQEAKICsjLCBjLWZvcm1hdAogK21zZ2lkICJsb2cgc2Vuc2UgZmFpbGVkIDogJXMiCiArbXNnc3RyICJQcm90b2tvbGwtRXJrZW5udW5nIGZlaGxnZXNjaGxhZ2VuIDogJXMiCitJbmRleDogaGRkdGVtcC0wLjMtYmV0YTE1L3BvL0xJTkdVQVMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBoZGR0ZW1wLTAuMy1iZXRhMTUub3JpZy9wby9MSU5HVUFTCiArKysgaGRkdGVtcC0wLjMtYmV0YTE1L3BvL0xJTkdVQVMKIEBAIC0xLDIgKzEsMiBAQAogICMgU2V0IG9mIGF2YWlsYWJsZSBsYW5ndWFnZXMuCiAtZnIgcHQgcnUgc3YgCiArZGUgZnIgcHQgcnUgc3YgCitJbmRleDogaGRkdGVtcC0wLjMtYmV0YTE1L3BvL2hkZHRlbXAucG90Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gaGRkdGVtcC0wLjMtYmV0YTE1Lm9yaWcvcG8vaGRkdGVtcC5wb3QKICsrKyBoZGR0ZW1wLTAuMy1iZXRhMTUvcG8vaGRkdGVtcC5wb3QKIEBAIC0xLDM1ICsxLDIyIEBACkBAIC0xNTEzLDcgKzE1MjksNyBAQAogICMsIGMtZm9ybWF0CiAgbXNnaWQgIiIKICAiXG4iCi1AQCAtMzgsNyArMjUsNyBAQAorQEAgLTM4LDcgKzI1LDcgQEAgbXNnaWQgIiIKICAiXG4iCiAgbXNnc3RyICIiCiAgCkBAIC0xNTIyLDcgKzE1MzgsNyBAQAogICMsIGMtZm9ybWF0CiAgbXNnaWQgIiIKICAiV0FSTklORzogRHJpdmUgJXMgZG9lc24ndCBzZWVtIHRvIGhhdmUgYSB0ZW1wZXJhdHVyZSBzZW5zb3IuXG4iCi1AQCAtNDcsNjcgKzM0LDU5IEBACitAQCAtNDcsNjcgKzM0LDU5IEBAIG1zZ2lkICIiCiAgIldBUk5JTkc6IFNlZSAtLWhlbHAsIC0tZGVidWcgYW5kIC0tZHJpdmViYXNlIG9wdGlvbnMuXG4iCiAgbXNnc3RyICIiCiAgCkBAIC0xNjA0LDcgKzE2MjAsNyBAQAogICIgIC1iICAgLS1kcml2ZWJhc2UgICA6ICBkaXNwbGF5IGRhdGFiYXNlIGZpbGUgY29udGVudCB0aGF0IGFsbG93IGhkZHRlbXAgdG9cbiIKICAiICAgICAgICAgICAgICAgICAgICAgICAgcmVjb2duaXplIHN1cHBvcnRlZCBkcml2ZXMuXG4iCiAgIiAgLUQgICAtLWRlYnVnICAgICAgIDogIGRpc3BsYXkgdmFyaW91cyBTLk0uQS5SLlQuIGZpZWxkcyBhbmQgdGhlaXIgdmFsdWVzLlxuIgotQEAgLTExNyw2ICs5Niw3IEBACitAQCAtMTE3LDYgKzk2LDcgQEAgbXNnaWQgIiIKICAiICAtZCAgIC0tZGFlbW9uICAgICAgOiAgcnVuIGhkZHRlbXAgaW4gVENQL0lQIGRhZW1vbiBtb2RlIChwb3J0ICVkIGJ5ICIKICAiZGVmYXVsdC4pXG4iCiAgIiAgLWYgICAtLWZpbGU9RklMRSAgIDogIHNwZWNpZnkgZGF0YWJhc2UgZmlsZSB0byB1c2UuXG4iCkBAIC0xNjEyLDcgKzE2MjgsNyBAQAogICIgIC1sICAgLS1saXN0ZW49YWRkciA6ICBsaXN0ZW4gb24gYSBzcGVjaWZpYyBpbnRlcmZhY2UgKGluIFRDUC9JUCBkYWVtb24gIgogICJtb2RlKS5cbiIKICAiICAtbiAgIC0tbnVtZXJpYyAgICAgOiAgcHJpbnQgb25seSB0aGUgdGVtcGVyYXR1cmUuXG4iCi1AQCAtMTI0LDYgKzEwNCw4IEBACitAQCAtMTI0LDYgKzEwNCw4IEBAIG1zZ2lkICIiCiAgIiAgLXMgICAtLXNlcGFyYXRvcj1DIDogIHNlcGFyYXRvciB0byB1c2UgYmV0d2VlbiBmaWVsZHMgKGluIFRDUC9JUCBkYWVtb24gIgogICJtb2RlKS5cbiIKICAiICAtUyAgIC0tc3lzbG9nPXMgICAgOiAgbG9nIHRlbXBlcmF0dXJlIHRvIHN5c2xvZyBldmVyeSBzIHNlY29uZHMuXG4iCkBAIC0xNjIxLDcgKzE2MzcsNyBAQAogICIgIC1xICAgLS1xdWlldCAgICAgICA6ICBkbyBub3QgY2hlY2sgaWYgdGhlIGRyaXZlIGlzIHN1cHBvcnRlZC5cbiIKICAiICAtdiAgIC0tdmVyc2lvbiAgICAgOiAgZGlzcGxheSBoZGR0ZW1wIHZlcnNpb24gbnVtYmVyLlxuIgogICIgIC13ICAgLS13YWtlLXVwICAgICA6ICB3YWtlLXVwIHRoZSBkcml2ZSBpZiBuZWVkLlxuIgotQEAgLTEzMyw1OCArMTE1LDY5IEBACitAQCAtMTMzLDU4ICsxMTUsNjkgQEAgbXNnaWQgIiIKICAiUmVwb3J0IGJ1Z3Mgb3IgbmV3IGRyaXZlcyB0byA8aGRkdGVtcEBndXp1Lm5ldD4uXG4iCiAgbXNnc3RyICIiCiAgCkBAIC0xNzA1LDkgKzE3MjEsMTEgQEAKICAjLCBjLWZvcm1hdAogIG1zZ2lkICJsb2cgc2Vuc2UgZmFpbGVkIDogJXMiCiAgbXNnc3RyICIiCitJbmRleDogaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9zYXRhLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBoZGR0ZW1wLTAuMy1iZXRhMTUub3JpZy9zcmMvc2F0YS5jCiArKysgaGRkdGVtcC0wLjMtYmV0YTE1L3NyYy9zYXRhLmMKLUBAIC0xMTgsMTEgKzExOCwyMiBAQAorQEAgLTExOCwxMSArMTE4LDIyIEBAIHN0YXRpYyBlbnVtIGVfZ2V0dGVtcCBzYXRhX2dldF90ZW1wZXJhdHUKICAgIGludCAgICAgICAgICAgICAgaTsKICAgIHUxNiAqICAgICAgICAgICAgcDsKICAKQEAgLTE3MzEsNyArMTc0OSw3IEBACiAgICAKICAgIC8qIGdldCBTTUFSVCB2YWx1ZXMgKi8KICAgIGlmKHNhdGFfZW5hYmxlX3NtYXJ0KGRzay0+ZmQpICE9IDApIHsKLUBAIC0xNTQsMjQgKzE2NSwxNSBAQAorQEAgLTE1NCwyNCArMTY1LDE1IEBAIHN0YXRpYyBlbnVtIGVfZ2V0dGVtcCBzYXRhX2dldF90ZW1wZXJhdHUKICAgIH0KICAKICAgIC8qIHRlbXBlcmF0dXJlICovCkBAIC0xNzU5LDYgKzE3NzcsOCBAQAogIAogICAgLyogbmV2ZXIgcmVhY2hlZCAqLwogIH0KK0luZGV4OiBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL3NhdGFjbWRzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBoZGR0ZW1wLTAuMy1iZXRhMTUub3JpZy9zcmMvc2F0YWNtZHMuYwogKysrIGhkZHRlbXAtMC4zLWJldGExNS9zcmMvc2F0YWNtZHMuYwogQEAgLTM5LDcgKzM5LDcgQEAKQEAgLTE3NzAsNyArMTc5MCw3IEBACiAgCiAgLy8gQXBwbGljYXRpb24gc3BlY2lmaWMgaW5jbHVkZXMKICAjaW5jbHVkZSAic2F0YWNtZHMuaCIKLUBAIC04MCw4ICs4MCw4IEBACitAQCAtODAsOCArODAsOCBAQCBpbnQgc2F0YV9wYXNzX3RocnUoaW50IGRldmljZSwgdW5zaWduZWQKICAKICAgIHJldCA9IHNjc2lfU0dfSU8oZGV2aWNlLCBjZGIsIHNpemVvZihjZGIpLCBidWZmZXIsIGNtZFszXSAqIDUxMiwgc2Vuc2UsIHNpemVvZihzZW5zZSksIGR4ZmVyX2RpcmVjdGlvbik7CiAgIApAQCAtMTc4MSw3ICsxODAxLDcgQEAKICAgICAgcmV0dXJuIDE7CQkgIAogICAgZWxzZSAKICAgICAgcmV0dXJuIHJldDsKLUBAIC05NSwxMCArOTUsMTAgQEAKK0BAIC05NSwxMCArOTUsMTAgQEAgdm9pZCBzYXRhX2ZpeHN0cmluZyh1bnNpZ25lZCBjaGFyICpzLCBpbgogICAgcCA9IHM7CiAgICBlbmQgPSAmc1tieXRlY291bnQgJiB+MV07IC8qIGJ5dGVjb3VudCBtdXN0IGJlIGV2ZW4gKi8KICAKQEAgLTE3OTQsNiArMTgxNCw4IEBACiAgICB9CiAgCiAgICAvKiBzdHJpcCBsZWFkaW5nIGJsYW5rcyAqLworSW5kZXg6IGhkZHRlbXAtMC4zLWJldGExNS9zcmMvYmFja3RyYWNlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBoZGR0ZW1wLTAuMy1iZXRhMTUub3JpZy9zcmMvYmFja3RyYWNlLmMKICsrKyBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL2JhY2t0cmFjZS5jCiBAQCAtMTYsOSArMTYsMTAgQEAKQEAgLTE4MjIsNyArMTg0NCw3IEBACiAgCiAgI2RlZmluZSBNQVhfQlRTSVpFIDY0CiAgCi1AQCAtNDIsNyArNDcsNiBAQAorQEAgLTQyLDcgKzQ3LDYgQEAgdm9pZCBiYWNrdHJhY2VfaGFuZGxlcihpbnQgbiwgc2lnaW5mb190CiAgICBzdGF0aWMgY2hhciAqKm1lc3NhZ2VzID0gTlVMTDsKICAgIHN0YXRpYyBzaXplX3QgYnRzaXplID0gMDsKICAgIHN0YXRpYyBzaXplX3QgaTsKQEAgLTE4MzAsNyArMTg1Miw3IEBACiAgICBzdGF0aWMgY2hhciAqc3RyZXJyID0gIj8/PyI7CiAgICBzdGF0aWMgRklMRSAqZnN0cm07CiAgCi1AQCAtNjEsMTAgKzY1LDEwIEBACitAQCAtNjEsMTAgKzY1LDEwIEBAIHZvaWQgYmFja3RyYWNlX2hhbmRsZXIoaW50IG4sIHNpZ2luZm9fdAogICAgICAgIFNJQ19DQVNFKFNFR1ZfTUFQRVJSKTsKICAgICAgICBTSUNfQ0FTRShTRUdWX0FDQ0VSUik7CiAgICAgIH0KQEAgLTE4NDMsNyArMTg2NSw3IEBACiAgICAgIGJyZWFrOwogICAgY2FzZSBTSUdJTEw6CiAgICAgIHN3aXRjaChpc3QtPnNpX2NvZGUpIHsKLUBAIC03NywxMCArODEsMTAgQEAKK0BAIC03NywxMCArODEsMTAgQEAgdm9pZCBiYWNrdHJhY2VfaGFuZGxlcihpbnQgbiwgc2lnaW5mb190CiAgICAgICAgU0lDX0NBU0UoSUxMX0NPUFJPQyk7CiAgICAgICAgU0lDX0NBU0UoSUxMX0JBRFNUSyk7CiAgICAgIH0KQEAgLTE4NTYsNyArMTg3OCw3IEBACiAgICAgIGJyZWFrOwogICAgY2FzZSBTSUdCVVM6CiAgICAgIHN3aXRjaChpc3QtPnNpX2NvZGUpIHsKLUBAIC04OCwxMCArOTIsMTAgQEAKK0BAIC04OCwxMCArOTIsMTAgQEAgdm9pZCBiYWNrdHJhY2VfaGFuZGxlcihpbnQgbiwgc2lnaW5mb190CiAgICAgICAgU0lDX0NBU0UoQlVTX0FEUkVSUik7CiAgICAgICAgU0lDX0NBU0UoQlVTX09CSkVSUik7CiAgICAgIH0KQEAgLTE4NjksNyArMTg5MSw3IEBACiAgICAgIGJyZWFrOwogICAgfQogICAgZmZsdXNoKGZzdHJtKTsKLUBAIC0xMDEsNyArMTA1LDcgQEAKK0BAIC0xMDEsNyArMTA1LDcgQEAgdm9pZCBiYWNrdHJhY2VfaGFuZGxlcihpbnQgbiwgc2lnaW5mb190CiAgICAvKgogICAgICBvbGRfZWlwID0gKih1bnNpZ25lZCBpbnQqKSgodm9pZCopJm4tNCk7CiAgICAgIG9sZF9lYnAgPSAqKHVuc2lnbmVkIGludCopKCh2b2lkKikmbi04KTsKQEAgLTE4NzgsNyArMTkwMCw3IEBACiAgICAgICoodW5zaWduZWQgaW50KikoKHZvaWQqKSZuLTgpID0gcHVjLT51Y19tY29udGV4dC5ncmVnc1tSRUdfRUJQXTsgICAgCiAgICAgIAogICAgICBidHNpemUgPSBiYWNrdHJhY2UoYnRpbmZvLCBNQVhfQlRTSVpFKTsKLUBAIC0xMTEsMTQgKzExNSwxNCBAQAorQEAgLTExMSwxNCArMTE1LDE0IEBAIHZvaWQgYmFja3RyYWNlX2hhbmRsZXIoaW50IG4sIHNpZ2luZm9fdAogICAgKi8KICAgIAogICAgYnRzaXplID0gYmFja3RyYWNlKGJ0aW5mbywgTUFYX0JUU0laRSk7CkBAIC0xODk1LDkgKzE5MTcsMTEgQEAKICAgIGZmbHVzaChmc3RybSk7CiAgICBmY2xvc2UoZnN0cm0pOwogIAorSW5kZXg6IGhkZHRlbXAtMC4zLWJldGExNS9zcmMvZGFlbW9uLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBoZGR0ZW1wLTAuMy1iZXRhMTUub3JpZy9zcmMvZGFlbW9uLmMKICsrKyBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL2RhZW1vbi5jCi1AQCAtMTYzLDE5ICsxNjMsMTYgQEAKK0BAIC0xNjMsMTkgKzE2MywxNiBAQCB2b2lkIGRhZW1vbl9zZW5kX21zZyhzdHJ1Y3QgZGlzayAqbGRpc2tzCiAgCiAgICAgIHN3aXRjaChkc2stPnJldCkgewogICAgICBjYXNlIEdFVFRFTVBfTk9UX0FQUExJQ0FCTEU6CkBAIC0xOTIyLDcgKzE5NDYsNyBAQAogICAgICAgIGJyZWFrOwogICAgICBjYXNlIEdFVFRFTVBfS05PV046CiAgICAgICAgbiA9IHNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyksICIlcyVjJXMlYyVkJWMlYyIsCi1AQCAtMTg1LDI2ICsxODIsMjMgQEAKK0BAIC0xODUsMjYgKzE4MiwyMyBAQCB2b2lkIGRhZW1vbl9zZW5kX21zZyhzdHJ1Y3QgZGlzayAqbGRpc2tzCiAgICAgICAgICAgICAgICAgICAgIGdldF91bml0KGRzaykpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIEdFVFRFTVBfTk9TRU5TT1I6CkBAIC0xOTU1LDcgKzE5NzksNyBAQAogICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIHdyaXRlKGNmZCwmc2VwYXJhdG9yLCAxKTsKLUBAIC0yMjIsMTQgKzIxNiwxMSBAQAorQEAgLTIyMiwxNCArMjE2LDExIEBAIHZvaWQgZGFlbW9uX3N5c2xvZyhzdHJ1Y3QgZGlzayAqbGRpc2tzKQogICAgZm9yKGRzayA9IGxkaXNrczsgZHNrOyBkc2sgPSBkc2stPm5leHQpIHsKICAgICAgc3dpdGNoKGRzay0+cmV0KSB7CiAgICAgIGNhc2UgR0VUVEVNUF9LTk9XTjoKQEAgLTE5NzIsNyArMTk5Niw3IEBACiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgR0VUVEVNUF9EUklWRV9TTEVFUDoKICAgICAgICBzeXNsb2coTE9HX1dBUk5JTkcsIF8oIiVzOiAlczogZHJpdmUgaXMgc2xlZXBpbmciKSwgCi1AQCAtMjcwLDI4ICsyNjEsMzAgQEAKK0BAIC0yNzAsMjggKzI2MSwzMCBAQCB2b2lkIGRvX2RhZW1vbl9tb2RlKHN0cnVjdCBkaXNrICpsZGlza3MpCiAgICBmZF9zZXQgICAgICAgICAgICAgZGVmZmRzOwogICAgdGltZV90ICAgICAgICAgICAgIG5leHRfdGltZTsKICAKQEAgLTIwMjUsOSArMjA0OSwxMSBAQAogICAgfQogICAgY2hkaXIoIi8iKTsKICAgIHVtYXNrKDApOworSW5kZXg6IGhkZHRlbXAtMC4zLWJldGExNS9zcmMvaGRkdGVtcC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gaGRkdGVtcC0wLjMtYmV0YTE1Lm9yaWcvc3JjL2hkZHRlbXAuYwogKysrIGhkZHRlbXAtMC4zLWJldGExNS9zcmMvaGRkdGVtcC5jCi1AQCAtNzUsNyArNzUsNyBAQAorQEAgLTc1LDcgKzc1LDcgQEAgY2hhciAqICAgICAgICAgICAgIGxpc3Rlbl9hZGRyOwogIGNoYXIgICAgICAgICAgICAgICBzZXBhcmF0b3IgPSBTRVBBUkFUT1I7CiAgCiAgc3RydWN0IGJ1c3R5cGUgKiAgIGJ1c1tCVVNfVFlQRV9NQVhdOwpAQCAtMjAzNiw3ICsyMDYyLDcgQEAKICAKICBzdGF0aWMgZW51bSB7IERFRkFVTFQsIENFTFNJVVMsIEZBSFJFTkhFSVQgfSB1bml0OwogIAotQEAgLTE5NCwyMyArMTk0LDcgQEAKK0BAIC0xOTQsMjMgKzE5NCw3IEBAIHN0YXRpYyB2b2lkIGRpc3BsYXlfdGVtcGVyYXR1cmUoc3RydWN0IGQKICAgICAgaWYgKG51bWVyaWMgJiYgcXVpZXQpCiAgICAgICAgcHJpbnRmKCIwXG4iKTsgICAgICAKICAgICAgZWxzZQpAQCAtMjA2MSw3ICsyMDg3LDcgQEAKICAKICAgICAgYnJlYWs7CiAgICBjYXNlIEdFVFRFTVBfS05PV046Ci1AQCAtMjMyLDE0ICsyMTYsMTQgQEAKK0BAIC0yMzIsMTQgKzIxNiwxNCBAQCBzdGF0aWMgdm9pZCBkaXNwbGF5X3RlbXBlcmF0dXJlKHN0cnVjdCBkCiAgICAgIGlmIChudW1lcmljICYmIHF1aWV0KQogICAgICAgIHByaW50ZigiMFxuIik7ICAgICAgCiAgICAgIGVsc2UKQEAgLTIwNzgsNyArMjEwNCw3IEBACiAgICAgICAgCiAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKLUBAIC0yNjgsOCArMjUyLDkgQEAKK0BAIC0yNjgsOCArMjUyLDkgQEAgdm9pZCBkb19kaXJlY3RfbW9kZShzdHJ1Y3QgZGlzayAqbGRpc2tzKQogIAogIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgIGludCAgICAgICAgICAgaSwgYywgbGluZGV4ID0gMCwgZGJfbG9hZGVkID0gMDsKQEAgLTIwODksMTYgKzIxMTUsMTYgQEAKICAKICAgIGJhY2t0cmFjZV9zaWdzZWd2KCk7CiAgICBiYWNrdHJhY2Vfc2lnaWxsKCk7Ci1AQCAtMjc5LDcgKzI2NCw3IEBACi0gICBiaW5kdGV4dGRvbWFpbiAoUEFDS0FHRSwgTE9DQUxFRElSKTsKK0BAIC0yODMsNyArMjY4LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICAgdGV4dGRvbWFpbiAoUEFDS0FHRSk7CisgI2VuZGlmCiAgICAKIC0gIHNob3dfZGIgPSBkZWJ1ZyA9IG51bWVyaWMgPSBxdWlldCA9IHdha2V1cCA9IGFmX2hpbnQgPSBzeXNsb2dfaW50ZXJ2YWwgPSAwOwogKyAgc2hvd19kYiA9IGRlYnVnID0gbnVtZXJpYyA9IHF1aWV0ID0gd2FrZXVwID0gYWZfaGludCA9IHN5c2xvZ19pbnRlcnZhbCA9IGZvcmVncm91bmQgPSAwOwogICAgdW5pdCA9IERFRkFVTFQ7CiAgICBwb3J0bnVtID0gUE9SVF9OVU1CRVI7CiAgICBsaXN0ZW5fYWRkciA9IE5VTEw7Ci1AQCAtMjk0LDYgKzI3OSw3IEBACitAQCAtMjk4LDYgKzI4Myw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgICAgICB7ImRyaXZlYmFzZSIsICAwLCBOVUxMLCAnYid9LAogICAgICAgIHsiZGVidWciLCAgICAgIDAsIE5VTEwsICdEJ30sCiAgICAgICAgeyJmaWxlIiwgICAgICAgMSwgTlVMTCwgJ2YnfSwKQEAgLTIxMDYsNyArMjEzMiw3IEBACiAgICAgICAgeyJsaXN0ZW4iLCAgICAgMSwgTlVMTCwgJ2wnfSwKICAgICAgICB7InZlcnNpb24iLCAgICAwLCBOVUxMLCAndid9LAogICAgICAgIHsicG9ydCIsICAgICAgIDEsIE5VTEwsICdwJ30sCi1AQCAtMzA1LDcgKzI5MSw3IEBACitAQCAtMzA5LDcgKzI5NSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAgICAgICB7MCwgMCwgMCwgMH0KICAgICAgfTsKICAgCkBAIC0yMTE1LDcgKzIxNDEsNyBAQAogICAgICBpZiAoYyA9PSAtMSkKICAgICAgICBicmVhazsKICAgICAgCi1AQCAtMzgyLDEyICszNjgsMTMgQEAKK0BAIC0zODYsMTIgKzM3MiwxMyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgCQkgIiAgICAgICAgICAgICAgICAgICAgICAgIChkb25lIGZvciBldmVyeSBkcml2ZSBzdXBwbGllZCkuXG4iCiAgCQkgIiAgLWQgICAtLWRhZW1vbiAgICAgIDogIHJ1biBoZGR0ZW1wIGluIFRDUC9JUCBkYWVtb24gbW9kZSAocG9ydCAlZCBieSBkZWZhdWx0LilcbiIKICAJCSAiICAtZiAgIC0tZmlsZT1GSUxFICAgOiAgc3BlY2lmeSBkYXRhYmFzZSBmaWxlIHRvIHVzZS5cbiIKQEAgLTIxMzAsNyArMjE1Niw3IEBACiAgCQkgIiAgLXEgICAtLXF1aWV0ICAgICAgIDogIGRvIG5vdCBjaGVjayBpZiB0aGUgZHJpdmUgaXMgc3VwcG9ydGVkLlxuIgogIAkJICIgIC12ICAgLS12ZXJzaW9uICAgICA6ICBkaXNwbGF5IGhkZHRlbXAgdmVyc2lvbiBudW1iZXIuXG4iCiAgCQkgIiAgLXcgICAtLXdha2UtdXAgICAgIDogIHdha2UtdXAgdGhlIGRyaXZlIGlmIG5lZWQuXG4iCi1AQCAtNDE4LDYgKzQwNSw5IEBACitAQCAtNDIyLDYgKzQwOSw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAJICB9CiAgICAgICAgICB9CiAgCWJyZWFrOwpAQCAtMjE0MCw3ICsyMTY2LDcgQEAKICAgICAgICBkZWZhdWx0OgogIAlleGl0KDEpOwogICAgICAgIH0KLUBAIC00ODksNiArNDc5LDcgQEAKK0BAIC00OTMsNiArNDgzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogICAgICBpZiggKGRzay0+ZmQgPSBvcGVuKGRzay0+ZHJpdmUsIE9fUkRPTkxZIHwgT19OT05CTE9DSykpIDwgMCkgewogICAgICAgIHNucHJpbnRmKGRzay0+ZXJyb3Jtc2csIE1BWF9FUlJPUk1TR19TSVpFLCAib3BlbjogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgZHNrLT50eXBlID0gRVJST1I7CkBAIC0yMTQ4LDcgKzIxNzQsNyBAQAogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgCi1AQCAtNTAxLDYgKzQ5Miw3IEBACitAQCAtNTA1LDYgKzQ5Niw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKICAKICAgICAgICBsZGlza3MgPSBkc2stPm5leHQ7CiAgICAgICAgZnJlZShkc2spOwpAQCAtMjE1Niw3ICsyMTgyLDcgQEAKICAgICAgICBjb250aW51ZTsKICAgICAgfQogIAotQEAgLTUxNCwxMSArNTA2LDE3IEBACitAQCAtNTE4LDExICs1MTAsMTcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogIAlkYl9sb2FkZWQgPSAxOwogICAgICAgIH0gICAgICAKICAKQEAgLTIxNzcsMTYgKzIyMDMsMTggQEAKICAgICAgfQogICAgfQogIAotQEAgLTUzMCw1ICs1MjgsNSBAQAorQEAgLTUzNCw1ICs1MzIsNSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKSB7CiAgICAgIGRvX2RpcmVjdF9tb2RlKGxkaXNrcyk7CiAgICB9CiAgCiAtICByZXR1cm4gMDsKICsgIHJldHVybiByZXQ7CiAgfQorSW5kZXg6IGhkZHRlbXAtMC4zLWJldGExNS9zcmMvYXRhLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBoZGR0ZW1wLTAuMy1iZXRhMTUub3JpZy9zcmMvYXRhLmMKICsrKyBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL2F0YS5jCi1AQCAtNzUsNyArNzUsNyBAQAorQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIGVudW0gZV9nZXR0ZW1wIGF0YV9nZXRfdGVtcGVyYXR1cgogICAgaW50ICAgICAgICAgICAgICBpOwogICAgdTE2ICogICAgICAgICAgICBwOwogIApAQCAtMjE5NSw3ICsyMjIzLDcgQEAKICAgICAgY2xvc2UoZHNrLT5mZCk7CiAgICAgIGRzay0+ZmQgPSAtMTsKICAgICAgcmV0dXJuIEdFVFRFTVBfTk9TRU5TT1I7Ci1AQCAtMTQwLDI0ICsxNDAsMTUgQEAKK0BAIC0xNDAsMjQgKzE0MCwxNSBAQCBzdGF0aWMgZW51bSBlX2dldHRlbXAgYXRhX2dldF90ZW1wZXJhdHVyCiAgICAqLwogIAogICAgLyogdGVtcGVyYXR1cmUgKi8KQEAgLTIyMjQsOSArMjI1MiwxMSBAQAogIAogICAgLyogbmV2ZXIgcmVhY2hlZCAqLwogIH0KK0luZGV4OiBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL2hkZHRlbXAuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGhkZHRlbXAtMC4zLWJldGExNS5vcmlnL3NyYy9oZGR0ZW1wLmgKICsrKyBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL2hkZHRlbXAuaAotQEAgLTM5LDggKzM5LDYgQEAKK0BAIC0zOSw4ICszOSw2IEBAIGVudW0gZV9nZXR0ZW1wIHsKICAgIEdFVFRFTVBfRVJST1IsICAgICAgICAgICAgLyogRXJyb3IgKi8KICAgIEdFVFRFTVBfTk9UX0FQUExJQ0FCTEUsICAgLyogKi8KICAgIEdFVFRFTVBfVU5LTk9XTiwgICAgICAgICAgLyogRHJpdmUgaXMgbm90IGluIGRhdGFiYXNlICovCkBAIC0yMjM1LDcgKzIyNjUsNyBAQAogICAgR0VUVEVNUF9LTk9XTiwgICAgICAgICAgICAvKiBEcml2ZSBhcHBlYXIgaW4gZGF0YWJhc2UgKi8KICAgIEdFVFRFTVBfTk9TRU5TT1IsICAgICAgICAgLyogRHJpdmUgYXBwZWFyIGluIGRhdGFiYXNlIGJ1dCBpcyBrbm93biB0byBoYXZlIG5vIHNlbnNvciAqLwogICAgR0VUVEVNUF9EUklWRV9TTEVFUCAgICAgICAvKiBEcml2ZSBpcyBzbGVlcGluZyAqLwotQEAgLTc4LDcgKzc2LDcgQEAKK0BAIC03OCw3ICs3Niw3IEBAIHN0cnVjdCBidXN0eXBlIHsKICAKICBleHRlcm4gc3RydWN0IGJ1c3R5cGUgKiAgIGJ1c1tCVVNfVFlQRV9NQVhdOwogIGV4dGVybiBjaGFyICAgICAgICAgICAgICAgZXJyb3Jtc2dbTUFYX0VSUk9STVNHX1NJWkVdOwpAQCAtMjI0NCw5ICsyMjc0LDExIEBACiAgZXh0ZXJuIGNoYXIgICAgICAgICAgICAgICBzZXBhcmF0b3I7CiAgZXh0ZXJuIGxvbmcgICAgICAgICAgICAgICBwb3J0bnVtLCBzeXNsb2dfaW50ZXJ2YWw7CiAgZXh0ZXJuIGNoYXIgKiAgICAgICAgICAgICBsaXN0ZW5fYWRkcjsKK0luZGV4OiBoZGR0ZW1wLTAuMy1iZXRhMTUvc3JjL3Njc2ljbWRzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBoZGR0ZW1wLTAuMy1iZXRhMTUub3JpZy9zcmMvc2NzaWNtZHMuYwogKysrIGhkZHRlbXAtMC4zLWJldGExNS9zcmMvc2NzaWNtZHMuYwotQEAgLTE0Nyw2ICsxNDcsNyBAQAorQEAgLTE0Nyw2ICsxNDcsNyBAQCBpbnQgc2NzaV9pbnF1aXJ5KGludCBkZXZpY2UsIHVuc2lnbmVkIGNoCiAgICAgIHJldHVybiAxOwogICAgZWxzZSB7CiAgICAgIHNjc2lfZml4c3RyaW5nKGJ1ZmZlciArIDgsIDI0KTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHRvcC9maWxlcy8wMDAxLVVzZS1wa2ctY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9odG9wL2ZpbGVzLzAwMDEtVXNlLXBrZy1jb25maWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMwZDg2ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHRvcC9maWxlcy8wMDAxLVVzZS1wa2ctY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK1dlIG5lZWQgdG8gdXNlIHBrZy1jb25maWcgdG8gZmluZCB0aGUgbmN1cnNlcyBsaWJyYXJ5IGluc3RlYWQgb2YgdGhlCituY3Vyc2VzKi1jb25maWcgYXBwbGljYXRpb25zLgorCitTaWduZWQtb2ZmLWJ5OiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgorU2lnbmVkLW9mZi1ieTogUm9iZXJ0IEpvc2x5biA8cm9iZXJ0Lmpvc2x5bkByZWRyZWN0YW5nbGUub3JnPgorCitVcHN0cmVhbS1zdGF0dXM6IEluYXBwcm9wcmlhdGUKKyAgICAoYG5jdXJzZXMqLWNvbmZpZ2AgY2FuIGJlIHVzZWQgb3V0c2lkZSBvZiBPcGVuRW1iZWRkZWQpCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDU1OWRjNGQuLjc3YWVhMjIgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE4NSwxMCArMTg1LDEwIEBAIG00X2RlZmluZShbSFRPUF9DSEVDS19MSUJdLAorIAorIEFDX0FSR19FTkFCTEUodW5pY29kZSwgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS11bmljb2RlXSwgW2VuYWJsZSBVbmljb2RlIHN1cHBvcnRdKV0sICxlbmFibGVfdW5pY29kZT0ieWVzIikKKyBpZiB0ZXN0ICJ4JGVuYWJsZV91bmljb2RlIiA9IHh5ZXM7IHRoZW4KKy0gICBIVE9QX0NIRUNLX1NDUklQVChbbmN1cnNlc3c2XSwgW2FkZG53c3RyXSwgW0hBVkVfTElCTkNVUlNFU1ddLCAibmN1cnNlc3c2LWNvbmZpZyIsCistICAgIEhUT1BfQ0hFQ0tfU0NSSVBUKFtuY3Vyc2Vzd10sIFthZGRud3N0cl0sIFtIQVZFX0xJQk5DVVJTRVNXXSwgIm5jdXJzZXN3Ni1jb25maWciLAorLSAgICAgSFRPUF9DSEVDS19TQ1JJUFQoW25jdXJzZXN3XSwgW2FkZG53c3RyXSwgW0hBVkVfTElCTkNVUlNFU1ddLCAibmN1cnNlc3c1LWNvbmZpZyIsCistICAgICAgSFRPUF9DSEVDS19TQ1JJUFQoW25jdXJzZXNdLCBbYWRkbndzdHJdLCBbSEFWRV9MSUJOQ1VSU0VTV10sICJuY3Vyc2VzNS1jb25maWciLAorKyAgIEhUT1BfQ0hFQ0tfU0NSSVBUKFtuY3Vyc2VzdzZdLCBbYWRkbndzdHJdLCBbSEFWRV9MSUJOQ1VSU0VTV10sICJwa2ctY29uZmlnIG5jdXJzZXN3NiIsCisrICAgIEhUT1BfQ0hFQ0tfU0NSSVBUKFtuY3Vyc2Vzd10sIFthZGRud3N0cl0sIFtIQVZFX0xJQk5DVVJTRVNXXSwgInBrZy1jb25maWcgbmN1cnNlc3c2IiwKKysgICAgIEhUT1BfQ0hFQ0tfU0NSSVBUKFtuY3Vyc2Vzd10sIFthZGRud3N0cl0sIFtIQVZFX0xJQk5DVVJTRVNXXSwgInBrZy1jb25maWcgbmN1cnNlc3c1IiwKKysgICAgICBIVE9QX0NIRUNLX1NDUklQVChbbmN1cnNlc10sIFthZGRud3N0cl0sIFtIQVZFX0xJQk5DVVJTRVNXXSwgInBrZy1jb25maWcgbmN1cnNlczUiLAorICAgICAgICBIVE9QX0NIRUNLX0xJQihbbmN1cnNlc3c2XSwgW2FkZG53c3RyXSwgW0hBVkVfTElCTkNVUlNFU1ddLAorICAgICAgICAgSFRPUF9DSEVDS19MSUIoW25jdXJzZXN3XSwgW2FkZG53c3RyXSwgW0hBVkVfTElCTkNVUlNFU1ddLAorICAgICAgICAgIEhUT1BfQ0hFQ0tfTElCKFtuY3Vyc2VzXSwgW2FkZG53c3RyXSwgW0hBVkVfTElCTkNVUlNFU1ddLAorQEAgLTIwMSw4ICsyMDEsOCBAQCBpZiB0ZXN0ICJ4JGVuYWJsZV91bmljb2RlIiA9IHh5ZXM7IHRoZW4KKyAgICAgICAgICBbQUNfQ0hFQ0tfSEVBREVSUyhbbmN1cnNlcy9jdXJzZXMuaF0sWzpdLAorICAgICAgICAgICAgIFtBQ19DSEVDS19IRUFERVJTKFtuY3Vyc2VzLmhdLFs6XSxbbWlzc2luZ19oZWFkZXJzPSIkbWlzc2luZ19oZWFkZXJzICRhY19oZWFkZXIiXSldKV0pXSkKKyBlbHNlCistICAgSFRPUF9DSEVDS19TQ1JJUFQoW25jdXJzZXM2XSwgW3JlZnJlc2hdLCBbSEFWRV9MSUJOQ1VSU0VTXSwgIm5jdXJzZXM2LWNvbmZpZyIsCistICAgIEhUT1BfQ0hFQ0tfU0NSSVBUKFtuY3Vyc2VzXSwgW3JlZnJlc2hdLCBbSEFWRV9MSUJOQ1VSU0VTXSwgIm5jdXJzZXM1LWNvbmZpZyIsCisrICAgSFRPUF9DSEVDS19TQ1JJUFQoW25jdXJzZXM2XSwgW3JlZnJlc2hdLCBbSEFWRV9MSUJOQ1VSU0VTXSwgInBrZy1jb25maWcgbmN1cnNlczYiLAorKyAgICBIVE9QX0NIRUNLX1NDUklQVChbbmN1cnNlc10sIFtyZWZyZXNoXSwgW0hBVkVfTElCTkNVUlNFU10sICJwa2ctY29uZmlnIG5jdXJzZXM1IiwKKyAgICAgIEhUT1BfQ0hFQ0tfTElCKFtuY3Vyc2VzNl0sICBbcmVmcmVzaF0sIFtIQVZFX0xJQk5DVVJTRVNdLAorICAgICAgIEhUT1BfQ0hFQ0tfTElCKFtuY3Vyc2VzXSwgIFtyZWZyZXNoXSwgW0hBVkVfTElCTkNVUlNFU10sCisgICAgICAgbWlzc2luZ19saWJyYXJpZXM9IiRtaXNzaW5nX2xpYnJhcmllcyBsaWJuY3Vyc2VzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9odG9wL2h0b3BfMS4wLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h0b3AvaHRvcF8xLjAuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgxNjYxYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h0b3AvaHRvcF8xLjAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiaHRvcCBwcm9jZXNzIG1vbml0b3IiCi1IT01FUEFHRSA9ICJodHRwOi8vaHRvcC5zZi5uZXQiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMzEyNjUzNTMyZThlNjY5ZjMwZTVlYzhiZGMyM2JlMyIKLQotREVQRU5EUyA9ICJuY3Vyc2VzIgotUkRFUEVORFNfJHtQTn0gPSAibmN1cnNlcy10ZXJtaW5mbyIKLQotU1JDX1VSSSA9ICJodHRwOi8vaGlzaGFtLmhtL2h0b3AvcmVsZWFzZXMvJHtQVn0vaHRvcC0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlNzY4YjliNTVjMDMzZDljMWRmZmRhNzJkYjNhNmFjNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNTVjNTc5MjdmNzU4NDdmZGMyMjJiNTI1OGIwNzlhOTU0MjgxMWE5ZGNmNTQyMWM2MTVjN2UxN2Y1NWQxODI5IgotCi1MREZMQUdTX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLWx1YmFja3RyYWNlIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgcm0gLXJmICR7U30vY29uZmlnLmgKLX0KLQotaW5oZXJpdCBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHRvcC9odG9wXzIuMS4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9odG9wL2h0b3BfMi4xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM1MDhmOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHRvcC9odG9wXzIuMS4wLmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiSW50ZXJhY3RpdmUgcHJvY2VzcyB2aWV3ZXIiCitIT01FUEFHRSA9ICJodHRwOi8vaGlzaGFtLmhtL2h0b3AiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzMxMjY1MzUzMmU4ZTY2OWYzMGU1ZWM4YmRjMjNiZTMiCisKK0RFUEVORFMgPSAibmN1cnNlcyIKKworU1JDX1VSSSA9ICJodHRwOi8vaGlzaGFtLmhtL2h0b3AvcmVsZWFzZXMvJHtQVn0vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWcucGF0Y2giCitTUkNfVVJJW21kNXN1bV0gPSAiZjI2MmI2NmFkNmMxOTQ3ODJmNGQzYTgwNjI3ZTg0YzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzI2MGJlOTkwZDI2ZTI1YjZiNDlmYzlkOTZkYmM5MzVhZDQ2ZTYxMDgzYzBiN2Y2ZGY0MTNlNTEzYmY4MDc0OCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICJwcm9jIFwKKyAgICAgICAgICAgICAgICAgICBjZ3JvdXAgXAorICAgICAgICAgICAgICAgICAgIHRhc2tzdGF0cyBcCisgICAgICAgICAgICAgICAgICAgdW5pY29kZSBcCisgICAgICAgICAgICAgICAgICAgbGludXgtYWZmaW5pdHkgXAorICAgICAgICAgICAgICAgICAgIGRlbGF5YWNjdCIKK1BBQ0tBR0VDT05GSUdbcHJvY10gPSAiLS1lbmFibGUtcHJvYywtLWRpc2FibGUtcHJvYyIKK1BBQ0tBR0VDT05GSUdbb3BlbnZ6XSA9ICItLWVuYWJsZS1vcGVudnosLS1kaXNhYmxlLW9wZW52eiIKK1BBQ0tBR0VDT05GSUdbY2dyb3VwXSA9ICItLWVuYWJsZS1jZ3JvdXAsLS1kaXNhYmxlLWNncm91cCIKK1BBQ0tBR0VDT05GSUdbdnNlcnZlcl0gPSAiLS1lbmFibGUtdnNlcnZlciwtLWRpc2FibGUtdnNlcnZlciIKK1BBQ0tBR0VDT05GSUdbdGFza3N0YXRzXSA9ICItLWVuYWJsZS10YXNrc3RhdHMsLS1kaXNhYmxlLXRhc2tzdGF0cyIKK1BBQ0tBR0VDT05GSUdbdW5pY29kZV0gPSAiLS1lbmFibGUtdW5pY29kZSwtLWRpc2FibGUtdW5pY29kZSIKK1BBQ0tBR0VDT05GSUdbbGludXgtYWZmaW5pdHldID0gIi0tZW5hYmxlLWxpbnV4LWFmZmluaXR5LC0tZGlzYWJsZS1saW51eC1hZmZpbml0eSIKK1BBQ0tBR0VDT05GSUdbaHdsb2NdID0gIi0tZW5hYmxlLWh3bG9jLC0tZGlzYWJsZS1od2xvYyxod2xvYyIKK1BBQ0tBR0VDT05GSUdbc2V0dWlkXSA9ICItLWVuYWJsZS1zZXR1aWQsLS1kaXNhYmxlLXNldHVpZCIKK1BBQ0tBR0VDT05GSUdbZGVsYXlhY2N0XSA9ICItLWVuYWJsZS1kZWxheWFjY3QsLS1kaXNhYmxlLWRlbGF5YWNjdCxsaWJubCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgIHJtIC1yZiAke1N9L2NvbmZpZy5oCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h1bnNwZWxsL2h1bnNwZWxsXzEuNi4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9odW5zcGVsbC9odW5zcGVsbF8xLjYuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDc1JQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h1bnNwZWxsL2h1bnNwZWxsXzEuNi4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h1bnNwZWxsL2h1bnNwZWxsXzEuNi4yLmJiCmluZGV4IDEyNTcyOWYuLjVmZWVhODkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHVuc3BlbGwvaHVuc3BlbGxfMS42LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9odW5zcGVsbC9odW5zcGVsbF8xLjYuMi5iYgpAQCAtNyw4ICs3LDggQEAKICIKIAogU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9hcmNoaXZlL3Yke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiMGRmMWMxOGMxMjg0Zjg2MjVhZjVhZTVhOGQ1YzRjZWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzBmNTkzNzMzYzUwYjc5NDAxNmJiMDNkMzFmZDJhMjA3MWU0NjEwYzZmYTQ3MDhlMzNlZGFkMjMzNTEwMmM0OSIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxYTU0NTA0Y2I0NzBhYWZhNjUzMGJiMzcyYTEwZGMwNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzY2Q5Y2ViMDYyZmU1ODE0ZjY2OGU0ZjIyYjJmYTZlM2JhMGIzMzliOTIxNzM5NTQxY2UxODBjYWM0ZDZmNGM0IgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h3ZGF0YS9od2RhdGFfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9od2RhdGEvaHdkYXRhX2dpdC5iYgppbmRleCA1MGQzNWM2Li42Nzk2NzNiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h3ZGF0YS9od2RhdGFfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHdkYXRhL2h3ZGF0YV9naXQuYmIKQEAgLTUsOCArNSw4IEBACiBMSUNFTlNFID0gIkdQTC0yLjArIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTU1NjU0NzcxMWU4MjQ2OTkyYjk5OWVkZDk0NDVhNTciCiAKLVBWID0gIjAuMjkxK2dpdCR7U1JDUFZ9IgotU1JDUkVWID0gIjRiZmJkY2Y1OTEzZDZkZDUzMzM2ZDMxYjgwMzU3MDgwNzVlNmZkZmEiCitQViA9ICIwLjI5OCtnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICI5MDMwZmJkNmFiMTUzOGY0ZDc3ZDNjZjFlMGI0NjNhN2VjMjViNWM0IgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3ZjcmhvbmVrLyR7QlBOfS5naXQiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lrc2VtZWwvaWtzZW1lbC0xLjQvcjI1LmRpZmYgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lrc2VtZWwvaWtzZW1lbC0xLjQvcjI1LmRpZmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2NjZjZTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pa3NlbWVsL2lrc2VtZWwtMS40L3IyNS5kaWZmCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotVGFrZW4gZnJvbSB1cHN0cmVhbSBzdWJ2ZXJzaW9uIHJlcG9zaXRvcnk6Ci0KLWh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9pa3NlbWVsL3NvdXJjZS9kZXRhaWw/cj0yNQotCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAgIDEwICsrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLS0tLSBpa3NlbWVsLTEuNC5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGlrc2VtZWwtMS40L2NvbmZpZ3VyZS5hYwotQEAgLTQzLDExICs0MywxOSBAQCBBTV9DT05ESVRJT05BTChET19QT1NJWCwgdGVzdCAieCRkZWZpbyIKLSBkbmwgQ2hlY2tzIGZvciBsaWJyYXJ5IGZ1bmN0aW9ucwotIEFDX1NFQVJDSF9MSUJTKHJlY3Ysc29ja2V0KQotIEFDX0NIRUNLX0ZVTkNTKGdldG9wdF9sb25nKQotIEFDX0NIRUNLX0ZVTkNTKGdldGFkZHJpbmZvKQotIAotLUFNX1BBVEhfTElCR05VVExTKCxBQ19ERUZJTkUoSEFWRV9HTlVUTFMsLCJVc2UgbGliZ251dGxzIikpCi0rZG5sIENoZWNrIEdOVSBUTFMKLStQS0dfQ0hFQ0tfTU9EVUxFUyhHTlVUTFMsIGdudXRscyA+PSAyLjAuMCwgaGF2ZV9nbnV0bHM9eWVzLCBoYXZlX2dudXRscz1ubykKLStpZiB0ZXN0ICJ4JGhhdmVfZ251dGxzIiA9ICJ4eWVzIjsgdGhlbgotKyAgTElCR05VVExTX0NGTEFHUz0iJEdOVVRMU19DRkxBR1MiCi0rICBMSUJHTlVUTFNfTElCUz0iJEdOVVRMU19MSUJTIgotKyAgQUNfU1VCU1QoTElCR05VVExTX0NGTEFHUykKLSsgIEFDX1NVQlNUKExJQkdOVVRMU19MSUJTKQotKyAgQUNfREVGSU5FKEhBVkVfR05VVExTLCAxLCBbd2hldGhlciB0byB1c2UgR251VFNMIHN1cHBvcnQuXSkKLStmaQotIAotIGRubCBDaGVjayAtV2FsbCBmbGFnIG9mIEdDQwotIGlmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgotICAgaWYgdGVzdCAteiAiYGVjaG8gIiRDRkxBR1MiIHwgZ3JlcCAiXC1XYWxsIiAyPiAvZGV2L251bGxgIiA7IHRoZW4KLSAgICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1XYWxsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pa3NlbWVsL2lrc2VtZWwvYXZvaWQtb2Jzb2xldGUtZ251dGxzLWFwaXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lrc2VtZWwvaWtzZW1lbC9hdm9pZC1vYnNvbGV0ZS1nbnV0bHMtYXBpcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWZjY2MzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pa3NlbWVsL2lrc2VtZWwvYXZvaWQtb2Jzb2xldGUtZ251dGxzLWFwaXMucGF0Y2gKQEAgLTAsMCArMSw1NSBAQAorRnJvbSA3MTM2YTkwOGEwNTZkMGUzNmM4OWI2ZTFjMzlhZGZmOGNlMmJiMWQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMSBOb3YgMjAxNyAxMzoxNzozNCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBhdm9pZCBvYnNvbGV0ZSBnbnV0bHMgYXBpcworCitUaGUgZ251dGxzXypfc2V0X3ByaW9yaXR5KCkgZmFtaWx5IG9mIGZ1bmN0aW9ucyB3YXMgbWFya2VkIGRlcHJlY2F0ZWQKK2luIGdudXRscyAyLjEyLnggYW5kIHJlbW92ZWQgY29tcGxldGVseSBpbiAzLjUueC4gVGhlc2UgZnVuY3Rpb25zCitoYXZlIGJlZW4gc3VwZXJjZWRlZCBieSBnbnV0bHNfcHJpb3JpdHlfc2V0X2RpcmVjdCgpLCB3aGljaCB3YXMgYWRkZWQKK2luIGdudXRscyAyLjIuMCAocmVsZWFzZWQgMjAwNy0xMi0xNCkuCisKK1JhdGhlciB0aGFuIHNpbXBseSB1cGRhdGUgdGhlIGN1c3RvbSBnbnV0bHNfKl9zZXRfcHJpb3JpdHkoKSBjYWxscyB0bwordXNlIGdudXRsc19wcmlvcml0eV9zZXRfZGlyZWN0KCksIGRyb3AgdGhlIGN1c3RvbSBwcmlvcml0eSBzZWxlY3Rpb24KK2NvbXBsZXRlbHkgYW5kIHVzZSB0aGUgcmVjb21tZW5kZWQgYXBwcm9hY2ggb2YgbGV0dGluZyBnbnV0bHMgcGljayBhCityZWFzb25hYmxlIHNldCBvZiBkZWZhdWx0cy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CistLS0KKyBzcmMvdGxzLWdudXRscy5jIHwgMTIgKystLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdGxzLWdudXRscy5jIGIvc3JjL3Rscy1nbnV0bHMuYworaW5kZXggZDdiN2M5MS4uNzQ5ZTllZiAxMDA2NDQKKy0tLSBhL3NyYy90bHMtZ251dGxzLmMKKysrKyBiL3NyYy90bHMtZ251dGxzLmMKK0BAIC00OCwxMSArNDgsNiBAQCB0bHNfcHVsbCAoc3RydWN0IGlrc3Rsc19kYXRhICpkYXRhLCBjaGFyICpidWZmZXIsIHNpemVfdCBsZW4pCisgc3RhdGljIGludAorIHRsc19oYW5kc2hha2UgKHN0cnVjdCBpa3N0bHNfZGF0YSAqKmRhdGFwLCBpa3N0cmFuc3BvcnQgKnRyYW5zLCB2b2lkICpzb2NrKQorIHsKKy0JY29uc3QgaW50IHByb3RvY29sX3ByaW9yaXR5W10gPSB7IEdOVVRMU19UTFMxLCBHTlVUTFNfU1NMMywgMCB9OworLQljb25zdCBpbnQga3hfcHJpb3JpdHlbXSA9IHsgR05VVExTX0tYX1JTQSwgMCB9OworLQljb25zdCBpbnQgY2lwaGVyX3ByaW9yaXR5W10gPSB7IEdOVVRMU19DSVBIRVJfM0RFU19DQkMsIEdOVVRMU19DSVBIRVJfQVJDRk9VUiwgMH07CistCWNvbnN0IGludCBjb21wX3ByaW9yaXR5W10gPSB7IEdOVVRMU19DT01QX1pMSUIsIEdOVVRMU19DT01QX05VTEwsIDAgfTsKKy0JY29uc3QgaW50IG1hY19wcmlvcml0eVtdID0geyBHTlVUTFNfTUFDX1NIQSwgR05VVExTX01BQ19NRDUsIDAgfTsKKyAJc3RydWN0IGlrc3Rsc19kYXRhICpkYXRhOworIAlpbnQgcmV0OworIAorQEAgLTgxLDExICs3Niw4IEBAIHRsc19oYW5kc2hha2UgKHN0cnVjdCBpa3N0bHNfZGF0YSAqKmRhdGFwLCBpa3N0cmFuc3BvcnQgKnRyYW5zLCB2b2lkICpzb2NrKQorIAkJcmV0dXJuIElLU19OT01FTTsKKyAJfQorIAorLQlnbnV0bHNfcHJvdG9jb2xfc2V0X3ByaW9yaXR5IChkYXRhLT5zZXNzLCBwcm90b2NvbF9wcmlvcml0eSk7CistCWdudXRsc19jaXBoZXJfc2V0X3ByaW9yaXR5KGRhdGEtPnNlc3MsIGNpcGhlcl9wcmlvcml0eSk7CistCWdudXRsc19jb21wcmVzc2lvbl9zZXRfcHJpb3JpdHkoZGF0YS0+c2VzcywgY29tcF9wcmlvcml0eSk7CistCWdudXRsc19reF9zZXRfcHJpb3JpdHkoZGF0YS0+c2Vzcywga3hfcHJpb3JpdHkpOworLQlnbnV0bHNfbWFjX3NldF9wcmlvcml0eShkYXRhLT5zZXNzLCBtYWNfcHJpb3JpdHkpOworKwlnbnV0bHNfc2V0X2RlZmF1bHRfcHJpb3JpdHkgKGRhdGEtPnNlc3MpOworKworIAlnbnV0bHNfY3JlZGVudGlhbHNfc2V0IChkYXRhLT5zZXNzLCBHTlVUTFNfQ1JEX0NFUlRJRklDQVRFLCBkYXRhLT5jcmVkKTsKKyAKKyAJZ251dGxzX3RyYW5zcG9ydF9zZXRfcHVzaF9mdW5jdGlvbiAoZGF0YS0+c2VzcywgKGdudXRsc19wdXNoX2Z1bmMpIHRsc19wdXNoKTsKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pa3NlbWVsL2lrc2VtZWwvZml4LWNvbmZpZ3VyZS1vcHRpb24tcGFyc2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaWtzZW1lbC9pa3NlbWVsL2ZpeC1jb25maWd1cmUtb3B0aW9uLXBhcnNpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVhY2NkZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaWtzZW1lbC9pa3NlbWVsL2ZpeC1jb25maWd1cmUtb3B0aW9uLXBhcnNpbmcucGF0Y2gKQEAgLTAsMCArMSw2MiBAQAorRnJvbSAxN2E1Y2Y4ZjcwYjg2ZDhhMjE5NTU2MmUyZDlkY2NjYjRmYTM1YzgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMzEgT2N0IDIwMTcgMjA6MDU6NTggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGNvbmZpZ3VyZSBvcHRpb24gcGFyc2luZworCitEb24ndCBvdmVyLXdyaXRlIHdpdGhfb3BlbnNzbCBldGMgYnkgdHJ5aW5nIHRvIHNldCB0byAkZW5hYmxldmFyCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMTQgKysrKysrKy0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA4MmU2ZDJkLi44MjNlNmMxIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC01NiwxNyArNTYsMTcgQEAgZmkKKyBkbmwgT3B0aW9ucyBmb3Igb3ZlcnJpZGluZyBUTFMgY2hlY2tzCisgQUNfQVJHX1dJVEgoW29wZW5zc2xdLAorICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1vcGVuc3NsXSxbZGlzYWJsZSBjaGVja2luZyBmb3Igb3BlbnNzbF0pLAorLSAgW3dpdGhfb3BlbnNzbD0kZW5hYmxldmFsXSwKKy0gIFt3aXRoX29wZW5zc2w9eWVzXQorKyAgW10sCisrICBbd2l0aF9vcGVuc3NsPWF1dG9dCisgKQorIEFDX0FSR19XSVRIKFtnbnV0bHNdLAorICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1nbnV0bHNdLFtkaXNhYmxlIGNoZWNraW5nIGZvciBHTlUgVExTXSksCistICBbd2l0aF9nbnV0bHM9JGVuYWJsZXZhbF0sCistICBbd2l0aF9nbnV0bHM9eWVzXQorKyAgW10sCisrICBbd2l0aF9nbnV0bHM9YXV0b10KKyApCisgCisgZG5sIENoZWNrIE9wZW5TU0wKKy1pZiB0ZXN0ICJ4JHdpdGhfb3BlbnNzbCIgPSAieHllcyI7IHRoZW4KKytpZiB0ZXN0ICJ4JHdpdGhfb3BlbnNzbCIgIT0gInhubyI7IHRoZW4KKyAgIFBLR19DSEVDS19NT0RVTEVTKFtPUEVOU1NMXSwgb3BlbnNzbCA+PSAwLjkuOCwgaGF2ZV9vcGVuc3NsPXllcywgaGF2ZV9vcGVuc3NsPW5vKQorICAgaWYgdGVzdCAieCRoYXZlX29wZW5zc2wiID0gInh5ZXMiOyB0aGVuCisgICAgIExJQk9QRU5TU0xfQ0ZMQUdTPSIkT1BFTlNTTF9DRkxBR1MiCitAQCAtNzgsNyArNzgsNyBAQCBpZiB0ZXN0ICJ4JHdpdGhfb3BlbnNzbCIgPSAieHllcyI7IHRoZW4KKyBmaQorIAorIGRubCBDaGVjayBHTlUgVExTCistaWYgdGVzdCAieCR3aXRoX2dudXRscyIgPSAieHllcyI7IHRoZW4KKytpZiB0ZXN0ICJ4JHdpdGhfZ251dGxzIiAhPSAieG5vIjsgdGhlbgorICAgaWYgdGVzdCAieCRoYXZlX29wZW5zc2wiICE9ICJ4eWVzIjsgdGhlbgorICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbR05VVExTXSwgZ251dGxzID49IDIuMC4wLCBoYXZlX2dudXRscz15ZXMsIGhhdmVfZ251dGxzPW5vKQorICAgICBpZiB0ZXN0ICJ4JGhhdmVfZ251dGxzIiA9ICJ4eWVzIjsgdGhlbgorQEAgLTk0LDcgKzk0LDcgQEAgZmkKKyBkbmwgT3B0aW9uIGZvciBvdmVycmlkaW5nIFB5dGhvbiBjaGVjaworIEFDX0FSR19FTkFCTEUoW3B5dGhvbl0sCisgICBBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLXB5dGhvbl0sW2Rpc2FibGUgY2hlY2tpbmcgZm9yIFB5dGhvbiBiaW5kaW5nc10pLAorLSAgW3dpdGhfcHl0aG9uPSRlbmFibGV2YWxdLAorKyAgW10sCisgICBbd2l0aF9weXRob249eWVzXQorICkKKyAKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pa3NlbWVsL2lrc2VtZWxfMS41LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pa3NlbWVsL2lrc2VtZWxfMS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5MDNlOTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lrc2VtZWwvaWtzZW1lbF8xLjUuYmIKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJGYXN0IGFuZCBwb3J0YWJsZSBYTUwgcGFyc2VyIGFuZCBKYWJiZXIgcHJvdG9jb2wgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tZWR1a2V0dG8vaWtzZW1lbCIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kODA0NWYzYjhmOTI5YzFjYjI5YTFlM2ZkNzM3YjQ5OSIKKworU1JDUkVWID0gIjk3OGI3MzM0NjJlNDFlZmQ1ZGI3MmJjOTk3NGNiM2IwZDFkNWY2ZmEiCitQViA9ICIxLjUrZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9tZWR1a2V0dG8vaWtzZW1lbC5naXQ7cHJvdG9jb2w9aHR0cHMgXAorICAgICAgICAgICBmaWxlOi8vZml4LWNvbmZpZ3VyZS1vcHRpb24tcGFyc2luZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hdm9pZC1vYnNvbGV0ZS1nbnV0bHMtYXBpcy5wYXRjaCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGxpYl9wYWNrYWdlCisKKyMgVExTIHN1cHBvcnQgcmVxdWlyZXMgZWl0aGVyIG9wZW5zc2wgb3IgZ251dGxzIChpZiBib3RoIGFyZSBlbmFibGVkIG9wZW5zc2wgd2lsbCBiZSB1c2VkKS4KK1BBQ0tBR0VDT05GSUcgPz0gImdudXRscyIKKworUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcHl0aG9uIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJlaWdlbi9saWJlaWdlbi8wMDAxLUNNYWtlTGlzdHMudHh0LWluc3RhbGwtRmluZEVpZ2VuMy5jbWFrZS1zY3JpcHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmVpZ2VuL2xpYmVpZ2VuLzAwMDEtQ01ha2VMaXN0cy50eHQtaW5zdGFsbC1GaW5kRWlnZW4zLmNtYWtlLXNjcmlwdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzYxZGFkYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmVpZ2VuL2xpYmVpZ2VuLzAwMDEtQ01ha2VMaXN0cy50eHQtaW5zdGFsbC1GaW5kRWlnZW4zLmNtYWtlLXNjcmlwdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gZmQ4YmM2NmVmYWMxMDU5YzEwNjhmODA0NzQ2YjAxYjkwMTc3YzMzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEx1a2FzIEJ1bHdhaG4gPGx1a2FzLmJ1bHdhaG5Ab3NzLmJtdy1jYXJpdC5kZT4KLURhdGU6IFN1biwgMTggT2N0IDIwMTUgMTY6NTI6MjUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gQ01ha2VMaXN0cy50eHQ6IGluc3RhbGwgRmluZEVpZ2VuMy5jbWFrZSBzY3JpcHQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEx1a2FzIEJ1bHdhaG4gPGx1a2FzLmJ1bHdhaG5Ab3NzLmJtdy1jYXJpdC5kZT4KLS0tLQotIENNYWtlTGlzdHMudHh0IHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDc2YTExYjkuLmVjNmM2ZWEgMTAwNjQ0Ci0tLS0gYS9DTWFrZUxpc3RzLnR4dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC0zNDIsNiArMzQyLDggQEAgaWYoRUlHRU5fQlVJTERfUEtHQ09ORklHKQotICAgICAgICAgKQotIGVuZGlmKEVJR0VOX0JVSUxEX1BLR0NPTkZJRykKLSAKLStpbnN0YWxsKEZJTEVTICIke1BST0pFQ1RfU09VUkNFX0RJUn0vY21ha2UvRmluZEVpZ2VuMy5jbWFrZSIgREVTVElOQVRJT04gIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L3NoYXJlL2NtYWtlL01vZHVsZXMiKQotKwotIGFkZF9zdWJkaXJlY3RvcnkoRWlnZW4pCi0gCi0gYWRkX3N1YmRpcmVjdG9yeShkb2MgRVhDTFVERV9GUk9NX0FMTCkKLS0tIAotMS45LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJlaWdlbi9saWJlaWdlbl8zLjIuOC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZWlnZW4vbGliZWlnZW5fMy4zLjQuYmIKc2ltaWxhcml0eSBpbmRleCA2MiUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJlaWdlbi9saWJlaWdlbl8zLjIuOC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJlaWdlbi9saWJlaWdlbl8zLjMuNC5iYgppbmRleCBkY2NhMmU5Li5iYzNiMzJlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmVpZ2VuL2xpYmVpZ2VuXzMuMi44LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZWlnZW4vbGliZWlnZW5fMy4zLjQuYmIKQEAgLTQsMTcgKzQsMTYgQEAKIExJQ0VOU0UgPSAiTVBMLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTVBMMjttZDU9ODE1Y2E1OTljOWRmMjQ3YTBjN2Y2MTliYWIxMjNkYWQiCiAKLVNSQ19VUkkgPSAiaHR0cDovL2JpdGJ1Y2tldC5vcmcvZWlnZW4vZWlnZW4vZ2V0LyR7UFZ9LnRhci5iejI7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ01ha2VMaXN0cy50eHQtaW5zdGFsbC1GaW5kRWlnZW4zLmNtYWtlLXNjcmlwdC5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5ZTNiZmFhYWIzZGIxODI1M2NmZDg3ZWE2OTdiM2FiMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MjJhNjNkNjcyYjcwZjM5YzI3MWM1ZTJhNGE0M2JhMTRkMTIwMTU2NzQzMzE3OTA0MTRmY2IxNjdjMzU3ZTU1IgorU1JDX1VSSSA9ICJodHRwOi8vYml0YnVja2V0Lm9yZy9laWdlbi9laWdlbi9nZXQvJHtQVn0udGFyLmJ6Mjtkb3dubG9hZGZpbGVuYW1lPSR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiYTdhYWI5Zjc1ODI0OWI4NmM5MzIyMWFkNDE3ZmJlMTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGQyNTRiZWIwYmFmYzY5NWQwZjYyYWUxYTIyMmZmODViNTJkYmFhM2ExNmY3NmU3ODFkY2UyMmQwZDIwYTRhNiIKIAotUyA9ICIke1dPUktESVJ9L2VpZ2VuLWVpZ2VuLTA3MTA1ZjcxMjRmOSIKK1MgPSAiJHtXT1JLRElSfS9laWdlbi1laWdlbi01YTAxNTZlNDBmZWIiCiAKIGluaGVyaXQgY21ha2UKIAogRklMRVNfJHtQTn0gPSAiJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0iCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtkYXRhZGlyfS9jbWFrZS9Nb2R1bGVzICR7ZGF0YWRpcn0vcGtnY29uZmlnIgorRklMRVNfJHtQTn0tZGV2ID0gIiR7ZGF0YWRpcn0vZWlnZW4zL2NtYWtlICR7ZGF0YWRpcn0vY21ha2UvTW9kdWxlcyAke2RhdGFkaXJ9L3BrZ2NvbmZpZyIKIAogIyAke1BOfSBpcyBlbXB0eSBzbyB3ZSBuZWVkIHRvIHR3ZWFrIC1kZXYgYW5kIC1kYmcgcGFja2FnZSBkZXBlbmRlbmNpZXMKIFJERVBFTkRTXyR7UE59LWRldiA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmdwaW9kL2xpYmdwaW9kLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZC5pbmMKc2ltaWxhcml0eSBpbmRleCA3MiUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZC5pbmMKaW5kZXggYzUwNjA1Ny4uY2Q3NzUwNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmdwaW9kL2xpYmdwaW9kLmluYwpAQCAtNSwxMSArNSw2IEBACiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbGlicy9saWJncGlvZC8ke0JQfS50YXIueHoiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI1ZjlkODU1MzUyYjFhNTI3MmNmNmYxYzJlMjA2ODlkMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZGZkNmFlYjU0NGU4YjdiYWY0ODRhMDVjOWFlMGU2NzAyMmMxMDkzNjJhNDFkODcwMDUzOTMwNDZiNmJlYWNmIgotCi1QViA9ICIwLjMuMSIKLQogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCiAKICMgZW5hYmxlIHRvb2xzCkBAIC0xOCw2ICsxMyw5IEBACiBQQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItLWVuYWJsZS10ZXN0cywtLWRpc2FibGUtdGVzdHMsa21vZCB1ZGV2IgogUEFDS0FHRUNPTkZJR1t0b29sc10gPSAiLS1lbmFibGUtdG9vbHMsLS1kaXNhYmxlLXRvb2xzLCIKIAotUEFDS0FHRVMgKz0gIiAke1BOfS10b29scyIKK1BBQ0tBR0VTID0rICIgJHtQTn0tdG9vbHMiCiAKIEZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfS8qIgorCitSUkVDT01NRU5EU19UT09MUyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0b29scycsICcke1BOfS10b29scycsICcnLGQpfSIKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICIke1JSRUNPTU1FTkRTX1RPT0xTfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2RfMC4zLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmdwaW9kL2xpYmdwaW9kXzAuMy4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ZmI2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmdwaW9kL2xpYmdwaW9kXzAuMy4zLmJiCkBAIC0wLDAgKzEsNCBAQAorcmVxdWlyZSBsaWJncGlvZC5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gIjJhYTFlMWE4MGMzYzkxOWFlMTQyYWI5YTU1ZmI1OWNhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI3NzNlNTU3YWYxYTQ5N2Y3ODY4MjU0NjJhNzc2YjdiZjkwMTY4ZTY3ZWUwYTViYzVkMjQ3M2E1Njc0ZGMzOGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmdwaW9kL2xpYmdwaW9kXzEuMC4xLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZF8xLjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTQ5OWZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZF8xLjAuMS5iYgpAQCAtMCwwICsxLDQgQEAKK3JlcXVpcmUgbGliZ3Bpb2QuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyY2EwYzNlYjE3ZDY5ZTM2N2I2ZjZhMTA5Y2E4NmU0MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NzI5MjQxOTUzNjdmNWZiMDQ1YzAyM2Q2NTM0MGM0YjdkZmM4NzY0NDk5NTE2YmU0NDY1NTM4NjUyMDhkZWRjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJpaW8vbGliaWlvX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliaWlvL2xpYmlpb19naXQuYmIKaW5kZXggZDY2YWM1OC4uYmEzODBlZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJpaW8vbGliaWlvX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmlpby9saWJpaW9fZ2l0LmJiCkBAIC00LDIxICs0LDQxIEBACiBMSUNFTlNFID0gIkxHUEx2Mi4xKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT03YzEzYjMzNzZjZWEwY2U2OGQyZDJkYTBhMWIzYTcyYyIKIAotU1JDUkVWID0gIjA4Zjk0N2Q1ZTQwNjAwMjU5YmI2OThjM2I5NTUzOGU5ZjJiZmVjYzIiCi1QViA9ICIwLjgrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiZmE4Mjk3NGQ4YmQxZmRlZDc4ZTYzMGFiNzFhN2RlZDFiMTFkMGUzMyIKK1BWID0gIjAuMTQrZ2l0JHtTUkNQVn0iCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9hbmFsb2dkZXZpY2VzaW5jL2xpYmlpby5naXQiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYW5hbG9nZGV2aWNlc2luYy9saWJpaW8uZ2l0O3Byb3RvY29sPWh0dHBzIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1ERVBFTkRTID0gImZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSBhdmFoaSBsaWJhaW8gbGlidXNiMSBsaWJ4bWwyIgoraW5oZXJpdCBjbWFrZSBweXRob25uYXRpdmUgc3lzdGVtZAogCi1pbmhlcml0IGNtYWtlIHB5dGhvbm5hdGl2ZQorREVQRU5EUyA9ICIgXAorICAgIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSBsaWJhaW8gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnemVyb2NvbmYnLCAnYXZhaGknLCAnJywgZCl9IFwKKyIKKworRVhUUkFfT0VDTUFLRSA9ICIgXAorICAgIC1EQ01BS0VfQlVJTERfVFlQRT1SZWxXaXRoRGViSW5mbyBcCisgICAgLURVREVWX1JVTEVTX0lOU1RBTExfRElSPSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLURXSVRIX1NZU1RFTUQ9T04gLURTWVNURU1EX1VOSVRfSU5TVEFMTF9ESVI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfScsICcnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHID8/PSAiVVNCX0JBQ0tFTkQgTkVUV09SS19CQUNLRU5EIgorCitQQUNLQUdFQ09ORklHW1VTQl9CQUNLRU5EXSA9ICItRFdJVEhfVVNCX0JBQ0tFTkQ9T04sLURXSVRIX1VTQl9CQUNLRU5EPU9GRixsaWJ1c2IxLGxpYnhtbDIiCitQQUNLQUdFQ09ORklHW05FVFdPUktfQkFDS0VORF0gPSAiLURXSVRIX05FVFdPUktfQkFDS0VORD1PTiwtRFdJVEhfTkVUV09SS19CQUNLRU5EPU9GRixsaWJ4bWwyIgogCiBQQUNLQUdFUyA9KyAiJHtQTn0taWlvZCAke1BOfS10ZXN0cyAke1BOfS1weXRob24iCiAKIFJERVBFTkRTXyR7UE59LXB5dGhvbiA9ICIke1BOfSBweXRob24tY3R5cGVzIHB5dGhvbi1zdHJpbmdvbGQiCiAKLUZJTEVTXyR7UE59LWlpb2QgPSAiJHtzYmluZGlyfS9paW9kIgorRklMRVNfJHtQTn0taWlvZCA9ICIgXAorICAgICR7c2JpbmRpcn0vaWlvZCBcCisgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9paW9kLnNlcnZpY2UgXAorIgogRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9IgogRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LWlpb2QiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0taWlvZCA9ICJpaW9kLnNlcnZpY2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm1pY3JvaHR0cGQvbGlibWljcm9odHRwZF8wLjkuNTUuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm1pY3JvaHR0cGQvbGlibWljcm9odHRwZF8wLjkuNTUuYmIKaW5kZXggZWUzOTlhNy4uMDkzMGEyNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaWNyb2h0dHBkL2xpYm1pY3JvaHR0cGRfMC45LjU1LmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWljcm9odHRwZC9saWJtaWNyb2h0dHBkXzAuOS41NS5iYgpAQCAtMTEsNiArMTEsOCBAQAogCiBpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBwa2djb25maWcgZ2V0dGV4dAogCitDRkxBR1MgKz0gIi1wdGhyZWFkIC1EX1JFRU5UUkFOVCIKKwogRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtc3RhdGljIC0td2l0aC1nbnV0bHM9JHtTVEFHSU5HX0xJQkRJUn0vLi4vIgogCiBQQUNLQUdFQ09ORklHID89ICJjdXJsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJvbC9saWJvbF8wLjMuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm9sL2xpYm9sXzAuMy4xOC5iYgppbmRleCA3NGUxZWYyLi5kN2FkYjJiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm9sL2xpYm9sXzAuMy4xOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm9sL2xpYm9sXzAuMy4xOC5iYgpAQCAtNCw3ICs0LDcgQEAKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jOTNjMDU1MGJkMzE3M2Y0NTA0YjJjYmQ4OTkxZTUwYiIKIAotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmJhbGFiaXQuY29tL2Rvd25sb2Fkcy9maWxlcy9saWJvbC8wLjMvJHtCUH0udGFyLmd6IFwKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5iYWxhYml0LmNvbS9kb3dubG9hZHMvbGlib2wvMC4zLyR7QlB9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2giCiBTUkNfVVJJW21kNXN1bV0gPSAiY2JhZGY0YjdlYTI3NmRmYTg1YWNjMzhhMWNjNWZmMTciCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWRlM2JmMTMyOTdmZjg4MmUwMmExZTZlNWY2YmY3NjBhNTQ0YWZmOTJhOWQ4YTFjZjQzMjhhMzIwMDVjZWZlNyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic2RsLXR0Zi9maWxlcy9hdXRvbWFrZV9mb3JlaWduLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2ZpbGVzL2F1dG9tYWtlX2ZvcmVpZ24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkNWJkNmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2ZpbGVzL2F1dG9tYWtlX2ZvcmVpZ24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1JbmRleDogU0RMMl90dGYtMi4wLjE0L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gU0RMMl90dGYtMi4wLjE0Lm9yaWcvTWFrZWZpbGUuYW0KLSsrKyBTREwyX3R0Zi0yLjAuMTQvTWFrZWZpbGUuYW0KLUBAIC0xLDYgKzEsOCBAQAotICMgTWFrZWZpbGUuYW0gZm9yIHRoZSBTREwgdHJ1ZXR5cGUgZm9udCBsb2FkaW5nIGxpYnJhcnkgYW5kIHZpZXdlcgotIGxpYl9MVExJQlJBUklFUyA9IGxpYlNETDJfdHRmLmxhCi0gCi0rQVVUT01BS0VfT1BUSU9OUyA9IGZvcmVpZ24KLSsKLSBsaWJTREwyX3R0ZmluY2x1ZGVkaXIgPSAkKGluY2x1ZGVkaXIpL1NETDIKLSBsaWJTREwyX3R0ZmluY2x1ZGVfSEVBREVSUyA9CVwKLSAJU0RMX3R0Zi5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNkbC10dGYvZmlsZXMvdXNlLnBrZy1jb25maWcuZm9yLmZyZWV0eXBlMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic2RsLXR0Zi9saWJzZGwtdHRmL3VzZS5wa2ctY29uZmlnLmZvci5mcmVldHlwZTIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCA4MCUKY29weSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic2RsLXR0Zi9maWxlcy91c2UucGtnLWNvbmZpZy5mb3IuZnJlZXR5cGUyLnBhdGNoCmNvcHkgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2xpYnNkbC10dGYvdXNlLnBrZy1jb25maWcuZm9yLmZyZWV0eXBlMi5wYXRjaAppbmRleCA4YTExZjY2Li4xMTE2YzM0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNkbC10dGYvZmlsZXMvdXNlLnBrZy1jb25maWcuZm9yLmZyZWV0eXBlMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNkbC10dGYvbGlic2RsLXR0Zi91c2UucGtnLWNvbmZpZy5mb3IuZnJlZXR5cGUyLnBhdGNoCkBAIC0xLDE2ICsxLDIxIEBACi1mcmVldHlwZS1jb25maWcgd2FzIHJlbW92ZWQgZnJvbSBvZS1jb3JlIGluCitGcm9tIDhjZjMxODE5N2VlYTkxYmVjNjA1NzMwOGJlZmJiMjk0MjZkNjkwMTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK0RhdGU6IFRodSwgMjIgTWF5IDIwMTQgMTA6NTk6MzMgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gZnJlZXR5cGUtY29uZmlnIHdhcyByZW1vdmVkIGZyb20gb2UtY29yZSBpbgogCiBjb21taXQgNTg3MGJkMjcyYjBiMDc3ZDA4MjZmYjkwMGIyNTE4ODRjMWMwNTA2MQotQXV0aG9yOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KLURhdGU6ICAgVGh1IE1heSAyMiAxMDo1OTozMyAyMDE0ICswMTAwCiAKICAgICBiaW5jb25maWctZGlzYWJsZWQ6IEFkZCBjbGFzcyBhbmQgdXNlCiAKKy0tLQorIGNvbmZpZ3VyZS5pbiB8IDM4ICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCisKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDQwOGU4ZDYuLjVmOWU3MzAgMTAwNjQ0CitpbmRleCA4NjUwNzVlLi5kN2E1YTgxIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmluCiArKysgYi9jb25maWd1cmUuaW4KLUBAIC04NiwzOSArODYsMTEgQEAgY2FzZSAiJGhvc3QiIGluCitAQCAtOTAsMzkgKzkwLDExIEBAIGNhc2UgIiRob3N0IiBpbgogIGVzYWMKICBBTV9DT05ESVRJT05BTChVU0VfVkVSU0lPTl9SQywgdGVzdCB4JHVzZV92ZXJzaW9uX3JjID0geHRydWUpCiAgCkBAIC01NCw0ICs1OSw0IEBACiArKQogIAogIGRubCBDaGVjayBmb3IgU0RMCi0gU0RMX1ZFUlNJT049Mi4wLjAKKyBTRExfVkVSU0lPTj0xLjIuNApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2xpYnNkbDItdHRmL2F1dG9tYWtlX2ZvcmVpZ24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNkbC10dGYvbGlic2RsMi10dGYvYXV0b21ha2VfZm9yZWlnbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzFlNmU5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2xpYnNkbDItdHRmL2F1dG9tYWtlX2ZvcmVpZ24ucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorRnJvbSBmOWM0YWQzYTE3MWQ2NzZlMzgxOGI4ZjY4OTdmMzI1Y2NmMGIyMjAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgOSBNYXkgMjAxNyAwMDo1NzoxMCAtMDcwMAorCistLS0KKyBNYWtlZmlsZS5hbSB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA4MTY2ZDkxLi44ZTA1ZTQ5IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMiw2ICsyLDggQEAKKyAKKyBsaWJfTFRMSUJSQVJJRVMgPSBsaWJTREwyX3R0Zi5sYQorIAorK0FVVE9NQUtFX09QVElPTlMgPSBmb3JlaWduCisrCisgbGliU0RMMl90dGZpbmNsdWRlZGlyID0gJChpbmNsdWRlZGlyKS9TREwyCisgbGliU0RMMl90dGZpbmNsdWRlX0hFQURFUlMgPQlcCisgCVNETF90dGYuaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2ZpbGVzL3VzZS5wa2ctY29uZmlnLmZvci5mcmVldHlwZTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNkbC10dGYvbGlic2RsMi10dGYvdXNlLnBrZy1jb25maWcuZm9yLmZyZWV0eXBlMi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNkbC10dGYvZmlsZXMvdXNlLnBrZy1jb25maWcuZm9yLmZyZWV0eXBlMi5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2xpYnNkbDItdHRmL3VzZS5wa2ctY29uZmlnLmZvci5mcmVldHlwZTIucGF0Y2gKaW5kZXggOGExMWY2Ni4uMWRmYmVjNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2ZpbGVzL3VzZS5wa2ctY29uZmlnLmZvci5mcmVldHlwZTIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzZGwtdHRmL2xpYnNkbDItdHRmL3VzZS5wa2ctY29uZmlnLmZvci5mcmVldHlwZTIucGF0Y2gKQEAgLTEsMTMgKzEsMTggQEAKLWZyZWV0eXBlLWNvbmZpZyB3YXMgcmVtb3ZlZCBmcm9tIG9lLWNvcmUgaW4KK0Zyb20gZTZkMmMwZTEzMDgxMWMxNWI1ZjVjYzEwMjIxZmFlMTgyY2I4NjA5ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorRGF0ZTogVGh1LCAyMiBNYXkgMjAxNCAxMDo1OTozMyArMDEwMAorU3ViamVjdDogW1BBVENIXSBmcmVldHlwZS1jb25maWcgd2FzIHJlbW92ZWQgZnJvbSBvZS1jb3JlIGluCiAKIGNvbW1pdCA1ODcwYmQyNzJiMGIwNzdkMDgyNmZiOTAwYjI1MTg4NGMxYzA1MDYxCi1BdXRob3I6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgotRGF0ZTogICBUaHUgTWF5IDIyIDEwOjU5OjMzIDIwMTQgKzAxMDAKIAogICAgIGJpbmNvbmZpZy1kaXNhYmxlZDogQWRkIGNsYXNzIGFuZCB1c2UKIAorLS0tCisgY29uZmlndXJlLmluIHwgMzggKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkKKwogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggNDA4ZThkNi4uNWY5ZTczMCAxMDA2NDQKK2luZGV4IDliMzZlMTUuLmYzMDBjYWUgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuaW4KICsrKyBiL2NvbmZpZ3VyZS5pbgogQEAgLTg2LDM5ICs4NiwxMSBAQCBjYXNlICIkaG9zdCIgaW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtLzAwMDEtdGVhbV9iYXNpY190ZXN0LnB5LWRpc2FibGUtUmVkSGF0LXNwZWNpZmljLXRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbS8wMDAxLXRlYW1fYmFzaWNfdGVzdC5weS1kaXNhYmxlLVJlZEhhdC1zcGVjaWZpYy10ZXN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2OGE1NWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbS8wMDAxLXRlYW1fYmFzaWNfdGVzdC5weS1kaXNhYmxlLVJlZEhhdC1zcGVjaWZpYy10ZXN0LnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gMDBkZWJlNmJkNGNmNWEzMTMzYThmYmFhYjc1Zjc0NDdhMzlmYTY1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxMiBBcHIgMjAxOCAwMTo1NDoxNSArMDAwMAorU3ViamVjdDogW1BBVENIXSB0ZWFtX2Jhc2ljX3Rlc3QucHk6IGRpc2FibGUgUmVkSGF0IHNwZWNpZmljIHRlc3QKKworVGhlIHRlc3QgX3J1bl90ZWFtZF9pbml0c2NyaXB0cygpIGlzIGZvciBSZWRIYXQgaWZjZmcgc2NyaXB0cyB3aGljaCBhcmUKK2luY29tcGF0aWJsZSB3aXRoIE9FOgorICAvZXRjL3N5c2NvbmZpZy9uZXR3b3JrLXNjcmlwdHMvaWZjZmctKgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIFNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNjcmlwdHMvdGVhbV9iYXNpY190ZXN0LnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc2NyaXB0cy90ZWFtX2Jhc2ljX3Rlc3QucHkgYi9zY3JpcHRzL3RlYW1fYmFzaWNfdGVzdC5weQoraW5kZXggYjA1YmU5ZS4uZmFhYmQxOCAxMDA3NTUKKy0tLSBhL3NjcmlwdHMvdGVhbV9iYXNpY190ZXN0LnB5CisrKysgYi9zY3JpcHRzL3RlYW1fYmFzaWNfdGVzdC5weQorQEAgLTE3MSw3ICsxNzEsNyBAQCBURUFNX1BPUlRfQ09ORklHPSd7InByaW8iOiAxMH0nCisgICAgICAgICB0cnk6CisgICAgICAgICAgICAgZm9yIG1vZGVfbmFtZSBpbiBzZWxmLl90ZWFtX21vZGVzOgorICAgICAgICAgICAgICAgICBzZWxmLl9ydW5fb25lX21vZGUobW9kZV9uYW1lKQorLSAgICAgICAgICAgIHNlbGYuX3J1bl90ZWFtZF9pbml0c2NyaXB0cygpCisrICAgICAgICAgICAgI3NlbGYuX3J1bl90ZWFtZF9pbml0c2NyaXB0cygpCisgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgIGNtZF9leGVjKCJtb2Rwcm9iZSAtciB0ZWFtX21vZGVfbG9hZGJhbGFuY2UgdGVhbV9tb2RlX3JvdW5kcm9iaW4gdGVhbV9tb2RlX2FjdGl2ZWJhY2t1cCB0ZWFtX21vZGVfYnJvYWRjYXN0IHRlYW0iKTsKKyAKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmE1YWNmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW0vcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGhvbiAkKGRpcm5hbWUgJDApL3RlYW1fYmFzaWNfdGVzdC5weQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW1fMS4yNy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtXzEuMjcuYmIKaW5kZXggMzIyMjcwMC4uNDQyNTkyZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW1fMS4yNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbV8xLjI3LmJiCkBAIC0xMCw2ICsxMCw4IEBACiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vanBpcmtvL2xpYnRlYW0gXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy1zZWxlY3QuaC1mb3ItZmRfc2V0LWRlZmluaXRpb24ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi10ZWFtZC1SZS1hZGp1c3QtaW5jbHVkZS1oZWFkZXItb3JkZXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZWFtX2Jhc2ljX3Rlc3QucHktZGlzYWJsZS1SZWRIYXQtc3BlY2lmaWMtdGVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAogICAgICAgICAgICAiCiBTUkNSRVYgPSAiOTFhOTI4YTU2YTUwMWRhYWM1Y2U4YjNjMTZiZDk5NDM2NjFmMWQxNiIKIApAQCAtMTgsNyArMjAsNyBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwdGVzdAogCiBGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGlidGVhbSR7U09MSUJTfSBcCiAiCkBAIC0zMyw0ICszNSw4IEBACiAiCiAKIFJERVBFTkRTXyR7UE59LXV0aWxzID0gImJhc2giCitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJweXRob24iCiAKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAke1N9L3NjcmlwdHMvdGVhbV9iYXNpY190ZXN0LnB5ICR7RH0ke1BURVNUX1BBVEh9LworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25nb2RiL21vbmdvZGIvMDAwMS1tb25nby1BZGQtdXNpbmctc3RkLXN0cmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtbW9uZ28tQWRkLXVzaW5nLXN0ZC1zdHJpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1MTdkNTNkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uZ29kYi9tb25nb2RiLzAwMDEtbW9uZ28tQWRkLXVzaW5nLXN0ZC1zdHJpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi1Gcm9tIDVmZGVjOTU5MjI4NWY1OTc2MzQ1ZmJjY2IzZDA3ZmFlMTI0NWFiNTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAyIEF1ZyAyMDE3IDE1OjQxOjIyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1vbmdvOiBBZGQgdXNpbmcgc3RkOjpzdHJpbmcKLQotVGhpcyBpcyBuZWVkZWQgd2l0aCBsYXRlc3QgY2xhbmcKLUZpeGVzCi1zcmMvbW9uZ28vZGIvZGJ3ZWJzZXJ2ZXIuY3BwOjIwNjoyMzogZXJyb3I6IHVzZSBvZiB1bmRlY2xhcmVkIGlkZW50aWZpZXIgJ3N0cmluZyc7IGRpZCB5b3UgbWVhbiAnU3RyaW5nJz8KLSAgICAgICAgc3RhdGljIHZlY3RvcjxzdHJpbmc+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+JjEKKwkJCWNobW9kIDQwMCAke3N5c2NvbmZkaXJ9L3hyZHAva2V5LnBlbQorCQlmaQkJCQorICAgICAgICBmaQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC96aWxlL3ppbGVfMi40LjExLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC96aWxlL3ppbGVfMi40LjE0LmJiCnNpbWlsYXJpdHkgaW5kZXggNzAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvemlsZS96aWxlXzIuNC4xMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC96aWxlL3ppbGVfMi40LjE0LmJiCmluZGV4IGQ2NjNmNDRiLi41MTVjZjQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ppbGUvemlsZV8yLjQuMTEuYmIKKysrIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC96aWxlL3ppbGVfMi40LjE0LmJiCkBAIC0zLDE0ICszLDE0IEBACiBERVBFTkRTID0gIm5jdXJzZXMgYmR3Z2MiCiAKIExJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFlYmJkM2UzNDIzN2FmMjZkYTVkYzA4YTRlNDQwNDY0IgogCiBTUkNfVVJJID0gImh0dHA6Ly9mdHAuZ251Lm9yZy9nbnUvemlsZS8ke0JQfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWhlbHAybWFuLnBhdGNoIFwKICIKIAotU1JDX1VSSVttZDVzdW1dID0gIjdhNDYwY2NlYzY0ZTNiZWMyODM1Njk3YjJlYWU1MzNjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFmZDI3YmJkZGM2MTQ5MWIxZmJiMjlhMzQ1ZDBkMzQ0NzM0YWE5ZTgwY2ZhMDdiMDI4OTJlZWRmODMxZmE5Y2MiCitTUkNfVVJJW21kNXN1bV0gPSAiYzdkN2VlYzkzMjMxYzY4NzhmMjU1OTc4ZDk3NDdhNzMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2E3ODc0Mjc5NWNhMzI0ODBmMmJhYjY5N2ZkNWUzMjg2MThkOTk5N2Q2ZjQxN2NmMWIxNGU5ZGE5YWYyNmI3NCIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NwcHVuaXQvY3BwdW5pdF8xLjEzLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2NwcHVuaXQvY3BwdW5pdF8xLjEzLjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NwcHVuaXQvY3BwdW5pdF8xLjEzLjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY3BwdW5pdC9jcHB1bml0XzEuMTMuMi5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3BwdW5pdC9maWxlcy8wMDAxLWRvYy1NYWtlZmlsZS5hbS1kby1ub3QtcHJlc2VydmUtZmlsZS1mbGFncy13aGVuLWNvcHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2NwcHVuaXQvZmlsZXMvMDAwMS1kb2MtTWFrZWZpbGUuYW0tZG8tbm90LXByZXNlcnZlLWZpbGUtZmxhZ3Mtd2hlbi1jb3B5LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jcHB1bml0L2ZpbGVzLzAwMDEtZG9jLU1ha2VmaWxlLmFtLWRvLW5vdC1wcmVzZXJ2ZS1maWxlLWZsYWdzLXdoZW4tY29weS5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9jcHB1bml0L2ZpbGVzLzAwMDEtZG9jLU1ha2VmaWxlLmFtLWRvLW5vdC1wcmVzZXJ2ZS1maWxlLWZsYWdzLXdoZW4tY29weS5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3VuaXQvY3VuaXRfMi4xLTMuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2N1bml0L2N1bml0XzIuMS0zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jdW5pdC9jdW5pdF8yLjEtMy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9jdW5pdC9jdW5pdF8yLjEtMy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3VuaXQvZmlsZXMvZml4dXAtaW5zdGFsbC1kb2NkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2N1bml0L2ZpbGVzL2ZpeHVwLWluc3RhbGwtZG9jZGlyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jdW5pdC9maWxlcy9maXh1cC1pbnN0YWxsLWRvY2Rpci5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9jdW5pdC9maWxlcy9maXh1cC1pbnN0YWxsLWRvY2Rpci5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3h4dGVzdC9jeHh0ZXN0XzQuMy5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY3h4dGVzdC9jeHh0ZXN0XzQuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3h4dGVzdC9jeHh0ZXN0XzQuMy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9jeHh0ZXN0L2N4eHRlc3RfNC4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2V2dGVzdC9ldnRlc3RfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9ldnRlc3QvZXZ0ZXN0X2dpdC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ldnRlc3QvZXZ0ZXN0X2dpdC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9ldnRlc3QvZXZ0ZXN0X2dpdC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mYnRlc3QvZmItdGVzdF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2ZidGVzdC9mYi10ZXN0X2dpdC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mYnRlc3QvZmItdGVzdF9naXQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZmJ0ZXN0L2ZiLXRlc3RfZ2l0LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2d0ZXN0L2d0ZXN0XzEuOC4wLmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9ndGVzdC9ndGVzdF8xLjguMC5iYgppbmRleCA0ODNkYzFmLi40OGNmNGUwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2d0ZXN0L2d0ZXN0XzEuOC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZ3Rlc3QvZ3Rlc3RfMS44LjAuYmIKQEAgLTcsMTYgKzcsMTMgQEAKIAogUFJPVklERVMgKz0gImdtb2NrIgogCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDUkVWID0gImVjNDRjNmMxNjc1YzI1Yjk4MjdhYWNkMDhjMDI0MzNjY2NkZTc3ODAiCiBTUkNfVVJJID0gIlwKLSAgICBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2dvb2dsZXRlc3QvYXJjaGl2ZS9yZWxlYXNlLSR7UFZ9LnRhci5neiBcCisgICAgZ2l0Oi8vZ2l0aHViLmNvbS9nb29nbGUvZ29vZ2xldGVzdC5naXQ7cHJvdG9jb2w9aHR0cHM7IFwKICAgICBmaWxlOi8vQWRkLXBrZy1jb25maWctc3VwcG9ydC5wYXRjaCBcCiAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIxNjg3NzA5ODgyMzQwMWQxYmYyZWQ3ODkxZDdkY2UzNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1OGE2ZjQyNzdjYTJiYzg1NjUyMjJiM2JiZDU4YTE3NzYwOWU5YzQ4OGU4YTcyNjQ5MzU5YmE1MTQ1MGRiN2Q4IgotCi1TID0gIiR7V09SS0RJUn0vZ29vZ2xldGVzdC1yZWxlYXNlLSR7UFZ9IgotCiBpbmhlcml0IGNtYWtlCiAKIEFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wbS1xYS9wbS1xYV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3BtLXFhL3BtLXFhX2dpdC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcG0tcWEvcG0tcWFfZ2l0LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3BtLXFhL3BtLXFhX2dpdC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9zdHJlc3Mtbmcvc3RyZXNzLW5nLzAwMDEtU2V2ZXJhbC1jaGFuZ2VzLXRvLWZpeC1tdXNsLWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9zdHJlc3Mtbmcvc3RyZXNzLW5nLzAwMDEtU2V2ZXJhbC1jaGFuZ2VzLXRvLWZpeC1tdXNsLWJ1aWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MDRmODYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3N0cmVzcy1uZy9zdHJlc3MtbmcvMDAwMS1TZXZlcmFsLWNoYW5nZXMtdG8tZml4LW11c2wtYnVpbGQucGF0Y2gKQEAgLTAsMCArMSwxNDEgQEAKK0Zyb20gNzg0ZGNkMDlkM2YyNjZlMjcxZDAwN2Y0ZmQyNTdlODUwMzY4NzJjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9Bbj1DMz1BRGJhbD0yMExpbT1DMz1CM24/PSA8YW5pYmFsLmxpbW9uQGxpbmFyby5vcmc+CitEYXRlOiBUdWUsIDE3IE9jdCAyMDE3IDEwOjEzOjIwIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIFNldmVyYWwgY2hhbmdlcyB0byBmaXggbXVzbCBidWlsZAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitzdHJlc3Mte2NvbnRleHQsIHN0YWNrbW1hcH0uYzogU2V0IHRlc3RzIHRvIG5vbi1pbXBsZW1lbnRlZCBiZWNhdXNlIHVzZXMKK3N3YXBjb250ZXh0LCBtdXNsIHByb3ZpZGUgdGhlIGRlZmluaXRpb24gYnV0IG5vdCB0aGUgaW1wbGVtZW50YXRpb24gZHVlCisgIHRvIHRoYXQgZnVuY3Rpb25zIGFyZSBwcmUtUE9TSVggYW5kIHNldCB0byBiZSBkZXByZWNhdGVkLgorICBzdHJlc3Mte3Jlc291cmNlcywgcHR5fS5jOiBEb2Vzbid0IGluY2x1ZGUgdGVybWlvLmggYW5kIHJlbW92ZSBzdHJlc3MKKyAgb3BlcmF0aW9ucyB0aGF0IHVzZXMgc3RydWN0IHRlcm1pbywgbXVzbCBkb2Vzbid0IHByb3ZpZGUgdGhhdCBzdHJ1Y3QuCitzdHJlc3MtbWFsbG9jLmM6IENoZWNrIGZvciBkZWZpbml0aW9uIG9mIE1fTU1BUF9USFJFU0hPTEQgbXVzbCBkb2Vzbid0CisgIHB0b3ZpZGUgdGhhdCBjb25zdGFudC4KK3N0cmVzcy1tYWR2aXNlLmM6IEFkZCBzdGF0aWMgcG9pc2lvbl9jb3VudCBpbnRlZ2VyLCBkZWZpbml0aW9uIG9mCisgIE1BRFZfU09GVF9PRkZMSU5FIGRvZXNuJ3QgZ3JhdW50ZWUgTUFEVl9IV1BPSVNPTiB0byBiZSBkZWZpbmVkLgorY2FjaGUuYzogRGVmaW5lIEdMT0JfT05MWURJUiBub3QgYXZhaWxhYmxlIG9uIE1VU0wuCisKK1NpZ25lZC1vZmYtYnk6IEFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGluYXJvLm9yZz4KK1NpZ25lZC1vZmYtYnk6IFRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPgorCitVcHN0cmVhbS1zdGF0dXM6IFBlbmRpbmcKKworLS0tCisgY2FjaGUuYyAgICAgICAgICAgIHwgIDQgKysrKworIHN0cmVzcy1tYWR2aXNlLmMgICB8ICAxICsKKyBzdHJlc3MtbWFsbG9jLmMgICAgfCAgMiArLQorIHN0cmVzcy1wdHkuYyAgICAgICB8IDE4IC0tLS0tLS0tLS0tLS0tLS0tLQorIHN0cmVzcy1yZXNvdXJjZXMuYyB8ICAxIC0KKyBzdHJlc3Mtc3RhY2ttbWFwLmMgfCAgMiArLQorIDYgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NhY2hlLmMgYi9jYWNoZS5jCitpbmRleCBmYmY3Njc0Li45MzZjMWZmIDEwMDY0NAorLS0tIGEvY2FjaGUuYworKysrIGIvY2FjaGUuYworQEAgLTI4LDYgKzI4LDEwIEBAIHR5cGVkZWYgc3RydWN0IHsKKyAKKyAjaW5jbHVkZSA8Z2xvYi5oPgorIAorKyNpZm5kZWYgR0xPQl9PTkxZRElSCisrI2RlZmluZSBHTE9CX09OTFlESVIgICAgMHgxMDAKKysjZW5kaWYKKysKKyAjaWYgZGVmaW5lZChfX2xpbnV4X18pCisgI2RlZmluZSBTWVNfQ1BVX1BSRUZJWCAgICAgICAgICAgICAgICIvc3lzL2RldmljZXMvc3lzdGVtL2NwdSIKKyAjZGVmaW5lIEdMT0JfUEFUVEVSTiBTWVNfQ1BVX1BSRUZJWCAgIi9jcHVbMC05XSoiCitkaWZmIC0tZ2l0IGEvc3RyZXNzLW1hZHZpc2UuYyBiL3N0cmVzcy1tYWR2aXNlLmMKK2luZGV4IDllNzFlMTEuLmRkZjhkMmQgMTAwNjQ0CistLS0gYS9zdHJlc3MtbWFkdmlzZS5jCisrKysgYi9zdHJlc3MtbWFkdmlzZS5jCitAQCAtMTQ3LDYgKzE0Nyw3IEBAIHN0YXRpYyBpbnQgc3RyZXNzX3JhbmRvbV9hZHZpc2UoY29uc3QgYXJnc190ICphcmdzKQorICNpZiBkZWZpbmVkKE1BRFZfU09GVF9PRkZMSU5FKQorIAlpZiAoYWR2aXNlID09IE1BRFZfU09GVF9PRkZMSU5FKSB7CisgCQlzdGF0aWMgaW50IHNvZnRfb2ZmbGluZV9jb3VudDsKKysJCXN0YXRpYyBpbnQgcG9pc29uX2NvdW50OworIAorIAkJLyogLi5hbmQgbWluaW1pemUgbnVtYmVyIG9mIHNvZnQgb2ZmbGluZSBwYWdlcyAqLworIAkJaWYgKChzb2Z0X29mZmxpbmVfY291bnQgPj0gTlVNX1NPRlRfT0ZGTElORV9NQVgpIHx8CitkaWZmIC0tZ2l0IGEvc3RyZXNzLW1hbGxvYy5jIGIvc3RyZXNzLW1hbGxvYy5jCitpbmRleCBhNDZiOGM2Li40Mjc4MjdhIDEwMDY0NAorLS0tIGEvc3RyZXNzLW1hbGxvYy5jCisrKysgYi9zdHJlc3MtbWFsbG9jLmMKK0BAIC05OSw3ICs5OSw3IEBAIGludCBzdHJlc3NfbWFsbG9jKGNvbnN0IGFyZ3NfdCAqYXJncykKKyAJCQltYWxsb2NfbWF4ID0gTUlOX01BTExPQ19NQVg7CisgCX0KKyAKKy0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2xpbnV4X18pCisrI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19saW51eF9fKSAmJiBkZWZpbmVkKE1fTU1BUF9USFJFU0hPTEQpCisgCWlmIChnZXRfc2V0dGluZygibWFsbG9jLXRocmVzaG9sZCIsICZtYWxsb2NfdGhyZXNob2xkKSkKKyAJCSh2b2lkKW1hbGxvcHQoTV9NTUFQX1RIUkVTSE9MRCwgKGludCltYWxsb2NfdGhyZXNob2xkKTsKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9zdHJlc3MtcHR5LmMgYi9zdHJlc3MtcHR5LmMKK2luZGV4IDFiZDFmYmQuLmIxZmU1NzMgMTAwNjQ0CistLS0gYS9zdHJlc3MtcHR5LmMKKysrKyBiL3N0cmVzcy1wdHkuYworQEAgLTI2LDcgKzI2LDYgQEAKKyAKKyAjaWYgZGVmaW5lZChfX2xpbnV4X18pCisgCistI2luY2x1ZGUgPHRlcm1pby5oPgorICNpbmNsdWRlIDx0ZXJtaW9zLmg+CisgCisgdHlwZWRlZiBzdHJ1Y3QgeworQEAgLTEwOCw3ICsxMDcsNiBAQCBpbnQgc3RyZXNzX3B0eShjb25zdCBhcmdzX3QgKmFyZ3MpCisgCQkgKi8KKyAJCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAJCQlzdHJ1Y3QgdGVybWlvcyBpb3M7CistCQkJc3RydWN0IHRlcm1pbyBpbzsKKyAJCQlzdHJ1Y3Qgd2luc2l6ZSB3czsKKyAJCQlpbnQgYXJnOworIAorQEAgLTEzMCwyMiArMTI4LDYgQEAgaW50IHN0cmVzc19wdHkoY29uc3QgYXJnc190ICphcmdzKQorIAkJCWlmIChpb2N0bChwdHlzW2ldLnNsYXZlLCBUQ1NFVFNGLCAmaW9zKSA8IDApCisgCQkJCXByX2ZhaWxfZXJyKCJpb2N0bCBUQ1NFVFNGIG9uIHNsYXZlIHB0eSIpOworICNlbmRpZgorLSNpZiBkZWZpbmVkKFRDR0VUQSkKKy0JCQlpZiAoaW9jdGwocHR5c1tpXS5zbGF2ZSwgVENHRVRBLCAmaW8pIDwgMCkKKy0JCQkJcHJfZmFpbF9lcnIoImlvY3RsIFRDR0VUQSBvbiBzbGF2ZSBwdHkiKTsKKy0jZW5kaWYKKy0jaWYgZGVmaW5lZChUQ1NFVEEpCistCQkJaWYgKGlvY3RsKHB0eXNbaV0uc2xhdmUsIFRDU0VUQSwgJmlvKSA8IDApCistCQkJCXByX2ZhaWxfZXJyKCJpb2N0bCBUQ1NFVEEgb24gc2xhdmUgcHR5Iik7CistI2VuZGlmCistI2lmIGRlZmluZWQoVENTRVRBVykKKy0JCQlpZiAoaW9jdGwocHR5c1tpXS5zbGF2ZSwgVENTRVRBVywgJmlvKSA8IDApCistCQkJCXByX2ZhaWxfZXJyKCJpb2N0bCBUQ1NFVEFXIG9uIHNsYXZlIHB0eSIpOworLSNlbmRpZgorLSNpZiBkZWZpbmVkKFRDU0VUQUYpCistCQkJaWYgKGlvY3RsKHB0eXNbaV0uc2xhdmUsIFRDU0VUQUYsICZpbykgPCAwKQorLQkJCQlwcl9mYWlsX2VycigiaW9jdGwgVENTRVRBRiBvbiBzbGF2ZSBwdHkiKTsKKy0jZW5kaWYKKyAjaWYgZGVmaW5lZChUSU9DR0xDS1RSTUlPUykKKyAJCQlpZiAoaW9jdGwocHR5c1tpXS5zbGF2ZSwgVElPQ0dMQ0tUUk1JT1MsICZpb3MpIDwgMCkKKyAJCQkJcHJfZmFpbF9lcnIoImlvY3RsIFRJT0NHTENLVFJNSU9TIG9uIHNsYXZlIHB0eSIpOworZGlmZiAtLWdpdCBhL3N0cmVzcy1yZXNvdXJjZXMuYyBiL3N0cmVzcy1yZXNvdXJjZXMuYworaW5kZXggOTU4Yzk5YS4uYWY3OWFiZCAxMDA2NDQKKy0tLSBhL3N0cmVzcy1yZXNvdXJjZXMuYworKysrIGIvc3RyZXNzLXJlc291cmNlcy5jCitAQCAtMzEsNyArMzEsNiBAQAorICNpbmNsdWRlIDxzeXMvaW5vdGlmeS5oPgorICNlbmRpZgorICNpZiBkZWZpbmVkKF9fbGludXhfXykKKy0jaW5jbHVkZSA8dGVybWlvLmg+CisgI2luY2x1ZGUgPHRlcm1pb3MuaD4KKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChIQVZFX0xJQl9QVEhSRUFEKSAmJiBkZWZpbmVkKF9fbGludXhfXykKK2RpZmYgLS1naXQgYS9zdHJlc3Mtc3RhY2ttbWFwLmMgYi9zdHJlc3Mtc3RhY2ttbWFwLmMKK2luZGV4IDljODNhNjkuLjI5ODRmMDkgMTAwNjQ0CistLS0gYS9zdHJlc3Mtc3RhY2ttbWFwLmMKKysrKyBiL3N0cmVzcy1zdGFja21tYXAuYworQEAgLTI0LDcgKzI0LDcgQEAKKyAgKi8KKyAjaW5jbHVkZSAic3RyZXNzLW5nLmgiCisgCistI2lmIGRlZmluZWQoX19saW51eF9fKQorKyNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgRmFsc2UKKyAKKyAjaW5jbHVkZSA8dWNvbnRleHQuaD4KKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3Qvc3RyZXNzLW5nL3N0cmVzcy1uZy8wMDAyLXN0cmVzcy1mY250bC1maXgtYnVpbGQtZm9yLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3N0cmVzcy1uZy9zdHJlc3MtbmcvMDAwMi1zdHJlc3MtZmNudGwtZml4LWJ1aWxkLWZvci1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkMzI4N2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3N0cmVzcy1uZy9zdHJlc3MtbmcvMDAwMi1zdHJlc3MtZmNudGwtZml4LWJ1aWxkLWZvci1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0Zyb20gZmFhZGJjMTQ3Mzk0Y2VhOTI3OGJjMjQ5NGYzM2UzNTIxZDg4ZTc0MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPgorRGF0ZTogVHVlLCA5IEphbiAyMDE4IDE4OjM4OjQ1IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIHN0cmVzcy1mY250bDogZml4IGJ1aWxkIGZvciBtdXNsCisKK1NpZ25lZC1vZmYtYnk6IFRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPgorCitVcHN0cmVhbS1zdGF0dXM6IFBlbmRpbmcKKworLS0tCisgc3RyZXNzLWZjbnRsLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3N0cmVzcy1mY250bC5jIGIvc3RyZXNzLWZjbnRsLmMKK2luZGV4IDJlYTg2N2IuLmU5MWIzNDUgMTAwNjQ0CistLS0gYS9zdHJlc3MtZmNudGwuYworKysrIGIvc3RyZXNzLWZjbnRsLmMKK0BAIC00MTUsNiArNDE1LDcgQEAgb2ZkX2xvY2tfYWJvcnQ6CXsgLyogTm93dCAqLyB9CisgI2lmIChkZWZpbmVkKEZfR0VUX0ZJTEVfUldfSElOVCkgJiYgZGVmaW5lZChGX1NFVF9GSUxFX1JXX0hJTlQpKSB8IFwKKyAgICAgKGRlZmluZWQoRl9HRVRfUldfSElOVCkgJiYgZGVmaW5lZChGX1NFVF9SV19ISU5UKSkKKyAJeworKwkJaW50IHJldDsKKyAJCXNpemVfdCBpOworIAkJdW5zaWduZWQgbG9uZyBoaW50OworIAkJc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgaGludHNbXSA9IHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3Qvc3RyZXNzLW5nL3N0cmVzcy1uZ18wLjA5LjE0LmJiIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9zdHJlc3Mtbmcvc3RyZXNzLW5nXzAuMDkuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZhYjQzMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3Qvc3RyZXNzLW5nL3N0cmVzcy1uZ18wLjA5LjE0LmJiCkBAIC0wLDAgKzEsMjUgQEAKK1NVTU1BUlkgPSAiQSB0b29sIHRvIGxvYWQgYW5kIHN0cmVzcyBhIGNvbXB1dGVyIHN5c3RlbSIKK0hPTUVQQUdFID0gImh0dHA6Ly9rZXJuZWwudWJ1bnR1LmNvbS9+Y2tpbmcvc3RyZXNzLW5nLyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworREVQRU5EUyA9ICJ6bGliIGxpYmFpbyIKKworU1JDX1VSSSA9ICJodHRwOi8va2VybmVsLnVidW50dS5jb20vfmNraW5nL3RhcmJhbGxzLyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1zdHJlc3MtZmNudGwtZml4LWJ1aWxkLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKKyAgICBmaWxlOi8vMDAwMS1TZXZlcmFsLWNoYW5nZXMtdG8tZml4LW11c2wtYnVpbGQucGF0Y2ggXAorICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxZjhiNmMyYzI4MzA3MDRkMmEyODE0YzE2MDgyZDQ4ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMmNhYzM0YTVjYjA0MTE5N2FmNjBjMTg2Nzg0NGM2Y2JiMDg5YTZkMTBhMzhjZGNmN2I4ZjI3YmZhYTZlZjhmIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPz0gImh0dHA6Ly9rZXJuZWwudWJ1bnR1LmNvbS9+Y2tpbmcvdGFyYmFsbHMvJHtCUE59LyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID89ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKKworQ0ZMQUdTICs9ICItV2FsbCAtV2V4dHJhIC1EVkVSU0lPTj0nIiQoVkVSU0lPTikiJyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zdHJlc3MtbmcgJHtEfSR7YmluZGlyfS9zdHJlc3MtbmcKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3Rlc3RmbG9hdC9maWxlcy8wMDAxLU1ha2VmaWxlLWZvci1jcm9zcy1jb21waWxlLVNvZnRGbG9hdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvdGVzdGZsb2F0L2ZpbGVzLzAwMDEtTWFrZWZpbGUtZm9yLWNyb3NzLWNvbXBpbGUtU29mdEZsb2F0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90ZXN0ZmxvYXQvZmlsZXMvMDAwMS1NYWtlZmlsZS1mb3ItY3Jvc3MtY29tcGlsZS1Tb2Z0RmxvYXQucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvdGVzdGZsb2F0L2ZpbGVzLzAwMDEtTWFrZWZpbGUtZm9yLWNyb3NzLWNvbXBpbGUtU29mdEZsb2F0LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90ZXN0ZmxvYXQvZmlsZXMvMDAwMi1NYWtlZmlsZS1mb3ItY3Jvc3MtY29tcGlsZS1UZXN0RmxvYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3Rlc3RmbG9hdC9maWxlcy8wMDAyLU1ha2VmaWxlLWZvci1jcm9zcy1jb21waWxlLVRlc3RGbG9hdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGVzdGZsb2F0L2ZpbGVzLzAwMDItTWFrZWZpbGUtZm9yLWNyb3NzLWNvbXBpbGUtVGVzdEZsb2F0LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3Rlc3RmbG9hdC9maWxlcy8wMDAyLU1ha2VmaWxlLWZvci1jcm9zcy1jb21waWxlLVRlc3RGbG9hdC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGVzdGZsb2F0L3Rlc3RmbG9hdF8zYS5iYiBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvdGVzdGZsb2F0L3Rlc3RmbG9hdF8zYS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGVzdGZsb2F0L3Rlc3RmbG9hdF8zYS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC90ZXN0ZmxvYXQvdGVzdGZsb2F0XzNhLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2Uvc2l0ZS9lbmRpYW4tYmlnIGIvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3NpdGUvZW5kaWFuLWJpZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2E5NjhlMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2Uvc2l0ZS9lbmRpYW4tYmlnCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0jIHJwLXBwcG9lCi1ycHBwb2VfY3ZfcGFja19iaXRmaWVsZHM9JHtycHBwb2VfY3ZfcGFja19iaXRmaWVsZHM9bm9ybWFsfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3NpdGUvZW5kaWFuLWxpdHRsZSBiL2ltcG9ydC1sYXllcnMvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9zaXRlL2VuZGlhbi1saXR0bGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiY2Q5NjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3NpdGUvZW5kaWFuLWxpdHRsZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotIyBycC1wcHBvZQotcnBwcG9lX2N2X3BhY2tfYml0ZmllbGRzPSR7cnBwcG9lX2N2X3BhY2tfYml0ZmllbGRzPXJldn0K