ZGlmZiAtLWdpdCBhL3J1bnRpbWUvdG9vbHMvZWZtX3BlcmwucGwgYi9ydW50aW1lL3Rvb2xzL2VmbV9wZXJsLnBsCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU3MGQ2ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3Rvb2xzL2VmbV9wZXJsLnBsCkBAIC0wLDAgKzEsMTUzIEBACisjIS91c3IvYmluL3BlcmwgLXcKKworIyB2aW1wYXJzZS5wbCAtIFJlZm9ybWF0cyB0aGUgZXJyb3IgbWVzc2FnZXMgb2YgdGhlIFBlcmwgaW50ZXJwcmV0ZXIgZm9yIHVzZQorIyB3aXRoIHRoZSBxdWlja2ZpeCBtb2RlIG9mIFZpbQorIworIyBDb3B5cmlnaHQgKKkpIDIwMDEgYnkgSvZyZyBaaWVmbGUgPGpvZXJnLnppZWZsZUBnbXguZGU+CisjIFlvdSBtYXkgdXNlIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgUGVybCBpdHNlbGYuCisjCisjIFVzYWdlOiBwdXQgb25lIG9mIHRoZSB0d28gY29uZmlndXJhdGlvbnMgYmVsb3cgaW4geW91ciB+Ly52aW1yYyAod2l0aG91dCB0aGUKKyMgZGVzY3JpcHRpb24gYW5kICcjICcpIGFuZCBlbmpveSAoYmUgc3VyZSB0byBhZGp1c3QgdGhlIHBhdGhzIHRvIHZpbXBhcnNlLnBsCisjIGJlZm9yZSk6CisjCisjIFByb2dyYW0gaXMgcnVuIGludGVyYWN0aXZlbHkgd2l0aCAncGVybCAtdyc6CisjCisjIHNldCBtYWtlcHJnPSRIT01FL2Jpbi92aW1wYXJzZS5wbFwgJVwgJCoKKyMgc2V0IGVycm9yZm9ybWF0PSVmOiVsOiVtCisjCisjIFByb2dyYW0gaXMgb25seSBjb21waWxlZCB3aXRoICdwZXJsIC13Yyc6CisjCisjIHNldCBtYWtlcHJnPSRIT01FL2Jpbi92aW1wYXJzZS5wbFwgLWNcICVcICQqCisjIHNldCBlcnJvcmZvcm1hdD0lZjolbDolbQorIworIyBVc2FnZToKKyMJdmltcGFyc2UucGwgWy1jXSBbLWYgPGVycm9yZmlsZT5dIDxwcm9ncmFtZmlsZT4gW3Byb2dyYW1hcmdzXQorIworIwkJLWMJY29tcGlsZSBvbmx5LCBkb24ndCBydW4gKHBlcmwgLXdjKQorIwkJLWYJd3JpdGUgZXJyb3JzIHRvIDxlcnJvcmZpbGU+CisjCisjIEV4YW1wbGUgdXNhZ2VzOgorIwkqIEZyb20gdGhlIGNvbW1hbmQgbGluZToKKyMJCXZpbXBhcnNlLnBsIHByb2dyYW0ucGwKKyMKKyMJCXZpbXBhcnNlLnBsIC1jIC1mIGVycm9yZmlsZSBwcm9ncmFtLnBsCisjCQlUaGVuIHJ1biB2aW0gLXEgZXJyb3JmaWxlIHRvIGVkaXQgdGhlIGVycm9ycyB3aXRoIFZpbS4KKyMKKyMJKiBGcm9tIFZpbToKKyMJCUVkaXQgaW4gVmltIChhbmQgc2F2ZSwgaWYgeW91IGRvbid0IGhhdmUgYXV0b3dyaXRlIG9uKSwgdGhlbgorIwkJdHlwZSAnOm1haycgb3IgJzptYWsgYXJncycgKGFyZ3MgYmVpbmcgdGhlIHByb2dyYW0gYXJndW1lbnRzKQorIwkJdG8gZXJyb3IgY2hlY2suCisjCisjIFZlcnNpb24gaGlzdG9yeToKKyMJMC4yICgwNC8xMi8yMDAxKToKKyMJCSogRmlyc3QgcHVibGljIHZlcnNpb24gKHNlbnQgdG8gQnJhbSkKKyMJCSogLWMgY29tbWFuZCBsaW5lIG9wdGlvbiBmb3IgY29tcGlsaW5nIG9ubHkKKyMJCSogZ3JhbW1hdGljYWwgZml4OiAnVGhlcmUgd2FzIDEgZXJyb3IuJworIwkJKiBidWcgZml4IGZvciBtdWx0aXBsZSBhcmd1bWVudHMKKyMJCSogbW9yZSBlcnJvciBjaGVja3MKKyMJCSogZG9jdW1lbnRhdGlvbiAodG9wIG9mIGZpbGUsICZ1c2FnZSkKKyMJCSogbWlub3IgY29kZSBjbGVhbiB1cHMKKyMJMC4xICgwMi8wMi8yMDAxKToKKyMJCSogSW5pdGlhbCB2ZXJzaW9uCisjCQkqIEJhc2ljIGZ1bmN0aW9uYWxpdHkKKyMKKyMgVG9kbzoKKyMJKiB0ZXN0IG9uIG1vcmUgc3lzdGVtcworIwkqIHVzZSBwb3J0YWJsZSB3YXkgdG8gZGV0ZXJtaW5lIHRoZSBsb2NhdGlvbiBvZiBwZXJsICgndXNlIENvbmZpZycpCisjCSogaW5jbHVkZSBvcHRpb24gdGhhdCBzaG93cyBwZXJsZGlhZyBtZXNzYWdlcyBmb3IgZWFjaCBlcnJvcgorIwkqIGFsbG93IHRvIHBhc3MgaW4gcHJvZ3JhbSBieSBTVERJTgorIwkqIG1vcmUgaW50dWl0aXZlIGJlaGF2aW91ciBpZiBubyBlcnJvciBpcyBmb3VuZCAoc2hvdyBtZXNzYWdlKQorIworIyBUZXN0ZWQgdW5kZXIgU3VuT1MgNS43IHdpdGggUGVybCA1LjYuMC4gIExldCBtZSBrbm93IGlmIGl0J3Mgbm90IHdvcmtpbmcgZm9yCisjIHlvdS4KKwordXNlIHN0cmljdDsKK3VzZSBHZXRvcHQ6OlN0ZDsKKwordXNlIHZhcnMgcXcvJG9wdF9jICRvcHRfZiAkb3B0X2gvOyAjIG5lZWRlZCBmb3IgR2V0b3B0IGluIGNvbWJpbmF0aW9uIHdpdGggdXNlIHN0cmljdCAndmFycycKKwordXNlIGNvbnN0YW50IFZFUlNJT04gPT4gMC4yOworCitnZXRvcHRzKCdjZjpoJyk7CisKKyZ1c2FnZSBpZiAkb3B0X2g7ICMgbm90IG5lY2Vzc2FyaWx5IG5lZWRlZCwgYnV0IGdvb2QgZm9yIGZ1cnRoZXIgZXh0ZW5zaW9uCisKK2lmIChkZWZpbmVkICRvcHRfZikgeworCisgICAgb3BlbiBGSUxFLCAiPiAkb3B0X2YiIG9yIGRvIHsKKwl3YXJuICJDb3VsZG4ndCBvcGVuICRvcHRfZjogJCEuICBVc2luZyBTVERPVVQgaW5zdGVhZC5cbiI7CisJdW5kZWYgJG9wdF9mOworICAgIH07CisKK307CisKK215ICRoYW5kbGUgPSAoZGVmaW5lZCAkb3B0X2YgPyBcKkZJTEUgOiBcKlNURE9VVCk7CisKKyhteSAkZmlsZSA9IHNoaWZ0KSBvciAmdXNhZ2U7ICMgZGlzcGxheSB1c2FnZSBpZiBubyBmaWxlbmFtZSBpcyBzdXBwbGllZAorbXkgJGFyZ3MgPSAoQEFSR1YgPyAnICcgLiBqb2luICcgJywgQEFSR1YgOiAnJyk7CisKK215IEBsaW5lcyA9IGBwZXJsIEB7W2RlZmluZWQgJG9wdF9jID8gJy1jICcgOiAnJyBdfSAtdyAiJGZpbGUkYXJncyIgMj4mMWA7CisKK215ICRlcnJvcnMgPSAwOworZm9yZWFjaCBteSAkbGluZSAoQGxpbmVzKSB7CisKKyAgICBjaG9tcCgkbGluZSk7CisgICAgbXkgKCRmaWxlLCAkbGluZW5vLCAkbWVzc2FnZSwgJHJlc3QpOworCisgICAgaWYgKCRsaW5lID1+IC9eKC4qKVxzYXRccyguKilcc2xpbmVccyhcZCspKFwufCxcc25lYXJcc1wiLipcIikkLykgeworCisJKCRtZXNzYWdlLCAkZmlsZSwgJGxpbmVubywgJHJlc3QpID0gKCQxLCAkMiwgJDMsICQ0KTsKKwkkZXJyb3JzKys7CisJJG1lc3NhZ2UgLj0gJHJlc3QgaWYgKCRyZXN0ID1+IHMvXiwvLyk7CisJcHJpbnQgJGhhbmRsZSAiJGZpbGU6JGxpbmVubzokbWVzc2FnZVxuIjsKKworICAgIH0gZWxzZSB7IG5leHQgfTsKKworfQorCitpZiAoZGVmaW5lZCAkb3B0X2YpIHsKKworICAgIG15ICRtc2c7CisgICAgaWYgKCRlcnJvcnMgPT0gMSkgeworCisJJG1zZyA9ICJUaGVyZSB3YXMgMSBlcnJvci5cbiI7CisKKyAgICB9IGVsc2UgeworCisJJG1zZyA9ICJUaGVyZSB3ZXJlICRlcnJvcnMgZXJyb3JzLlxuIjsKKworICAgIH07CisKKyAgICBwcmludCBTVERPVVQgJG1zZzsKKyAgICBjbG9zZSBGSUxFOworICAgIHVubGluayAkb3B0X2YgdW5sZXNzICRlcnJvcnM7CisKK307CisKK3N1YiB1c2FnZSB7CisKKyAgICAobG9jYWwgJDAgPSAkMCkgPX4gcy9eLipcLyhbXlwvXSspJC8kMS87ICMgcmVtb3ZlIHBhdGggZnJvbSBuYW1lIG9mIHByb2dyYW0KKyAgICBwcmludDw8RU9UOworVXNhZ2U6CisJJDAgWy1jXSBbLWYgPGVycm9yZmlsZT5dIDxwcm9ncmFtZmlsZT4gW3Byb2dyYW1hcmdzXQorCisJCS1jCWNvbXBpbGUgb25seSwgZG9uJ3QgcnVuIChleGVjdXRlcyAncGVybCAtd2MnKQorCQktZgl3cml0ZSBlcnJvcnMgdG8gPGVycm9yZmlsZT4KKworRXhhbXBsZXM6CisJKiBBdCB0aGUgY29tbWFuZCBsaW5lOgorCQkkMCBwcm9ncmFtLnBsCisJCURpc3BsYXlzIG91dHB1dCBvbiBTVERPVVQuCisKKwkJJDAgLWMgLWYgZXJyb3JmaWxlIHByb2dyYW0ucGwKKwkJVGhlbiBydW4gJ3ZpbSAtcSBlcnJvcmZpbGUnIHRvIGVkaXQgdGhlIGVycm9ycyB3aXRoIFZpbS4KKworCSogSW4gVmltOgorCQlFZGl0IGluIFZpbSAoYW5kIHNhdmUsIGlmIHlvdSBkb24ndCBoYXZlIGF1dG93cml0ZSBvbiksIHRoZW4KKwkJdHlwZSAnOm1haycgb3IgJzptYWsgYXJncycgKGFyZ3MgYmVpbmcgdGhlIHByb2dyYW0gYXJndW1lbnRzKQorCQl0byBlcnJvciBjaGVjay4KK0VPVAorCisgICAgZXhpdCAwOworCit9Owo=