From: Marc Alff Date: January 30 2012 11:00am Subject: bzr push into mysql-trunk-wl5259 branch (marc.alff:3363 to 3364) List-Archive: http://lists.mysql.com/commits/142630 Message-Id: <201201301101.q0UB1111017244@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDMzNjQgTWFyYyBBbGZmCTIwMTItMDEtMzAgW21lcmdlXQogICAgICBNZXJnZSBteXNxbC10cnVu ayAtLT4gbXlzcWwtdHJ1bmstd2w1MjU5CgogICAgcmVuYW1lZDoKICAgICAgbXlzcWwtdGVzdC9z dWl0ZS9zeXNfdmFycy9yL2lubm9kYl9zb3J0X2J1Zl9zaXplX2Jhc2ljLnJlc3VsdCA9PiBteXNx bC10ZXN0L3N1aXRlL3N5c192YXJzL3IvaW5ub2RiX3NvcnRfYnVmZmVyX3NpemVfYmFzaWMucmVz dWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvc3lzX3ZhcnMvdC9pbm5vZGJfc29ydF9idWZfc2l6 ZV9iYXNpYy50ZXN0ID0+IG15c3FsLXRlc3Qvc3VpdGUvc3lzX3ZhcnMvdC9pbm5vZGJfc29ydF9i dWZmZXJfc2l6ZV9iYXNpYy50ZXN0CiAgICBtb2RpZmllZDoKICAgICAgbXlzcWwtdGVzdC9pbmNs dWRlL2Z1bmNfaW4uaW5jCiAgICAgIG15c3FsLXRlc3QvaW5jbHVkZS9yYW5nZS5pbmMKICAgICAg bXlzcWwtdGVzdC9yL2Z1bmNfaW5fYWxsLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3IvZnVuY19p bl9pY3AucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9mdW5jX2luX2ljcF9tcnIucmVzdWx0CiAg ICAgIG15c3FsLXRlc3Qvci9mdW5jX2luX21yci5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL2Z1 bmNfaW5fbXJyX2Nvc3QucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9mdW5jX2luX25vbmUucmVz dWx0CiAgICAgIG15c3FsLXRlc3Qvci9sb3dlcmNhc2VfZnNfb2ZmLnJlc3VsdAogICAgICBteXNx bC10ZXN0L3IvbWVyZ2UucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9vcHRpbWl6ZXJfZGVidWdf c3luYy5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL3BsdWdpbi5yZXN1bHQKICAgICAgbXlzcWwt dGVzdC9yL3JhbmdlX2FsbC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL3JhbmdlX2ljcC5yZXN1 bHQKICAgICAgbXlzcWwtdGVzdC9yL3JhbmdlX2ljcF9tcnIucmVzdWx0CiAgICAgIG15c3FsLXRl c3Qvci9yYW5nZV9tcnIucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9yYW5nZV9tcnJfY29zdC5y ZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL3JhbmdlX25vbmUucmVzdWx0CiAgICAgIG15c3FsLXRl c3Qvci9zcC1zZWN1cml0eS5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL3NwLnJlc3VsdAogICAg ICBteXNxbC10ZXN0L3N1aXRlL29wdF90cmFjZS9pbmNsdWRlL3JhbmdlLmluYwogICAgICBteXNx bC10ZXN0L3N1aXRlL3BhcnRzL2luYy9wYXJ0aXRpb24tZG1sLTEtNy5pbmMKICAgICAgbXlzcWwt dGVzdC9zdWl0ZS9wYXJ0cy9pbmMvcGFydGl0aW9uLWRtbC0xLTguaW5jCiAgICAgIG15c3FsLXRl c3Qvc3VpdGUvcGFydHMvaW5jL3BhcnRpdGlvbl9rZXlfMTZjb2wuaW5jCiAgICAgIG15c3FsLXRl c3Qvc3VpdGUvcGFydHMvaW5jL3BhcnRpdGlvbl9rZXlfMzJjb2wuaW5jCiAgICAgIG15c3FsLXRl c3Qvc3VpdGUvcGFydHMvaW5jL3BhcnRpdGlvbl9rZXlfNGNvbC5pbmMKICAgICAgbXlzcWwtdGVz dC9zdWl0ZS9wYXJ0cy9pbmMvcGFydGl0aW9uX2tleV84Y29sLmluYwogICAgICBteXNxbC10ZXN0 L3N1aXRlL3BhcnRzL3IvcGFydGl0aW9uX3NwZWNpYWxfbXlpc2FtLnJlc3VsdAogICAgICBteXNx bC10ZXN0L3QvbWVyZ2UudGVzdAogICAgICBteXNxbC10ZXN0L3Qvb3B0aW1pemVyX2RlYnVnX3N5 bmMudGVzdAogICAgICBteXNxbC10ZXN0L3QvcGx1Z2luLnRlc3QKICAgICAgbXlzcWwtdGVzdC90 L3NwLXNlY3VyaXR5LnRlc3QKICAgICAgbXlzcWwtdGVzdC90L3NwLnRlc3QKICAgICAgbXlzcWwt dGVzdC90L3RlbXBfdGFibGUudGVzdAogICAgICBteXNxbC10ZXN0L3ZhbGdyaW5kLnN1cHAKICAg ICAgc3FsL2hhbmRsZXIuY2MKICAgICAgc3FsL2hhbmRsZXIuaAogICAgICBzcWwvaXRlbS5jYwog ICAgICBzcWwvaXRlbV9jbXBmdW5jLmgKICAgICAgc3FsL2l0ZW1fZnVuYy5jYwogICAgICBzcWwv aXRlbV9mdW5jLmgKICAgICAgc3FsL215c3FsZC5jYwogICAgICBzcWwvb3B0X2V4cGxhaW4uY2MK ICAgICAgc3FsL29wdF9yYW5nZS5jYwogICAgICBzcWwvc3FsX3BhcnNlLmNjCiAgICAgIHN0b3Jh Z2UvZXhhbXBsZS9oYV9leGFtcGxlLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBi dHIuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5jYwogICAgICBzdG9yYWdl L2lubm9iYXNlL2J1Zi9idWYwYnVmLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9o YV9pbm5vZGIuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pYnVmL2lidWYwaWJ1Zi5jYwogICAg ICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGJ0ci5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS9tdHIwbG9nLmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvbG9jay9sb2NrMGxv Y2suY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2UwcGFnZS5jYwogICAgICBzdG9y YWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5zLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3Jv dzBzZWwuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHVtb2QuY2MKICAgICAgc3Rv cmFnZS9pbm5vYmFzZS9yb3cvcm93MHVwZC5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Nydi9z cnYwc3J2LmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDBwdXJnZS5jYwogICAgICBz dG9yYWdlL2lubm9iYXNlL3RyeC90cngwcmVjLmNjCiAgICAgIHN0b3JhZ2UvbXlpc2FtbXJnL2hh X215aXNhbW1yZy5jYwogICAgICBzdG9yYWdlL3BlcmZzY2hlbWEvcGZzX2luc3RyX2NsYXNzLmNj CiAgICAgIHN0b3JhZ2UvcGVyZnNjaGVtYS9wZnNfaW5zdHJfY2xhc3MuaAogICAgICBzdG9yYWdl L3BlcmZzY2hlbWEvcGZzX3NlcnZlci5jYwogICAgICBteXNxbC10ZXN0L3N1aXRlL3N5c192YXJz L3IvaW5ub2RiX3NvcnRfYnVmZmVyX3NpemVfYmFzaWMucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qv c3VpdGUvc3lzX3ZhcnMvdC9pbm5vZGJfc29ydF9idWZmZXJfc2l6ZV9iYXNpYy50ZXN0CiAzMzYz IE1hcmMgQWxmZgkyMDEyLTAxLTMwCiAgICAgIHdvcmsgaW4gcHJvZ3Jlc3MsIHRlc3RzCgogICAg YWRkZWQ6CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvcGVyZnNjaGVtYS9yL2hvc3RjYWNoZV9pcHY2 X2FkZHJpbmZvX2FnYWluX2FsbG93LnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3BlcmZz Y2hlbWEvci9ob3N0Y2FjaGVfaXB2Nl9hZGRyaW5mb19iYWRfYWxsb3cucmVzdWx0CiAgICAgIG15 c3FsLXRlc3Qvc3VpdGUvcGVyZnNjaGVtYS9yL2hvc3RjYWNoZV9pcHY2X2FkZHJpbmZvX25vbmFt ZV9hbGxvdy5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9wZXJmc2NoZW1hL3IvaG9zdGNh Y2hlX2lwdjZfYXV0aF9wbHVnaW4ucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvcGVyZnNj aGVtYS9yL2hvc3RjYWNoZV9pcHY2X21heF9jb24ucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3Vp dGUvcGVyZnNjaGVtYS9yL2hvc3RjYWNoZV9pcHY2X25hbWVpbmZvX2FnYWluX2FsbG93LnJlc3Vs dAogICAgICBteXNxbC10ZXN0L3N1aXRlL3BlcmZzY2hlbWEvci9ob3N0Y2FjaGVfaXB2Nl9uYW1l aW5mb19ub25hbWVfYWxsb3cucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvcGVyZnNjaGVt YS90L2hvc3RjYWNoZV9pcHY2X2FkZHJpbmZvX2FnYWluX2FsbG93LW1hc3Rlci5vcHQKICAgICAg bXlzcWwtdGVzdC9zdWl0ZS9wZXJmc2NoZW1hL3QvaG9zdGNhY2hlX2lwdjZfYWRkcmluZm9fYWdh aW5fYWxsb3cudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3BlcmZzY2hlbWEvdC9ob3N0Y2Fj aGVfaXB2Nl9hZGRyaW5mb19iYWRfYWxsb3ctbWFzdGVyLm9wdAogICAgICBteXNxbC10ZXN0L3N1 aXRlL3BlcmZzY2hlbWEvdC9ob3N0Y2FjaGVfaXB2Nl9hZGRyaW5mb19iYWRfYWxsb3cudGVzdAog ICAgICBteXNxbC10ZXN0L3N1aXRlL3BlcmZzY2hlbWEvdC9ob3N0Y2FjaGVfaXB2Nl9hZGRyaW5m b19ub25hbWVfYWxsb3ctbWFzdGVyLm9wdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3BlcmZzY2hl bWEvdC9ob3N0Y2FjaGVfaXB2Nl9hZGRyaW5mb19ub25hbWVfYWxsb3cudGVzdAogICAgICBteXNx bC10ZXN0L3N1aXRlL3BlcmZzY2hlbWEvdC9ob3N0Y2FjaGVfaXB2Nl9hdXRoX3BsdWdpbi1tYXN0 ZXIub3B0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvcGVyZnNjaGVtYS90L2hvc3RjYWNoZV9pcHY2 X2F1dGhfcGx1Z2luLnRlc3QKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9wZXJmc2NoZW1hL3QvaG9z dGNhY2hlX2lwdjZfbWF4X2Nvbi1tYXN0ZXIub3B0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvcGVy ZnNjaGVtYS90L2hvc3RjYWNoZV9pcHY2X21heF9jb24udGVzdAogICAgICBteXNxbC10ZXN0L3N1 aXRlL3BlcmZzY2hlbWEvdC9ob3N0Y2FjaGVfaXB2Nl9uYW1laW5mb19hZ2Fpbl9hbGxvdy1tYXN0 ZXIub3B0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvcGVyZnNjaGVtYS90L2hvc3RjYWNoZV9pcHY2 X25hbWVpbmZvX2FnYWluX2FsbG93LnRlc3QKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9wZXJmc2No ZW1hL3QvaG9zdGNhY2hlX2lwdjZfbmFtZWluZm9fbm9uYW1lX2FsbG93LW1hc3Rlci5vcHQKICAg ICAgbXlzcWwtdGVzdC9zdWl0ZS9wZXJmc2NoZW1hL3QvaG9zdGNhY2hlX2lwdjZfbmFtZWluZm9f bm9uYW1lX2FsbG93LnRlc3QKICAgIG1vZGlmaWVkOgogICAgICBteXNxbC10ZXN0L3N1aXRlL3Bl cmZzY2hlbWEvci9ob3N0Y2FjaGVfaXB2NF9hZGRyaW5mb19hZ2Fpbl9hbGxvdy5yZXN1bHQKICAg ICAgbXlzcWwtdGVzdC9zdWl0ZS9wZXJmc2NoZW1hL3IvaG9zdGNhY2hlX2lwdjRfYXV0aF9wbHVn aW4ucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvcGVyZnNjaGVtYS9yL2hvc3RjYWNoZV9p cHY0X21heF9jb24ucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvcGVyZnNjaGVtYS90L2hv c3RjYWNoZV9pcHY0X2FkZHJpbmZvX2FnYWluX2FsbG93LnRlc3QKICAgICAgbXlzcWwtdGVzdC9z dWl0ZS9wZXJmc2NoZW1hL3QvaG9zdGNhY2hlX2lwdjRfYXV0aF9wbHVnaW4udGVzdAogICAgICBt eXNxbC10ZXN0L3N1aXRlL3BlcmZzY2hlbWEvdC9ob3N0Y2FjaGVfaXB2NF9tYXhfY29uLnRlc3QK ICAgICAgc3RvcmFnZS9wZXJmc2NoZW1hL3RhYmxlX2hvc3RfY2FjaGUuY2MKPT09IG1vZGlmaWVk IGZpbGUgJ215c3FsLXRlc3QvaW5jbHVkZS9mdW5jX2luLmluYycKLS0tIGEvbXlzcWwtdGVzdC9p bmNsdWRlL2Z1bmNfaW4uaW5jCTIwMTEtMDQtMTIgMTA6MzE6MzAgKzAwMDAKKysrIGIvbXlzcWwt dGVzdC9pbmNsdWRlL2Z1bmNfaW4uaW5jCTIwMTItMDEtMzAgMDY6Mzk6MDIgKzAwMDAKQEAgLTYw OSw0ICs2MDksMTIgQEAgSU5TRVJUIElOVE8gdDEgVkFMVUVTICgwMDAwKSwoMjAwMSk7CiAtLWRp c2FibGVfbWV0YWRhdGEKIERST1AgVEFCTEUgdDE7CiAKKy0tZWNobyAjCistLWVjaG8gIyBCdWcg IzExNzY0NjUxLTU3NTEwOiBJTihzdHJpbmcscmVhbCxzdHJpbmcpIGNhdXNlcyBpbnZhbGlkIHJl YWQgaW4gc29ydCBmdW5jdGlvbgorLS1lY2hvICMKKworU0VMRUNUIExFRlQoR0VPTUZST01URVhU KCJQT0lOVCgwIDApIiksMSkgSU4gKEBAZ2xvYmFsLnF1ZXJ5X2NhY2hlX3R5cGUsMSwiIik7CisK Ky0tZWNobyAjIEVuZCBvZiB0ZXN0IEJVRyMxMTc2NDY1MS01NzUxMAorCiAtLWVjaG8gRW5kIG9m IDUuMSB0ZXN0cwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3QvaW5jbHVkZS9yYW5nZS5p bmMnCi0tLSBhL215c3FsLXRlc3QvaW5jbHVkZS9yYW5nZS5pbmMJMjAxMS0xMi0wOSAxNTowNjo1 MCArMDAwMAorKysgYi9teXNxbC10ZXN0L2luY2x1ZGUvcmFuZ2UuaW5jCTIwMTItMDEtMjYgMTA6 MDg6MTIgKzAwMDAKQEAgLTEzOTIsNiArMTM5Miw4MiBAQCBTRUxFQ1QgKiBGUk9NIHQxLCB0MSBh cyB0MiBXSEVSRSB0MS5pNCBCCiAKIERST1AgVEFCTEUgdDE7CiAKKy0tZWNobyAjCistLWVjaG8g IyBCVUcjMTM1MTk2OTYgLSA2Mjk0MDogU0VMRUNUIFJFU1VMVFMgVkFSWSBXSVRIIFZFUlNJT04g QU5ECistLWVjaG8gIyBXSVRIL1dJVEhPVVQgSU5ERVggUkFOR0UgU0NBTgorLS1lY2hvICMKKwor Y3JlYXRlIHRhYmxlIHQxIChpZCBpbnQgdW5zaWduZWQgbm90IG51bGwgYXV0b19pbmNyZW1lbnQg cHJpbWFyeSBrZXkpOworaW5zZXJ0IGludG8gdDEgdmFsdWVzIChudWxsKTsgIAoraW5zZXJ0IGlu dG8gdDEgc2VsZWN0IG51bGwgZnJvbSB0MTsgIAoraW5zZXJ0IGludG8gdDEgc2VsZWN0IG51bGwg ZnJvbSB0MTsgIAoraW5zZXJ0IGludG8gdDEgc2VsZWN0IG51bGwgZnJvbSB0MTsgIAoraW5zZXJ0 IGludG8gdDEgc2VsZWN0IG51bGwgZnJvbSB0MTsgIAoraW5zZXJ0IGludG8gdDEgc2VsZWN0IG51 bGwgZnJvbSB0MTsgIAoraW5zZXJ0IGludG8gdDEgc2VsZWN0IG51bGwgZnJvbSB0MTsgIAoraW5z ZXJ0IGludG8gdDEgc2VsZWN0IG51bGwgZnJvbSB0MTsgIAoraW5zZXJ0IGludG8gdDEgc2VsZWN0 IG51bGwgZnJvbSB0MTsgCitjcmVhdGUgdGFibGUgdDIgKAorIGlkIGludCB1bnNpZ25lZCBub3Qg bnVsbCBhdXRvX2luY3JlbWVudCwKKyB2YWwgZGVjaW1hbCg1LDMpIG5vdCBudWxsLAorIHByaW1h cnkga2V5IChpZCx2YWwpLAorIHVuaXF1ZSBrZXkgKHZhbCxpZCksCisgdW5pcXVlIGtleSAoaWQp KTsgIAorLS1kaXNhYmxlX3dhcm5pbmdzCitpbnNlcnQgaW50byB0MiBzZWxlY3QgbnVsbCxpZCow LjAwMDkgZnJvbSB0MTsKKy0tZW5hYmxlX3dhcm5pbmdzCisKK3NlbGVjdCBjb3VudCh2YWwpIGZy b20gdDIgaWdub3JlIGluZGV4ICh2YWwpIHdoZXJlIHZhbCA+IDAuMTE1NTsKK3NlbGVjdCBjb3Vu dCh2YWwpIGZyb20gdDIgZm9yY2UgaW5kZXggKHZhbCkgIHdoZXJlIHZhbCA+IDAuMTE1NTsKKwor ZHJvcCB0YWJsZSB0MiwgdDE7CisKKy0tZWNobyAjCistLWVjaG8gIyBCVUcjMTM0NTMzODIgLSBS RUdSRVNTSU9OIFNJTkNFIDUuMS4zOSwgUkFOR0UgT1BUSU1JWkVSIFdST05HCistLWVjaG8gIyBS RVNVTFRTIFdJVEggREVDSU1BTCBDT05WRVJTSU9OCistLWVjaG8gIworCitjcmVhdGUgdGFibGUg dDEgKGEgaW50LGIgaW50LGMgaW50LHByaW1hcnkga2V5IChhLGMpKTsKK2luc2VydCBpbnRvIHQx IHZhbHVlcyAoMSwxLDIpLCgxLDEsMyksKDEsMSw0KTsKKyMgc2hvdyB0aGF0IHRoZSBpbnRlZ2Vy IDMgaXMgYmlnZ2VyIHRoYW4gdGhlIGRlY2ltYWwgMi45LAorIyB3aGljaCBzaG91bGQgYWxzbyBh cHBseSB0byBjb21wYXJpbmcgImMiIHdpdGggMi45CisjIHdoZW4gYyBpcyAzLgorc2VsZWN0IGNv bnZlcnQoMywgc2lnbmVkIGludGVnZXIpID4gMi45Oworc2VsZWN0ICogZnJvbSB0MSBmb3JjZSAg aW5kZXggKHByaW1hcnkpIHdoZXJlIGE9MSBhbmQgYz49IDIuOTsKK3NlbGVjdCAqIGZyb20gdDEg aWdub3JlIGluZGV4IChwcmltYXJ5KSB3aGVyZSBhPTEgYW5kIGM+PSAyLjk7CitzZWxlY3QgKiBm cm9tIHQxIGZvcmNlICBpbmRleCAocHJpbWFyeSkgd2hlcmUgYT0xIGFuZCBjPiAyLjk7CitzZWxl Y3QgKiBmcm9tIHQxIGlnbm9yZSBpbmRleCAocHJpbWFyeSkgd2hlcmUgYT0xIGFuZCBjPiAyLjk7 Citkcm9wIHRhYmxlIHQxOworCistLWVjaG8gIworLS1lY2hvICMgQlVHIzEzNDYzNDg4IC0gNjM0 Mzc6IENIQVIgJiBCRVRXRUVOIFdJVEggSU5ERVggUkVUVVJOUyBXUk9ORworLS1lY2hvICMgUkVT VUxUIEFGVEVSIE1ZU1FMIDUuMS4KKy0tZWNobyAjCisKK0NSRUFURSBUQUJMRSB0MSgKKyBGMSBD SEFSKDUpIE5PVCBOVUxMLAorIEYyIENIQVIoNSkgTk9UIE5VTEwsCisgRjMgQ0hBUig1KSBOT1Qg TlVMTCwKKyBQUklNQVJZIEtFWShGMSksCisgSU5ERVggSURYX0YyKEYyKQorKTsKKworSU5TRVJU IElOVE8gdDEgVkFMVUVTCisoJ0EnLCdBJywnQScpLCgnQUEnLCdBQScsJ0FBJyksKCdBQUEnLCdB QUEnLCdBQUEnKSwKKygnQUFBQScsJ0FBQUEnLCdBQUFBJyksKCdBQUFBQScsJ0FBQUFBJywnQUFB QUEnKTsKKworU0VMRUNUICogRlJPTSB0MSBXSEVSRSBGMSA9ICdBICAgICc7CitTRUxFQ1QgKiBG Uk9NIHQxIElHTk9SRSBJTkRFWChQUklNQVJZKSBXSEVSRSBGMSA9ICdBICAgICc7CitTRUxFQ1Qg KiBGUk9NIHQxIFdIRVJFIEYxID49ICdBICAgICc7CitTRUxFQ1QgKiBGUk9NIHQxIFdIRVJFIEYx ID4gJ0EgICAgJzsKK1NFTEVDVCAqIEZST00gdDEgV0hFUkUgRjEgQkVUV0VFTiAnQSAgICAnIEFO RCAnQUFBQUEnOworU0VMRUNUICogRlJPTSB0MSBXSEVSRSBGMiBCRVRXRUVOICdBICAgICcgQU5E ICdBQUFBQSc7CitTRUxFQ1QgKiBGUk9NIHQxIFdIRVJFIEYzIEJFVFdFRU4gJ0EgICAgJyBBTkQg J0FBQUFBJzsKK1NFTEVDVCAqIEZST00gdDEgSUdOT1JFIElOREVYKFBSSU1BUlkpIFdIRVJFIEYx IEJFVFdFRU4gJ0EgICAgJyBBTkQKKydBQUFBQSc7CisKK0RST1AgVEFCTEUgdDE7CisKIC0tZWNo byBFbmQgb2YgNS4xIHRlc3RzCiAKICMKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3Iv ZnVuY19pbl9hbGwucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3IvZnVuY19pbl9hbGwucmVzdWx0 CTIwMTItMDEtMjUgMDk6NTc6MjIgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9yL2Z1bmNfaW5fYWxs LnJlc3VsdAkyMDEyLTAxLTMwIDA2OjM5OjAyICswMDAwCkBAIC04MTcsNSArODE3LDEyIEBAIGRl ZgkJCQlNQVgoZjEpCU1BWChmMSkJMTMJNAk0CVkJMzI4NjQJMAogTUFYKGYxKQogMjAwMQogRFJP UCBUQUJMRSB0MTsKKyMKKyMgQnVnICMxMTc2NDY1MS01NzUxMDogSU4oc3RyaW5nLHJlYWwsc3Ry aW5nKSBjYXVzZXMgaW52YWxpZCByZWFkIGluIHNvcnQgZnVuY3Rpb24KKyMKK1NFTEVDVCBMRUZU KEdFT01GUk9NVEVYVCgiUE9JTlQoMCAwKSIpLDEpIElOIChAQGdsb2JhbC5xdWVyeV9jYWNoZV90 eXBlLDEsIiIpOworTEVGVChHRU9NRlJPTVRFWFQoIlBPSU5UKDAgMCkiKSwxKSBJTiAoQEBnbG9i YWwucXVlcnlfY2FjaGVfdHlwZSwxLCIiKQorMAorIyBFbmQgb2YgdGVzdCBCVUcjMTE3NjQ2NTEt NTc1MTAKIEVuZCBvZiA1LjEgdGVzdHMKIHNldCBvcHRpbWl6ZXJfc3dpdGNoPWRlZmF1bHQ7Cgo9 PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9yL2Z1bmNfaW5faWNwLnJlc3VsdCcKLS0tIGEv bXlzcWwtdGVzdC9yL2Z1bmNfaW5faWNwLnJlc3VsdAkyMDEyLTAxLTI1IDA5OjU3OjIyICswMDAw CisrKyBiL215c3FsLXRlc3Qvci9mdW5jX2luX2ljcC5yZXN1bHQJMjAxMi0wMS0zMCAwNjozOTow MiArMDAwMApAQCAtODE5LDUgKzgxOSwxMiBAQCBkZWYJCQkJTUFYKGYxKQlNQVgoZjEpCTEzCTQJ NAlZCTMyODY0CTAKIE1BWChmMSkKIDIwMDEKIERST1AgVEFCTEUgdDE7CisjCisjIEJ1ZyAjMTE3 NjQ2NTEtNTc1MTA6IElOKHN0cmluZyxyZWFsLHN0cmluZykgY2F1c2VzIGludmFsaWQgcmVhZCBp biBzb3J0IGZ1bmN0aW9uCisjCitTRUxFQ1QgTEVGVChHRU9NRlJPTVRFWFQoIlBPSU5UKDAgMCki KSwxKSBJTiAoQEBnbG9iYWwucXVlcnlfY2FjaGVfdHlwZSwxLCIiKTsKK0xFRlQoR0VPTUZST01U RVhUKCJQT0lOVCgwIDApIiksMSkgSU4gKEBAZ2xvYmFsLnF1ZXJ5X2NhY2hlX3R5cGUsMSwiIikK KzAKKyMgRW5kIG9mIHRlc3QgQlVHIzExNzY0NjUxLTU3NTEwCiBFbmQgb2YgNS4xIHRlc3RzCiBz ZXQgb3B0aW1pemVyX3N3aXRjaD1kZWZhdWx0OwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRl c3Qvci9mdW5jX2luX2ljcF9tcnIucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3IvZnVuY19pbl9p Y3BfbXJyLnJlc3VsdAkyMDEyLTAxLTI1IDA5OjU3OjIyICswMDAwCisrKyBiL215c3FsLXRlc3Qv ci9mdW5jX2luX2ljcF9tcnIucmVzdWx0CTIwMTItMDEtMzAgMDY6Mzk6MDIgKzAwMDAKQEAgLTgx OSw1ICs4MTksMTIgQEAgZGVmCQkJCU1BWChmMSkJTUFYKGYxKQkxMwk0CTQJWQkzMjg2NAkwCiBN QVgoZjEpCiAyMDAxCiBEUk9QIFRBQkxFIHQxOworIworIyBCdWcgIzExNzY0NjUxLTU3NTEwOiBJ TihzdHJpbmcscmVhbCxzdHJpbmcpIGNhdXNlcyBpbnZhbGlkIHJlYWQgaW4gc29ydCBmdW5jdGlv bgorIworU0VMRUNUIExFRlQoR0VPTUZST01URVhUKCJQT0lOVCgwIDApIiksMSkgSU4gKEBAZ2xv YmFsLnF1ZXJ5X2NhY2hlX3R5cGUsMSwiIik7CitMRUZUKEdFT01GUk9NVEVYVCgiUE9JTlQoMCAw KSIpLDEpIElOIChAQGdsb2JhbC5xdWVyeV9jYWNoZV90eXBlLDEsIiIpCiswCisjIEVuZCBvZiB0 ZXN0IEJVRyMxMTc2NDY1MS01NzUxMAogRW5kIG9mIDUuMSB0ZXN0cwogc2V0IG9wdGltaXplcl9z d2l0Y2g9ZGVmYXVsdDsKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3IvZnVuY19pbl9t cnIucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3IvZnVuY19pbl9tcnIucmVzdWx0CTIwMTItMDEt MjUgMDk6NTc6MjIgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9yL2Z1bmNfaW5fbXJyLnJlc3VsdAky MDEyLTAxLTMwIDA2OjM5OjAyICswMDAwCkBAIC04MTksNSArODE5LDEyIEBAIGRlZgkJCQlNQVgo ZjEpCU1BWChmMSkJMTMJNAk0CVkJMzI4NjQJMAogTUFYKGYxKQogMjAwMQogRFJPUCBUQUJMRSB0 MTsKKyMKKyMgQnVnICMxMTc2NDY1MS01NzUxMDogSU4oc3RyaW5nLHJlYWwsc3RyaW5nKSBjYXVz ZXMgaW52YWxpZCByZWFkIGluIHNvcnQgZnVuY3Rpb24KKyMKK1NFTEVDVCBMRUZUKEdFT01GUk9N VEVYVCgiUE9JTlQoMCAwKSIpLDEpIElOIChAQGdsb2JhbC5xdWVyeV9jYWNoZV90eXBlLDEsIiIp OworTEVGVChHRU9NRlJPTVRFWFQoIlBPSU5UKDAgMCkiKSwxKSBJTiAoQEBnbG9iYWwucXVlcnlf Y2FjaGVfdHlwZSwxLCIiKQorMAorIyBFbmQgb2YgdGVzdCBCVUcjMTE3NjQ2NTEtNTc1MTAKIEVu ZCBvZiA1LjEgdGVzdHMKIHNldCBvcHRpbWl6ZXJfc3dpdGNoPWRlZmF1bHQ7Cgo9PT0gbW9kaWZp ZWQgZmlsZSAnbXlzcWwtdGVzdC9yL2Z1bmNfaW5fbXJyX2Nvc3QucmVzdWx0JwotLS0gYS9teXNx bC10ZXN0L3IvZnVuY19pbl9tcnJfY29zdC5yZXN1bHQJMjAxMi0wMS0yNSAwOTo1NzoyMiArMDAw MAorKysgYi9teXNxbC10ZXN0L3IvZnVuY19pbl9tcnJfY29zdC5yZXN1bHQJMjAxMi0wMS0zMCAw NjozOTowMiArMDAwMApAQCAtODE5LDUgKzgxOSwxMiBAQCBkZWYJCQkJTUFYKGYxKQlNQVgoZjEp CTEzCTQJNAlZCTMyODY0CTAKIE1BWChmMSkKIDIwMDEKIERST1AgVEFCTEUgdDE7CisjCisjIEJ1 ZyAjMTE3NjQ2NTEtNTc1MTA6IElOKHN0cmluZyxyZWFsLHN0cmluZykgY2F1c2VzIGludmFsaWQg cmVhZCBpbiBzb3J0IGZ1bmN0aW9uCisjCitTRUxFQ1QgTEVGVChHRU9NRlJPTVRFWFQoIlBPSU5U KDAgMCkiKSwxKSBJTiAoQEBnbG9iYWwucXVlcnlfY2FjaGVfdHlwZSwxLCIiKTsKK0xFRlQoR0VP TUZST01URVhUKCJQT0lOVCgwIDApIiksMSkgSU4gKEBAZ2xvYmFsLnF1ZXJ5X2NhY2hlX3R5cGUs MSwiIikKKzAKKyMgRW5kIG9mIHRlc3QgQlVHIzExNzY0NjUxLTU3NTEwCiBFbmQgb2YgNS4xIHRl c3RzCiBzZXQgb3B0aW1pemVyX3N3aXRjaD1kZWZhdWx0OwoKPT09IG1vZGlmaWVkIGZpbGUgJ215 c3FsLXRlc3Qvci9mdW5jX2luX25vbmUucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3IvZnVuY19p bl9ub25lLnJlc3VsdAkyMDEyLTAxLTI1IDA5OjU3OjIyICswMDAwCisrKyBiL215c3FsLXRlc3Qv ci9mdW5jX2luX25vbmUucmVzdWx0CTIwMTItMDEtMzAgMDY6Mzk6MDIgKzAwMDAKQEAgLTgxOCw1 ICs4MTgsMTIgQEAgZGVmCQkJCU1BWChmMSkJTUFYKGYxKQkxMwk0CTQJWQkzMjg2NAkwCiBNQVgo ZjEpCiAyMDAxCiBEUk9QIFRBQkxFIHQxOworIworIyBCdWcgIzExNzY0NjUxLTU3NTEwOiBJTihz dHJpbmcscmVhbCxzdHJpbmcpIGNhdXNlcyBpbnZhbGlkIHJlYWQgaW4gc29ydCBmdW5jdGlvbgor IworU0VMRUNUIExFRlQoR0VPTUZST01URVhUKCJQT0lOVCgwIDApIiksMSkgSU4gKEBAZ2xvYmFs LnF1ZXJ5X2NhY2hlX3R5cGUsMSwiIik7CitMRUZUKEdFT01GUk9NVEVYVCgiUE9JTlQoMCAwKSIp LDEpIElOIChAQGdsb2JhbC5xdWVyeV9jYWNoZV90eXBlLDEsIiIpCiswCisjIEVuZCBvZiB0ZXN0 IEJVRyMxMTc2NDY1MS01NzUxMAogRW5kIG9mIDUuMSB0ZXN0cwogc2V0IG9wdGltaXplcl9zd2l0 Y2g9ZGVmYXVsdDsKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3IvbG93ZXJjYXNlX2Zz X29mZi5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvci9sb3dlcmNhc2VfZnNfb2ZmLnJlc3VsdAky MDEwLTA5LTE2IDA5OjExOjEzICswMDAwCisrKyBiL215c3FsLXRlc3Qvci9sb3dlcmNhc2VfZnNf b2ZmLnJlc3VsdAkyMDEyLTAxLTMwIDA2OjU5OjM5ICswMDAwCkBAIC00NCw3ICs0NCw3IEBAIGYx KDEpCiBjYWxsIHAxKCk7CiBFUlJPUiA0MjAwMDogZXhlY3V0ZSBjb21tYW5kIGRlbmllZCB0byB1 c2VyICdVU0VSXzEnQCdsb2NhbGhvc3QnIGZvciByb3V0aW5lICdkYjEucDEnCiBjYWxsIFAxKCk7 Ci1FUlJPUiA0MjAwMDogZXhlY3V0ZSBjb21tYW5kIGRlbmllZCB0byB1c2VyICdVU0VSXzEnQCds b2NhbGhvc3QnIGZvciByb3V0aW5lICdkYjEucDEnCitFUlJPUiA0MjAwMDogZXhlY3V0ZSBjb21t YW5kIGRlbmllZCB0byB1c2VyICdVU0VSXzEnQCdsb2NhbGhvc3QnIGZvciByb3V0aW5lICdkYjEu UDEnCiBzZWxlY3QgZjEoMSk7CiBFUlJPUiA0MjAwMDogZXhlY3V0ZSBjb21tYW5kIGRlbmllZCB0 byB1c2VyICdVU0VSXzEnQCdsb2NhbGhvc3QnIGZvciByb3V0aW5lICdkYjEuZjEnCiBSRVZPS0Ug QUxMIFBSSVZJTEVHRVMsIEdSQU5UIE9QVElPTiBGUk9NIHVzZXJfMUBsb2NhbGhvc3Q7Cgo9PT0g bW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9yL21lcmdlLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVz dC9yL21lcmdlLnJlc3VsdAkyMDEyLTAxLTEyIDEzOjI3OjU3ICswMDAwCisrKyBiL215c3FsLXRl c3Qvci9tZXJnZS5yZXN1bHQJMjAxMi0wMS0yNyAwODoxNjo0MyArMDAwMApAQCAtMzgwMSwzICsz ODAxLDIzIEBAIEVSUk9SIEhZMDAwOiBVbmFibGUgdG8gb3BlbiB1bmRlcmx5aW5nIHQKIERST1Ag VFJJR0dFUiB0cmcxOwogRFJPUCBUQUJMRSB0MTsKIERST1AgVEFCTEUgbTE7CisjCisjIFRlc3Qg Zm9yIGJ1ZyAjMTE3NjQ3ODYgLSA1NzY1NzogVEVNUE9SQVJZIE1FUkdFIFRBQkxFIFdJVEggVEVN UE9SQVJZCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5ERVJMWUlORyBUQUJM RSwgSVMgQlJPS0VOIEJZIEFMVEVSLgorIworRFJPUCBUQUJMRVMgSUYgRVhJU1RTIHQxLCB0Miwg dDMsIHQ0OworQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSB0MShpIElOVCkgRU5HSU5FPSBNeUlTQU07 CitDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIHQyKGkgSU5UKSBFTkdJTkU9IE1FUkdFIFVOSU9OPSAo dDEpIElOU0VSVF9NRVRIT0Q9IExBU1Q7CitBTFRFUiBUQUJMRSB0MiBJTlNFUlRfTUVUSE9EPSBG SVJTVDsKK0NIRUNLIFRBQkxFIHQyOworVGFibGUJT3AJTXNnX3R5cGUJTXNnX3RleHQKK3Rlc3Qu dDIJY2hlY2sJc3RhdHVzCU9LCitDUkVBVEUgVEFCTEUgdDMoaSBJTlQpIEVOR0lORT0gTXlJU0FN OworQ1JFQVRFIFRBQkxFIHQ0KGkgaW50KSBFTkdJTkU9IE1FUkdFIFVOSU9OPSAodDMpIElOU0VS VF9NRVRIT0Q9IExBU1Q7CitBTFRFUiBUQUJMRSB0NCBJTlNFUlRfTUVUSE9EPSBGSVJTVDsKK0NI RUNLIFRBQkxFIHQ0OworVGFibGUJT3AJTXNnX3R5cGUJTXNnX3RleHQKK3Rlc3QudDQJY2hlY2sJ c3RhdHVzCU9LCisjIENsZWFuLXVwCitEUk9QIFRBQkxFUyB0MSwgdDIsIHQzLCB0NDsKKyMgRW5k IG9mIGJ1ZyAjMTE3NjQ3ODYgLSA1NzY1NwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qv ci9vcHRpbWl6ZXJfZGVidWdfc3luYy5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvci9vcHRpbWl6 ZXJfZGVidWdfc3luYy5yZXN1bHQJMjAxMS0wMy0wMSAxNDo1Nzo1MyArMDAwMAorKysgYi9teXNx bC10ZXN0L3Ivb3B0aW1pemVyX2RlYnVnX3N5bmMucmVzdWx0CTIwMTItMDEtMjYgMTE6MzQ6MzUg KzAwMDAKQEAgLTIxLDMgKzIxLDIwIEBAIE1BWChpKQogTUFYKGkpCiAyCiBEUk9QIFRBQkxFIHQ7 CisjCisjIEJ1ZyAjMTM1MzY2NjE6IFZBTEdSSU5EOiBERUZJTklURUxZIExPU1Q6IDU1MiBCWVRF UyBJTiAxIEJMT0NLUyBJTgorIyBDUkVBVEVfVE1QX1RBQkxFIEFORCBISUdIRVIKKyMKK0NSRUFU RSBUQUJMRSB0MSAoIGEgSU5ULCBiIElOVCApOworSU5TRVJUIElOVE8gdDEgVkFMVUVTICg0LCA0 MCksICgxLCAxMCksICgyLCAyMCksICgyLCAyMCksICgzLCAzMCk7CitTRVQgZGVidWdfc3luYyA9 ICJ0bXBfdGFibGVfY3JlYXRlZCBTSUdOQUwgcGFya2VkIFdBSVRfRk9SIGdvIjsKKyMgVGhpcyBz aG91bGQgbm90IGxlYWsgbWVtb3J5LgorU0VMRUNUIGIsIENPVU5UKERJU1RJTkNUIGIpIEZST00g dDEgR1JPVVAgQlkgYiBPUkRFUiBCWSAtYjsKK1NFVCBkZWJ1Z19zeW5jID0gIm5vdyBXQUlUX0ZP UiBwYXJrZWQiOworIyBTZXQgbG9jYWxseSB0byBzaGFkb3cgdGhlIGdsb2JhbCB2YXJpYWJsZS4K K1NFVCBkZWJ1ZyA9ICcnOworU0VUIEdMT0JBTCBkZWJ1ZyA9ICcrZCxzaW11bGF0ZV9vdXRfb2Zf bWVtb3J5JzsKK1NFVCBkZWJ1Z19zeW5jID0gIm5vdyBTSUdOQUwgZ28iOworRVJST1IgSFkwMDA6 IE91dCBvZiBtZW1vcnk7IGNoZWNrIGlmIG15c3FsZCBvciBzb21lIG90aGVyIHByb2Nlc3MgdXNl cyBhbGwgYXZhaWxhYmxlIG1lbW9yeTsgaWYgbm90LCB5b3UgbWF5IGhhdmUgdG8gdXNlICd1bGlt aXQnIHRvIGFsbG93IG15c3FsZCB0byB1c2UgbW9yZSBtZW1vcnkgb3IgeW91IGNhbiBhZGQgbW9y ZSBzd2FwIHNwYWNlCitTRVQgR0xPQkFMIGRlYnVnID0gJyc7CitEUk9QIFRBQkxFIHQxOwoKPT09 IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvci9wbHVnaW4ucmVzdWx0JwotLS0gYS9teXNxbC10 ZXN0L3IvcGx1Z2luLnJlc3VsdAkyMDExLTEwLTI3IDA4OjQzOjU2ICswMDAwCisrKyBiL215c3Fs LXRlc3Qvci9wbHVnaW4ucmVzdWx0CTIwMTItMDEtMjYgMTI6Mzk6MzUgKzAwMDAKQEAgLTgsOCAr OCwzMCBAQCBJTlNUQUxMIFBMVUdJTiBFWEFNUExFIFNPTkFNRSAnaGFfZXhhbXBsCiBFUlJPUiBI WTAwMDogRnVuY3Rpb24gJ0VYQU1QTEUnIGFscmVhZHkgZXhpc3RzCiBVTklOU1RBTEwgUExVR0lO IGV4YW1wbGU7CiBJTlNUQUxMIFBMVUdJTiBleGFtcGxlIFNPTkFNRSAnaGFfZXhhbXBsZS5zbyc7 CisjIEV4YW1wbGUgZW5naW5lIGRvZXMgbm90IHN1cHBvcnQgaW5kZXhlcworQ1JFQVRFIFRBQkxF IHQxIChhIGludCBQUklNQVJZIEtFWSkgRU5HSU5FPUVYQU1QTEU7CitFUlJPUiA0MjAwMDogVG9v IG1hbnkga2V5IHBhcnRzIHNwZWNpZmllZDsgbWF4IDAgcGFydHMgYWxsb3dlZAorQ1JFQVRFIFRB QkxFIHQxIChhIGludCwgS0VZIChhKSkgRU5HSU5FPUVYQU1QTEU7CitFUlJPUiA0MjAwMDogVG9v IG1hbnkga2V5IHBhcnRzIHNwZWNpZmllZDsgbWF4IDAgcGFydHMgYWxsb3dlZAogQ1JFQVRFIFRB QkxFIHQxKGEgaW50KSBFTkdJTkU9RVhBTVBMRTsKK1NIT1cgQ1JFQVRFIFRBQkxFIHQxOworVGFi bGUJQ3JlYXRlIFRhYmxlCit0MQlDUkVBVEUgVEFCTEUgYHQxYCAoCisgIGBhYCBpbnQoMTEpIERF RkFVTFQgTlVMTAorKSBFTkdJTkU9RVhBTVBMRSBERUZBVUxUIENIQVJTRVQ9bGF0aW4xCisjIExl dCdzIGRvIHNvbWUgYWR2YW5jZWQgb3BzIHdpdGggdGhlIGV4YW1wbGUgZW5naW5lIDopCitJTlNF UlQgSU5UTyB0MSBWQUxVRVMgKDApOworIyBPbmx5IHN1cHBvcnRzIHRhYmxlIHNjYW5zIChhbmQg ZG9lcyBhbHdheXMgcmV0dXJuIHplcm8gcm93cyA6KQogU0VMRUNUICogRlJPTSB0MTsKK2EKK1NF TEVDVCAqIEZST00gdDEgV0hFUkUgYSA9IDA7CithCisjIFNpbmNlIHRoZXJlIGFyZSBubyByb3dz IGZvdW5kLCBpdCB3aWxsIG5ldmVyIGRvIHVwZGF0ZV9yb3cuCitVUERBVEUgdDEgU0VUIGEgPSAx IFdIRVJFIGEgPSAwOworIyBTaW5jZSB0aGVyZSBhcmUgbm8gcm93cyBmb3VuZCwgaXQgd2lsbCBu ZXZlciBkbyBkZWxldGVfcm93LgorREVMRVRFIEZST00gdDEgV0hFUkUgYSA9IDA7CisjIE5vIHN1 cHBvcnQgZm9yIFNRTCBIQU5ETEVSIHN0YXRlbWVudAorSEFORExFUiB0MSBPUEVOOwogRVJST1Ig SFkwMDA6IFRhYmxlIHN0b3JhZ2UgZW5naW5lIGZvciAndDEnIGRvZXNuJ3QgaGF2ZSB0aGlzIG9w dGlvbgogRFJPUCBUQUJMRSB0MTsKIHNldCBnbG9iYWwgZXhhbXBsZV91bG9uZ192YXI9NTAwOwoK PT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvci9yYW5nZV9hbGwucmVzdWx0JwotLS0gYS9t eXNxbC10ZXN0L3IvcmFuZ2VfYWxsLnJlc3VsdAkyMDExLTEyLTA5IDE1OjA2OjUwICswMDAwCisr KyBiL215c3FsLXRlc3Qvci9yYW5nZV9hbGwucmVzdWx0CTIwMTItMDEtMjYgMTA6MDg6MTIgKzAw MDAKQEAgLTE3NjgsNiArMTc2OCwxMjMgQEAgaWQJc2VsZWN0X3R5cGUJdGFibGUJdHlwZQlwb3Nz aWJsZV9rZXlzCiBTRUxFQ1QgKiBGUk9NIHQxLCB0MSBhcyB0MiBXSEVSRSB0MS5pNCBCRVRXRUVO IHQyLnBrIEFORCB0Mi5wazsKIHBrCWk0CXBrCWk0CiBEUk9QIFRBQkxFIHQxOworIworIyBCVUcj MTM1MTk2OTYgLSA2Mjk0MDogU0VMRUNUIFJFU1VMVFMgVkFSWSBXSVRIIFZFUlNJT04gQU5ECisj IFdJVEgvV0lUSE9VVCBJTkRFWCBSQU5HRSBTQ0FOCisjCitjcmVhdGUgdGFibGUgdDEgKGlkIGlu dCB1bnNpZ25lZCBub3QgbnVsbCBhdXRvX2luY3JlbWVudCBwcmltYXJ5IGtleSk7CitpbnNlcnQg aW50byB0MSB2YWx1ZXMgKG51bGwpOworaW5zZXJ0IGludG8gdDEgc2VsZWN0IG51bGwgZnJvbSB0 MTsKK2luc2VydCBpbnRvIHQxIHNlbGVjdCBudWxsIGZyb20gdDE7CitpbnNlcnQgaW50byB0MSBz ZWxlY3QgbnVsbCBmcm9tIHQxOworaW5zZXJ0IGludG8gdDEgc2VsZWN0IG51bGwgZnJvbSB0MTsK K2luc2VydCBpbnRvIHQxIHNlbGVjdCBudWxsIGZyb20gdDE7CitpbnNlcnQgaW50byB0MSBzZWxl Y3QgbnVsbCBmcm9tIHQxOworaW5zZXJ0IGludG8gdDEgc2VsZWN0IG51bGwgZnJvbSB0MTsKK2lu c2VydCBpbnRvIHQxIHNlbGVjdCBudWxsIGZyb20gdDE7CitjcmVhdGUgdGFibGUgdDIgKAoraWQg aW50IHVuc2lnbmVkIG5vdCBudWxsIGF1dG9faW5jcmVtZW50LAordmFsIGRlY2ltYWwoNSwzKSBu b3QgbnVsbCwKK3ByaW1hcnkga2V5IChpZCx2YWwpLAordW5pcXVlIGtleSAodmFsLGlkKSwKK3Vu aXF1ZSBrZXkgKGlkKSk7CitpbnNlcnQgaW50byB0MiBzZWxlY3QgbnVsbCxpZCowLjAwMDkgZnJv bSB0MTsKK3NlbGVjdCBjb3VudCh2YWwpIGZyb20gdDIgaWdub3JlIGluZGV4ICh2YWwpIHdoZXJl IHZhbCA+IDAuMTE1NTsKK2NvdW50KHZhbCkKKzEyOAorc2VsZWN0IGNvdW50KHZhbCkgZnJvbSB0 MiBmb3JjZSBpbmRleCAodmFsKSAgd2hlcmUgdmFsID4gMC4xMTU1OworY291bnQodmFsKQorMTI4 Citkcm9wIHRhYmxlIHQyLCB0MTsKKyMKKyMgQlVHIzEzNDUzMzgyIC0gUkVHUkVTU0lPTiBTSU5D RSA1LjEuMzksIFJBTkdFIE9QVElNSVpFUiBXUk9ORworIyBSRVNVTFRTIFdJVEggREVDSU1BTCBD T05WRVJTSU9OCisjCitjcmVhdGUgdGFibGUgdDEgKGEgaW50LGIgaW50LGMgaW50LHByaW1hcnkg a2V5IChhLGMpKTsKK2luc2VydCBpbnRvIHQxIHZhbHVlcyAoMSwxLDIpLCgxLDEsMyksKDEsMSw0 KTsKK3NlbGVjdCBjb252ZXJ0KDMsIHNpZ25lZCBpbnRlZ2VyKSA+IDIuOTsKK2NvbnZlcnQoMywg c2lnbmVkIGludGVnZXIpID4gMi45CisxCitzZWxlY3QgKiBmcm9tIHQxIGZvcmNlICBpbmRleCAo cHJpbWFyeSkgd2hlcmUgYT0xIGFuZCBjPj0gMi45OworYQliCWMKKzEJMQkzCisxCTEJNAorc2Vs ZWN0ICogZnJvbSB0MSBpZ25vcmUgaW5kZXggKHByaW1hcnkpIHdoZXJlIGE9MSBhbmQgYz49IDIu OTsKK2EJYgljCisxCTEJMworMQkxCTQKK3NlbGVjdCAqIGZyb20gdDEgZm9yY2UgIGluZGV4IChw cmltYXJ5KSB3aGVyZSBhPTEgYW5kIGM+IDIuOTsKK2EJYgljCisxCTEJMworMQkxCTQKK3NlbGVj dCAqIGZyb20gdDEgaWdub3JlIGluZGV4IChwcmltYXJ5KSB3aGVyZSBhPTEgYW5kIGM+IDIuOTsK K2EJYgljCisxCTEJMworMQkxCTQKK2Ryb3AgdGFibGUgdDE7CisjCisjIEJVRyMxMzQ2MzQ4OCAt IDYzNDM3OiBDSEFSICYgQkVUV0VFTiBXSVRIIElOREVYIFJFVFVSTlMgV1JPTkcKKyMgUkVTVUxU IEFGVEVSIE1ZU1FMIDUuMS4KKyMKK0NSRUFURSBUQUJMRSB0MSgKK0YxIENIQVIoNSkgTk9UIE5V TEwsCitGMiBDSEFSKDUpIE5PVCBOVUxMLAorRjMgQ0hBUig1KSBOT1QgTlVMTCwKK1BSSU1BUlkg S0VZKEYxKSwKK0lOREVYIElEWF9GMihGMikKKyk7CitJTlNFUlQgSU5UTyB0MSBWQUxVRVMKKygn QScsJ0EnLCdBJyksKCdBQScsJ0FBJywnQUEnKSwoJ0FBQScsJ0FBQScsJ0FBQScpLAorKCdBQUFB JywnQUFBQScsJ0FBQUEnKSwoJ0FBQUFBJywnQUFBQUEnLCdBQUFBQScpOworU0VMRUNUICogRlJP TSB0MSBXSEVSRSBGMSA9ICdBICAgICc7CitGMQlGMglGMworQQlBCUEKK1NFTEVDVCAqIEZST00g dDEgSUdOT1JFIElOREVYKFBSSU1BUlkpIFdIRVJFIEYxID0gJ0EgICAgJzsKK0YxCUYyCUYzCitB CUEJQQorU0VMRUNUICogRlJPTSB0MSBXSEVSRSBGMSA+PSAnQSAgICAnOworRjEJRjIJRjMKK0EJ QQlBCitBQQlBQQlBQQorQUFBCUFBQQlBQUEKK0FBQUEJQUFBQQlBQUFBCitBQUFBQQlBQUFBQQlB QUFBQQorU0VMRUNUICogRlJPTSB0MSBXSEVSRSBGMSA+ICdBICAgICc7CitGMQlGMglGMworQUEJ QUEJQUEKK0FBQQlBQUEJQUFBCitBQUFBCUFBQUEJQUFBQQorQUFBQUEJQUFBQUEJQUFBQUEKK1NF TEVDVCAqIEZST00gdDEgV0hFUkUgRjEgQkVUV0VFTiAnQSAgICAnIEFORCAnQUFBQUEnOworRjEJ RjIJRjMKK0EJQQlBCitBQQlBQQlBQQorQUFBCUFBQQlBQUEKK0FBQUEJQUFBQQlBQUFBCitBQUFB QQlBQUFBQQlBQUFBQQorU0VMRUNUICogRlJPTSB0MSBXSEVSRSBGMiBCRVRXRUVOICdBICAgICcg QU5EICdBQUFBQSc7CitGMQlGMglGMworQQlBCUEKK0FBCUFBCUFBCitBQUEJQUFBCUFBQQorQUFB QQlBQUFBCUFBQUEKK0FBQUFBCUFBQUFBCUFBQUFBCitTRUxFQ1QgKiBGUk9NIHQxIFdIRVJFIEYz IEJFVFdFRU4gJ0EgICAgJyBBTkQgJ0FBQUFBJzsKK0YxCUYyCUYzCitBCUEJQQorQUEJQUEJQUEK K0FBQQlBQUEJQUFBCitBQUFBCUFBQUEJQUFBQQorQUFBQUEJQUFBQUEJQUFBQUEKK1NFTEVDVCAq IEZST00gdDEgSUdOT1JFIElOREVYKFBSSU1BUlkpIFdIRVJFIEYxIEJFVFdFRU4gJ0EgICAgJyBB TkQKKydBQUFBQSc7CitGMQlGMglGMworQQlBCUEKK0FBCUFBCUFBCitBQUEJQUFBCUFBQQorQUFB QQlBQUFBCUFBQUEKK0FBQUFBCUFBQUFBCUFBQUFBCitEUk9QIFRBQkxFIHQxOwogRW5kIG9mIDUu MSB0ZXN0cwogQ1JFQVRFIFRBQkxFIHQxIChjMSBERUNJTUFMKDEwLDApLElOREVYKGMxKSk7CiBJ TlNFUlQgSU5UTyB0MSBWQUxVRVMgKDEpLCgyKSwoMyk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlz cWwtdGVzdC9yL3JhbmdlX2ljcC5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvci9yYW5nZV9pY3Au cmVzdWx0CTIwMTEtMTItMDkgMTU6MDY6NTAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9yL3Jhbmdl X2ljcC5yZXN1bHQJMjAxMi0wMS0yNiAxMDowODoxMiArMDAwMApAQCAtMTc2OCw2ICsxNzY4LDEy MyBAQCBpZAlzZWxlY3RfdHlwZQl0YWJsZQl0eXBlCXBvc3NpYmxlX2tleXMKIFNFTEVDVCAqIEZS T00gdDEsIHQxIGFzIHQyIFdIRVJFIHQxLmk0IEJFVFdFRU4gdDIucGsgQU5EIHQyLnBrOwogcGsJ aTQJcGsJaTQKIERST1AgVEFCTEUgdDE7CisjCisjIEJVRyMxMzUxOTY5NiAtIDYyOTQwOiBTRUxF Q1QgUkVTVUxUUyBWQVJZIFdJVEggVkVSU0lPTiBBTkQKKyMgV0lUSC9XSVRIT1VUIElOREVYIFJB TkdFIFNDQU4KKyMKK2NyZWF0ZSB0YWJsZSB0MSAoaWQgaW50IHVuc2lnbmVkIG5vdCBudWxsIGF1 dG9faW5jcmVtZW50IHByaW1hcnkga2V5KTsKK2luc2VydCBpbnRvIHQxIHZhbHVlcyAobnVsbCk7 CitpbnNlcnQgaW50byB0MSBzZWxlY3QgbnVsbCBmcm9tIHQxOworaW5zZXJ0IGludG8gdDEgc2Vs ZWN0IG51bGwgZnJvbSB0MTsKK2luc2VydCBpbnRvIHQxIHNlbGVjdCBudWxsIGZyb20gdDE7Citp bnNlcnQgaW50byB0MSBzZWxlY3QgbnVsbCBmcm9tIHQxOworaW5zZXJ0IGludG8gdDEgc2VsZWN0 IG51bGwgZnJvbSB0MTsKK2luc2VydCBpbnRvIHQxIHNlbGVjdCBudWxsIGZyb20gdDE7CitpbnNl cnQgaW50byB0MSBzZWxlY3QgbnVsbCBmcm9tIHQxOworaW5zZXJ0IGludG8gdDEgc2VsZWN0IG51 bGwgZnJvbSB0MTsKK2NyZWF0ZSB0YWJsZSB0MiAoCitpZCBpbnQgdW5zaWduZWQgbm90IG51bGwg YXV0b19pbmNyZW1lbnQsCit2YWwgZGVjaW1hbCg1LDMpIG5vdCBudWxsLAorcHJpbWFyeSBrZXkg KGlkLHZhbCksCit1bmlxdWUga2V5ICh2YWwsaWQpLAordW5pcXVlIGtleSAoaWQpKTsKK2luc2Vy dCBpbnRvIHQyIHNlbGVjdCBudWxsLGlkKjAuMDAwOSBmcm9tIHQxOworc2VsZWN0IGNvdW50KHZh bCkgZnJvbSB0MiBpZ25vcmUgaW5kZXggKHZhbCkgd2hlcmUgdmFsID4gMC4xMTU1OworY291bnQo dmFsKQorMTI4CitzZWxlY3QgY291bnQodmFsKSBmcm9tIHQyIGZvcmNlIGluZGV4ICh2YWwpICB3 aGVyZSB2YWwgPiAwLjExNTU7Citjb3VudCh2YWwpCisxMjgKK2Ryb3AgdGFibGUgdDIsIHQxOwor IworIyBCVUcjMTM0NTMzODIgLSBSRUdSRVNTSU9OIFNJTkNFIDUuMS4zOSwgUkFOR0UgT1BUSU1J WkVSIFdST05HCisjIFJFU1VMVFMgV0lUSCBERUNJTUFMIENPTlZFUlNJT04KKyMKK2NyZWF0ZSB0 YWJsZSB0MSAoYSBpbnQsYiBpbnQsYyBpbnQscHJpbWFyeSBrZXkgKGEsYykpOworaW5zZXJ0IGlu dG8gdDEgdmFsdWVzICgxLDEsMiksKDEsMSwzKSwoMSwxLDQpOworc2VsZWN0IGNvbnZlcnQoMywg c2lnbmVkIGludGVnZXIpID4gMi45OworY29udmVydCgzLCBzaWduZWQgaW50ZWdlcikgPiAyLjkK KzEKK3NlbGVjdCAqIGZyb20gdDEgZm9yY2UgIGluZGV4IChwcmltYXJ5KSB3aGVyZSBhPTEgYW5k IGM+PSAyLjk7CithCWIJYworMQkxCTMKKzEJMQk0CitzZWxlY3QgKiBmcm9tIHQxIGlnbm9yZSBp bmRleCAocHJpbWFyeSkgd2hlcmUgYT0xIGFuZCBjPj0gMi45OworYQliCWMKKzEJMQkzCisxCTEJ NAorc2VsZWN0ICogZnJvbSB0MSBmb3JjZSAgaW5kZXggKHByaW1hcnkpIHdoZXJlIGE9MSBhbmQg Yz4gMi45OworYQliCWMKKzEJMQkzCisxCTEJNAorc2VsZWN0ICogZnJvbSB0MSBpZ25vcmUgaW5k ZXggKHByaW1hcnkpIHdoZXJlIGE9MSBhbmQgYz4gMi45OworYQliCWMKKzEJMQkzCisxCTEJNAor ZHJvcCB0YWJsZSB0MTsKKyMKKyMgQlVHIzEzNDYzNDg4IC0gNjM0Mzc6IENIQVIgJiBCRVRXRUVO IFdJVEggSU5ERVggUkVUVVJOUyBXUk9ORworIyBSRVNVTFQgQUZURVIgTVlTUUwgNS4xLgorIwor Q1JFQVRFIFRBQkxFIHQxKAorRjEgQ0hBUig1KSBOT1QgTlVMTCwKK0YyIENIQVIoNSkgTk9UIE5V TEwsCitGMyBDSEFSKDUpIE5PVCBOVUxMLAorUFJJTUFSWSBLRVkoRjEpLAorSU5ERVggSURYX0Yy KEYyKQorKTsKK0lOU0VSVCBJTlRPIHQxIFZBTFVFUworKCdBJywnQScsJ0EnKSwoJ0FBJywnQUEn LCdBQScpLCgnQUFBJywnQUFBJywnQUFBJyksCisoJ0FBQUEnLCdBQUFBJywnQUFBQScpLCgnQUFB QUEnLCdBQUFBQScsJ0FBQUFBJyk7CitTRUxFQ1QgKiBGUk9NIHQxIFdIRVJFIEYxID0gJ0EgICAg JzsKK0YxCUYyCUYzCitBCUEJQQorU0VMRUNUICogRlJPTSB0MSBJR05PUkUgSU5ERVgoUFJJTUFS WSkgV0hFUkUgRjEgPSAnQSAgICAnOworRjEJRjIJRjMKK0EJQQlBCitTRUxFQ1QgKiBGUk9NIHQx IFdIRVJFIEYxID49ICdBICAgICc7CitGMQlGMglGMworQQlBCUEKK0FBCUFBCUFBCitBQUEJQUFB CUFBQQorQUFBQQlBQUFBCUFBQUEKK0FBQUFBCUFBQUFBCUFBQUFBCitTRUxFQ1QgKiBGUk9NIHQx IFdIRVJFIEYxID4gJ0EgICAgJzsKK0YxCUYyCUYzCitBQQlBQQlBQQorQUFBCUFBQQlBQUEKK0FB QUEJQUFBQQlBQUFBCitBQUFBQQlBQUFBQQlBQUFBQQorU0VMRUNUICogRlJPTSB0MSBXSEVSRSBG MSBCRVRXRUVOICdBICAgICcgQU5EICdBQUFBQSc7CitGMQlGMglGMworQQlBCUEKK0FBCUFBCUFB CitBQUEJQUFBCUFBQQorQUFBQQlBQUFBCUFBQUEKK0FBQUFBCUFBQUFBCUFBQUFBCitTRUxFQ1Qg KiBGUk9NIHQxIFdIRVJFIEYyIEJFVFdFRU4gJ0EgICAgJyBBTkQgJ0FBQUFBJzsKK0YxCUYyCUYz CitBCUEJQQorQUEJQUEJQUEKK0FBQQlBQUEJQUFBCitBQUFBCUFBQUEJQUFBQQorQUFBQUEJQUFB QUEJQUFBQUEKK1NFTEVDVCAqIEZST00gdDEgV0hFUkUgRjMgQkVUV0VFTiAnQSAgICAnIEFORCAn QUFBQUEnOworRjEJRjIJRjMKK0EJQQlBCitBQQlBQQlBQQorQUFBCUFBQQlBQUEKK0FBQUEJQUFB QQlBQUFBCitBQUFBQQlBQUFBQQlBQUFBQQorU0VMRUNUICogRlJPTSB0MSBJR05PUkUgSU5ERVgo UFJJTUFSWSkgV0hFUkUgRjEgQkVUV0VFTiAnQSAgICAnIEFORAorJ0FBQUFBJzsKK0YxCUYyCUYz CitBCUEJQQorQUEJQUEJQUEKK0FBQQlBQUEJQUFBCitBQUFBCUFBQUEJQUFBQQorQUFBQUEJQUFB QUEJQUFBQUEKK0RST1AgVEFCTEUgdDE7CiBFbmQgb2YgNS4xIHRlc3RzCiBDUkVBVEUgVEFCTEUg dDEgKGMxIERFQ0lNQUwoMTAsMCksSU5ERVgoYzEpKTsKIElOU0VSVCBJTlRPIHQxIFZBTFVFUyAo MSksKDIpLCgzKTsKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3IvcmFuZ2VfaWNwX21y ci5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvci9yYW5nZV9pY3BfbXJyLnJlc3VsdAkyMDExLTEy LTA5IDE1OjA2OjUwICswMDAwCisrKyBiL215c3FsLXRlc3Qvci9yYW5nZV9pY3BfbXJyLnJlc3Vs dAkyMDEyLTAxLTI2IDEwOjA4OjEyICswMDAwCkBAIC0xNzY4LDYgKzE3NjgsMTIzIEBAIGlkCXNl bGVjdF90eXBlCXRhYmxlCXR5cGUJcG9zc2libGVfa2V5cwogU0VMRUNUICogRlJPTSB0MSwgdDEg YXMgdDIgV0hFUkUgdDEuaTQgQkVUV0VFTiB0Mi5wayBBTkQgdDIucGs7CiBwawlpNAlwawlpNAog RFJPUCBUQUJMRSB0MTsKKyMKKyMgQlVHIzEzNTE5Njk2IC0gNjI5NDA6IFNFTEVDVCBSRVNVTFRT IFZBUlkgV0lUSCBWRVJTSU9OIEFORAorIyBXSVRIL1dJVEhPVVQgSU5ERVggUkFOR0UgU0NBTgor IworY3JlYXRlIHRhYmxlIHQxIChpZCBpbnQgdW5zaWduZWQgbm90IG51bGwgYXV0b19pbmNyZW1l bnQgcHJpbWFyeSBrZXkpOworaW5zZXJ0IGludG8gdDEgdmFsdWVzIChudWxsKTsKK2luc2VydCBp bnRvIHQxIHNlbGVjdCBudWxsIGZyb20gdDE7CitpbnNlcnQgaW50byB0MSBzZWxlY3QgbnVsbCBm cm9tIHQxOworaW5zZXJ0IGludG8gdDEgc2VsZWN0IG51bGwgZnJvbSB0MTsKK2luc2VydCBpbnRv IHQxIHNlbGVjdCBudWxsIGZyb20gdDE7CitpbnNlcnQgaW50byB0MSBzZWxlY3QgbnVsbCBmcm9t IHQxOworaW5zZXJ0IGludG8gdDEgc2VsZWN0IG51bGwgZnJvbSB0MTsKK2luc2VydCBpbnRvIHQx IHNlbGVjdCBudWxsIGZyb20gdDE7CitpbnNlcnQgaW50byB0MSBzZWxlY3QgbnVsbCBmcm9tIHQx OworY3JlYXRlIHRhYmxlIHQyICgKK2lkIGludCB1bnNpZ25lZCBub3QgbnVsbCBhdXRvX2luY3Jl bWVudCwKK3ZhbCBkZWNpbWFsKDUsMykgbm90IG51bGwsCitwcmltYXJ5IGtleSAoaWQsdmFsKSwK K3VuaXF1ZSBrZXkgKHZhbCxpZCksCit1bmlxdWUga2V5IChpZCkpOworaW5zZXJ0IGludG8gdDIg c2VsZWN0IG51bGwsaWQqMC4wMDA5IGZyb20gdDE7CitzZWxlY3QgY291bnQodmFsKSBmcm9tIHQy IGlnbm9yZSBpbmRleCAodmFsKSB3aGVyZSB2YWwgPiAwLjExNTU7Citjb3VudCh2YWwpCisxMjgK K3NlbGVjdCBjb3VudCh2YWwpIGZyb20gdDIgZm9yY2UgaW5kZXggKHZhbCkgIHdoZXJlIHZhbCA+ IDAuMTE1NTsKK2NvdW50KHZhbCkKKzEyOAorZHJvcCB0YWJsZSB0MiwgdDE7CisjCisjIEJVRyMx MzQ1MzM4MiAtIFJFR1JFU1NJT04gU0lOQ0UgNS4xLjM5LCBSQU5HRSBPUFRJTUlaRVIgV1JPTkcK KyMgUkVTVUxUUyBXSVRIIERFQ0lNQUwgQ09OVkVSU0lPTgorIworY3JlYXRlIHRhYmxlIHQxIChh IGludCxiIGludCxjIGludCxwcmltYXJ5IGtleSAoYSxjKSk7CitpbnNlcnQgaW50byB0MSB2YWx1 ZXMgKDEsMSwyKSwoMSwxLDMpLCgxLDEsNCk7CitzZWxlY3QgY29udmVydCgzLCBzaWduZWQgaW50 ZWdlcikgPiAyLjk7Citjb252ZXJ0KDMsIHNpZ25lZCBpbnRlZ2VyKSA+IDIuOQorMQorc2VsZWN0 ICogZnJvbSB0MSBmb3JjZSAgaW5kZXggKHByaW1hcnkpIHdoZXJlIGE9MSBhbmQgYz49IDIuOTsK K2EJYgljCisxCTEJMworMQkxCTQKK3NlbGVjdCAqIGZyb20gdDEgaWdub3JlIGluZGV4IChwcmlt YXJ5KSB3aGVyZSBhPTEgYW5kIGM+PSAyLjk7CithCWIJYworMQkxCTMKKzEJMQk0CitzZWxlY3Qg KiBmcm9tIHQxIGZvcmNlICBpbmRleCAocHJpbWFyeSkgd2hlcmUgYT0xIGFuZCBjPiAyLjk7Cith CWIJYworMQkxCTMKKzEJMQk0CitzZWxlY3QgKiBmcm9tIHQxIGlnbm9yZSBpbmRleCAocHJpbWFy eSkgd2hlcmUgYT0xIGFuZCBjPiAyLjk7CithCWIJYworMQkxCTMKKzEJMQk0Citkcm9wIHRhYmxl IHQxOworIworIyBCVUcjMTM0NjM0ODggLSA2MzQzNzogQ0hBUiAmIEJFVFdFRU4gV0lUSCBJTkRF WCBSRVRVUk5TIFdST05HCisjIFJFU1VMVCBBRlRFUiBNWVNRTCA1LjEuCisjCitDUkVBVEUgVEFC TEUgdDEoCitGMSBDSEFSKDUpIE5PVCBOVUxMLAorRjIgQ0hBUig1KSBOT1QgTlVMTCwKK0YzIENI QVIoNSkgTk9UIE5VTEwsCitQUklNQVJZIEtFWShGMSksCitJTkRFWCBJRFhfRjIoRjIpCispOwor SU5TRVJUIElOVE8gdDEgVkFMVUVTCisoJ0EnLCdBJywnQScpLCgnQUEnLCdBQScsJ0FBJyksKCdB QUEnLCdBQUEnLCdBQUEnKSwKKygnQUFBQScsJ0FBQUEnLCdBQUFBJyksKCdBQUFBQScsJ0FBQUFB JywnQUFBQUEnKTsKK1NFTEVDVCAqIEZST00gdDEgV0hFUkUgRjEgPSAnQSAgICAnOworRjEJRjIJ RjMKK0EJQQlBCitTRUxFQ1QgKiBGUk9NIHQxIElHTk9SRSBJTkRFWChQUklNQVJZKSBXSEVSRSBG MSA9ICdBICAgICc7CitGMQlGMglGMworQQlBCUEKK1NFTEVDVCAqIEZST00gdDEgV0hFUkUgRjEg Pj0gJ0EgICAgJzsKK0YxCUYyCUYzCitBCUEJQQorQUEJQUEJQUEKK0FBQQlBQUEJQUFBCitBQUFB CUFBQUEJQUFBQQorQUFBQUEJQUFBQUEJQUFBQUEKK1NFTEVDVCAqIEZST00gdDEgV0hFUkUgRjEg PiAnQSAgICAnOworRjEJRjIJRjMKK0FBCUFBCUFBCitBQUEJQUFBCUFBQQorQUFBQQlBQUFBCUFB QUEKK0FBQUFBCUFBQUFBCUFBQUFBCitTRUxFQ1QgKiBGUk9NIHQxIFdIRVJFIEYxIEJFVFdFRU4g J0EgICAgJyBBTkQgJ0FBQUFBJzsKK0YxCUYyCUYzCitBCUEJQQorQUEJQUEJQUEKK0FBQQlBQUEJ QUFBCitBQUFBCUFBQUEJQUFBQQorQUFBQUEJQUFBQUEJQUFBQUEKK1NFTEVDVCAqIEZST00gdDEg V0hFUkUgRjIgQkVUV0VFTiAnQSAgICAnIEFORCAnQUFBQUEnOworRjEJRjIJRjMKK0EJQQlBCitB QQlBQQlBQQorQUFBCUFBQQlBQUEKK0FBQUEJQUFBQQlBQUFBCitBQUFBQQlBQUFBQQlBQUFBQQor U0VMRUNUICogRlJPTSB0MSBXSEVSRSBGMyBCRVRXRUVOICdBICAgICcgQU5EICdBQUFBQSc7CitG MQlGMglGMworQQlBCUEKK0FBCUFBCUFBCitBQUEJQUFBCUFBQQorQUFBQQlBQUFBCUFBQUEKK0FB QUFBCUFBQUFBCUFBQUFBCitTRUxFQ1QgKiBGUk9NIHQxIElHTk9SRSBJTkRFWChQUklNQVJZKSBX SEVSRSBGMSBCRVRXRUVOICdBICAgICcgQU5ECisnQUFBQUEnOworRjEJRjIJRjMKK0EJQQlBCitB QQlBQQlBQQorQUFBCUFBQQlBQUEKK0FBQUEJQUFBQQlBQUFBCitBQUFBQQlBQUFBQQlBQUFBQQor RFJPUCBUQUJMRSB0MTsKIEVuZCBvZiA1LjEgdGVzdHMKIENSRUFURSBUQUJMRSB0MSAoYzEgREVD SU1BTCgxMCwwKSxJTkRFWChjMSkpOwogSU5TRVJUIElOVE8gdDEgVkFMVUVTICgxKSwoMiksKDMp OwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvci9yYW5nZV9tcnIucmVzdWx0JwotLS0g YS9teXNxbC10ZXN0L3IvcmFuZ2VfbXJyLnJlc3VsdAkyMDExLTEyLTA5IDE1OjA2OjUwICswMDAw CisrKyBiL215c3FsLXRlc3Qvci9yYW5nZV9tcnIucmVzdWx0CTIwMTItMDEtMjYgMTA6MDg6MTIg KzAwMDAKQEAgLTE3NjgsNiArMTc2OCwxMjMgQEAgaWQJc2VsZWN0X3R5cGUJdGFibGUJdHlwZQlw b3NzaWJsZV9rZXlzCiBTRUxFQ1QgKiBGUk9NIHQxLCB0MSBhcyB0MiBXSEVSRSB0MS5pNCBCRVRX RUVOIHQyLnBrIEFORCB0Mi5wazsKIHBrCWk0CXBrCWk0CiBEUk9QIFRBQkxFIHQxOworIworIyBC VUcjMTM1MTk2OTYgLSA2Mjk0MDogU0VMRUNUIFJFU1VMVFMgVkFSWSBXSVRIIFZFUlNJT04gQU5E CisjIFdJVEgvV0lUSE9VVCBJTkRFWCBSQU5HRSBTQ0FOCisjCitjcmVhdGUgdGFibGUgdDEgKGlk IGludCB1bnNpZ25lZCBub3QgbnVsbCBhdXRvX2luY3JlbWVudCBwcmltYXJ5IGtleSk7CitpbnNl cnQgaW50byB0MSB2YWx1ZXMgKG51bGwpOworaW5zZXJ0IGludG8gdDEgc2VsZWN0IG51bGwgZnJv bSB0MTsKK2luc2VydCBpbnRvIHQxIHNlbGVjdCBudWxsIGZyb20gdDE7CitpbnNlcnQgaW50byB0 MSBzZWxlY3QgbnVsbCBmcm9tIHQxOworaW5zZXJ0IGludG8gdDEgc2VsZWN0IG51bGwgZnJvbSB0 MTsKK2luc2VydCBpbnRvIHQxIHNlbGVjdCBudWxsIGZyb20gdDE7CitpbnNlcnQgaW50byB0MSBz ZWxlY3QgbnVsbCBmcm9tIHQxOworaW5zZXJ0IGludG8gdDEgc2VsZWN0IG51bGwgZnJvbSB0MTsK K2luc2VydCBpbnRvIHQxIHNlbGVjdCBudWxsIGZyb20gdDE7CitjcmVhdGUgdGFibGUgdDIgKAor aWQgaW50IHVuc2lnbmVkIG5vdCBudWxsIGF1dG9faW5jcmVtZW50LAordmFsIGRlY2ltYWwoNSwz KSBub3QgbnVsbCwKK3ByaW1hcnkga2V5IChpZCx2YWwpLAordW5pcXVlIGtleSAodmFsLGlkKSwK K3VuaXF1ZSBrZXkgKGlkKSk7CitpbnNlcnQgaW50byB0MiBzZWxlY3QgbnVsbCxpZCowLjAwMDkg ZnJvbSB0MTsKK3NlbGVjdCBjb3VudCh2YWwpIGZyb20gdDIgaWdub3JlIGluZGV4ICh2YWwpIHdo ZXJlIHZhbCA+IDAuMTE1NTsKK2NvdW50KHZhbCkKKzEyOAorc2VsZWN0IGNvdW50KHZhbCkgZnJv bSB0MiBmb3JjZSBpbmRleCAodmFsKSAgd2hlcmUgdmFsID4gMC4xMTU1OworY291bnQodmFsKQor MTI4Citkcm9wIHRhYmxlIHQyLCB0MTsKKyMKKyMgQlVHIzEzNDUzMzgyIC0gUkVHUkVTU0lPTiBT SU5DRSA1LjEuMzksIFJBTkdFIE9QVElNSVpFUiBXUk9ORworIyBSRVNVTFRTIFdJVEggREVDSU1B TCBDT05WRVJTSU9OCisjCitjcmVhdGUgdGFibGUgdDEgKGEgaW50LGIgaW50LGMgaW50LHByaW1h cnkga2V5IChhLGMpKTsKK2luc2VydCBpbnRvIHQxIHZhbHVlcyAoMSwxLDIpLCgxLDEsMyksKDEs MSw0KTsKK3NlbGVjdCBjb252ZXJ0KDMsIHNpZ25lZCBpbnRlZ2VyKSA+IDIuOTsKK2NvbnZlcnQo Mywgc2lnbmVkIGludGVnZXIpID4gMi45CisxCitzZWxlY3QgKiBmcm9tIHQxIGZvcmNlICBpbmRl eCAocHJpbWFyeSkgd2hlcmUgYT0xIGFuZCBjPj0gMi45OworYQliCWMKKzEJMQkzCisxCTEJNAor c2VsZWN0ICogZnJvbSB0MSBpZ25vcmUgaW5kZXggKHByaW1hcnkpIHdoZXJlIGE9MSBhbmQgYz49 IDIuOTsKK2EJYgljCisxCTEJMworMQkxCTQKK3NlbGVjdCAqIGZyb20gdDEgZm9yY2UgIGluZGV4 IChwcmltYXJ5KSB3aGVyZSBhPTEgYW5kIGM+IDIuOTsKK2EJYgljCisxCTEJMworMQkxCTQKK3Nl bGVjdCAqIGZyb20gdDEgaWdub3JlIGluZGV4IChwcmltYXJ5KSB3aGVyZSBhPTEgYW5kIGM+IDIu OTsKK2EJYgljCisxCTEJMworMQkxCTQKK2Ryb3AgdGFibGUgdDE7CisjCisjIEJVRyMxMzQ2MzQ4 OCAtIDYzNDM3OiBDSEFSICYgQkVUV0VFTiBXSVRIIElOREVYIFJFVFVSTlMgV1JPTkcKKyMgUkVT VUxUIEFGVEVSIE1ZU1FMIDUuMS4KKyMKK0NSRUFURSBUQUJMRSB0MSgKK0YxIENIQVIoNSkgTk9U IE5VTEwsCitGMiBDSEFSKDUpIE5PVCBOVUxMLAorRjMgQ0hBUig1KSBOT1QgTlVMTCwKK1BSSU1B UlkgS0VZKEYxKSwKK0lOREVYIElEWF9GMihGMikKKyk7CitJTlNFUlQgSU5UTyB0MSBWQUxVRVMK KygnQScsJ0EnLCdBJyksKCdBQScsJ0FBJywnQUEnKSwoJ0FBQScsJ0FBQScsJ0FBQScpLAorKCdB QUFBJywnQUFBQScsJ0FBQUEnKSwoJ0FBQUFBJywnQUFBQUEnLCdBQUFBQScpOworU0VMRUNUICog RlJPTSB0MSBXSEVSRSBGMSA9ICdBICAgICc7CitGMQlGMglGMworQQlBCUEKK1NFTEVDVCAqIEZS T00gdDEgSUdOT1JFIElOREVYKFBSSU1BUlkpIFdIRVJFIEYxID0gJ0EgICAgJzsKK0YxCUYyCUYz CitBCUEJQQorU0VMRUNUICogRlJPTSB0MSBXSEVSRSBGMSA+PSAnQSAgICAnOworRjEJRjIJRjMK K0EJQQlBCitBQQlBQQlBQQorQUFBCUFBQQlBQUEKK0FBQUEJQUFBQQlBQUFBCitBQUFBQQlBQUFB QQlBQUFBQQorU0VMRUNUICogRlJPTSB0MSBXSEVSRSBGMSA+ICdBICAgICc7CitGMQlGMglGMwor QUEJQUEJQUEKK0FBQQlBQUEJQUFBCitBQUFBCUFBQUEJQUFBQQorQUFBQUEJQUFBQUEJQUFBQUEK K1NFTEVDVCAqIEZST00gdDEgV0hFUkUgRjEgQkVUV0VFTiAnQSAgICAnIEFORCAnQUFBQUEnOwor RjEJRjIJRjMKK0EJQQlBCitBQQlBQQlBQQorQUFBCUFBQQlBQUEKK0FBQUEJQUFBQQlBQUFBCitB QUFBQQlBQUFBQQlBQUFBQQorU0VMRUNUICogRlJPTSB0MSBXSEVSRSBGMiBCRVRXRUVOICdBICAg ICcgQU5EICdBQUFBQSc7CitGMQlGMglGMworQQlBCUEKK0FBCUFBCUFBCitBQUEJQUFBCUFBQQor QUFBQQlBQUFBCUFBQUEKK0FBQUFBCUFBQUFBCUFBQUFBCitTRUxFQ1QgKiBGUk9NIHQxIFdIRVJF IEYzIEJFVFdFRU4gJ0EgICAgJyBBTkQgJ0FBQUFBJzsKK0YxCUYyCUYzCitBCUEJQQorQUEJQUEJ QUEKK0FBQQlBQUEJQUFBCitBQUFBCUFBQUEJQUFBQQorQUFBQUEJQUFBQUEJQUFBQUEKK1NFTEVD VCAqIEZST00gdDEgSUdOT1JFIElOREVYKFBSSU1BUlkpIFdIRVJFIEYxIEJFVFdFRU4gJ0EgICAg JyBBTkQKKydBQUFBQSc7CitGMQlGMglGMworQQlBCUEKK0FBCUFBCUFBCitBQUEJQUFBCUFBQQor QUFBQQlBQUFBCUFBQUEKK0FBQUFBCUFBQUFBCUFBQUFBCitEUk9QIFRBQkxFIHQxOwogRW5kIG9m IDUuMSB0ZXN0cwogQ1JFQVRFIFRBQkxFIHQxIChjMSBERUNJTUFMKDEwLDApLElOREVYKGMxKSk7 CiBJTlNFUlQgSU5UTyB0MSBWQUxVRVMgKDEpLCgyKSwoMyk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAn bXlzcWwtdGVzdC9yL3JhbmdlX21ycl9jb3N0LnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9yL3Jh bmdlX21ycl9jb3N0LnJlc3VsdAkyMDExLTEyLTA5IDE1OjA2OjUwICswMDAwCisrKyBiL215c3Fs LXRlc3Qvci9yYW5nZV9tcnJfY29zdC5yZXN1bHQJMjAxMi0wMS0yNiAxMDowODoxMiArMDAwMApA QCAtMTc2OCw2ICsxNzY4LDEyMyBAQCBpZAlzZWxlY3RfdHlwZQl0YWJsZQl0eXBlCXBvc3NpYmxl X2tleXMKIFNFTEVDVCAqIEZST00gdDEsIHQxIGFzIHQyIFdIRVJFIHQxLmk0IEJFVFdFRU4gdDIu cGsgQU5EIHQyLnBrOwogcGsJaTQJcGsJaTQKIERST1AgVEFCTEUgdDE7CisjCisjIEJVRyMxMzUx OTY5NiAtIDYyOTQwOiBTRUxFQ1QgUkVTVUxUUyBWQVJZIFdJVEggVkVSU0lPTiBBTkQKKyMgV0lU SC9XSVRIT1VUIElOREVYIFJBTkdFIFNDQU4KKyMKK2NyZWF0ZSB0YWJsZSB0MSAoaWQgaW50IHVu c2lnbmVkIG5vdCBudWxsIGF1dG9faW5jcmVtZW50IHByaW1hcnkga2V5KTsKK2luc2VydCBpbnRv IHQxIHZhbHVlcyAobnVsbCk7CitpbnNlcnQgaW50byB0MSBzZWxlY3QgbnVsbCBmcm9tIHQxOwor aW5zZXJ0IGludG8gdDEgc2VsZWN0IG51bGwgZnJvbSB0MTsKK2luc2VydCBpbnRvIHQxIHNlbGVj dCBudWxsIGZyb20gdDE7CitpbnNlcnQgaW50byB0MSBzZWxlY3QgbnVsbCBmcm9tIHQxOworaW5z ZXJ0IGludG8gdDEgc2VsZWN0IG51bGwgZnJvbSB0MTsKK2luc2VydCBpbnRvIHQxIHNlbGVjdCBu dWxsIGZyb20gdDE7CitpbnNlcnQgaW50byB0MSBzZWxlY3QgbnVsbCBmcm9tIHQxOworaW5zZXJ0 IGludG8gdDEgc2VsZWN0IG51bGwgZnJvbSB0MTsKK2NyZWF0ZSB0YWJsZSB0MiAoCitpZCBpbnQg dW5zaWduZWQgbm90IG51bGwgYXV0b19pbmNyZW1lbnQsCit2YWwgZGVjaW1hbCg1LDMpIG5vdCBu dWxsLAorcHJpbWFyeSBrZXkgKGlkLHZhbCksCit1bmlxdWUga2V5ICh2YWwsaWQpLAordW5pcXVl IGtleSAoaWQpKTsKK2luc2VydCBpbnRvIHQyIHNlbGVjdCBudWxsLGlkKjAuMDAwOSBmcm9tIHQx Oworc2VsZWN0IGNvdW50KHZhbCkgZnJvbSB0MiBpZ25vcmUgaW5kZXggKHZhbCkgd2hlcmUgdmFs ID4gMC4xMTU1OworY291bnQodmFsKQorMTI4CitzZWxlY3QgY291bnQodmFsKSBmcm9tIHQyIGZv cmNlIGluZGV4ICh2YWwpICB3aGVyZSB2YWwgPiAwLjExNTU7Citjb3VudCh2YWwpCisxMjgKK2Ry b3AgdGFibGUgdDIsIHQxOworIworIyBCVUcjMTM0NTMzODIgLSBSRUdSRVNTSU9OIFNJTkNFIDUu MS4zOSwgUkFOR0UgT1BUSU1JWkVSIFdST05HCisjIFJFU1VMVFMgV0lUSCBERUNJTUFMIENPTlZF UlNJT04KKyMKK2NyZWF0ZSB0YWJsZSB0MSAoYSBpbnQsYiBpbnQsYyBpbnQscHJpbWFyeSBrZXkg KGEsYykpOworaW5zZXJ0IGludG8gdDEgdmFsdWVzICgxLDEsMiksKDEsMSwzKSwoMSwxLDQpOwor c2VsZWN0IGNvbnZlcnQoMywgc2lnbmVkIGludGVnZXIpID4gMi45OworY29udmVydCgzLCBzaWdu ZWQgaW50ZWdlcikgPiAyLjkKKzEKK3NlbGVjdCAqIGZyb20gdDEgZm9yY2UgIGluZGV4IChwcmlt YXJ5KSB3aGVyZSBhPTEgYW5kIGM+PSAyLjk7CithCWIJYworMQkxCTMKKzEJMQk0CitzZWxlY3Qg KiBmcm9tIHQxIGlnbm9yZSBpbmRleCAocHJpbWFyeSkgd2hlcmUgYT0xIGFuZCBjPj0gMi45Owor YQliCWMKKzEJMQkzCisxCTEJNAorc2VsZWN0ICogZnJvbSB0MSBmb3JjZSAgaW5kZXggKHByaW1h cnkpIHdoZXJlIGE9MSBhbmQgYz4gMi45OworYQliCWMKKzEJMQkzCisxCTEJNAorc2VsZWN0ICog ZnJvbSB0MSBpZ25vcmUgaW5kZXggKHByaW1hcnkpIHdoZXJlIGE9MSBhbmQgYz4gMi45OworYQli CWMKKzEJMQkzCisxCTEJNAorZHJvcCB0YWJsZSB0MTsKKyMKKyMgQlVHIzEzNDYzNDg4IC0gNjM0 Mzc6IENIQVIgJiBCRVRXRUVOIFdJVEggSU5ERVggUkVUVVJOUyBXUk9ORworIyBSRVNVTFQgQUZU RVIgTVlTUUwgNS4xLgorIworQ1JFQVRFIFRBQkxFIHQxKAorRjEgQ0hBUig1KSBOT1QgTlVMTCwK K0YyIENIQVIoNSkgTk9UIE5VTEwsCitGMyBDSEFSKDUpIE5PVCBOVUxMLAorUFJJTUFSWSBLRVko RjEpLAorSU5ERVggSURYX0YyKEYyKQorKTsKK0lOU0VSVCBJTlRPIHQxIFZBTFVFUworKCdBJywn QScsJ0EnKSwoJ0FBJywnQUEnLCdBQScpLCgnQUFBJywnQUFBJywnQUFBJyksCisoJ0FBQUEnLCdB QUFBJywnQUFBQScpLCgnQUFBQUEnLCdBQUFBQScsJ0FBQUFBJyk7CitTRUxFQ1QgKiBGUk9NIHQx IFdIRVJFIEYxID0gJ0EgICAgJzsKK0YxCUYyCUYzCitBCUEJQQorU0VMRUNUICogRlJPTSB0MSBJ R05PUkUgSU5ERVgoUFJJTUFSWSkgV0hFUkUgRjEgPSAnQSAgICAnOworRjEJRjIJRjMKK0EJQQlB CitTRUxFQ1QgKiBGUk9NIHQxIFdIRVJFIEYxID49ICdBICAgICc7CitGMQlGMglGMworQQlBCUEK K0FBCUFBCUFBCitBQUEJQUFBCUFBQQorQUFBQQlBQUFBCUFBQUEKK0FBQUFBCUFBQUFBCUFBQUFB CitTRUxFQ1QgKiBGUk9NIHQxIFdIRVJFIEYxID4gJ0EgICAgJzsKK0YxCUYyCUYzCitBQQlBQQlB QQorQUFBCUFBQQlBQUEKK0FBQUEJQUFBQQlBQUFBCitBQUFBQQlBQUFBQQlBQUFBQQorU0VMRUNU ICogRlJPTSB0MSBXSEVSRSBGMSBCRVRXRUVOICdBICAgICcgQU5EICdBQUFBQSc7CitGMQlGMglG MworQQlBCUEKK0FBCUFBCUFBCitBQUEJQUFBCUFBQQorQUFBQQlBQUFBCUFBQUEKK0FBQUFBCUFB QUFBCUFBQUFBCitTRUxFQ1QgKiBGUk9NIHQxIFdIRVJFIEYyIEJFVFdFRU4gJ0EgICAgJyBBTkQg J0FBQUFBJzsKK0YxCUYyCUYzCitBCUEJQQorQUEJQUEJQUEKK0FBQQlBQUEJQUFBCitBQUFBCUFB QUEJQUFBQQorQUFBQUEJQUFBQUEJQUFBQUEKK1NFTEVDVCAqIEZST00gdDEgV0hFUkUgRjMgQkVU V0VFTiAnQSAgICAnIEFORCAnQUFBQUEnOworRjEJRjIJRjMKK0EJQQlBCitBQQlBQQlBQQorQUFB CUFBQQlBQUEKK0FBQUEJQUFBQQlBQUFBCitBQUFBQQlBQUFBQQlBQUFBQQorU0VMRUNUICogRlJP TSB0MSBJR05PUkUgSU5ERVgoUFJJTUFSWSkgV0hFUkUgRjEgQkVUV0VFTiAnQSAgICAnIEFORAor J0FBQUFBJzsKK0YxCUYyCUYzCitBCUEJQQorQUEJQUEJQUEKK0FBQQlBQUEJQUFBCitBQUFBCUFB QUEJQUFBQQorQUFBQUEJQUFBQUEJQUFBQUEKK0RST1AgVEFCTEUgdDE7CiBFbmQgb2YgNS4xIHRl c3RzCiBDUkVBVEUgVEFCTEUgdDEgKGMxIERFQ0lNQUwoMTAsMCksSU5ERVgoYzEpKTsKIElOU0VS VCBJTlRPIHQxIFZBTFVFUyAoMSksKDIpLCgzKTsKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10 ZXN0L3IvcmFuZ2Vfbm9uZS5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvci9yYW5nZV9ub25lLnJl c3VsdAkyMDExLTEyLTA5IDE1OjA2OjUwICswMDAwCisrKyBiL215c3FsLXRlc3Qvci9yYW5nZV9u b25lLnJlc3VsdAkyMDEyLTAxLTI2IDEwOjA4OjEyICswMDAwCkBAIC0xNzY3LDYgKzE3NjcsMTIz IEBAIGlkCXNlbGVjdF90eXBlCXRhYmxlCXR5cGUJcG9zc2libGVfa2V5cwogU0VMRUNUICogRlJP TSB0MSwgdDEgYXMgdDIgV0hFUkUgdDEuaTQgQkVUV0VFTiB0Mi5wayBBTkQgdDIucGs7CiBwawlp NAlwawlpNAogRFJPUCBUQUJMRSB0MTsKKyMKKyMgQlVHIzEzNTE5Njk2IC0gNjI5NDA6IFNFTEVD VCBSRVNVTFRTIFZBUlkgV0lUSCBWRVJTSU9OIEFORAorIyBXSVRIL1dJVEhPVVQgSU5ERVggUkFO R0UgU0NBTgorIworY3JlYXRlIHRhYmxlIHQxIChpZCBpbnQgdW5zaWduZWQgbm90IG51bGwgYXV0 b19pbmNyZW1lbnQgcHJpbWFyeSBrZXkpOworaW5zZXJ0IGludG8gdDEgdmFsdWVzIChudWxsKTsK K2luc2VydCBpbnRvIHQxIHNlbGVjdCBudWxsIGZyb20gdDE7CitpbnNlcnQgaW50byB0MSBzZWxl Y3QgbnVsbCBmcm9tIHQxOworaW5zZXJ0IGludG8gdDEgc2VsZWN0IG51bGwgZnJvbSB0MTsKK2lu c2VydCBpbnRvIHQxIHNlbGVjdCBudWxsIGZyb20gdDE7CitpbnNlcnQgaW50byB0MSBzZWxlY3Qg bnVsbCBmcm9tIHQxOworaW5zZXJ0IGludG8gdDEgc2VsZWN0IG51bGwgZnJvbSB0MTsKK2luc2Vy dCBpbnRvIHQxIHNlbGVjdCBudWxsIGZyb20gdDE7CitpbnNlcnQgaW50byB0MSBzZWxlY3QgbnVs bCBmcm9tIHQxOworY3JlYXRlIHRhYmxlIHQyICgKK2lkIGludCB1bnNpZ25lZCBub3QgbnVsbCBh dXRvX2luY3JlbWVudCwKK3ZhbCBkZWNpbWFsKDUsMykgbm90IG51bGwsCitwcmltYXJ5IGtleSAo aWQsdmFsKSwKK3VuaXF1ZSBrZXkgKHZhbCxpZCksCit1bmlxdWUga2V5IChpZCkpOworaW5zZXJ0 IGludG8gdDIgc2VsZWN0IG51bGwsaWQqMC4wMDA5IGZyb20gdDE7CitzZWxlY3QgY291bnQodmFs KSBmcm9tIHQyIGlnbm9yZSBpbmRleCAodmFsKSB3aGVyZSB2YWwgPiAwLjExNTU7Citjb3VudCh2 YWwpCisxMjgKK3NlbGVjdCBjb3VudCh2YWwpIGZyb20gdDIgZm9yY2UgaW5kZXggKHZhbCkgIHdo ZXJlIHZhbCA+IDAuMTE1NTsKK2NvdW50KHZhbCkKKzEyOAorZHJvcCB0YWJsZSB0MiwgdDE7Cisj CisjIEJVRyMxMzQ1MzM4MiAtIFJFR1JFU1NJT04gU0lOQ0UgNS4xLjM5LCBSQU5HRSBPUFRJTUla RVIgV1JPTkcKKyMgUkVTVUxUUyBXSVRIIERFQ0lNQUwgQ09OVkVSU0lPTgorIworY3JlYXRlIHRh YmxlIHQxIChhIGludCxiIGludCxjIGludCxwcmltYXJ5IGtleSAoYSxjKSk7CitpbnNlcnQgaW50 byB0MSB2YWx1ZXMgKDEsMSwyKSwoMSwxLDMpLCgxLDEsNCk7CitzZWxlY3QgY29udmVydCgzLCBz aWduZWQgaW50ZWdlcikgPiAyLjk7Citjb252ZXJ0KDMsIHNpZ25lZCBpbnRlZ2VyKSA+IDIuOQor MQorc2VsZWN0ICogZnJvbSB0MSBmb3JjZSAgaW5kZXggKHByaW1hcnkpIHdoZXJlIGE9MSBhbmQg Yz49IDIuOTsKK2EJYgljCisxCTEJMworMQkxCTQKK3NlbGVjdCAqIGZyb20gdDEgaWdub3JlIGlu ZGV4IChwcmltYXJ5KSB3aGVyZSBhPTEgYW5kIGM+PSAyLjk7CithCWIJYworMQkxCTMKKzEJMQk0 CitzZWxlY3QgKiBmcm9tIHQxIGZvcmNlICBpbmRleCAocHJpbWFyeSkgd2hlcmUgYT0xIGFuZCBj PiAyLjk7CithCWIJYworMQkxCTMKKzEJMQk0CitzZWxlY3QgKiBmcm9tIHQxIGlnbm9yZSBpbmRl eCAocHJpbWFyeSkgd2hlcmUgYT0xIGFuZCBjPiAyLjk7CithCWIJYworMQkxCTMKKzEJMQk0Citk cm9wIHRhYmxlIHQxOworIworIyBCVUcjMTM0NjM0ODggLSA2MzQzNzogQ0hBUiAmIEJFVFdFRU4g V0lUSCBJTkRFWCBSRVRVUk5TIFdST05HCisjIFJFU1VMVCBBRlRFUiBNWVNRTCA1LjEuCisjCitD UkVBVEUgVEFCTEUgdDEoCitGMSBDSEFSKDUpIE5PVCBOVUxMLAorRjIgQ0hBUig1KSBOT1QgTlVM TCwKK0YzIENIQVIoNSkgTk9UIE5VTEwsCitQUklNQVJZIEtFWShGMSksCitJTkRFWCBJRFhfRjIo RjIpCispOworSU5TRVJUIElOVE8gdDEgVkFMVUVTCisoJ0EnLCdBJywnQScpLCgnQUEnLCdBQScs J0FBJyksKCdBQUEnLCdBQUEnLCdBQUEnKSwKKygnQUFBQScsJ0FBQUEnLCdBQUFBJyksKCdBQUFB QScsJ0FBQUFBJywnQUFBQUEnKTsKK1NFTEVDVCAqIEZST00gdDEgV0hFUkUgRjEgPSAnQSAgICAn OworRjEJRjIJRjMKK0EJQQlBCitTRUxFQ1QgKiBGUk9NIHQxIElHTk9SRSBJTkRFWChQUklNQVJZ KSBXSEVSRSBGMSA9ICdBICAgICc7CitGMQlGMglGMworQQlBCUEKK1NFTEVDVCAqIEZST00gdDEg V0hFUkUgRjEgPj0gJ0EgICAgJzsKK0YxCUYyCUYzCitBCUEJQQorQUEJQUEJQUEKK0FBQQlBQUEJ QUFBCitBQUFBCUFBQUEJQUFBQQorQUFBQUEJQUFBQUEJQUFBQUEKK1NFTEVDVCAqIEZST00gdDEg V0hFUkUgRjEgPiAnQSAgICAnOworRjEJRjIJRjMKK0FBCUFBCUFBCitBQUEJQUFBCUFBQQorQUFB QQlBQUFBCUFBQUEKK0FBQUFBCUFBQUFBCUFBQUFBCitTRUxFQ1QgKiBGUk9NIHQxIFdIRVJFIEYx IEJFVFdFRU4gJ0EgICAgJyBBTkQgJ0FBQUFBJzsKK0YxCUYyCUYzCitBCUEJQQorQUEJQUEJQUEK K0FBQQlBQUEJQUFBCitBQUFBCUFBQUEJQUFBQQorQUFBQUEJQUFBQUEJQUFBQUEKK1NFTEVDVCAq IEZST00gdDEgV0hFUkUgRjIgQkVUV0VFTiAnQSAgICAnIEFORCAnQUFBQUEnOworRjEJRjIJRjMK K0EJQQlBCitBQQlBQQlBQQorQUFBCUFBQQlBQUEKK0FBQUEJQUFBQQlBQUFBCitBQUFBQQlBQUFB QQlBQUFBQQorU0VMRUNUICogRlJPTSB0MSBXSEVSRSBGMyBCRVRXRUVOICdBICAgICcgQU5EICdB QUFBQSc7CitGMQlGMglGMworQQlBCUEKK0FBCUFBCUFBCitBQUEJQUFBCUFBQQorQUFBQQlBQUFB CUFBQUEKK0FBQUFBCUFBQUFBCUFBQUFBCitTRUxFQ1QgKiBGUk9NIHQxIElHTk9SRSBJTkRFWChQ UklNQVJZKSBXSEVSRSBGMSBCRVRXRUVOICdBICAgICcgQU5ECisnQUFBQUEnOworRjEJRjIJRjMK K0EJQQlBCitBQQlBQQlBQQorQUFBCUFBQQlBQUEKK0FBQUEJQUFBQQlBQUFBCitBQUFBQQlBQUFB QQlBQUFBQQorRFJPUCBUQUJMRSB0MTsKIEVuZCBvZiA1LjEgdGVzdHMKIENSRUFURSBUQUJMRSB0 MSAoYzEgREVDSU1BTCgxMCwwKSxJTkRFWChjMSkpOwogSU5TRVJUIElOVE8gdDEgVkFMVUVTICgx KSwoMiksKDMpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvci9zcC1zZWN1cml0eS5y ZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvci9zcC1zZWN1cml0eS5yZXN1bHQJMjAxMS0wNC0xMyAw ODowNjoxNSArMDAwMAorKysgYi9teXNxbC10ZXN0L3Ivc3Atc2VjdXJpdHkucmVzdWx0CTIwMTIt MDEtMzAgMDY6NTk6MzkgKzAwMDAKQEAgLTYxNywzICs2MTcsMzMgQEAgU0VMRUNUIDEJbGF0aW4x CWxhdGluMV9zd2VkaXNoX2NpCWxhdGluMQogIyBDb25uZWN0aW9uIGRlZmF1bHQKIERST1AgVVNF UiB1c2VyMkBsb2NhbGhvc3Q7CiBEUk9QIERBVEFCQVNFIGRiMTsKKyMKKyMgVGVzdCBmb3IgYnVn IzEyNjAyOTgzIC0gVXNlciB3aXRob3V0IHByaXZpbGVnZSBvbiByb3V0aW5lIGNhbiBkaXNjb3Zl cgorIyBpdHMgZXhpc3RlbmNlIGJ5IGV4ZWN1dGluZyAic2VsZWN0IG5vbl9leGlzdGluZ19mdW5j KCk7IiBvciBieSAKKyMgImNhbGwgbm9uX2V4aXN0aW5nX3Byb2MoKSI7CisjCitkcm9wIGRhdGFi YXNlIGlmIGV4aXN0cyBteXNxbHRlc3RfZGI7CitjcmVhdGUgZGF0YWJhc2UgbXlzcWx0ZXN0X2Ri OworY3JlYXRlIGZ1bmN0aW9uIG15c3FsdGVzdF9kYi5mMSgpIHJldHVybnMgaW50IHJldHVybiAw OworY3JlYXRlIHByb2NlZHVyZSBteXNxbHRlc3RfZGIucDEoKSBiZWdpbiBlbmQ7CisjIENyZWF0 ZSB1c2VyIHdpdGggbm8gcHJpdmlsZWdlcyBvbiBteXNxbHRlc3RfZGIgZGF0YWJhc2UuCitjcmVh dGUgdXNlciBidWcxMjYwMjk4M191c2VyQGxvY2FsaG9zdDsKKyMgQ29ubmVjdCBhcyB1c2VyICdi dWcxMjYwMjk4M191c2VyQGxvY2FsaG9zdCcKKyMgQXR0ZW1wdCB0byBleGVjdXRlIHJvdXRpbmUg b24gd2hpY2ggdXNlciBkb2Vzbid0IGhhdmUgcHJpdmlsZWdlcworIyBzaG91bGQgcmVzdWx0IGlu IHRoZSBzYW1lICdhY2Nlc3MgZGVuaWVkJyBlcnJvciB3aGV0aGVyCisjIHJvdXRpbmUgZXhpc3Rz IG9yIG5vdC4KK3NlbGVjdCBteXNxbHRlc3RfZGIuZl9kb2VzX25vdF9leGlzdCgpOworRVJST1Ig NDIwMDA6IGV4ZWN1dGUgY29tbWFuZCBkZW5pZWQgdG8gdXNlciAnYnVnMTI2MDI5ODNfdXNlcidA J2xvY2FsaG9zdCcgZm9yIHJvdXRpbmUgJ215c3FsdGVzdF9kYi5mX2RvZXNfbm90X2V4aXN0Jwor Y2FsbCBteXNxbHRlc3RfZGIucF9kb2VzX25vdF9leGlzdCgpOworRVJST1IgNDIwMDA6IGV4ZWN1 dGUgY29tbWFuZCBkZW5pZWQgdG8gdXNlciAnYnVnMTI2MDI5ODNfdXNlcidAJ2xvY2FsaG9zdCcg Zm9yIHJvdXRpbmUgJ215c3FsdGVzdF9kYi5wX2RvZXNfbm90X2V4aXN0Jworc2VsZWN0IG15c3Fs dGVzdF9kYi5mMSgpOworRVJST1IgNDIwMDA6IGV4ZWN1dGUgY29tbWFuZCBkZW5pZWQgdG8gdXNl ciAnYnVnMTI2MDI5ODNfdXNlcidAJ2xvY2FsaG9zdCcgZm9yIHJvdXRpbmUgJ215c3FsdGVzdF9k Yi5mMScKK2NhbGwgbXlzcWx0ZXN0X2RiLnAxKCk7CitFUlJPUiA0MjAwMDogZXhlY3V0ZSBjb21t YW5kIGRlbmllZCB0byB1c2VyICdidWcxMjYwMjk4M191c2VyJ0AnbG9jYWxob3N0JyBmb3Igcm91 dGluZSAnbXlzcWx0ZXN0X2RiLnAxJworY3JlYXRlIHZpZXcgYnVnMTI2MDI5ODNfdjEgYXMgc2Vs ZWN0IG15c3FsdGVzdF9kYi5mX2RvZXNfbm90X2V4aXN0KCk7CitFUlJPUiA0MjAwMDogZXhlY3V0 ZSBjb21tYW5kIGRlbmllZCB0byB1c2VyICdidWcxMjYwMjk4M191c2VyJ0AnbG9jYWxob3N0JyBm b3Igcm91dGluZSAnbXlzcWx0ZXN0X2RiLmZfZG9lc19ub3RfZXhpc3QnCitjcmVhdGUgdmlldyBi dWcxMjYwMjk4M192MSBhcyBzZWxlY3QgbXlzcWx0ZXN0X2RiLmYxKCk7CitFUlJPUiA0MjAwMDog ZXhlY3V0ZSBjb21tYW5kIGRlbmllZCB0byB1c2VyICdidWcxMjYwMjk4M191c2VyJ0AnbG9jYWxo b3N0JyBmb3Igcm91dGluZSAnbXlzcWx0ZXN0X2RiLmYxJworIyBDb25uZWN0aW9uICdkZWZhdWx0 Jy4KK2Ryb3AgdXNlciBidWcxMjYwMjk4M191c2VyQGxvY2FsaG9zdDsKK2Ryb3AgZGF0YWJhc2Ug bXlzcWx0ZXN0X2RiOwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvci9zcC5yZXN1bHQn Ci0tLSBhL215c3FsLXRlc3Qvci9zcC5yZXN1bHQJMjAxMi0wMS0xMiAxMzoyMjo1MiArMDAwMAor KysgYi9teXNxbC10ZXN0L3Ivc3AucmVzdWx0CTIwMTItMDEtMjcgMDU6NTc6MzUgKzAwMDAKQEAg LTc2NjYsNCArNzY2NiwzNiBAQCBDUkVBVEUgRlVOQ1RJT04gZjEgKHBfdmFsdWUgSU5UKSBSRVRV Uk5TCiBTRUxFQ1QgZjEoMSk7CiBFUlJPUiA0MlMyMjogVW5rbm93biBjb2x1bW4gJ3gnIGluICdm aWVsZCBsaXN0JwogRFJPUCBGVU5DVElPTiBmMTsKKyMKKyMgQlVHICMxMjg3MjgyNCAoZm9ybWVy bHkga25vd24gYXMgNjIxMjUpOiB0ZXN0aW5nIHN0b3JlZCBmdW5jdGlvbgorIyAgICAgICAgICAg ICAgICByZXN1bHQgZm9yIG51bGwgaW5jb3JyZWN0bHkgeWllbGRzIDEyOTIgd2FybmluZy4KK0RS T1AgRlVOQ1RJT04gSUYgRVhJU1RTIGYxOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgZjI7CitE Uk9QIEZVTkNUSU9OIElGIEVYSVNUUyBmMzsKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGY0Owor Q1JFQVRFIEZVTkNUSU9OIGYxKCkgUkVUVVJOUyBWQVJDSEFSKDEpCitCRUdJTiBSRVRVUk4gJ1gn OyBFTkQ7LworQ1JFQVRFIEZVTkNUSU9OIGYyKCkgUkVUVVJOUyBDSEFSKDEpCitCRUdJTiBSRVRV Uk4gJ1gnOyBFTkQ7LworQ1JFQVRFIEZVTkNUSU9OIGYzKCkgUkVUVVJOUyBWQVJDSEFSKDEpCitC RUdJTiBSRVRVUk4gTlVMTDsgRU5EOy8KK0NSRUFURSBGVU5DVElPTiBmNCgpIFJFVFVSTlMgQ0hB UigxKQorQkVHSU4gUkVUVVJOIE5VTEw7IEVORDsvCitTRUxFQ1QgZjEoKSBJUyBOVUxMOworZjEo KSBJUyBOVUxMCiswCitTRUxFQ1QgZjIoKSBJUyBOVUxMOworZjIoKSBJUyBOVUxMCiswCitTRUxF Q1QgZjMoKSBJUyBOVUxMOworZjMoKSBJUyBOVUxMCisxCitTRUxFQ1QgZjQoKSBJUyBOVUxMOwor ZjQoKSBJUyBOVUxMCisxCitEUk9QIEZVTkNUSU9OIGYxOworRFJPUCBGVU5DVElPTiBmMjsKK0RS T1AgRlVOQ1RJT04gZjM7CitEUk9QIEZVTkNUSU9OIGY0OworIwogIyBFbmQgb2YgNS42IHRlc3Rz Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9vcHRfdHJhY2UvaW5jbHVkZS9y YW5nZS5pbmMnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvb3B0X3RyYWNlL2luY2x1ZGUvcmFuZ2Uu aW5jCTIwMTEtMTItMDEgMTQ6MTI6MTAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9vcHRf dHJhY2UvaW5jbHVkZS9yYW5nZS5pbmMJMjAxMi0wMS0yNyAwODo0NTowMCArMDAwMApAQCAtMSw2 ICsxLDggQEAKICMgVGVzdCBmb3Igb3B0aW1pemVyIHRyYWNpbmcgb2YgcmFuZ2UgYW5hbHlzaXMK IAogLS1zb3VyY2UgaW5jbHVkZS9oYXZlX29wdGltaXplcl90cmFjZS5pbmMKKyMgSW5ub0RCIHBh Z2Ugc2l6ZSBpbmZsdWVuY2VzIGNvc3QgPT4gbWFrZXMgdHJhY2UgdmFyeS4KKy0tc291cmNlIGlu Y2x1ZGUvaGF2ZV9pbm5vZGJfMTZrLmluYwogCiBTRVQgb3B0aW1pemVyX3RyYWNlX21heF9tZW1f c2l6ZT0xMDQ4NTc2OyAjIDFNQgogU0VUIG9wdGltaXplcl90cmFjZT0iZW5hYmxlZD1vbixlbmRf bWFya2VyPW9uLG9uZV9saW5lPW9mZiI7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9z dWl0ZS9wYXJ0cy9pbmMvcGFydGl0aW9uLWRtbC0xLTcuaW5jJwotLS0gYS9teXNxbC10ZXN0L3N1 aXRlL3BhcnRzL2luYy9wYXJ0aXRpb24tZG1sLTEtNy5pbmMJMjAxMS0wMi0xNyAxNTozNjowNSAr MDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL3BhcnRzL2luYy9wYXJ0aXRpb24tZG1sLTEtNy5p bmMJMjAxMi0wMS0yNyAxMToyMDoyNiArMDAwMApAQCAtMjcsNiArMjcsNyBAQCBHUkFOVCBBTEwg UFJJVklMRUdFUyBPTiB0ZXN0LiogVE8gdGVzdF91CiBHUkFOVCBBTEwgUFJJVklMRUdFUyBPTiB0 ZXN0LiogVE8gdGVzdF91c2VyXzMgSURFTlRJRklFRCBCWSAndGVzdHB3JzsKIAogY29ubmVjdCAo c2Vzc2lvbjEsIGxvY2FsaG9zdCwgdGVzdF91c2VyXzEsJ3Rlc3RwdycsdGVzdCk7CistLXNvcnRl ZF9yZXN1bHQKIFNFTEVDVCAqIEZST00gdDEgUEFSVElUSU9OIChgcDAtMjlgKSBXSEVSRSBhIEJF VFdFRU4gMCBBTkQgOSBMT0NLIElOIFNIQVJFIE1PREU7CiBVUERBVEUgdDEgUEFSVElUSU9OIChg cDAtMjlgKSBTRVQgYj0ncDAtMjktdXBkLTEnIFdIRVJFIGEgQkVUV0VFTiAwIEFORCA5IDsKIApA QCAtNDgsNiArNDksNyBAQCBjb25uZWN0aW9uIHNlc3Npb24yOwogLS1lY2hvICMjIyMjIyMgZXhw ZWN0IHAwLTI5IGhhcyBub3QgYmVlbiB1cGRhdGVkCiAtLXNvcnRlZF9yZXN1bHQKIFNFTEVDVCAq IEZST00gdDEgUEFSVElUSU9OIChgcDAtMjlgKTsKKy0tc29ydGVkX3Jlc3VsdAogU0VMRUNUICog RlJPTSB0MSBQQVJUSVRJT04gKGBwMC0yOWApIFdIRVJFIGEgQkVUV0VFTiAyMCBBTkQgMjkgRk9S IFVQREFURTsKIFVQREFURSB0MSBQQVJUSVRJT04gKGBwMC0yOWApIFNFVCBiPSdwMC0yOS11cGQt MicgV0hFUkUgYSBCRVRXRUVOIDIwIEFORCAyOSA7CiAKCj09PSBtb2RpZmllZCBmaWxlICdteXNx bC10ZXN0L3N1aXRlL3BhcnRzL2luYy9wYXJ0aXRpb24tZG1sLTEtOC5pbmMnCi0tLSBhL215c3Fs LXRlc3Qvc3VpdGUvcGFydHMvaW5jL3BhcnRpdGlvbi1kbWwtMS04LmluYwkyMDExLTAyLTE3IDE1 OjM2OjA1ICswMDAwCisrKyBiL215c3FsLXRlc3Qvc3VpdGUvcGFydHMvaW5jL3BhcnRpdGlvbi1k bWwtMS04LmluYwkyMDEyLTAxLTI3IDExOjIwOjI2ICswMDAwCkBAIC0yNiw2ICsyNiw3IEBAIEdS QU5UIEFMTCBQUklWSUxFR0VTIE9OIHRlc3QuKiBUTyB0ZXN0X3UKIEdSQU5UIEFMTCBQUklWSUxF R0VTIE9OIHRlc3QuKiBUTyB0ZXN0X3VzZXJfMyBJREVOVElGSUVEIEJZICd0ZXN0cHcnOwogCiBj b25uZWN0IChzZXNzaW9uMSwgbG9jYWxob3N0LCB0ZXN0X3VzZXJfMSwndGVzdHB3Jyx0ZXN0KTsK Ky0tc29ydGVkX3Jlc3VsdAogU0VMRUNUICogRlJPTSB0MSBQQVJUSVRJT04gKGBwMC0yOWApIFdI RVJFIGEgQkVUV0VFTiAwIEFORCA5IExPQ0sgSU4gU0hBUkUgTU9ERTsKIFVQREFURSB0MSBQQVJU SVRJT04gKGBwMC0yOWApIFNFVCBiPSdwMC0yOS11cGQtMScgV0hFUkUgYSBCRVRXRUVOIDAgQU5E IDkgOwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9wYXJ0cy9pbmMvcGFy dGl0aW9uX2tleV8xNmNvbC5pbmMnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvcGFydHMvaW5jL3Bh cnRpdGlvbl9rZXlfMTZjb2wuaW5jCTIwMDgtMDItMDYgMTQ6MTM6NTYgKzAwMDAKKysrIGIvbXlz cWwtdGVzdC9zdWl0ZS9wYXJ0cy9pbmMvcGFydGl0aW9uX2tleV8xNmNvbC5pbmMJMjAxMi0wMS0y NyAxMToyMDoyNiArMDAwMApAQCAtMTEsNSArMTEsNiBAQCBpbnNlcnQgaW50byB0MSB2YWx1ZXMK ICgnMTk4MC0xMC0xNCcsICdmZ2JiZCcsICdkdHpuZHR6JywgJ3cnLCA2Nzg1NiwgNTQ2MzM1NC42 NywgMzU2Nzg0NTMzMywgMTI0LCcxOTgwLTEwLTE0JywgJ2ZnYmJkJywgJ2R0em5kdHonLCAndycs IDY3ODU2LCA1NDYzMzU0LjY3LCAzNTY3ODQ1MzMzLCAxMjQsICdkLGYgc8O2aWVydWdzaWcgbXNp cmVnIHNpdWcgZWk1Z2d0aCBscnV0bHVpdGd6ZcO2anJ0bmIucmtqdGh1ZWt1aHpya3V0aGdqZG5m ZmptYnInKSwKICgnMjAwMC0wNi0xNScsICdqdWtnJywnemlraHVrJywnbScsIDQ1Njc1LCA2NDY1 NzU0LjEzLCA0MzUyNDI2MjM0NjIsIDE4LCAnMjAwMC0wNi0xNScsICdqdWtnJywnemlraHVrJywn bScsIDQ1Njc1LCA2NDY1NzU0LjEzLCA0MzUyNDI2MjM0NjIsIDE4LCAncGliIG1kb3RrYm0ubScp Owogc2VsZWN0ICogZnJvbSB0MTsKKy0tc29ydGVkX3Jlc3VsdAogc2VsZWN0ICogZnJvbSB0MSB3 aGVyZSBhPDE5ODUxMjMxOwogZHJvcCB0YWJsZSB0MTsKCj09PSBtb2RpZmllZCBmaWxlICdteXNx bC10ZXN0L3N1aXRlL3BhcnRzL2luYy9wYXJ0aXRpb25fa2V5XzMyY29sLmluYycKLS0tIGEvbXlz cWwtdGVzdC9zdWl0ZS9wYXJ0cy9pbmMvcGFydGl0aW9uX2tleV8zMmNvbC5pbmMJMjAwOS0wOS0x NSAxNTowNzo1MiArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL3BhcnRzL2luYy9wYXJ0aXRp b25fa2V5XzMyY29sLmluYwkyMDEyLTAxLTI3IDExOjIwOjI2ICswMDAwCkBAIC0yMSw2ICsyMSw3 IEBAIGluc2VydCBpbnRvIHQxIHZhbHVlcwogKCcxOTgwLTEwLTE0JywgJ2ZnYmJkJywgJ2R0em5k dHonLCAndycsIDY3ODU2LCA1NDYzMzU0LjY3LCAzNTY3ODQ1MzMzLCAxMjQsICcxOTgwLTEwLTE0 JywgJ2ZnYmJkJywgJ2R0em5kdHonLCAndycsIDY3ODU2LCA1NDYzMzU0LjY3LCAzNTY3ODQ1MzMz LCAxMjQsICcxOTgwLTEwLTE0JywgJ2ZnYmJkJywgJ2R0em5kdHonLCAndycsIDY3ODU2LCA1NDYz MzU0LjY3LCAzNTY3ODQ1MzMzLCAxMjQsICcxOTgwLTEwLTE0JywgJ2ZnYmJkJywgJ2R0em5kdHon LCAndycsIDY3ODU2LCA1NDYzMzU0LjY3LCAzNTY3ODQ1MzMzLCAxMjQsICdkLGYgc8O2aWVydWdz aWcgbXNpcmVnIHNpdWcgZWk1Z2d0aCBscnV0bHVpdGd6ZcO2anJ0bmIucmtqdGh1ZWt1aHpya3V0 aGdqZG5mZmptYnInKSwKICgnMjAwMC0wNi0xNScsICdqdWtnJywnemlraHVrJywnbScsIDQ1Njc1 LCA2NDY1NzU0LjEzLCA0MzUyNDI2MjM0NjIsIDE4LCAnMjAwMC0wNi0xNScsICdqdWtnJywnemlr aHVrJywnbScsIDQ1Njc1LCA2NDY1NzU0LjEzLCA0MzUyNDI2MjM0NjIsIDE4LCAnMjAwMC0wNi0x NScsICdqdWtnJywnemlraHVrJywnbScsIDQ1Njc1LCA2NDY1NzU0LjEzLCA0MzUyNDI2MjM0NjIs IDE4LCAnMjAwMC0wNi0xNScsICdqdWtnJywnemlraHVrJywnbScsIDQ1Njc1LCA2NDY1NzU0LjEz LCA0MzUyNDI2MjM0NjIsIDE4LCAncGliIG1kb3RrYm0ubScpOwogc2VsZWN0ICogZnJvbSB0MTsK Ky0tc29ydGVkX3Jlc3VsdAogc2VsZWN0ICogZnJvbSB0MSB3aGVyZSBhPDE5ODUxMjMxOwogZHJv cCB0YWJsZSB0MTsKIC0tZW5hYmxlX2Fib3J0X29uX2Vycm9yCgo9PT0gbW9kaWZpZWQgZmlsZSAn bXlzcWwtdGVzdC9zdWl0ZS9wYXJ0cy9pbmMvcGFydGl0aW9uX2tleV80Y29sLmluYycKLS0tIGEv bXlzcWwtdGVzdC9zdWl0ZS9wYXJ0cy9pbmMvcGFydGl0aW9uX2tleV80Y29sLmluYwkyMDA4LTAy LTA2IDE0OjEzOjU2ICswMDAwCisrKyBiL215c3FsLXRlc3Qvc3VpdGUvcGFydHMvaW5jL3BhcnRp dGlvbl9rZXlfNGNvbC5pbmMJMjAxMi0wMS0yNyAxMToyMDoyNiArMDAwMApAQCAtMTEsNiArMTEs NyBAQCBpbnNlcnQgaW50byB0MSB2YWx1ZXMKICgnMTk4MC0xMC0xNCcsICdmZ2JiZCcsICdkdHpu ZHR6JywgJ3cnKSwKICgnMjAwMC0wNi0xNScsICdqdWtnJywnemlraHVrJywnbScpOwogc2VsZWN0 ICogZnJvbSB0MTsKKy0tc29ydGVkX3Jlc3VsdAogc2VsZWN0ICogZnJvbSB0MSB3aGVyZSBhPDE5 ODUxMjMxOwogZHJvcCB0YWJsZSB0MTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qv c3VpdGUvcGFydHMvaW5jL3BhcnRpdGlvbl9rZXlfOGNvbC5pbmMnCi0tLSBhL215c3FsLXRlc3Qv c3VpdGUvcGFydHMvaW5jL3BhcnRpdGlvbl9rZXlfOGNvbC5pbmMJMjAwOC0wMi0wNiAxNDoxMzo1 NiArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL3BhcnRzL2luYy9wYXJ0aXRpb25fa2V5Xzhj b2wuaW5jCTIwMTItMDEtMjcgMTE6MjA6MjYgKzAwMDAKQEAgLTExLDUgKzExLDYgQEAgaW5zZXJ0 IGludG8gdDEgdmFsdWVzCiAoJzE5ODAtMTAtMTQnLCAnZmdiYmQnLCAnZHR6bmR0eicsICd3Jywg Njc4NTYsIDU0NjMzNTQuNjcsIDM1Njc4NDUzMzMsIDEyNCwgJ2QsZiBzw7ZpZXJ1Z3NpZyBtc2ly ZWcgc2l1ZyBlaTVnZ3RoIGxydXRsdWl0Z3plw7ZqcnRuYi5ya2p0aHVla3VoenJrdXRoZ2pkbmZm am1icicpLAogKCcyMDAwLTA2LTE1JywgJ2p1a2cnLCd6aWtodWsnLCdtJywgNDU2NzUsIDY0NjU3 NTQuMTMsIDQzNTI0MjYyMzQ2MiwgMTgsICdwaWIgbWRvdGtibS5tJyApOwogc2VsZWN0ICogZnJv bSB0MTsKKy0tc29ydGVkX3Jlc3VsdAogc2VsZWN0ICogZnJvbSB0MSB3aGVyZSBhPDE5ODUxMjMx OwogZHJvcCB0YWJsZSB0MTsKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL3Bh cnRzL3IvcGFydGl0aW9uX3NwZWNpYWxfbXlpc2FtLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9z dWl0ZS9wYXJ0cy9yL3BhcnRpdGlvbl9zcGVjaWFsX215aXNhbS5yZXN1bHQJMjAxMS0wMy0yNCAx MzoxMDozNyArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL3BhcnRzL3IvcGFydGl0aW9uX3Nw ZWNpYWxfbXlpc2FtLnJlc3VsdAkyMDEyLTAxLTI3IDExOjIwOjI2ICswMDAwCkBAIC0zMSw5ICsz MSw5IEBAIGEJYgljCWQKIDIwMDAtMDYtMTUJanVrZwl6aWtodWsJbQogc2VsZWN0ICogZnJvbSB0 MSB3aGVyZSBhPDE5ODUxMjMxOwogYQliCWMJZAotMTk4My0xMi0zMQljZGVmCXNydGJ2c3IJdwot MTk4MC0xMC0xNAlmZ2JiZAlkdHpuZHR6CXcKIDE5NzUtMDEtMDEJYWJjZGUJYWJjZGUJbQorMTk4 MC0xMC0xNAlmZ2JiZAlkdHpuZHR6CXcKKzE5ODMtMTItMzEJY2RlZglzcnRidnNyCXcKIGRyb3Ag dGFibGUgdDE7CiBjcmVhdGUgdGFibGUgdDEgKGEgZGF0ZSBub3QgbnVsbCwgYiB2YXJjaGFyKDUw KSBub3QgbnVsbCwgYyB2YXJjaGFyKDUwKSBub3QgbnVsbCwgZCBlbnVtKCdtJywgJ3cnKSBub3Qg bnVsbCwgZSBpbnQgbm90IG51bGwsIGYgZGVjaW1hbCAoMTgsMikgbm90IG51bGwsIGcgYmlnaW50 IG5vdCBudWxsLCBoIHRpbnlpbnQgbm90IG51bGwsIGkgY2hhcigyNTUpLCBwcmltYXJ5IGtleShh LGIsYyxkLGUsZixnLGgpKSBlbmdpbmU9J015SVNBTScgCiBwYXJ0aXRpb24gYnkga2V5KGEsYixj LGQsZSxmLGcsaCkgKAoKPT09IHJlbmFtZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9zeXNfdmFy cy9yL2lubm9kYl9zb3J0X2J1Zl9zaXplX2Jhc2ljLnJlc3VsdCcgPT4gJ215c3FsLXRlc3Qvc3Vp dGUvc3lzX3ZhcnMvci9pbm5vZGJfc29ydF9idWZmZXJfc2l6ZV9iYXNpYy5yZXN1bHQnCi0tLSBh L215c3FsLXRlc3Qvc3VpdGUvc3lzX3ZhcnMvci9pbm5vZGJfc29ydF9idWZfc2l6ZV9iYXNpYy5y ZXN1bHQJMjAxMS0xMS0xNyAxMTowMjo1MyArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL3N5 c192YXJzL3IvaW5ub2RiX3NvcnRfYnVmZmVyX3NpemVfYmFzaWMucmVzdWx0CTIwMTItMDEtMjYg MTI6NTA6MzQgKzAwMDAKQEAgLTEsMjEgKzEsMjEgQEAKLXNlbGVjdCBAQGdsb2JhbC5pbm5vZGJf c29ydF9idWZfc2l6ZTsKLUBAZ2xvYmFsLmlubm9kYl9zb3J0X2J1Zl9zaXplCitzZWxlY3QgQEBn bG9iYWwuaW5ub2RiX3NvcnRfYnVmZmVyX3NpemU7CitAQGdsb2JhbC5pbm5vZGJfc29ydF9idWZm ZXJfc2l6ZQogMTA0ODU3Ngotc2VsZWN0IEBAc2Vzc2lvbi5pbm5vZGJfc29ydF9idWZfc2l6ZTsK LUVSUk9SIEhZMDAwOiBWYXJpYWJsZSAnaW5ub2RiX3NvcnRfYnVmX3NpemUnIGlzIGEgR0xPQkFM IHZhcmlhYmxlCi1zaG93IGdsb2JhbCB2YXJpYWJsZXMgbGlrZSAnaW5ub2RiX3NvcnRfYnVmX3Np emUnOworc2VsZWN0IEBAc2Vzc2lvbi5pbm5vZGJfc29ydF9idWZmZXJfc2l6ZTsKK0VSUk9SIEhZ MDAwOiBWYXJpYWJsZSAnaW5ub2RiX3NvcnRfYnVmZmVyX3NpemUnIGlzIGEgR0xPQkFMIHZhcmlh YmxlCitzaG93IGdsb2JhbCB2YXJpYWJsZXMgbGlrZSAnaW5ub2RiX3NvcnRfYnVmZmVyX3NpemUn OwogVmFyaWFibGVfbmFtZQlWYWx1ZQotaW5ub2RiX3NvcnRfYnVmX3NpemUJMTA0ODU3Ngotc2hv dyBzZXNzaW9uIHZhcmlhYmxlcyBsaWtlICdpbm5vZGJfc29ydF9idWZfc2l6ZSc7Citpbm5vZGJf c29ydF9idWZmZXJfc2l6ZQkxMDQ4NTc2CitzaG93IHNlc3Npb24gdmFyaWFibGVzIGxpa2UgJ2lu bm9kYl9zb3J0X2J1ZmZlcl9zaXplJzsKIFZhcmlhYmxlX25hbWUJVmFsdWUKLWlubm9kYl9zb3J0 X2J1Zl9zaXplCTEwNDg1NzYKLXNlbGVjdCAqIGZyb20gaW5mb3JtYXRpb25fc2NoZW1hLmdsb2Jh bF92YXJpYWJsZXMgd2hlcmUgdmFyaWFibGVfbmFtZT0naW5ub2RiX3NvcnRfYnVmX3NpemUnOwor aW5ub2RiX3NvcnRfYnVmZmVyX3NpemUJMTA0ODU3Ngorc2VsZWN0ICogZnJvbSBpbmZvcm1hdGlv bl9zY2hlbWEuZ2xvYmFsX3ZhcmlhYmxlcyB3aGVyZSB2YXJpYWJsZV9uYW1lPSdpbm5vZGJfc29y dF9idWZmZXJfc2l6ZSc7CiBWQVJJQUJMRV9OQU1FCVZBUklBQkxFX1ZBTFVFCi1JTk5PREJfU09S VF9CVUZfU0laRQkxMDQ4NTc2Ci1zZWxlY3QgKiBmcm9tIGluZm9ybWF0aW9uX3NjaGVtYS5zZXNz aW9uX3ZhcmlhYmxlcyB3aGVyZSB2YXJpYWJsZV9uYW1lPSdpbm5vZGJfc29ydF9idWZfc2l6ZSc7 CitJTk5PREJfU09SVF9CVUZGRVJfU0laRQkxMDQ4NTc2CitzZWxlY3QgKiBmcm9tIGluZm9ybWF0 aW9uX3NjaGVtYS5zZXNzaW9uX3ZhcmlhYmxlcyB3aGVyZSB2YXJpYWJsZV9uYW1lPSdpbm5vZGJf c29ydF9idWZmZXJfc2l6ZSc7CiBWQVJJQUJMRV9OQU1FCVZBUklBQkxFX1ZBTFVFCi1JTk5PREJf U09SVF9CVUZfU0laRQkxMDQ4NTc2Ci1zZXQgZ2xvYmFsIGlubm9kYl9zb3J0X2J1Zl9zaXplPTE7 Ci1FUlJPUiBIWTAwMDogVmFyaWFibGUgJ2lubm9kYl9zb3J0X2J1Zl9zaXplJyBpcyBhIHJlYWQg b25seSB2YXJpYWJsZQotc2V0IHNlc3Npb24gaW5ub2RiX3NvcnRfYnVmX3NpemU9MTsKLUVSUk9S IEhZMDAwOiBWYXJpYWJsZSAnaW5ub2RiX3NvcnRfYnVmX3NpemUnIGlzIGEgcmVhZCBvbmx5IHZh cmlhYmxlCitJTk5PREJfU09SVF9CVUZGRVJfU0laRQkxMDQ4NTc2CitzZXQgZ2xvYmFsIGlubm9k Yl9zb3J0X2J1ZmZlcl9zaXplPTE7CitFUlJPUiBIWTAwMDogVmFyaWFibGUgJ2lubm9kYl9zb3J0 X2J1ZmZlcl9zaXplJyBpcyBhIHJlYWQgb25seSB2YXJpYWJsZQorc2V0IHNlc3Npb24gaW5ub2Ri X3NvcnRfYnVmZmVyX3NpemU9MTsKK0VSUk9SIEhZMDAwOiBWYXJpYWJsZSAnaW5ub2RiX3NvcnRf YnVmZmVyX3NpemUnIGlzIGEgcmVhZCBvbmx5IHZhcmlhYmxlCgo9PT0gcmVuYW1lZCBmaWxlICdt eXNxbC10ZXN0L3N1aXRlL3N5c192YXJzL3QvaW5ub2RiX3NvcnRfYnVmX3NpemVfYmFzaWMudGVz dCcgPT4gJ215c3FsLXRlc3Qvc3VpdGUvc3lzX3ZhcnMvdC9pbm5vZGJfc29ydF9idWZmZXJfc2l6 ZV9iYXNpYy50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL3N5c192YXJzL3QvaW5ub2RiX3Nv cnRfYnVmX3NpemVfYmFzaWMudGVzdAkyMDExLTExLTE3IDExOjAyOjUzICswMDAwCisrKyBiL215 c3FsLXRlc3Qvc3VpdGUvc3lzX3ZhcnMvdC9pbm5vZGJfc29ydF9idWZmZXJfc2l6ZV9iYXNpYy50 ZXN0CTIwMTItMDEtMjYgMTI6NTA6MzQgKzAwMDAKQEAgLTgsMTkgKzgsMTkgQEAKICMKICMgc2hv dyB0aGUgZ2xvYmFsIGFuZCBzZXNzaW9uIHZhbHVlczsKICMKLXNlbGVjdCBAQGdsb2JhbC5pbm5v ZGJfc29ydF9idWZfc2l6ZTsKK3NlbGVjdCBAQGdsb2JhbC5pbm5vZGJfc29ydF9idWZmZXJfc2l6 ZTsKIC0tZXJyb3IgRVJfSU5DT1JSRUNUX0dMT0JBTF9MT0NBTF9WQVIKLXNlbGVjdCBAQHNlc3Np b24uaW5ub2RiX3NvcnRfYnVmX3NpemU7Ci1zaG93IGdsb2JhbCB2YXJpYWJsZXMgbGlrZSAnaW5u b2RiX3NvcnRfYnVmX3NpemUnOwotc2hvdyBzZXNzaW9uIHZhcmlhYmxlcyBsaWtlICdpbm5vZGJf c29ydF9idWZfc2l6ZSc7Ci1zZWxlY3QgKiBmcm9tIGluZm9ybWF0aW9uX3NjaGVtYS5nbG9iYWxf dmFyaWFibGVzIHdoZXJlIHZhcmlhYmxlX25hbWU9J2lubm9kYl9zb3J0X2J1Zl9zaXplJzsKLXNl bGVjdCAqIGZyb20gaW5mb3JtYXRpb25fc2NoZW1hLnNlc3Npb25fdmFyaWFibGVzIHdoZXJlIHZh cmlhYmxlX25hbWU9J2lubm9kYl9zb3J0X2J1Zl9zaXplJzsKK3NlbGVjdCBAQHNlc3Npb24uaW5u b2RiX3NvcnRfYnVmZmVyX3NpemU7CitzaG93IGdsb2JhbCB2YXJpYWJsZXMgbGlrZSAnaW5ub2Ri X3NvcnRfYnVmZmVyX3NpemUnOworc2hvdyBzZXNzaW9uIHZhcmlhYmxlcyBsaWtlICdpbm5vZGJf c29ydF9idWZmZXJfc2l6ZSc7CitzZWxlY3QgKiBmcm9tIGluZm9ybWF0aW9uX3NjaGVtYS5nbG9i YWxfdmFyaWFibGVzIHdoZXJlIHZhcmlhYmxlX25hbWU9J2lubm9kYl9zb3J0X2J1ZmZlcl9zaXpl JzsKK3NlbGVjdCAqIGZyb20gaW5mb3JtYXRpb25fc2NoZW1hLnNlc3Npb25fdmFyaWFibGVzIHdo ZXJlIHZhcmlhYmxlX25hbWU9J2lubm9kYl9zb3J0X2J1ZmZlcl9zaXplJzsKIAogIwogIyBzaG93 IHRoYXQgaXQncyByZWFkLW9ubHkKICMKIC0tZXJyb3IgRVJfSU5DT1JSRUNUX0dMT0JBTF9MT0NB TF9WQVIKLXNldCBnbG9iYWwgaW5ub2RiX3NvcnRfYnVmX3NpemU9MTsKK3NldCBnbG9iYWwgaW5u b2RiX3NvcnRfYnVmZmVyX3NpemU9MTsKIC0tZXJyb3IgRVJfSU5DT1JSRUNUX0dMT0JBTF9MT0NB TF9WQVIKLXNldCBzZXNzaW9uIGlubm9kYl9zb3J0X2J1Zl9zaXplPTE7CitzZXQgc2Vzc2lvbiBp bm5vZGJfc29ydF9idWZmZXJfc2l6ZT0xOwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVz dC90L21lcmdlLnRlc3QnCi0tLSBhL215c3FsLXRlc3QvdC9tZXJnZS50ZXN0CTIwMTItMDEtMTIg MTM6Mjc6NTcgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC90L21lcmdlLnRlc3QJMjAxMi0wMS0yNyAw ODoxNjo0MyArMDAwMApAQCAtMjkwNSw2ICsyOTA1LDI1IEBAIERST1AgVFJJR0dFUiB0cmcxOwog RFJPUCBUQUJMRSB0MTsKIERST1AgVEFCTEUgbTE7CiAKKy0tZWNobyAjCistLWVjaG8gIyBUZXN0 IGZvciBidWcgIzExNzY0Nzg2IC0gNTc2NTc6IFRFTVBPUkFSWSBNRVJHRSBUQUJMRSBXSVRIIFRF TVBPUkFSWQorLS1lY2hvICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTkRFUkxZ SU5HIFRBQkxFLCBJUyBCUk9LRU4gQlkgQUxURVIuCistLWVjaG8gIworLS1kaXNhYmxlX3dhcm5p bmdzCitEUk9QIFRBQkxFUyBJRiBFWElTVFMgdDEsIHQyLCB0MywgdDQ7CistLWVuYWJsZV93YXJu aW5ncworQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSB0MShpIElOVCkgRU5HSU5FPSBNeUlTQU07CitD UkVBVEUgVEVNUE9SQVJZIFRBQkxFIHQyKGkgSU5UKSBFTkdJTkU9IE1FUkdFIFVOSU9OPSAodDEp IElOU0VSVF9NRVRIT0Q9IExBU1Q7CitBTFRFUiBUQUJMRSB0MiBJTlNFUlRfTUVUSE9EPSBGSVJT VDsKK0NIRUNLIFRBQkxFIHQyOworCitDUkVBVEUgVEFCTEUgdDMoaSBJTlQpIEVOR0lORT0gTXlJ U0FNOworQ1JFQVRFIFRBQkxFIHQ0KGkgaW50KSBFTkdJTkU9IE1FUkdFIFVOSU9OPSAodDMpIElO U0VSVF9NRVRIT0Q9IExBU1Q7CitBTFRFUiBUQUJMRSB0NCBJTlNFUlRfTUVUSE9EPSBGSVJTVDsK K0NIRUNLIFRBQkxFIHQ0OworLS1lY2hvICMgQ2xlYW4tdXAKK0RST1AgVEFCTEVTIHQxLCB0Miwg dDMsIHQ0OworLS1lY2hvICMgRW5kIG9mIGJ1ZyAjMTE3NjQ3ODYgLSA1NzY1NwogCiAtLWRpc2Fi bGVfcmVzdWx0X2xvZwogLS1kaXNhYmxlX3F1ZXJ5X2xvZwoKPT09IG1vZGlmaWVkIGZpbGUgJ215 c3FsLXRlc3QvdC9vcHRpbWl6ZXJfZGVidWdfc3luYy50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3Qv b3B0aW1pemVyX2RlYnVnX3N5bmMudGVzdAkyMDExLTAzLTI4IDEwOjU2OjQxICswMDAwCisrKyBi L215c3FsLXRlc3QvdC9vcHRpbWl6ZXJfZGVidWdfc3luYy50ZXN0CTIwMTItMDEtMjYgMTE6MzQ6 MzUgKzAwMDAKQEAgLTU5LDMgKzU5LDMwIEBAIERST1AgVEFCTEUgdDsKIC0tZXhpdAogCiAtLWVj aG8gIyBFbmQgb2YgQlVHIzU2MDgwCisKKy0tZWNobyAjCistLWVjaG8gIyBCdWcgIzEzNTM2NjYx OiBWQUxHUklORDogREVGSU5JVEVMWSBMT1NUOiA1NTIgQllURVMgSU4gMSBCTE9DS1MgSU4KKy0t ZWNobyAjIENSRUFURV9UTVBfVEFCTEUgQU5EIEhJR0hFUgorLS1lY2hvICMKK0NSRUFURSBUQUJM RSB0MSAoIGEgSU5ULCBiIElOVCApOworSU5TRVJUIElOVE8gdDEgVkFMVUVTICg0LCA0MCksICgx LCAxMCksICgyLCAyMCksICgyLCAyMCksICgzLCAzMCk7CisKK2Nvbm5lY3QoY29uMSxsb2NhbGhv c3Qscm9vdCwsKTsKK1NFVCBkZWJ1Z19zeW5jID0gInRtcF90YWJsZV9jcmVhdGVkIFNJR05BTCBw YXJrZWQgV0FJVF9GT1IgZ28iOworLS1lY2hvICMgVGhpcyBzaG91bGQgbm90IGxlYWsgbWVtb3J5 Lgorc2VuZCBTRUxFQ1QgYiwgQ09VTlQoRElTVElOQ1QgYikgRlJPTSB0MSBHUk9VUCBCWSBiIE9S REVSIEJZIC1iOworCitjb25uZWN0aW9uIGRlZmF1bHQ7CitTRVQgZGVidWdfc3luYyA9ICJub3cg V0FJVF9GT1IgcGFya2VkIjsKKy0tZWNobyAjIFNldCBsb2NhbGx5IHRvIHNoYWRvdyB0aGUgZ2xv YmFsIHZhcmlhYmxlLgorU0VUIGRlYnVnID0gJyc7CitTRVQgR0xPQkFMIGRlYnVnID0gJytkLHNp bXVsYXRlX291dF9vZl9tZW1vcnknOworCitTRVQgZGVidWdfc3luYyA9ICJub3cgU0lHTkFMIGdv IjsKKworY29ubmVjdGlvbiBjb24xOworLS1lcnJvciBFUl9PVVRfT0ZfUkVTT1VSQ0VTCityZWFw OworU0VUIEdMT0JBTCBkZWJ1ZyA9ICcnOworCitEUk9QIFRBQkxFIHQxOwoKPT09IG1vZGlmaWVk IGZpbGUgJ215c3FsLXRlc3QvdC9wbHVnaW4udGVzdCcKLS0tIGEvbXlzcWwtdGVzdC90L3BsdWdp bi50ZXN0CTIwMTEtMTAtMjcgMDg6NDM6NTYgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC90L3BsdWdp bi50ZXN0CTIwMTItMDEtMjYgMTI6Mzk6MzUgKzAwMDAKQEAgLTE1LDEwICsxNSwzMyBAQCBVTklO U1RBTEwgUExVR0lOIGV4YW1wbGU7CiAtLXJlcGxhY2VfcmVnZXggL1wuZGxsLy5zby8KIGV2YWwg SU5TVEFMTCBQTFVHSU4gZXhhbXBsZSBTT05BTUUgJyRFWEFNUExFX1BMVUdJTic7CiAKKy0tZWNo byAjIEV4YW1wbGUgZW5naW5lIGRvZXMgbm90IHN1cHBvcnQgaW5kZXhlcworLS1lcnJvciBFUl9U T09fTUFOWV9LRVlfUEFSVFMKK0NSRUFURSBUQUJMRSB0MSAoYSBpbnQgUFJJTUFSWSBLRVkpIEVO R0lORT1FWEFNUExFOworLS1lcnJvciBFUl9UT09fTUFOWV9LRVlfUEFSVFMKK0NSRUFURSBUQUJM RSB0MSAoYSBpbnQsIEtFWSAoYSkpIEVOR0lORT1FWEFNUExFOworCisKIENSRUFURSBUQUJMRSB0 MShhIGludCkgRU5HSU5FPUVYQU1QTEU7CiAKLS0tZXJyb3IgRVJfSUxMRUdBTF9IQQorU0hPVyBD UkVBVEUgVEFCTEUgdDE7CisKKy0tZWNobyAjIExldCdzIGRvIHNvbWUgYWR2YW5jZWQgb3BzIHdp dGggdGhlIGV4YW1wbGUgZW5naW5lIDopCitJTlNFUlQgSU5UTyB0MSBWQUxVRVMgKDApOworCist LWVjaG8gIyBPbmx5IHN1cHBvcnRzIHRhYmxlIHNjYW5zIChhbmQgZG9lcyBhbHdheXMgcmV0dXJu IHplcm8gcm93cyA6KQogU0VMRUNUICogRlJPTSB0MTsKK1NFTEVDVCAqIEZST00gdDEgV0hFUkUg YSA9IDA7CisKKy0tZWNobyAjIFNpbmNlIHRoZXJlIGFyZSBubyByb3dzIGZvdW5kLCBpdCB3aWxs IG5ldmVyIGRvIHVwZGF0ZV9yb3cuCitVUERBVEUgdDEgU0VUIGEgPSAxIFdIRVJFIGEgPSAwOwor CistLWVjaG8gIyBTaW5jZSB0aGVyZSBhcmUgbm8gcm93cyBmb3VuZCwgaXQgd2lsbCBuZXZlciBk byBkZWxldGVfcm93LgorREVMRVRFIEZST00gdDEgV0hFUkUgYSA9IDA7CisKKy0tZWNobyAjIE5v IHN1cHBvcnQgZm9yIFNRTCBIQU5ETEVSIHN0YXRlbWVudAorLS1lcnJvciBFUl9JTExFR0FMX0hB CitIQU5ETEVSIHQxIE9QRU47CiAKIERST1AgVEFCTEUgdDE7CiAKCj09PSBtb2RpZmllZCBmaWxl ICdteXNxbC10ZXN0L3Qvc3Atc2VjdXJpdHkudGVzdCcKLS0tIGEvbXlzcWwtdGVzdC90L3NwLXNl Y3VyaXR5LnRlc3QJMjAxMS0wNC0xMyAwNzo1OToxNyArMDAwMAorKysgYi9teXNxbC10ZXN0L3Qv c3Atc2VjdXJpdHkudGVzdAkyMDEyLTAxLTMwIDA2OjU5OjM5ICswMDAwCkBAIC05OTUsNiArOTk1 LDQ3IEBAIGRpc2Nvbm5lY3QgY29uMjsKIERST1AgVVNFUiB1c2VyMkBsb2NhbGhvc3Q7CiBEUk9Q IERBVEFCQVNFIGRiMTsKIAorLS1lY2hvICMKKy0tZWNobyAjIFRlc3QgZm9yIGJ1ZyMxMjYwMjk4 MyAtIFVzZXIgd2l0aG91dCBwcml2aWxlZ2Ugb24gcm91dGluZSBjYW4gZGlzY292ZXIKKy0tZWNo byAjIGl0cyBleGlzdGVuY2UgYnkgZXhlY3V0aW5nICJzZWxlY3Qgbm9uX2V4aXN0aW5nX2Z1bmMo KTsiIG9yIGJ5IAorLS1lY2hvICMgImNhbGwgbm9uX2V4aXN0aW5nX3Byb2MoKSI7CistLWVjaG8g IworLS1kaXNhYmxlX3dhcm5pbmdzCitkcm9wIGRhdGFiYXNlIGlmIGV4aXN0cyBteXNxbHRlc3Rf ZGI7CistLWVuYWJsZV93YXJuaW5ncworY3JlYXRlIGRhdGFiYXNlIG15c3FsdGVzdF9kYjsKK2Ny ZWF0ZSBmdW5jdGlvbiBteXNxbHRlc3RfZGIuZjEoKSByZXR1cm5zIGludCByZXR1cm4gMDsKK2Ny ZWF0ZSBwcm9jZWR1cmUgbXlzcWx0ZXN0X2RiLnAxKCkgYmVnaW4gZW5kOworCistLWVjaG8gIyBD cmVhdGUgdXNlciB3aXRoIG5vIHByaXZpbGVnZXMgb24gbXlzcWx0ZXN0X2RiIGRhdGFiYXNlLgor Y3JlYXRlIHVzZXIgYnVnMTI2MDI5ODNfdXNlckBsb2NhbGhvc3Q7CisKKy0tZWNobyAjIENvbm5l Y3QgYXMgdXNlciAnYnVnMTI2MDI5ODNfdXNlckBsb2NhbGhvc3QnCitjb25uZWN0IChjb25uMSwg bG9jYWxob3N0LCBidWcxMjYwMjk4M191c2VyLCwpOworCistLWVjaG8gIyBBdHRlbXB0IHRvIGV4 ZWN1dGUgcm91dGluZSBvbiB3aGljaCB1c2VyIGRvZXNuJ3QgaGF2ZSBwcml2aWxlZ2VzCistLWVj aG8gIyBzaG91bGQgcmVzdWx0IGluIHRoZSBzYW1lICdhY2Nlc3MgZGVuaWVkJyBlcnJvciB3aGV0 aGVyCistLWVjaG8gIyByb3V0aW5lIGV4aXN0cyBvciBub3QuCistLWVycm9yIEVSX1BST0NBQ0NF U1NfREVOSUVEX0VSUk9SCitzZWxlY3QgbXlzcWx0ZXN0X2RiLmZfZG9lc19ub3RfZXhpc3QoKTsK Ky0tZXJyb3IgRVJfUFJPQ0FDQ0VTU19ERU5JRURfRVJST1IKK2NhbGwgbXlzcWx0ZXN0X2RiLnBf ZG9lc19ub3RfZXhpc3QoKTsKKworLS1lcnJvciBFUl9QUk9DQUNDRVNTX0RFTklFRF9FUlJPUgor c2VsZWN0IG15c3FsdGVzdF9kYi5mMSgpOworLS1lcnJvciBFUl9QUk9DQUNDRVNTX0RFTklFRF9F UlJPUgorY2FsbCBteXNxbHRlc3RfZGIucDEoKTsKKworLS1lcnJvciBFUl9QUk9DQUNDRVNTX0RF TklFRF9FUlJPUgorY3JlYXRlIHZpZXcgYnVnMTI2MDI5ODNfdjEgYXMgc2VsZWN0IG15c3FsdGVz dF9kYi5mX2RvZXNfbm90X2V4aXN0KCk7CistLWVycm9yIEVSX1BST0NBQ0NFU1NfREVOSUVEX0VS Uk9SCitjcmVhdGUgdmlldyBidWcxMjYwMjk4M192MSBhcyBzZWxlY3QgbXlzcWx0ZXN0X2RiLmYx KCk7CisKKy0tZWNobyAjIENvbm5lY3Rpb24gJ2RlZmF1bHQnLgorY29ubmVjdGlvbiBkZWZhdWx0 OworZGlzY29ubmVjdCBjb25uMTsKK2Ryb3AgdXNlciBidWcxMjYwMjk4M191c2VyQGxvY2FsaG9z dDsKK2Ryb3AgZGF0YWJhc2UgbXlzcWx0ZXN0X2RiOwogCiAjIFdhaXQgdGlsbCBhbGwgZGlzY29u bmVjdHMgYXJlIGNvbXBsZXRlZAogLS1zb3VyY2UgaW5jbHVkZS93YWl0X3VudGlsX2NvdW50X3Nl c3Npb25zLmluYwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3QvdC9zcC50ZXN0JwotLS0g YS9teXNxbC10ZXN0L3Qvc3AudGVzdAkyMDExLTEyLTIyIDE3OjQzOjM5ICswMDAwCisrKyBiL215 c3FsLXRlc3QvdC9zcC50ZXN0CTIwMTItMDEtMjcgMDU6NTc6MzUgKzAwMDAKQEAgLTg5MTIsNCAr ODkxMiw0NCBAQCBDUkVBVEUgRlVOQ1RJT04gZjEgKHBfdmFsdWUgSU5UKSBSRVRVUk5TCiAtLWVy cm9yIEVSX0JBRF9GSUVMRF9FUlJPUgogU0VMRUNUIGYxKDEpOwogRFJPUCBGVU5DVElPTiBmMTsK KworLS1lY2hvICMKKy0tZWNobyAjIEJVRyAjMTI4NzI4MjQgKGZvcm1lcmx5IGtub3duIGFzIDYy MTI1KTogdGVzdGluZyBzdG9yZWQgZnVuY3Rpb24KKy0tZWNobyAjICAgICAgICAgICAgICAgIHJl c3VsdCBmb3IgbnVsbCBpbmNvcnJlY3RseSB5aWVsZHMgMTI5MiB3YXJuaW5nLgorCistLWRpc2Fi bGVfd2FybmluZ3MKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGYxOworRFJPUCBGVU5DVElPTiBJ RiBFWElTVFMgZjI7CitEUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBmMzsKK0RST1AgRlVOQ1RJT04g SUYgRVhJU1RTIGY0OworLS1lbmFibGVfd2FybmluZ3MKKworZGVsaW1pdGVyIC87CisKK0NSRUFU RSBGVU5DVElPTiBmMSgpIFJFVFVSTlMgVkFSQ0hBUigxKQorQkVHSU4gUkVUVVJOICdYJzsgRU5E Oy8KKworQ1JFQVRFIEZVTkNUSU9OIGYyKCkgUkVUVVJOUyBDSEFSKDEpCitCRUdJTiBSRVRVUk4g J1gnOyBFTkQ7LworCitDUkVBVEUgRlVOQ1RJT04gZjMoKSBSRVRVUk5TIFZBUkNIQVIoMSkKK0JF R0lOIFJFVFVSTiBOVUxMOyBFTkQ7LworCitDUkVBVEUgRlVOQ1RJT04gZjQoKSBSRVRVUk5TIENI QVIoMSkKK0JFR0lOIFJFVFVSTiBOVUxMOyBFTkQ7LworCitkZWxpbWl0ZXIgOy8KKworU0VMRUNU IGYxKCkgSVMgTlVMTDsKK1NFTEVDVCBmMigpIElTIE5VTEw7CitTRUxFQ1QgZjMoKSBJUyBOVUxM OworU0VMRUNUIGY0KCkgSVMgTlVMTDsKKworRFJPUCBGVU5DVElPTiBmMTsKK0RST1AgRlVOQ1RJ T04gZjI7CitEUk9QIEZVTkNUSU9OIGYzOworRFJPUCBGVU5DVElPTiBmNDsKKworLS1lY2hvICMK KwogLS1lY2hvICMgRW5kIG9mIDUuNiB0ZXN0cwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRl c3QvdC90ZW1wX3RhYmxlLnRlc3QnCi0tLSBhL215c3FsLXRlc3QvdC90ZW1wX3RhYmxlLnRlc3QJ MjAxMi0wMS0yNSAxMTo0Mjo1NyArMDAwMAorKysgYi9teXNxbC10ZXN0L3QvdGVtcF90YWJsZS50 ZXN0CTIwMTItMDEtMjYgMTE6MzQ6MzUgKzAwMDAKQEAgLTI5NCwzMiArMjk0LDMgQEAgSU5TRVJU IElOVE8gdDMgVkFMVUVTICgxMDEpLCAoMTAyKSwgKDEwMwogUkVQQUlSIFRBQkxFIHQxLCB0Miwg dDM7CiAKIERST1AgVEFCTEVTIHQxLCB0MiwgdDM7Ci0KLSMgVGVzdCBjYXNlIHRlbXBvcmFyaWx5 IGRlYWN0aXZhdGVkIHVudGlsIHdlIGNhbiBmaW5kIGEgcGxhY2UgdG8gbW92ZSBpdCAKLSMgLS1l Y2hvICMKLSMgLS1lY2hvICMgQnVnICMxMzUzNjY2MTogVkFMR1JJTkQ6IERFRklOSVRFTFkgTE9T VDogNTUyIEJZVEVTIElOIDEgQkxPQ0tTIElOCi0jIC0tZWNobyAjIENSRUFURV9UTVBfVEFCTEUg QU5EIEhJR0hFUgotIyAtLWVjaG8gIwotIyBDUkVBVEUgVEFCTEUgdDEgKCBhIElOVCwgYiBJTlQg KTsKLSMgSU5TRVJUIElOVE8gdDEgVkFMVUVTICg0LCA0MCksICgxLCAxMCksICgyLCAyMCksICgy LCAyMCksICgzLCAzMCk7Ci0jIAotIyBjb25uZWN0KGNvbjEsbG9jYWxob3N0LHJvb3QsLCk7Ci0j IFNFVCBkZWJ1Z19zeW5jID0gInRtcF90YWJsZV9jcmVhdGVkIFNJR05BTCBwYXJrZWQgV0FJVF9G T1IgZ28iOwotIyAtLWVjaG8gIyBUaGlzIHNob3VsZCBub3QgbGVhayBtZW1vcnkuCi0jIHNlbmQg U0VMRUNUIGIsIENPVU5UKERJU1RJTkNUIGIpIEZST00gdDEgR1JPVVAgQlkgYiBPUkRFUiBCWSAt YjsKLSMgCi0jIGNvbm5lY3Rpb24gZGVmYXVsdDsKLSMgU0VUIGRlYnVnX3N5bmMgPSAibm93IFdB SVRfRk9SIHBhcmtlZCI7Ci0jIC0tZWNobyAjIFNldCBsb2NhbGx5IHRvIHNoYWRvdyB0aGUgZ2xv YmFsIHZhcmlhYmxlLgotIyBTRVQgZGVidWcgPSAnJzsKLSMgU0VUIEdMT0JBTCBkZWJ1ZyA9ICcr ZCxzaW11bGF0ZV9vdXRfb2ZfbWVtb3J5JzsKLSMgCi0jIFNFVCBkZWJ1Z19zeW5jID0gIm5vdyBT SUdOQUwgZ28iOwotIyAKLSMgY29ubmVjdGlvbiBjb24xOwotIyAtLWVycm9yIEVSX09VVF9PRl9S RVNPVVJDRVMKLSMgcmVhcDsKLSMgU0VUIEdMT0JBTCBkZWJ1ZyA9ICcnOwotIyAKLSMgRFJPUCBU QUJMRSB0MTsKLSMgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKPT09IG1vZGlmaWVkIGZp bGUgJ215c3FsLXRlc3QvdmFsZ3JpbmQuc3VwcCcKLS0tIGEvbXlzcWwtdGVzdC92YWxncmluZC5z dXBwCTIwMTEtMTItMDkgMDg6MzI6MDMgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC92YWxncmluZC5z dXBwCTIwMTItMDEtMjkgMDA6NTc6NDAgKzAwMDAKQEAgLTc4Miw3ICs3ODIsNyBAQAogfQogCiB7 Ci0gICBtaXNzaW5nIHNodXRkb3duX3BlcmZvcm1hbmNlX3NjaGVtYSA4CisgICBtaXNzaW5nIHNo dXRkb3duX3BlcmZvcm1hbmNlX3NjaGVtYSA4YQogICAgTWVtY2hlY2s6TGVhawogICAgZnVuOm1h bGxvYwogICAgZnVuOm15X21hbGxvYwpAQCAtNzk0LDYgKzc5NCwxOCBAQAogfQogCiB7CisgICBt aXNzaW5nIHNodXRkb3duX3BlcmZvcm1hbmNlX3NjaGVtYSA4YgorICAgTWVtY2hlY2s6TGVhawor ICAgZnVuOm1hbGxvYworICAgZnVuOm15X21hbGxvYworICAgZnVuOl9aMjJhZGRfcGZzX2luc3Ry X3RvX2FycmF5UEtjUzBfCisgICBmdW46bXlzcWxkX2dldF9vbmVfb3B0aW9uCisgICBmdW46aGFu ZGxlX29wdGlvbnMKKyAgIGZ1bjpfWjExbXlzcWxkX21haW5pUFBjCisgICBmdW46KGJlbG93IG1h aW4pCit9CisKK3sKICAgIG1pc3Npbmcgc2h1dGRvd25fcGVyZm9ybWFuY2Vfc2NoZW1hIDkKICAg IE1lbWNoZWNrOkxlYWsKICAgIGZ1bjptYWxsb2MKQEAgLTgyNiw2ICs4MzgsMTYgQEAKIH0KIAog eworICAgbWlzc2luZyBzaHV0ZG93bl9wZXJmb3JtYW5jZV9zY2hlbWEgMTEKKyAgIE1lbWNoZWNr OkxlYWsKKyAgIGZ1bjptYWxsb2MKKyAgIGZ1bjpteV9tYWxsb2MKKyAgIGZ1bjppbml0X2R5bmFt aWNfYXJyYXkyCisgICBmdW46X1oxMW15c3FsZF9tYWluaVBQYworICAgZnVuOihiZWxvdyBtYWlu KQorfQorCit7CiAgICBCdWcgNTk4NzQgVmFsZ3JpbmQgd2FybmluZyBpbiBJbm5vREIgY29tcHJl c3Npb24gY29kZQogICAgTWVtY2hlY2s6Q29uZAogICAgZnVuOioKCj09PSBtb2RpZmllZCBmaWxl ICdzcWwvaGFuZGxlci5jYycKLS0tIGEvc3FsL2hhbmRsZXIuY2MJMjAxMi0wMS0wNiAwOTowMzo1 MyArMDAwMAorKysgYi9zcWwvaGFuZGxlci5jYwkyMDEyLTAxLTI2IDEyOjUzOjM4ICswMDAwCkBA IC00NjAxLDcgKzQ2MDEsOSBAQCBoYW5kbGVyOjptdWx0aV9yYW5nZV9yZWFkX2luZm9fY29uc3Qo dWluCiAgIGlmICh0b3RhbF9yb3dzICE9IEhBX1BPU19FUlJPUikKICAgewogICAgIC8qIFRoZSBm b2xsb3dpbmcgY2FsY3VsYXRpb24gaXMgdGhlIHNhbWUgYXMgaW4gbXVsdGlfcmFuZ2VfcmVhZF9p bmZvKCk6ICovCi0gICAgKmZsYWdzIHw9IEhBX01SUl9VU0VfREVGQVVMVF9JTVBMOworICAgICpm bGFnc3w9IEhBX01SUl9VU0VfREVGQVVMVF9JTVBMOworICAgICpmbGFnc3w9IEhBX01SUl9TVVBQ T1JUX1NPUlRFRDsKKwogICAgIERCVUdfQVNTRVJUKGNvc3QtPmlzX3plcm8oKSk7CiAgICAgaWYg KCgqZmxhZ3MgJiBIQV9NUlJfSU5ERVhfT05MWSkgJiYgdG90YWxfcm93cyA+IDIpCiAgICAgICBj b3N0LT5hZGRfaW8oaW5kZXhfb25seV9yZWFkX3RpbWUoa2V5bm8sIHRvdGFsX3Jvd3MpICoKQEAg LTQ2NTUsNyArNDY1Nyw4IEBAIGhhX3Jvd3MgaGFuZGxlcjo6bXVsdGlfcmFuZ2VfcmVhZF9pbmZv KHUKIHsKICAgKmJ1ZnN6PSAwOyAvKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgbmVl ZCBhIGJ1ZmZlciAqLwogCi0gICpmbGFncyB8PSBIQV9NUlJfVVNFX0RFRkFVTFRfSU1QTDsKKyAg KmZsYWdzfD0gSEFfTVJSX1VTRV9ERUZBVUxUX0lNUEw7CisgICpmbGFnc3w9IEhBX01SUl9TVVBQ T1JUX1NPUlRFRDsKIAogICBEQlVHX0FTU0VSVChjb3N0LT5pc196ZXJvKCkpOwogCkBAIC00ODE5 LDEzICs0ODIyLDE1IEBAIGludCBEc01ycl9pbXBsOjpkc21ycl9pbml0KGhhbmRsZXIgKmhfYXIK ICAgaGFuZGxlciAqbmV3X2gyPSAwOwogICBpbnQgcmV0dmFsPSAwOwogICBEQlVHX0VOVEVSKCJE c01ycl9pbXBsOjpkc21ycl9pbml0Iik7CisgIFRIRCAqdGhkPSBjdXJyZW50X3RoZDsKIAogICAv KgogICAgIGluZGV4X21lcmdlIG1heSBpbnZva2UgYSBzY2FuIG9uIGFuIG9iamVjdCBmb3Igd2hp Y2ggZHNtcnJfaW5mb1tfY29uc3RdCiAgICAgaGFzIG5vdCBiZWVuIGNhbGxlZCwgc28gc2V0IHRo ZSBvd25lciBoYW5kbGVyIGhlcmUgYXMgd2VsbC4KICAgKi8KICAgaD0gaF9hcmc7Ci0gIGlmICht b2RlICYgSEFfTVJSX1VTRV9ERUZBVUxUX0lNUEwgfHwgbW9kZSAmIEhBX01SUl9TT1JURUQpCisg IGlmICghdGhkLT5vcHRpbWl6ZXJfc3dpdGNoX2ZsYWcoT1BUSU1JWkVSX1NXSVRDSF9NUlIpIHx8 CisgICAgICBtb2RlICYgKEhBX01SUl9VU0VfREVGQVVMVF9JTVBMIHwgSEFfTVJSX1NPUlRFRCkp IC8vIERTLU1SUiBkb2Vzbid0IHNvcnQKICAgewogICAgIHVzZV9kZWZhdWx0X2ltcGw9IFRSVUU7 CiAgICAgcmV0dmFsPSBoLT5oYW5kbGVyOjptdWx0aV9yYW5nZV9yZWFkX2luaXQoc2VxX2Z1bmNz LCBzZXFfaW5pdF9wYXJhbSwKQEAgLTQ4NzUsNyArNDg4MCw2IEBAIGludCBEc01ycl9pbXBsOjpk c21ycl9pbml0KGhhbmRsZXIgKmhfYXIKICAgaWYgKCFoMikKICAgewogICAgIC8qIENyZWF0ZSBh IHNlcGFyYXRlIGhhbmRsZXIgb2JqZWN0IHRvIGRvIHJuZHBvcygpIGNhbGxzLiAqLwotICAgIFRI RCAqdGhkPSBjdXJyZW50X3RoZDsKICAgICAvKgogICAgICAgOjpjbG9uZSgpIHRha2VzIHVwIGEg bG90IG9mIHN0YWNrLCBlc3BlY2lhbGx5IG9uIDY0IGJpdCBwbGF0Zm9ybXMuCiAgICAgICBUaGUg Y29uc3RhbnQgNSBpcyBhbiBlbXBpcmljIHJlc3VsdC4KQEAgLTUxNTUsNiArNTE1OSw3IEBAIGhh X3Jvd3MgRHNNcnJfaW1wbDo6ZHNtcnJfaW5mbyh1aW50IGtleW4KICAgICBEQlVHX1BSSU5UKCJp bmZvIiwgKCJEZWZhdWx0IE1SUiBpbXBsZW1lbnRhdGlvbiBjaG9vc2VuIikpOwogICAgICpmbGFn cz0gZGVmX2ZsYWdzOwogICAgICpidWZzej0gZGVmX2J1ZnN6OworICAgIERCVUdfQVNTRVJUKCpm bGFncyAmIEhBX01SUl9VU0VfREVGQVVMVF9JTVBMKTsKICAgfQogICBlbHNlCiAgIHsKQEAgLTUx OTgsNiArNTIwMyw3IEBAIGhhX3Jvd3MgRHNNcnJfaW1wbDo6ZHNtcnJfaW5mb19jb25zdCh1aW4K ICAgICBEQlVHX1BSSU5UKCJpbmZvIiwgKCJEZWZhdWx0IE1SUiBpbXBsZW1lbnRhdGlvbiBjaG9v c2VuIikpOwogICAgICpmbGFncz0gZGVmX2ZsYWdzOwogICAgICpidWZzej0gZGVmX2J1ZnN6Owor ICAgIERCVUdfQVNTRVJUKCpmbGFncyAmIEhBX01SUl9VU0VfREVGQVVMVF9JTVBMKTsKICAgfQog ICBlbHNlCiAgIHsKQEAgLTUyMzcsMTIgKzUyNDMsMTEgQEAgYm9vbCBEc01ycl9pbXBsOjpjaG9v c2VfbXJyX2ltcGwodWludCBrZQogICBib29sIHJlczsKICAgVEhEICp0aGQ9IGN1cnJlbnRfdGhk OwogICBpZiAoIXRoZC0+b3B0aW1pemVyX3N3aXRjaF9mbGFnKE9QVElNSVpFUl9TV0lUQ0hfTVJS KSB8fAotICAgICAgKmZsYWdzICYgSEFfTVJSX0lOREVYX09OTFkgfHwKKyAgICAgICpmbGFncyAm IChIQV9NUlJfSU5ERVhfT05MWSB8IEhBX01SUl9TT1JURUQpIHx8IC8vIFVuc3VwcG9ydGVkIGJ5 IERTLU1SUgogICAgICAgKGtleW5vID09IHRhYmxlLT5zLT5wcmltYXJ5X2tleSAmJiBoLT5wcmlt YXJ5X2tleV9pc19jbHVzdGVyZWQoKSkgfHwKICAgICAgICBrZXlfdXNlc19wYXJ0aWFsX2NvbHMo dGFibGUsIGtleW5vKSkKICAgewotICAgIC8qIFVzZSB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlv biAqLwotICAgICpmbGFncyB8PSBIQV9NUlJfVVNFX0RFRkFVTFRfSU1QTDsKKyAgICAvKiBVc2Ug dGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIGRvbid0IG1vZGlmeSBhcmdzOiBTZWUgY29tbWVu dHMgICovCiAgICAgcmV0dXJuIFRSVUU7CiAgIH0KICAgCkBAIC01MjY2LDcgKzUyNzEsNyBAQCBi b29sIERzTXJyX2ltcGw6OmNob29zZV9tcnJfaW1wbCh1aW50IGtlCiAgIGlmIChmb3JjZV9kc21y ciB8fCAoZHNtcnJfY29zdC50b3RhbF9jb3N0KCkgPD0gY29zdC0+dG90YWxfY29zdCgpKSkKICAg ewogICAgICpmbGFncyAmPSB+SEFfTVJSX1VTRV9ERUZBVUxUX0lNUEw7ICAvKiBVc2UgdGhlIERT LU1SUiBpbXBsZW1lbnRhdGlvbiAqLwotICAgICpmbGFncyAmPSB+SEFfTVJSX1NPUlRFRDsgICAg ICAgICAgLyogV2Ugd2lsbCByZXR1cm4gdW5vcmRlcmVkIG91dHB1dCAqLworICAgICpmbGFncyAm PSB+SEFfTVJSX1NVUFBPUlRfU09SVEVEOyAgICAvKiBXZSBjYW4ndCBwcm92aWRlIG9yZGVyZWQg b3V0cHV0ICovCiAgICAgKmNvc3Q9IGRzbXJyX2Nvc3Q7CiAgICAgcmVzPSBGQUxTRTsKICAgfQoK PT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9oYW5kbGVyLmgnCi0tLSBhL3NxbC9oYW5kbGVyLmgJMjAx MS0xMS0zMCAxMTozNjoxNCArMDAwMAorKysgYi9zcWwvaGFuZGxlci5oCTIwMTItMDEtMjYgMTI6 NTM6MzggKzAwMDAKQEAgLTExNjMsNiArMTE2MywxMCBAQCB2b2lkIGdldF9zd2VlcF9yZWFkX2Nv c3QoVEFCTEUgKnRhYmxlLCBoCiAvKiAKICAgVGhlIE1SUiB1c2VyIHdpbGwgcHJvdmlkZSByYW5n ZXMgaW4ga2V5IG9yZGVyLCBhbmQgTVJSIGltcGxlbWVudGF0aW9uCiAgIG11c3QgcmV0dXJuIHJv d3MgaW4ga2V5IG9yZGVyLgorICBQYXNzaW5nIHRoaXMgZmxhZyB0byBtdWx0aV9yZWFkX3Jhbmdl X2luaXQoKSBtYXkgY2F1c2UgdGhlCisgIGRlZmF1bHQgTVJSIGhhbmRsZXIgdG8gYmUgdXNlZCBl dmVuIGlmIEhBX01SUl9VU0VfREVGQVVMVF9JTVBMCisgIHdhcyBub3Qgc3BlY2lmaWVkLgorICAo SWYgdGhlIG5hdGl2ZSBNUlIgaW1wbC4gY2FuIG5vdCBwcm92aWRlIFNPUlRFRCByZXN1bHQpCiAq LwogI2RlZmluZSBIQV9NUlJfU09SVEVEIDgKIApAQCAtMTE5MSw2ICsxMTk1LDE1IEBAIHZvaWQg Z2V0X3N3ZWVwX3JlYWRfY29zdChUQUJMRSAqdGFibGUsIGgKICovCiAjZGVmaW5lIEhBX01SUl9O T19OVUxMX0VORFBPSU5UUyAxMjgKIAorLyoKKyAgU2V0IGJ5IHRoZSBNUlIgaW1wbGVtZW50YXRp b24gdG8gc2lnbmFsIHRoYXQgaXQgd2lsbCBuYXRpdmVseQorICBwcm9kdWNlZCBzb3J0ZWQgcmVz dWx0IGlmIG11bHRpX3JhbmdlX3JlYWRfaW5pdCgpIGlzIGNhbGxlZCB3aXRoCisgIHRoZSBIQV9N UlJfU09SVEVEIGZsYWcgLSBFbHNlIG11bHRpX3JhbmdlX3JlYWRfaW5pdChIQV9NUlJfU09SVEVE KQorICB3aWxsIHJldmVydCB0byB1c2UgdGhlIGRlZmF1bHQgTVJSIGltcGxlbWVudGF0aW9uLiAK KyovCisjZGVmaW5lIEhBX01SUl9TVVBQT1JUX1NPUlRFRCAyNTYKKworCiBjbGFzcyBoYV9zdGF0 aXN0aWNzCiB7CiBwdWJsaWM6Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL2l0ZW0uY2MnCi0tLSBh L3NxbC9pdGVtLmNjCTIwMTItMDEtMjUgMTU6MDY6MjAgKzAwMDAKKysrIGIvc3FsL2l0ZW0uY2MJ MjAxMi0wMS0yNiAxMDowODoxMiArMDAwMApAQCAtODI0Niw3ICs4MjQ2LDcgQEAgaW50IHN0b3Jl ZF9maWVsZF9jbXBfdG9faXRlbShUSEQgKnRoZCwgRgogCiAgICAgICByZXR1cm4gbXlfdGltZV9j b21wYXJlKCZmaWVsZF90aW1lLCAmaXRlbV90aW1lKTsKICAgICB9Ci0gICAgcmV0dXJuIHN0cmlu Z2NtcChmaWVsZF9yZXN1bHQsIGl0ZW1fcmVzdWx0KTsKKyAgICByZXR1cm4gc29ydGNtcChmaWVs ZF9yZXN1bHQsIGl0ZW1fcmVzdWx0LCBmaWVsZC0+Y2hhcnNldCgpKTsKICAgfQogICBpZiAocmVz X3R5cGUgPT0gSU5UX1JFU1VMVCkKICAgICByZXR1cm4gMDsJCQkJCS8vIEJvdGggYXJlIG9mIHR5 cGUgaW50CkBAIC04MjU4LDcgKzgyNTgsNyBAQCBpbnQgc3RvcmVkX2ZpZWxkX2NtcF90b19pdGVt KFRIRCAqdGhkLCBGCiAgICAgaWYgKGl0ZW0tPm51bGxfdmFsdWUpCiAgICAgICByZXR1cm4gMDsK ICAgICBmaWVsZF92YWw9IGZpZWxkLT52YWxfZGVjaW1hbCgmZmllbGRfYnVmKTsKLSAgICByZXR1 cm4gbXlfZGVjaW1hbF9jbXAoaXRlbV92YWwsIGZpZWxkX3ZhbCk7CisgICAgcmV0dXJuIG15X2Rl Y2ltYWxfY21wKGZpZWxkX3ZhbCwgaXRlbV92YWwpOwogICB9CiAgIC8qCiAgICAgVGhlIHBhdGNo IGZvciBCdWcjMTM0NjM0MTUgc3RhcnRlZCB1c2luZyB0aGlzIGZ1bmN0aW9uIGZvciBjb21wYXJp bmcKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvaXRlbV9jbXBmdW5jLmgnCi0tLSBhL3NxbC9pdGVt X2NtcGZ1bmMuaAkyMDEyLTAxLTE2IDA5OjAxOjUzICswMDAwCisrKyBiL3NxbC9pdGVtX2NtcGZ1 bmMuaAkyMDEyLTAxLTMwIDA2OjM5OjAyICswMDAwCkBAIC0xMTI0LDcgKzExMjQsMTMgQEAgcHVi bGljOgogICAgIHZhbHVlKHZhbHVlX2J1ZmYsIHNpemVvZih2YWx1ZV9idWZmKSwgY3MpIHt9CiAg IHZvaWQgc3RvcmVfdmFsdWUoSXRlbSAqaXRlbSkKICAgewotICAgIHZhbHVlX3Jlcz0gaXRlbS0+ dmFsX3N0cigmdmFsdWUpOworICAgIFN0cmluZyAqcmVzPSBpdGVtLT52YWxfc3RyKCZ2YWx1ZSk7 CisgICAgaWYocmVzICYmIChyZXMgIT0gJnZhbHVlKSkKKyAgICB7CisgICAgICAvLyAncmVzJyBt YXkgcG9pbnQgaW4gaXRlbSdzIHRlbXBvcmFyeSBpbnRlcm5hbCBkYXRhLCBzbyBtYWtlIGEgY29w eQorICAgICAgdmFsdWUuY29weSgqcmVzKTsKKyAgICB9CisgICAgdmFsdWVfcmVzPSAmdmFsdWU7 CiAgIH0KICAgaW50IGNtcChJdGVtICphcmcpCiAgIHsKCj09PSBtb2RpZmllZCBmaWxlICdzcWwv aXRlbV9mdW5jLmNjJwotLS0gYS9zcWwvaXRlbV9mdW5jLmNjCTIwMTEtMTItMTMgMTg6MTg6MjAg KzAwMDAKKysrIGIvc3FsL2l0ZW1fZnVuYy5jYwkyMDEyLTAxLTMwIDA2OjU5OjM5ICswMDAwCkBA IC02NTk4LDYgKzY1OTgsMjcgQEAgdm9pZCBJdGVtX2Z1bmNfc3A6OmZpeF9sZW5ndGhfYW5kX2Rl YygpCiB9CiAKIAordm9pZCBJdGVtX2Z1bmNfc3A6OnVwZGF0ZV9udWxsX3ZhbHVlKCkKK3sKKyAg LyoKKyAgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB3ZSB0cnkgdG8gY2hlY2sgaWYgdGhl IGl0ZW0gdmFsdWUgaXMgTlVMTC4KKyAgICBXZSBjYWxsIEl0ZW1fZnVuY19zcDo6ZXhlY3V0ZSgp IHRvIGdldCB2YWx1ZSBvZiBudWxsX3ZhbHVlIGF0dHJpYnV0ZQorICAgIGFzIGEgc2lkZSBlZmZl Y3Qgb2YgaXRzIGV4ZWN1dGlvbi4KKyAgICBXZSBpZ25vcmUgYW55IGVycm9yIHNpbmNlIHVwZGF0 ZV9udWxsX3ZhbHVlKCkgZG9lc24ndCByZXR1cm4gdmFsdWUuCisgICAgV2UgdXNlZCB0byBkZWxl Z2F0ZSBudWxsYWJpbGl0eSBjaGVjayB0byBJdGVtOjp1cGRhdGVfbnVsbF92YWx1ZSBhcworICAg IGEgcmVzdWx0IG9mIGEgY2hhaW4gb2YgZnVuY3Rpb24gY2FsbHM6CisgICAgIEl0ZW1fZnVuY19p c251bGw6OnZhbF9pbnQgLS0+IEl0ZW1fZnVuYzo6aXNfbnVsbCAtLT4KKyAgICAgIEl0ZW06OnVw ZGF0ZV9udWxsX3ZhbHVlIC0tPkl0ZW1fZnVuY19zcDo6dmFsX2ludCAtLT4KKyAgICAgICAgRmll bGRfdmFyc3RyaW5nOjp2YWxfaW50CisgICAgU3VjaCBhcHByb2FjaCByZXN1bHRlZCBpbiBhIGNh bGwgb2YgcHVzaF93YXJuaW5nX3ByaW50ZigpIGluIGNhc2UKKyAgICBpZiBhIHN0b3JlZCBwcm9n cmFtIHZhbHVlIGNvdWxkbid0IGJlIGNhc3QgdG8gaW50ZWdlciAodGhlIGNhc2Ugd2hlbgorICAg IGZvciBleGFtcGxlIHRoZXJlIHdhcyBhIHN0b3JlZCBmdW5jdGlvbiB0aGF0IGRlY2xhcmVkIGFz IHJldHVybmluZworICAgIHZhcmNoYXIoMSkgYW5kIGEgZnVuY3Rpb24ncyBpbXBsZW1lbnRhdGlv biByZXR1cm5lZCAiWSIgZnJvbSBpdHMgYm9keSkuCisgICovCisgIGV4ZWN1dGUoKTsKK30KKwor CiAvKioKICAgQGJyaWVmIEV4ZWN1dGUgZnVuY3Rpb24gJiBzdG9yZSB2YWx1ZSBpbiBmaWVsZC4K IApAQCAtNjc3NSw5ICs2Nzk2LDQyIEBAIGJvb2wKIEl0ZW1fZnVuY19zcDo6Zml4X2ZpZWxkcyhU SEQgKnRoZCwgSXRlbSAqKnJlZikKIHsKICAgYm9vbCByZXM7CisjaWZuZGVmIE5PX0VNQkVEREVE X0FDQ0VTU19DSEVDS1MKKyAgU2VjdXJpdHlfY29udGV4dCAqc2F2ZV9zZWN1cml0eV9jdHg9IHRo ZC0+c2VjdXJpdHlfY3R4OworI2VuZGlmCisKICAgREJVR19FTlRFUigiSXRlbV9mdW5jX3NwOjpm aXhfZmllbGRzIik7CiAgIERCVUdfQVNTRVJUKGZpeGVkID09IDApOwotIAorCisjaWZuZGVmIE5P X0VNQkVEREVEX0FDQ0VTU19DSEVDS1MKKyAgLyogCisgICAgQ2hlY2tpbmcgcHJpdmlsZWdlcyB0 byBleGVjdXRlIHRoZSBmdW5jdGlvbiB3aGlsZSBjcmVhdGluZyB2aWV3IGFuZAorICAgIGV4ZWN1 dGluZyB0aGUgZnVuY3Rpb24gb2Ygc2VsZWN0LgorICAgKi8KKyAgaWYgKCEodGhkLT5sZXgtPmNv bnRleHRfYW5hbHlzaXNfb25seSAmIENPTlRFWFRfQU5BTFlTSVNfT05MWV9WSUVXKSB8fAorICAg ICAgKHRoZC0+bGV4LT5zcWxfY29tbWFuZCA9PSBTUUxDT01fQ1JFQVRFX1ZJRVcpKQorICB7Cisg ICAgaWYgKGNvbnRleHQtPnNlY3VyaXR5X2N0eCkKKyAgICB7CisgICAgICAvKiBTZXQgdmlldyBk ZWZpbmVyIHNlY3VyaXR5IGNvbnRleHQgKi8KKyAgICAgIHRoZC0+c2VjdXJpdHlfY3R4PSBjb250 ZXh0LT5zZWN1cml0eV9jdHg7CisgICAgfQorCisgICAgLyoKKyAgICAgIENoZWNrIHdoZXRoZXIg dXNlciBoYXMgZXhlY3V0ZSBwcml2aWxlZ2Ugb3Igbm90CisgICAgICovCisgICAgcmVzPSBjaGVj a19yb3V0aW5lX2FjY2Vzcyh0aGQsIEVYRUNVVEVfQUNMLCBtX25hbWUtPm1fZGIuc3RyLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9uYW1lLT5tX25hbWUuc3RyLCAwLCBGQUxTRSk7 CisgICAgdGhkLT5zZWN1cml0eV9jdHg9IHNhdmVfc2VjdXJpdHlfY3R4OworCisgICAgaWYgKHJl cykKKyAgICB7CisgICAgICBjb250ZXh0LT5wcm9jZXNzX2Vycm9yKHRoZCk7CisgICAgICBEQlVH X1JFVFVSTihyZXMpOworICAgIH0KKyAgfQorI2VuZGlmCisKICAgLyoKICAgICBXZSBtdXN0IGNh bGwgaW5pdF9yZXN1bHRfZmllbGQgYmVmb3JlIEl0ZW1fZnVuYzo6Zml4X2ZpZWxkcygpIAogICAg IHRvIG1ha2UgbV9zcCBhbmQgcmVzdWx0X2ZpZWxkIG1lbWJlcnMgYXZhaWxhYmxlIHRvIGZpeF9s ZW5ndGhfYW5kX2RlYygpLAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9pdGVtX2Z1bmMuaCcKLS0t IGEvc3FsL2l0ZW1fZnVuYy5oCTIwMTItMDEtMTcgMTQ6NDQ6NDkgKzAwMDAKKysrIGIvc3FsL2l0 ZW1fZnVuYy5oCTIwMTItMDEtMjcgMDU6NTc6MzUgKzAwMDAKQEAgLTE5OTUsNiArMTk5NSw4IEBA IHB1YmxpYzoKICAgewogICAgIHJldHVybiBzcF9yZXN1bHRfZmllbGQ7CiAgIH0KKworICB2aXJ0 dWFsIHZvaWQgdXBkYXRlX251bGxfdmFsdWUoKTsKIH07CiAKIAoKPT09IG1vZGlmaWVkIGZpbGUg J3NxbC9teXNxbGQuY2MnCi0tLSBhL3NxbC9teXNxbGQuY2MJMjAxMi0wMS0yNiAxMDoyMDoxMCAr MDAwMAorKysgYi9zcWwvbXlzcWxkLmNjCTIwMTItMDEtMzAgMTA6NTk6NDAgKzAwMDAKQEAgLTE1 MjksMTAgKzE1MjksNyBAQCBzdGF0aWMgdm9pZCBteXNxbGRfZXhpdChpbnQgZXhpdF9jb2RlKQog ICBjbGVhbl91cF9tdXRleGVzKCk7CiAgIGNsZWFuX3VwX2Vycm9yX2xvZ19tdXRleCgpOwogI2lm ZGVmIFdJVEhfUEVSRlNDSEVNQV9TVE9SQUdFX0VOR0lORQotICAvKgotICAgIEJ1ZyM1NjY2NiBu ZWVkcyB0byBiZSBmaXhlZCBiZWZvcmUgY2FsbGluZzoKLSAgICBzaHV0ZG93bl9wZXJmb3JtYW5j ZV9zY2hlbWEoKTsKLSAgKi8KKyAgc2h1dGRvd25fcGVyZm9ybWFuY2Vfc2NoZW1hKCk7CiAjZW5k aWYKICAgbXlfZW5kKG9wdF9lbmRpbmZvID8gTVlfQ0hFQ0tfRVJST1IgfCBNWV9HSVZFX0lORk8g OiAwKTsKICAgZXhpdChleGl0X2NvZGUpOyAvKiBwdXJlY292OiBpbnNwZWN0ZWQgKi8KQEAgLTI3 MTYsMTAgKzI3MTMsMjEgQEAgcHRocmVhZF9oYW5kbGVyX3Qgc2lnbmFsX2hhbmQodm9pZCAqYXJn CiAgICAgc2hvdWxkIG5vdCBiZSBhbnkgb3RoZXIgbXlzcWxfY29uZF9zaWduYWwoKSBjYWxscy4K ICAgKi8KICAgbXlzcWxfbXV0ZXhfbG9jaygmTE9DS190aHJlYWRfY291bnQpOwotICBteXNxbF9t dXRleF91bmxvY2soJkxPQ0tfdGhyZWFkX2NvdW50KTsKICAgbXlzcWxfY29uZF9icm9hZGNhc3Qo JkNPTkRfdGhyZWFkX2NvdW50KTsKKyAgbXlzcWxfbXV0ZXhfdW5sb2NrKCZMT0NLX3RocmVhZF9j b3VudCk7CisKKyAgLyoKKyAgICBXYWl0aW5nIGZvciB1bnRpbCBteXNxbGRfc2VydmVyX3N0YXJ0 ZWQgIT0gMAorICAgIHRvIGVuc3VyZSB0aGF0IGFsbCBzZXJ2ZXIgY29tcG9uZW50cyBoYXMgYmVl biBzdWNjZXNzZnVsbHkKKyAgICBpbml0aWFsaXplZC4gVGhpcyBzdGVwIGlzIG1hbmRhdG9yeSBz aW5jZSBzaWduYWwgcHJvY2Vzc2luZworICAgIGNvdWxkIGJlIGRvbmUgc2FmZWx5IG9ubHkgd2hl biBhbGwgc2VydmVyIGNvbXBvbmVudHMKKyAgICBoYXMgYmVlbiBpbml0aWFsaXplZC4KKyAgKi8K KyAgbXlzcWxfbXV0ZXhfbG9jaygmTE9DS19zZXJ2ZXJfc3RhcnRlZCk7CisgIHdoaWxlICghbXlz cWxkX3NlcnZlcl9zdGFydGVkKQorICAgIG15c3FsX2NvbmRfd2FpdCgmQ09ORF9zZXJ2ZXJfc3Rh cnRlZCwgJkxPQ0tfc2VydmVyX3N0YXJ0ZWQpOworICBteXNxbF9tdXRleF91bmxvY2soJkxPQ0tf c2VydmVyX3N0YXJ0ZWQpOwogCi0gICh2b2lkKSBwdGhyZWFkX3NpZ21hc2soU0lHX0JMT0NLLCZz ZXQsTlVMTCk7CiAgIGZvciAoOzspCiAgIHsKICAgICBpbnQgZXJyb3I7ICAgICAgICAgIC8vIFVz ZWQgd2hlbiBkZWJ1Z2dpbmcKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvb3B0X2V4cGxhaW4uY2Mn Ci0tLSBhL3NxbC9vcHRfZXhwbGFpbi5jYwkyMDExLTEyLTE0IDEyOjMyOjU1ICswMDAwCisrKyBi L3NxbC9vcHRfZXhwbGFpbi5jYwkyMDEyLTAxLTI2IDEyOjUzOjM4ICswMDAwCkBAIC03NzAsMjQg Kzc3MCwyNSBAQCB2b2lkIEV4cGxhaW5fdGFibGVfYmFzZTo6ZXhwbGFpbl9leHRyYV9jCiAgIGlm ICh0YWJsZS0+cmVnaW5mby5ub3RfZXhpc3RzX29wdGltaXplKQogICAgIHN0cl9leHRyYS0+YXBw ZW5kKFNUUklOR19XSVRIX0xFTigiOyBOb3QgZXhpc3RzIikpOwogCi0gIGlmIChxdWlja190eXBl ID09IFFVSUNLX1NFTEVDVF9JOjpRU19UWVBFX1JBTkdFICYmCi0gICAgICAhKCgoUVVJQ0tfUkFO R0VfU0VMRUNUKikoc2VsZWN0LT5xdWljaykpLT5tcnJfZmxhZ3MgJgotICAgICAgIChIQV9NUlJf VVNFX0RFRkFVTFRfSU1QTCB8IEhBX01SUl9TT1JURUQpKSkKKyAgaWYgKHF1aWNrX3R5cGUgPT0g UVVJQ0tfU0VMRUNUX0k6OlFTX1RZUEVfUkFOR0UpCiAgIHsKKyAgICB1aW50IG1ycl9mbGFncz0K KyAgICAgICgoUVVJQ0tfUkFOR0VfU0VMRUNUKikoc2VsZWN0LT5xdWljaykpLT5tcnJfZmxhZ3M7 CisKICAgICAvKgogICAgICAgRHVyaW5nIG5vcm1hbCBleGVjdXRpb24gb2YgYSBxdWVyeSwgbXVs dGlfcmFuZ2VfcmVhZF9pbml0KCkgaXMKICAgICAgIGNhbGxlZCB0byBpbml0aWFsaXplIE1SUi4g SWYgSEFfTVJSX1NPUlRFRCBpcyBzZXQgYXQgdGhpcyBwb2ludCwKICAgICAgIG11bHRpX3Jhbmdl X3JlYWRfaW5pdCgpIGZvciBhbnkgbmF0aXZlIE1SUiBpbXBsZW1lbnRhdGlvbiB3aWxsCi0gICAg ICByZXZlcnQgdG8gZGVmYXVsdCBNUlIgYmVjYXVzZSB0aGV5IGNhbm5vdCBwcm9kdWNlIHNvcnRl ZCBvdXRwdXQKLSAgICAgIGN1cnJlbnRseS4KKyAgICAgIHJldmVydCB0byBkZWZhdWx0IE1SUiBp ZiBub3QgSEFfTVJSX1NVUFBPUlRfU09SVEVELgogICAgICAgQ2FsbGluZyBtdWx0aV9yYW5nZV9y ZWFkX2luaXQoKSBjYW4gcG90ZW50aWFsbHkgYmUgY29zdGx5LCBzbyBpdAotICAgICAgaXMgbm90 IGRvbmUgd2hlbiBleGVjdXRpbmcgYW4gRVhQTEFJTi4gV2UgdGhlcmVmb3JlIG1ha2UgdGhlCi0g ICAgICBhc3N1bXB0aW9uIHRoYXQgSEFfTVJSX1NPUlRFRCBtZWFucyBubyBNUlIuIElmIHNvbWUg TVJSIG5hdGl2ZQotICAgICAgaW1wbGVtZW50YXRpb24gd2lsbCBzdXBwb3J0IHNvcnRlZCBvdXRw dXQgaW4gdGhlIGZ1dHVyZSwgYQotICAgICAgZnVuY3Rpb24gImJvb2wgbXJyX3N1cHBvcnRzX3Nv cnRlZCgpIiBzaG91bGQgYmUgYWRkZWQgaW4gdGhlCi0gICAgICBoYW5kbGVyLgorICAgICAgaXMg bm90IGRvbmUgd2hlbiBleGVjdXRpbmcgYW4gRVhQTEFJTi4gV2UgdGhlcmVmb3JlIHNpbXVsYXRl CisgICAgICBpdHMgZWZmZWN0IGhlcmU6CiAgICAgKi8KLSAgICBzdHJfZXh0cmEtPmFwcGVuZChT VFJJTkdfV0lUSF9MRU4oIjsgVXNpbmcgTVJSIikpOworICAgIGlmIChtcnJfZmxhZ3MgJiBIQV9N UlJfU09SVEVEICYmICEobXJyX2ZsYWdzICYgSEFfTVJSX1NVUFBPUlRfU09SVEVEKSkKKyAgICAg IG1ycl9mbGFnc3w9IEhBX01SUl9VU0VfREVGQVVMVF9JTVBMOworCisgICAgaWYgKCEobXJyX2Zs YWdzICYgSEFfTVJSX1VTRV9ERUZBVUxUX0lNUEwpKQorICAgICAgc3RyX2V4dHJhLT5hcHBlbmQo U1RSSU5HX1dJVEhfTEVOKCI7IFVzaW5nIE1SUiIpKTsKICAgfQogfQogCgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3FsL29wdF9yYW5nZS5jYycKLS0tIGEvc3FsL29wdF9yYW5nZS5jYwkyMDEyLTAxLTI1 IDEyOjQ1OjU2ICswMDAwCisrKyBiL3NxbC9vcHRfcmFuZ2UuY2MJMjAxMi0wMS0yNiAxMjo1Mzoz OCArMDAwMApAQCAtMjU2OCw3ICsyNTY4LDcgQEAgaW50IFNRTF9TRUxFQ1Q6OnRlc3RfcXVpY2tf c2VsZWN0KFRIRCAqdAogICAgIHBhcmFtLmltZXJnZV9jb3N0X2J1ZmZfc2l6ZT0gMDsKICAgICBw YXJhbS51c2luZ19yZWFsX2luZGV4ZXM9IFRSVUU7CiAgICAgcGFyYW0ucmVtb3ZlX2p1bXBfc2Nh bnM9IFRSVUU7Ci0gICAgcGFyYW0uZm9yY2VfZGVmYXVsdF9tcnI9IChpbnRlcmVzdGluZ19vcmRl ciAhPSBPUkRFUjo6T1JERVJfTk9UX1JFTEVWQU5UKTsKKyAgICBwYXJhbS5mb3JjZV9kZWZhdWx0 X21ycj0gKGludGVyZXN0aW5nX29yZGVyID09IE9SREVSOjpPUkRFUl9ERVNDKTsKICAgICBwYXJh bS5vcmRlcl9kaXJlY3Rpb249IGludGVyZXN0aW5nX29yZGVyOwogCiAgICAgdGhkLT5ub19lcnJv cnM9MTsJCQkJLy8gRG9uJ3Qgd2FybiBhYm91dCBOVUxMCkBAIC01NTYyLDcgKzU1NjIsNyBAQCBR VUlDS19TRUxFQ1RfSSAqVFJQX1JPUl9JTlRFUlNFQ1Q6Om1ha2VfCiAgICAgewogICAgICAgaWYg KCEocXVpY2s9IGdldF9xdWlja19zZWxlY3QocGFyYW0sICgqY3VycmVudCktPmlkeCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqY3VycmVudCktPnNlbF9hcmcsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQV9NUlJfVVNFX0RFRkFVTFRfSU1QTCB8 IEhBX01SUl9TT1JURUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQV9N UlJfU09SVEVELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgYWxsb2Mp KSB8fAogICAgICAgICAgIHF1aWNrX2ludHJzZWN0LT5wdXNoX3F1aWNrX2JhY2socXVpY2spKQog ICAgICAgewpAQCAtNTU3NCw3ICs1NTc0LDcgQEAgUVVJQ0tfU0VMRUNUX0kgKlRSUF9ST1JfSU5U RVJTRUNUOjptYWtlXwogICAgIHsKICAgICAgIGlmICghKHF1aWNrPSBnZXRfcXVpY2tfc2VsZWN0 KHBhcmFtLCBjcGtfc2Nhbi0+aWR4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY3BrX3NjYW4tPnNlbF9hcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBIQV9NUlJfVVNFX0RFRkFVTFRfSU1QTCB8IEhBX01SUl9TT1JURUQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBIQV9NUlJfU09SVEVELAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMCwgYWxsb2MpKSkKICAgICAgIHsKICAgICAgICAgZGVsZXRlIHF1 aWNrX2ludHJzZWN0OwpAQCAtNjQ2NCwxMCArNjQ2NCwyNCBAQCBnZXRfbW1fbGVhZihSQU5HRV9P UFRfUEFSQU0gKnBhcmFtLCBJdGVtCiAgICAgICAoZmllbGQtPnR5cGUoKSA9PSBNWVNRTF9UWVBF X0RBVEUgfHwKICAgICAgICBmaWVsZC0+dHlwZSgpID09IE1ZU1FMX1RZUEVfREFURVRJTUUpKQog ICAgIGZpZWxkLT50YWJsZS0+aW5fdXNlLT52YXJpYWJsZXMuc3FsX21vZGV8PSBNT0RFX0lOVkFM SURfREFURVM7Ci0gIHsKLSAgICAvLyBOb3RlIHRoYXQgdmFsdWUgbWF5IGJlIGEgc3RvcmVkIGZ1 bmN0aW9uIGNhbGwsIGV4ZWN1dGVkIGhlcmUuCi0gICAgZXJyPSB2YWx1ZS0+c2F2ZV9pbl9maWVs ZF9ub193YXJuaW5ncyhmaWVsZCwgMSk7Ci0gIH0KKworICAvKgorICAgIFdlIHdhbnQgdG8gY2hh bmdlICJmaWVsZCA+IHZhbHVlIiB0byAiZmllbGQgT1AgViIKKyAgICB3aGVyZToKKyAgICAqIFYg aXMgd2hhdCBpcyBpbiAiZmllbGQiIGFmdGVyIHdlIHN0b3JlZCAidmFsdWUiIGluIGl0IHZpYQor ICAgIHNhdmVfaW5fZmllbGRfbm9fd2FybmluZygpIChzdWNoIHN0b3JlIG9wZXJhdGlvbiBtYXkg aGF2ZSBkb25lCisgICAgcm91bmRpbmcuLi4pCisgICAgKiBPUCBpcyA+IG9yID49LCBkZXBlbmRp bmcgb24gd2hhdCdzIGNvcnJlY3QuCisgICAgRm9yIGV4YW1wbGUsIGlmIGMgaXMgYW4gSU5UIGNv bHVtbiwKKyAgICAiYyA+IDIuOSIgaXMgY2hhbmdlZCB0byAiYyBPUCAzIgorICAgIHdoZXJlIE9Q IGlzICI+PSIgKCI+IiB3b3VsZCBub3QgYmUgY29ycmVjdCwgYXMgMyA+IDIuOSwgYSBjb21wYXJp c29uCisgICAgZG9uZSB3aXRoIHN0b3JlZF9maWVsZF9jbXBfdG9faXRlbSgpKS4gQW5kCisgICAg ImMgPiAzLjEiIGlzIGNoYW5nZWQgdG8gImMgT1AgMyIgd2hlcmUgT1AgaXMgIj4iICgzIDwgMy4x Li4uKS4KKyAgKi8KKworICAvLyBOb3RlIHRoYXQgdmFsdWUgbWF5IGJlIGEgc3RvcmVkIGZ1bmN0 aW9uIGNhbGwsIGV4ZWN1dGVkIGhlcmUuCisgIGVycj0gdmFsdWUtPnNhdmVfaW5fZmllbGRfbm9f d2FybmluZ3MoZmllbGQsIDEpOworCiAgIGlmIChlcnIgPiAwKQogICB7CiAgICAgaWYgKGZpZWxk LT5jbXBfdHlwZSgpICE9IHZhbHVlLT5yZXN1bHRfdHlwZSgpKQpAQCAtODY5MSwxMCArODcwNSwx MiBAQCBoYV9yb3dzIGNoZWNrX3F1aWNrX3NlbGVjdChQQVJBTSAqcGFyYW0sCiAgICAgcGFyYW0t PmlzX3Jvcl9zY2FuPSBGQUxTRTsKICAgCiAgICptcnJfZmxhZ3M9IHBhcmFtLT5mb3JjZV9kZWZh dWx0X21ycj8gSEFfTVJSX1VTRV9ERUZBVUxUX0lNUEw6IDA7CisgICptcnJfZmxhZ3N8PSBIQV9N UlJfTk9fQVNTT0NJQVRJT047CiAgIC8qCiAgICAgUGFzcyBIQV9NUlJfU09SVEVEIHRvIHNlZSBp ZiBNUlIgaW1wbGVtZW50YXRpb24gY2FuIGhhbmRsZSBzb3J0aW5nLgogICAqLwotICAqbXJyX2Zs YWdzfD0gSEFfTVJSX05PX0FTU09DSUFUSU9OIHwgSEFfTVJSX1NPUlRFRDsKKyAgaWYgKHBhcmFt LT5vcmRlcl9kaXJlY3Rpb24gIT0gT1JERVI6Ok9SREVSX05PVF9SRUxFVkFOVCkKKyAgICAqbXJy X2ZsYWdzfD0gSEFfTVJSX1NPUlRFRDsKIAogICBib29sIHBrX2lzX2NsdXN0ZXJlZD0gZmlsZS0+ cHJpbWFyeV9rZXlfaXNfY2x1c3RlcmVkKCk7CiAgIGlmIChpbmRleF9vbmx5ICYmIApAQCAtODcw Myw3ICs4NzE5LDcgQEAgaGFfcm93cyBjaGVja19xdWlja19zZWxlY3QoUEFSQU0gKnBhcmFtLAog ICAgICAqbXJyX2ZsYWdzIHw9IEhBX01SUl9JTkRFWF9PTkxZOwogICAKICAgaWYgKGN1cnJlbnRf dGhkLT5sZXgtPnNxbF9jb21tYW5kICE9IFNRTENPTV9TRUxFQ1QpCi0gICAgKm1ycl9mbGFncyB8 PSBIQV9NUlJfVVNFX0RFRkFVTFRfSU1QTDsKKyAgICAqbXJyX2ZsYWdzfD0gSEFfTVJSX1NPUlRF RDsgLy8gQXNzdW1lZCB0byBnaXZlIGZhc3RlciBpbnMvdXBkL2RlbAogCiAgICpidWZzaXplPSBw YXJhbS0+dGhkLT52YXJpYWJsZXMucmVhZF9ybmRfYnVmZl9zaXplOwogICAvLyBTZXRzIGlzX3Jv cl9zY2FuIHRvIGZhbHNlIGZvciBzb21lIHF1ZXJpZXMsIGUuZy4gbXVsdGktcmFuZ2VzCkBAIC05 MjI4LDcgKzkyNDQsNyBAQCBRVUlDS19SQU5HRV9TRUxFQ1QgKmdldF9xdWlja19zZWxlY3RfZm9y CiAgIHF1aWNrLT5tcnJfZmxhZ3M9IEhBX01SUl9OT19BU1NPQ0lBVElPTiB8IAogICAgICAgICAg ICAgICAgICAgICAodGFibGUtPmtleV9yZWFkID8gSEFfTVJSX0lOREVYX09OTFkgOiAwKTsKICAg aWYgKHRoZC0+bGV4LT5zcWxfY29tbWFuZCAhPSBTUUxDT01fU0VMRUNUKQotICAgIHF1aWNrLT5t cnJfZmxhZ3MgfD0gSEFfTVJSX1VTRV9ERUZBVUxUX0lNUEw7CisgICAgcXVpY2stPm1ycl9mbGFn c3w9IEhBX01SUl9TT1JURUQ7IC8vIEFzc3VtZWQgdG8gZ2l2ZSBmYXN0ZXIgaW5zL3VwZC9kZWwK ICNpZmRlZiBXSVRIX05EQkNMVVNURVJfU1RPUkFHRV9FTkdJTkUKICAgaWYgKCFyZWYtPm51bGxf cmVmX2tleSAmJiAha2V5X2hhc19udWxscyhrZXlfaW5mbywgcmFuZ2UtPm1pbl9rZXksCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmLT5rZXlfbGVuZ3RoKSkK QEAgLTEwOTE1LDcgKzEwOTMxLDcgQEAgZ2V0X2Jlc3RfZ3JvdXBfbWluX21heChQQVJBTSAqcGFy YW0sIFNFTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjdXJf cGFyYW1faWR4KTsKICAgICAgIC8qIENoZWNrIGlmIHRoaXMgcmFuZ2UgdHJlZSBjYW4gYmUgdXNl ZCBmb3IgcHJlZml4IHJldHJpZXZhbC4gKi8KICAgICAgIENvc3RfZXN0aW1hdGUgZHVtbXlfY29z dDsKLSAgICAgIHVpbnQgbXJyX2ZsYWdzPSBIQV9NUlJfVVNFX0RFRkFVTFRfSU1QTDsKKyAgICAg IHVpbnQgbXJyX2ZsYWdzPSBIQV9NUlJfU09SVEVEOwogICAgICAgdWludCBtcnJfYnVmc2l6ZT0w OwogICAgICAgY3VyX3F1aWNrX3ByZWZpeF9yZWNvcmRzPSBjaGVja19xdWlja19zZWxlY3QocGFy YW0sIGN1cl9wYXJhbV9pZHgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRkFMU0UgLypkb24ndCBjYXJlKi8sIApAQCAtMTE1NTAsNyArMTE1NjYs NiBAQCBUUlBfR1JPVVBfTUlOX01BWDo6bWFrZV9xdWljayhQQVJBTSAqcGFyCiAgICAgICAvKiBN YWtlIGEgUVVJQ0tfUkFOR0VfU0VMRUNUIHRvIGJlIHVzZWQgZm9yIGdyb3VwIHByZWZpeCByZXRy aWV2YWwuICovCiAgICAgICBxdWljay0+cXVpY2tfcHJlZml4X3NlbGVjdD0gZ2V0X3F1aWNrX3Nl bGVjdChwYXJhbSwgcGFyYW1faWR4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW5kZXhfdHJlZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEhBX01SUl9VU0VfREVGQVVMVF9JTVBMIHwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBX01SUl9TT1JU RUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1 aWNrLT5hbGxvYyk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL3NxbF9wYXJzZS5jYycKLS0tIGEv c3FsL3NxbF9wYXJzZS5jYwkyMDEyLTAxLTI1IDEwOjA3OjIzICswMDAwCisrKyBiL3NxbC9zcWxf cGFyc2UuY2MJMjAxMi0wMS0zMCAwNjo1OTozOSArMDAwMApAQCAtNDIwNSw2ICs0MjA1LDEzIEBA IGNyZWF0ZV9zcF9lcnJvcjoKICAgY2FzZSBTUUxDT01fQ0FMTDoKICAgICB7CiAgICAgICBzcF9o ZWFkICpzcDsKKworICAgICAgLyogSGVyZSB3ZSBjaGVjayBmb3IgdGhlIGV4ZWN1dGUgcHJpdmls ZWdlIG9uIHN0b3JlZCBwcm9jZWR1cmUuICovCisgICAgICBpZiAoY2hlY2tfcm91dGluZV9hY2Nl c3ModGhkLCBFWEVDVVRFX0FDTCwgbGV4LT5zcG5hbWUtPm1fZGIuc3RyLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxleC0+c3BuYW1lLT5tX25hbWUuc3RyLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxleC0+c3FsX2NvbW1hbmQgPT0gU1FMQ09NX0NBTEwsIDApKQor ICAgICAgICBnb3RvIGVycm9yOworCiAgICAgICAvKgogICAgICAgICBUaGlzIHdpbGwgY2FjaGUg YWxsIFNQIGFuZCBTRiBhbmQgb3BlbiBhbmQgbG9jayBhbGwgdGFibGVzCiAgICAgICAgIHJlcXVp cmVkIGZvciBleGVjdXRpb24uCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9leGFtcGxlL2hh X2V4YW1wbGUuY2MnCi0tLSBhL3N0b3JhZ2UvZXhhbXBsZS9oYV9leGFtcGxlLmNjCTIwMTEtMTEt MDEgMTE6NTI6MjQgKzAwMDAKKysrIGIvc3RvcmFnZS9leGFtcGxlL2hhX2V4YW1wbGUuY2MJMjAx Mi0wMS0yNiAwOToyOTozMyArMDAwMApAQCAtNTU0LDcgKzU1NCw3IEBAIGludCBoYV9leGFtcGxl OjppbmRleF9sYXN0KHVjaGFyICpidWYpCiBpbnQgaGFfZXhhbXBsZTo6cm5kX2luaXQoYm9vbCBz Y2FuKQogewogICBEQlVHX0VOVEVSKCJoYV9leGFtcGxlOjpybmRfaW5pdCIpOwotICBEQlVHX1JF VFVSTihIQV9FUlJfV1JPTkdfQ09NTUFORCk7CisgIERCVUdfUkVUVVJOKDApOwogfQogCiBpbnQg aGFfZXhhbXBsZTo6cm5kX2VuZCgpCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFz ZS9idHIvYnRyMGJ0ci5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGJ0ci5jYwky MDExLTExLTIwIDIwOjE3OjQxICswMDAwCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBi dHIuY2MJMjAxMi0wMS0yNiAxMTo1Nzo1MyArMDAwMApAQCAtMSw2ICsxLDYgQEAKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMpIDE5OTQsIDIwMTEsIE9yYWNsZSBhbmQvb3Ig aXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTQs IDIwMTIsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu CiAKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtNDMsNiAr NDMsMjcgQEAgQ3JlYXRlZCA2LzIvMTk5NCBIZWlra2kgVHV1cmkKICNpbmNsdWRlICJ0cngwdHJ4 LmgiCiAjaW5jbHVkZSAic3J2MG1vbi5oIgogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitSZXBvcnQgdGhhdCBhbiBp bmRleCBwYWdlIGlzIGNvcnJ1cHRlZC4gKi8KK1VOSVZfSU5URVJOCit2b2lkCitidHJfY29ycnVw dGlvbl9yZXBvcnQoCisvKj09PT09PT09PT09PT09PT09PSovCisJY29uc3QgYnVmX2Jsb2NrX3Qq CWJsb2NrLAkvKiE8IGluOiBjb3JydXB0ZWQgYmxvY2sgKi8KKwljb25zdCBkaWN0X2luZGV4X3Qq CWluZGV4KQkvKiE8IGluOiBpbmRleCB0cmVlICovCit7CisJZnByaW50ZihzdGRlcnIsICJJbm5v REI6IGZsYWcgbWlzbWF0Y2ggaW4gc3BhY2UgJXUgcGFnZSAldSIKKwkJIiBpbmRleCAlcyBvZiB0 YWJsZSAlc1xuIiwKKwkJKHVuc2lnbmVkKSBidWZfYmxvY2tfZ2V0X3NwYWNlKGJsb2NrKSwKKwkJ KHVuc2lnbmVkKSBidWZfYmxvY2tfZ2V0X3BhZ2Vfbm8oYmxvY2spLAorCQlpbmRleC0+bmFtZSwg aW5kZXgtPnRhYmxlX25hbWUpOworCWJ1Zl9wYWdlX3ByaW50KGJ1Zl9ibG9ja19nZXRfZnJhbWUo YmxvY2spLCAwKTsKKwlpZiAoYmxvY2stPnBhZ2UuemlwLmRhdGEpIHsKKwkJYnVmX3BhZ2VfcHJp bnQoYmxvY2stPnBhZ2UuemlwLmRhdGEsCisJCQkgICAgICAgYnVmX2Jsb2NrX2dldF96aXBfc2l6 ZShibG9jaykpOworCX0KK30KKwogI2lmZGVmIFVOSVZfQkxPQl9ERUJVRwogIyBpbmNsdWRlICJz cnYwc3J2LmgiCiAjIGluY2x1ZGUgInV0MHJidC5oIgpAQCAtNjkzLDggKzcxNCw3IEBAIGJ0cl9y b290X2Jsb2NrX2dldCgKIAogCWJsb2NrID0gYnRyX2Jsb2NrX2dldChzcGFjZSwgemlwX3NpemUs IHJvb3RfcGFnZV9ubywgUldfWF9MQVRDSCwKIAkJCSAgICAgIGluZGV4LCBtdHIpOwotCXV0X2Eo KGlib29sKSEhcGFnZV9pc19jb21wKGJ1Zl9ibG9ja19nZXRfZnJhbWUoYmxvY2spKQotCSAgICAg PT0gZGljdF90YWJsZV9pc19jb21wKGluZGV4LT50YWJsZSkpOworCWJ0cl9hc3NlcnRfbm90X2Nv cnJ1cHRlZChibG9jaywgaW5kZXgpOwogI2lmZGVmIFVOSVZfQlRSX0RFQlVHCiAJaWYgKCFkaWN0 X2luZGV4X2lzX2lidWYoaW5kZXgpKSB7CiAJCWNvbnN0IHBhZ2VfdCoJcm9vdCA9IGJ1Zl9ibG9j a19nZXRfZnJhbWUoYmxvY2spOwpAQCAtMTcxNyw3ICsxNzM3LDcgQEAgYnRyX3BhZ2VfcmVvcmdh bml6ZV9sb3coCiAJaWJvb2wJCXN1Y2Nlc3MJCT0gRkFMU0U7CiAKIAl1dF9hZChtdHJfbWVtb19j b250YWlucyhtdHIsIGJsb2NrLCBNVFJfTUVNT19QQUdFX1hfRklYKSk7Ci0JdXRfYWQoISFwYWdl X2lzX2NvbXAocGFnZSkgPT0gZGljdF90YWJsZV9pc19jb21wKGluZGV4LT50YWJsZSkpOworCWJ0 cl9hc3NlcnRfbm90X2NvcnJ1cHRlZChibG9jaywgaW5kZXgpOwogI2lmZGVmIFVOSVZfWklQX0RF QlVHCiAJdXRfYSghcGFnZV96aXAgfHwgcGFnZV96aXBfdmFsaWRhdGUocGFnZV96aXAsIHBhZ2Up KTsKICNlbmRpZiAvKiBVTklWX1pJUF9ERUJVRyAqLwpAQCAtMzM0Nyw3ICszMzY3LDcgQEAgYnRy X2NvbXByZXNzKAogCXBhZ2UgPSBidHJfY3VyX2dldF9wYWdlKGN1cnNvcik7CiAJaW5kZXggPSBi dHJfY3VyX2dldF9pbmRleChjdXJzb3IpOwogCi0JdXRfYSgoaWJvb2wpICEhcGFnZV9pc19jb21w KHBhZ2UpID09IGRpY3RfdGFibGVfaXNfY29tcChpbmRleC0+dGFibGUpKTsKKwlidHJfYXNzZXJ0 X25vdF9jb3JydXB0ZWQoYmxvY2ssIGluZGV4KTsKIAogCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5z KG10ciwgZGljdF9pbmRleF9nZXRfbG9jayhpbmRleCksCiAJCQkJTVRSX01FTU9fWF9MT0NLKSk7 Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5jYycKLS0t IGEvc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5jYwkyMDEyLTAxLTI1IDA4OjI1OjA3ICsw MDAwCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBjdXIuY2MJMjAxMi0wMS0yNiAxMTo1 Nzo1MyArMDAwMApAQCAtMSw2ICsxLDYgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi1Db3B5 cmlnaHQgKGMpIDE5OTQsIDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBS aWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTQsIDIwMTIsIE9yYWNsZSBhbmQvb3Ig aXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiBDb3B5cmlnaHQgKGMpIDIwMDgs IEdvb2dsZSBJbmMuCiAKIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBjb250YWluIG1vZGlmaWNhdGlv bnMgY29udHJpYnV0ZWQgYW5kIGNvcHlyaWdodGVkIGJ5CkBAIC03NjgsMTEgKzc2OCwxMSBAQCBy ZXRyeV9wYWdlX2dldDoKIAogCWlmIChsZXZlbCAhPSAwKSB7CiAJCS8qIHgtbGF0Y2ggdGhlIHBh Z2UgKi8KLQkJcGFnZSA9IGJ0cl9wYWdlX2dldCgKKwkJYnVmX2Jsb2NrX3QqCWNoaWxkX2Jsb2Nr ID0gYnRyX2Jsb2NrX2dldCgKIAkJCXNwYWNlLCB6aXBfc2l6ZSwgcGFnZV9ubywgUldfWF9MQVRD SCwgaW5kZXgsIG10cik7CiAKLQkJdXRfYSgoaWJvb2wpISFwYWdlX2lzX2NvbXAocGFnZSkKLQkJ ICAgICA9PSBkaWN0X3RhYmxlX2lzX2NvbXAoaW5kZXgtPnRhYmxlKSk7CisJCXBhZ2UgPSBidWZf YmxvY2tfZ2V0X2ZyYW1lKGNoaWxkX2Jsb2NrKTsKKwkJYnRyX2Fzc2VydF9ub3RfY29ycnVwdGVk KGNoaWxkX2Jsb2NrLCBpbmRleCk7CiAJfSBlbHNlIHsKIAkJY3Vyc29yLT5sb3dfbWF0Y2ggPSBs b3dfbWF0Y2g7CiAJCWN1cnNvci0+bG93X2J5dGVzID0gbG93X2J5dGVzOwoKPT09IG1vZGlmaWVk IGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBidWYuY2MnCi0tLSBhL3N0b3JhZ2UvaW5u b2Jhc2UvYnVmL2J1ZjBidWYuY2MJMjAxMi0wMS0xNiAwODoxNToyMCArMDAwMAorKysgYi9zdG9y YWdlL2lubm9iYXNlL2J1Zi9idWYwYnVmLmNjCTIwMTItMDEtMjYgMTE6NTc6NTMgKzAwMDAKQEAg LTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk1 LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVk LgorQ29weXJpZ2h0IChjKSAxOTk1LCAyMDEyLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVz LiBBbGwgUmlnaHRzIFJlc2VydmVkLgogQ29weXJpZ2h0IChjKSAyMDA4LCBHb29nbGUgSW5jLgog CiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgY29udGFpbiBtb2RpZmljYXRpb25zIGNvbnRyaWJ1dGVk IGFuZCBjb3B5cmlnaHRlZCBieQpAQCAtNjkwLDYgKzY5MCw4IEBAIGJ1Zl9wYWdlX3ByaW50KAog I2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwogCXVsaW50CQlzaXplID0gemlwX3NpemU7CiAK Kwl1dF9hZCgwKTsKKwogCWlmICghc2l6ZSkgewogCQlzaXplID0gVU5JVl9QQUdFX1NJWkU7CiAJ fQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYV9pbm5vZGIu Y2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYV9pbm5vZGIuY2MJMjAxMi0wMS0y NSAxOTozMTo1MCArMDAwMAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2Ri LmNjCTIwMTItMDEtMjYgMTI6NTA6MzQgKzAwMDAKQEAgLTE0NTQ4LDEwICsxNDU0OCwxMCBAQCBz dGF0aWMgTVlTUUxfU1lTVkFSX1VMT05HKGZ0X3NvcnRfcGxsX2RlCiAgICJJbm5vREIgRnVsbHRl eHQgc2VhcmNoIHBhcmFsbGVsIHNvcnQgZGVncmVlLCB3aWxsIHJvdW5kIHVwIHRvIG5lYXJlc3Qg cG93ZXIgb2YgMiBudW1iZXIiLAogICBOVUxMLCBOVUxMLCAyLCAxLCAxNiwgMCk7CiAKLXN0YXRp YyBNWVNRTF9TWVNWQVJfVUxPTkcoc29ydF9idWZfc2l6ZSwgc3J2X3NvcnRfYnVmX3NpemUsCitz dGF0aWMgTVlTUUxfU1lTVkFSX1VMT05HKHNvcnRfYnVmZmVyX3NpemUsIHNydl9zb3J0X2J1Zl9z aXplLAogICBQTFVHSU5fVkFSX1JRQ01EQVJHIHwgUExVR0lOX1ZBUl9SRUFET05MWSwKLSAgIklu bm9EQiBGdWxsdGV4dCBzZWFyY2ggc29ydCBidWZmZXIgc2l6ZSIsCi0gIE5VTEwsIE5VTEwsIDEw NDg1NzYsIDUyNDI4OCwgNjQ4MzY0ODAsIDApOworICAiTWVtb3J5IGJ1ZmZlciBzaXplIGZvciBp bmRleCBjcmVhdGlvbiIsCisgIE5VTEwsIE5VTEwsIDEwNDg1NzYsIDUyNDI4OCwgNjQ8PDIwLCAw KTsKIAogc3RhdGljIE1ZU1FMX1NZU1ZBUl9CT09MKG9wdGltaXplX2Z1bGx0ZXh0X29ubHksIGlu bm9kYl9vcHRpbWl6ZV9mdWxsdGV4dF9vbmx5LAogICBQTFVHSU5fVkFSX05PQ01EQVJHLApAQCAt MTQ4NjQsNyArMTQ4NjQsNyBAQCBzdGF0aWMgc3RydWN0IHN0X215c3FsX3N5c192YXIqIGlubm9i YXNlCiAgIE1ZU1FMX1NZU1ZBUihzdGF0dXNfZmlsZSksCiAgIE1ZU1FMX1NZU1ZBUihzdHJpY3Rf bW9kZSksCiAgIE1ZU1FMX1NZU1ZBUihzdXBwb3J0X3hhKSwKLSAgTVlTUUxfU1lTVkFSKHNvcnRf YnVmX3NpemUpLAorICBNWVNRTF9TWVNWQVIoc29ydF9idWZmZXJfc2l6ZSksCiAgIE1ZU1FMX1NZ U1ZBUihhbmFseXplX2lzX3BlcnNpc3RlbnQpLAogICBNWVNRTF9TWVNWQVIoc3luY19zcGluX2xv b3BzKSwKICAgTVlTUUxfU1lTVkFSKHNwaW5fd2FpdF9kZWxheSksCgo9PT0gbW9kaWZpZWQgZmls ZSAnc3RvcmFnZS9pbm5vYmFzZS9pYnVmL2lidWYwaWJ1Zi5jYycKLS0tIGEvc3RvcmFnZS9pbm5v YmFzZS9pYnVmL2lidWYwaWJ1Zi5jYwkyMDEyLTAxLTE2IDEyOjMwOjU4ICswMDAwCisrKyBiL3N0 b3JhZ2UvaW5ub2Jhc2UvaWJ1Zi9pYnVmMGlidWYuY2MJMjAxMi0wMS0yNiAxMjozMToyNiArMDAw MApAQCAtMzc1Myw2ICszNzUzLDcgQEAgaWJ1Zl9pbnNlcnRfdG9faW5kZXhfcGFnZV9sb3coCiAK IAlmcHV0cygiSW5ub0RCOiBTdWJtaXQgYSBkZXRhaWxlZCBidWcgcmVwb3J0IgogCSAgICAgICIg dG8gaHR0cDovL2J1Z3MubXlzcWwuY29tXG4iLCBzdGRlcnIpOworCXV0X2FkKDApOwogfQogCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCkBAIC0zOTQ2LDYgKzM5NDcsMTEgQEAgaWJ1Zl9zZXRfZGVsX21hcmso CiAJCQkJCQkJICBUUlVFLCBtdHIpOwogCQl9CiAJfSBlbHNlIHsKKwkJY29uc3QgcGFnZV90KgkJ cGFnZQorCQkJPSBwYWdlX2N1cl9nZXRfcGFnZSgmcGFnZV9jdXIpOworCQljb25zdCBidWZfYmxv Y2tfdCoJYmxvY2sKKwkJCT0gcGFnZV9jdXJfZ2V0X2Jsb2NrKCZwYWdlX2N1cik7CisKIAkJdXRf cHJpbnRfdGltZXN0YW1wKHN0ZGVycik7CiAJCWZwdXRzKCIgIElubm9EQjogdW5hYmxlIHRvIGZp bmQgYSByZWNvcmQgdG8gZGVsZXRlLW1hcmtcbiIsCiAJCSAgICAgIHN0ZGVycik7CkBAIC0zOTU0 LDEwICszOTYwLDE0IEBAIGlidWZfc2V0X2RlbF9tYXJrKAogCQlmcHV0cygiXG4iCiAJCSAgICAg ICJJbm5vREI6IHJlY29yZCAiLCBzdGRlcnIpOwogCQlyZWNfcHJpbnQoc3RkZXJyLCBwYWdlX2N1 cl9nZXRfcmVjKCZwYWdlX2N1ciksIGluZGV4KTsKLQkJcHV0YygnXG4nLCBzdGRlcnIpOwotCQlm cHV0cygiXG4iCi0JCSAgICAgICJJbm5vREI6IFN1Ym1pdCBhIGRldGFpbGVkIGJ1ZyByZXBvcnQi Ci0JCSAgICAgICIgdG8gaHR0cDovL2J1Z3MubXlzcWwuY29tXG4iLCBzdGRlcnIpOworCQlmcHJp bnRmKHN0ZGVyciwgIlxuc3BhY2UgJXUgb2Zmc2V0ICV1IgorCQkJIiAoJXUgcmVjb3JkcywgaW5k ZXggaWQgJWxsdSlcbiIKKwkJCSJJbm5vREI6IFN1Ym1pdCBhIGRldGFpbGVkIGJ1ZyByZXBvcnQi CisJCQkiIHRvIGh0dHA6Ly9idWdzLm15c3FsLmNvbVxuIiwKKwkJCSh1bnNpZ25lZCkgYnVmX2Js b2NrX2dldF9zcGFjZShibG9jayksCisJCQkodW5zaWduZWQpIGJ1Zl9ibG9ja19nZXRfcGFnZV9u byhibG9jayksCisJCQkodW5zaWduZWQpIHBhZ2VfZ2V0X25fcmVjcyhwYWdlKSwKKwkJCSh1bG9u Z2xvbmcpIGJ0cl9wYWdlX2dldF9pbmRleF9pZChwYWdlKSk7CiAJCXV0X2FkKDApOwogCX0KIH0K QEAgLTQwMDEsMTIgKzQwMTEsMzEgQEAgaWJ1Zl9kZWxldGUoCiAJCW9mZnNldHMgPSByZWNfZ2V0 X29mZnNldHMoCiAJCQlyZWMsIGluZGV4LCBvZmZzZXRzLCBVTElOVF9VTkRFRklORUQsICZoZWFw KTsKIAotCQkvKiBSZWZ1c2UgdG8gZGVsZXRlIHRoZSBsYXN0IHJlY29yZC4gKi8KLQkJdXRfYShw YWdlX2dldF9uX3JlY3MocGFnZSkgPiAxKTsKKwkJaWYgKHBhZ2VfZ2V0X25fcmVjcyhwYWdlKSA8 PSAxCisJCSAgICB8fCAhKFJFQ19JTkZPX0RFTEVURURfRkxBRworCQkJICYgcmVjX2dldF9pbmZv X2JpdHMocmVjLCBwYWdlX2lzX2NvbXAocGFnZSkpKSkgeworCQkJLyogUmVmdXNlIHRvIHB1cmdl IHRoZSBsYXN0IHJlY29yZCBvciBhCisJCQlyZWNvcmQgdGhhdCBoYXMgbm90IGJlZW4gbWFya2Vk IGZvciBkZWxldGlvbi4gKi8KKwkJCXV0X3ByaW50X3RpbWVzdGFtcChzdGRlcnIpOworCQkJZnB1 dHMoIiAgSW5ub0RCOiB1bmFibGUgdG8gcHVyZ2UgYSByZWNvcmRcbiIsCisJCQkgICAgICBzdGRl cnIpOworCQkJZnB1dHMoIklubm9EQjogdHVwbGUgIiwgc3RkZXJyKTsKKwkJCWR0dXBsZV9wcmlu dChzdGRlcnIsIGVudHJ5KTsKKwkJCWZwdXRzKCJcbiIKKwkJCSAgICAgICJJbm5vREI6IHJlY29y ZCAiLCBzdGRlcnIpOworCQkJcmVjX3ByaW50X25ldyhzdGRlcnIsIHJlYywgb2Zmc2V0cyk7CisJ CQlmcHJpbnRmKHN0ZGVyciwgIlxuc3BhY2UgJXUgb2Zmc2V0ICV1IgorCQkJCSIgKCV1IHJlY29y ZHMsIGluZGV4IGlkICVsbHUpXG4iCisJCQkJIklubm9EQjogU3VibWl0IGEgZGV0YWlsZWQgYnVn IHJlcG9ydCIKKwkJCQkiIHRvIGh0dHA6Ly9idWdzLm15c3FsLmNvbVxuIiwKKwkJCQkodW5zaWdu ZWQpIGJ1Zl9ibG9ja19nZXRfc3BhY2UoYmxvY2spLAorCQkJCSh1bnNpZ25lZCkgYnVmX2Jsb2Nr X2dldF9wYWdlX25vKGJsb2NrKSwKKwkJCQkodW5zaWduZWQpIHBhZ2VfZ2V0X25fcmVjcyhwYWdl KSwKKwkJCQkodWxvbmdsb25nKSBidHJfcGFnZV9nZXRfaW5kZXhfaWQocGFnZSkpOwogCi0JCS8q IFRoZSByZWNvcmQgc2hvdWxkIGhhdmUgYmVlbiBtYXJrZWQgZm9yIGRlbGV0aW9uLiAqLwotCQl1 dF9hZChSRUNfSU5GT19ERUxFVEVEX0ZMQUcKLQkJICAgICAgJiByZWNfZ2V0X2luZm9fYml0cyhy ZWMsIHBhZ2VfaXNfY29tcChwYWdlKSkpOworCQkJdXRfYWQoMCk7CisJCQlyZXR1cm47CisJCX0K IAogCQlsb2NrX3VwZGF0ZV9kZWxldGUoYmxvY2ssIHJlYyk7CiAKQEAgLTQwOTIsNiArNDEyMSw3 IEBAIGlidWZfcmVzdG9yZV9wb3MoCiAKIAkJZnByaW50ZihzdGRlcnIsICJJbm5vREI6IGlidWYg dHJlZSBva1xuIik7CiAJCWZmbHVzaChzdGRlcnIpOworCQl1dF9hZCgwKTsKIAl9CiAKIAlyZXR1 cm4oRkFMU0UpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9i dHIwYnRyLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwYnRyLmgJMjAxMS0x MS0yMCAyMDoxNzo0MSArMDAwMAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGJ0 ci5oCTIwMTItMDEtMjYgMTE6NTc6NTMgKzAwMDAKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk0LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0 cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChjKSAxOTk0LCAy MDEyLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgog CiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeSBpdCB1bmRlcgogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKQEAgLTkyLDYgKzky LDI2IEBAIGluc2VydC9kZWxldGUgYnVmZmVyIHdoZW4gdGhlIHJlY29yZCBpcwogYnVmZmVyIHdo ZW4gdGhlIHJlY29yZCBpcyBub3QgaW4gdGhlIGJ1ZmZlciBwb29sLiAqLwogI2RlZmluZSBCVFJf REVMRVRFCQk4MTkyCiAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKK1JlcG9ydCB0aGF0IGFuIGluZGV4IHBhZ2UgaXMg Y29ycnVwdGVkLiAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK2J0cl9jb3JydXB0aW9uX3JlcG9ydCgK Ky8qPT09PT09PT09PT09PT09PT09Ki8KKwljb25zdCBidWZfYmxvY2tfdCoJYmxvY2ssCS8qITwg aW46IGNvcnJ1cHRlZCBibG9jayAqLworCWNvbnN0IGRpY3RfaW5kZXhfdCoJaW5kZXgpCS8qITwg aW46IGluZGV4IHRyZWUgKi8KKwlVTklWX0NPTEQgX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOwor CisvKiogQXNzZXJ0IHRoYXQgYSBCLXRyZWUgcGFnZSBpcyBub3QgY29ycnVwdGVkLgorQHBhcmFt IGJsb2NrIGJ1ZmZlciBibG9jayBjb250YWluaW5nIGEgQi10cmVlIHBhZ2UKK0BwYXJhbSBpbmRl eCB0aGUgQi10cmVlIGluZGV4ICovCisjZGVmaW5lIGJ0cl9hc3NlcnRfbm90X2NvcnJ1cHRlZChi bG9jaywgaW5kZXgpCQkJXAorCWlmICgoaWJvb2wpICEhcGFnZV9pc19jb21wKGJ1Zl9ibG9ja19n ZXRfZnJhbWUoYmxvY2spKQlcCisJICAgICE9IGRpY3RfdGFibGVfaXNfY29tcCgoaW5kZXgpLT50 YWJsZSkpIHsJCVwKKwkJYnRyX2NvcnJ1cHRpb25fcmVwb3J0KGJsb2NrLCBpbmRleCk7CQlcCisJ CXV0X2Vycm9yOwkJCQkJXAorCX0KKwogI2lmZGVmIFVOSVZfQkxPQl9ERUJVRwogIyBpbmNsdWRl ICJ1dDByYnQuaCIKIC8qKiBBbiBpbmRleC0+YmxvYnMgZW50cnkgZm9yIGtlZXBpbmcgdHJhY2sg b2Ygb2ZmLXBhZ2UgY29sdW1uIHJlZmVyZW5jZXMgKi8KCj09PSBtb2RpZmllZCBmaWxlICdzdG9y YWdlL2lubm9iYXNlL2luY2x1ZGUvbXRyMGxvZy5pYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL210cjBsb2cuaWMJMjAxMS0xMi0yMyAxMzoxNzozNiArMDAwMAorKysgYi9zdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvbXRyMGxvZy5pYwkyMDEyLTAxLTI2IDExOjU3OjUzICswMDAwCkBA IC0xLDYgKzEsNiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5 NSwgMjAwOSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZl ZC4KK0NvcHlyaWdodCAoYykgMTk5NSwgMjAxMiwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRl cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlCkBAIC0yMTcsNiArMjE3LDcgQEAgbWxvZ193cml0ZV9pbml0aWFsX2xvZ19y ZWNvcmRfZmFzdCgKIAkJCQkiUGxlYXNlIHBvc3QgYSBidWcgcmVwb3J0IHRvICIKIAkJCQkiYnVn cy5teXNxbC5jb20uXG4iLAogCQkJCXR5cGUsIG9mZnNldCwgc3BhY2UpOworCQkJdXRfYWQoMCk7 CiAJCX0KIAl9CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2xvY2svbG9j azBsb2NrLmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2xvY2svbG9jazBsb2NrLmNjCTIwMTEt MTItMTkgMDg6NDM6MjggKzAwMDAKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9sb2NrL2xvY2swbG9j ay5jYwkyMDEyLTAxLTI3IDA0OjE4OjU1ICswMDAwCkBAIC0xLDYgKzEsNiBAQAogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NiwgMjAxMSwgT3JhY2xlIGFuZC9vciBp dHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5Niwg MjAxMiwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K IAogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC00NSw2ICs0 NSw3IEBAIENyZWF0ZWQgNS83LzE5OTYgSGVpa2tpIFR1dXJpCiAjaW5jbHVkZSAicm93MHR5cGVz LmgiIC8qIHNlbF9ub2RlX3QgKi8KICNpbmNsdWRlICJzcnYwbW9uLmgiCiAjaW5jbHVkZSAidXQw dmVjLmgiCisjaW5jbHVkZSAiYnRyMGJ0ci5oIgogCiAvKiBSZXN0cmljdHMgdGhlIGxlbmd0aCBv ZiBzZWFyY2ggd2Ugd2lsbCBkbyBpbiB0aGUgd2FpdHMtZm9yCiBncmFwaCBvZiB0cmFuc2FjdGlv bnMgKi8KQEAgLTE3NjAsNyArMTc2MSw3IEBAIGxvY2tfcmVjX2NyZWF0ZSgKIAlwYWdlX25vCT0g YnVmX2Jsb2NrX2dldF9wYWdlX25vKGJsb2NrKTsKIAlwYWdlID0gYmxvY2stPmZyYW1lOwogCi0J dXRfYWQoISFwYWdlX2lzX2NvbXAocGFnZSkgPT0gZGljdF90YWJsZV9pc19jb21wKGluZGV4LT50 YWJsZSkpOworCWJ0cl9hc3NlcnRfbm90X2NvcnJ1cHRlZChibG9jaywgaW5kZXgpOwogCiAJLyog SWYgcmVjIGlzIHRoZSBzdXByZW11bSByZWNvcmQsIHRoZW4gd2UgcmVzZXQgdGhlIGdhcCBhbmQK IAlMT0NLX1JFQ19OT1RfR0FQIGJpdHMsIGFzIGFsbCBsb2NrcyBvbiB0aGUgc3VwcmVtdW0gYXJl CkBAIC0xODg1LDYgKzE4ODYsNyBAQCBsb2NrX3JlY19lbnF1ZXVlX3dhaXRpbmcoCiAJCSAgICAg ICJJbm5vREI6IFN1Ym1pdCBhIGRldGFpbGVkIGJ1ZyByZXBvcnQiCiAJCSAgICAgICIgdG8gaHR0 cDovL2J1Z3MubXlzcWwuY29tXG4iLAogCQkgICAgICBzdGRlcnIpOworCQl1dF9hZCgwKTsKIAl9 CiAKIAkvKiBFbnF1ZXVlIHRoZSBsb2NrIHJlcXVlc3QgdGhhdCB3aWxsIHdhaXQgdG8gYmUgZ3Jh bnRlZCwgbm90ZSB0aGF0CkBAIC00MjM4LDYgKzQyNDAsNyBAQCBsb2NrX3RhYmxlX2VucXVldWVf d2FpdGluZygKIAkJICAgICAgIklubm9EQjogU3VibWl0IGEgZGV0YWlsZWQgYnVnIHJlcG9ydCIK IAkJICAgICAgIiB0byBodHRwOi8vYnVncy5teXNxbC5jb21cbiIsCiAJCSAgICAgIHN0ZGVycik7 CisJCXV0X2FkKDApOwogCX0KIAogCS8qIEVucXVldWUgdGhlIGxvY2sgcmVxdWVzdCB0aGF0IHdp bGwgd2FpdCB0byBiZSBncmFudGVkICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5v YmFzZS9wYWdlL3BhZ2UwcGFnZS5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2Uw cGFnZS5jYwkyMDExLTEyLTEyIDEyOjAzOjM0ICswMDAwCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uv cGFnZS9wYWdlMHBhZ2UuY2MJMjAxMi0wMS0yNiAxMTo1Nzo1MyArMDAwMApAQCAtMSw2ICsxLDYg QEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMpIDE5OTQsIDIwMTEsIE9y YWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmln aHQgKGMpIDE5OTQsIDIwMTIsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdo dHMgUmVzZXJ2ZWQuCiAKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZQpAQCAtNTQ5LDggKzU0OSw3IEBAIHBhZ2VfY29weV9yZWNfbGlzdF9lbmRfbm9fbG9ja3MoCiAJ CXBhZ2VfY3VyX21vdmVfdG9fbmV4dCgmY3VyMSk7CiAJfQogCi0JdXRfYSgoaWJvb2wpISFwYWdl X2lzX2NvbXAobmV3X3BhZ2UpCi0JICAgICA9PSBkaWN0X3RhYmxlX2lzX2NvbXAoaW5kZXgtPnRh YmxlKSk7CisJYnRyX2Fzc2VydF9ub3RfY29ycnVwdGVkKG5ld19ibG9jaywgaW5kZXgpOwogCXV0 X2EocGFnZV9pc19jb21wKG5ld19wYWdlKSA9PSBwYWdlX3JlY19pc19jb21wKHJlYykpOwogCXV0 X2EobWFjaF9yZWFkX2Zyb21fMihuZXdfcGFnZSArIFVOSVZfUEFHRV9TSVpFIC0gMTApID09ICh1 bGludCkKIAkgICAgIChwYWdlX2lzX2NvbXAobmV3X3BhZ2UpID8gUEFHRV9ORVdfSU5GSU1VTSA6 IFBBR0VfT0xEX0lORklNVU0pKTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNl L3Jvdy9yb3cwaW5zLmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5zLmNjCTIw MTEtMTItMTkgMDg6NDM6MjggKzAwMDAKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGlu cy5jYwkyMDEyLTAxLTI2IDExOjU3OjUzICswMDAwCkBAIC0xLDYgKzEsNiBAQAogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NiwgMjAxMSwgT3JhY2xlIGFuZC9vciBp dHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5Niwg MjAxMiwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K IAogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC0xMDcwLDcg KzEwNzAsNyBAQCByb3dfaW5zX2ZvcmVpZ25fY2hlY2tfb25fY29uc3RyYWludCgKIAkJCWZwdXRz KCJcbiIKIAkJCSAgICAgICJJbm5vREI6IFN1Ym1pdCBhIGRldGFpbGVkIGJ1ZyByZXBvcnQgdG8i CiAJCQkgICAgICAiIGh0dHA6Ly9idWdzLm15c3FsLmNvbVxuIiwgc3RkZXJyKTsKLQorCQkJdXRf YWQoMCk7CiAJCQllcnIgPSBEQl9TVUNDRVNTOwogCiAJCQlnb3RvIG5vbnN0YW5kYXJkX2V4aXRf ZnVuYzsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwc2VsLmNj JwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwc2VsLmNjCTIwMTEtMTItMjkgMTQ6MzI6 NDkgKzAwMDAKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHNlbC5jYwkyMDEyLTAxLTI2 IDExOjU3OjUzICswMDAwCkBAIC0xLDYgKzEsNiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAK LUNvcHlyaWdodCAoYykgMTk5NywgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4g QWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NywgMjAxMiwgT3JhY2xlIGFu ZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIENvcHlyaWdodCAoYykg MjAwOCwgR29vZ2xlIEluYy4KIAogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGNvbnRhaW4gbW9kaWZp Y2F0aW9ucyBjb250cmlidXRlZCBhbmQgY29weXJpZ2h0ZWQgYnkKQEAgLTMxMjMsNiArMzEyMyw3 IEBAIHJvd19zZWxfZ2V0X2NsdXN0X3JlY19mb3JfbXlzcWwoCiAJCQlmcHV0cygiXG4iCiAJCQkg ICAgICAiSW5ub0RCOiBTdWJtaXQgYSBkZXRhaWxlZCBidWcgcmVwb3J0IgogCQkJICAgICAgIiB0 byBodHRwOi8vYnVncy5teXNxbC5jb21cbiIsIHN0ZGVycik7CisJCQl1dF9hZCgwKTsKIAkJfQog CiAJCWNsdXN0X3JlYyA9IE5VTEw7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFz ZS9yb3cvcm93MHVtb2QuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1bW9kLmNj CTIwMTEtMTEtMTYgMTU6MzE6MDggKzAwMDAKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93 MHVtb2QuY2MJMjAxMi0wMS0yNiAxMTo1Nzo1MyArMDAwMApAQCAtMSw2ICsxLDYgQEAKIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMpIDE5OTcsIDIwMTEsIE9yYWNsZSBhbmQv b3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5 OTcsIDIwMTIsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2 ZWQuCiAKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtNTA5 LDYgKzUwOSw3IEBAIHJvd191bmRvX21vZF9kZWxfdW5tYXJrX3NlY19hbmRfdW5kb191cGQKIAkJ ZnB1dHMoIlxuIgogCQkgICAgICAiSW5ub0RCOiBTdWJtaXQgYSBkZXRhaWxlZCBidWcgcmVwb3J0 IgogCQkgICAgICAiIHRvIGh0dHA6Ly9idWdzLm15c3FsLmNvbVxuIiwgc3RkZXJyKTsKKwkJdXRf YWQoMCk7CiAJCWJyZWFrOwogCWNhc2UgUk9XX0ZPVU5EOgogCQlidHJfY3VyID0gYnRyX3BjdXJf Z2V0X2J0cl9jdXIoJnBjdXIpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uv cm93L3JvdzB1cGQuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1cGQuY2MJMjAx MS0xMS0yMCAyMDoxNzo0MSArMDAwMAorKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdXBk LmNjCTIwMTItMDEtMjYgMTE6NTc6NTMgKzAwMDAKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk2LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0 cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChjKSAxOTk2LCAy MDEyLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgog CiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeSBpdCB1bmRlcgogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKQEAgLTE3MjMsNiAr MTcyMyw3IEBAIHJvd191cGRfc2VjX2luZGV4X2VudHJ5KAogCQlmcHV0cygiXG4iCiAJCSAgICAg ICJJbm5vREI6IFN1Ym1pdCBhIGRldGFpbGVkIGJ1ZyByZXBvcnQiCiAJCSAgICAgICIgdG8gaHR0 cDovL2J1Z3MubXlzcWwuY29tXG4iLCBzdGRlcnIpOworCQl1dF9hZCgwKTsKIAkJYnJlYWs7CiAJ Y2FzZSBST1dfRk9VTkQ6CiAJCS8qIERlbGV0ZSBtYXJrIHRoZSBvbGQgaW5kZXggcmVjb3JkOyBp dCBjYW4gYWxyZWFkeSBiZQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2 L3NydjBzcnYuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzcnYuY2MJMjAxMS0x Mi0yOCAwODozNzowOCArMDAwMAorKysgYi9zdG9yYWdlL2lubm9iYXNlL3Nydi9zcnYwc3J2LmNj CTIwMTItMDEtMjYgMTE6NTc6NTMgKzAwMDAKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk1LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBh ZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChjKSAxOTk1LCAyMDEy LCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogQ29w eXJpZ2h0IChjKSAyMDA4LCAyMDA5IEdvb2dsZSBJbmMuCiBDb3B5cmlnaHQgKGMpIDIwMDksIFBl cmNvbmEgSW5jLgogCkBAIC0xNTk0LDYgKzE1OTQsNyBAQCBsb29wOgogCQkJIklubm9EQjogUGxl YXNlIHN1Ym1pdCBhIGJ1ZyByZXBvcnQiCiAJCQkiIHRvIGh0dHA6Ly9idWdzLm15c3FsLmNvbVxu IiwKIAkJCW9sZF9sc24sIG5ld19sc24pOworCQl1dF9hZCgwKTsKIAl9CiAKIAlvbGRfbHNuID0g bmV3X2xzbjsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3RyeC90cngwcHVy Z2UuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDBwdXJnZS5jYwkyMDExLTExLTMw IDEwOjA5OjEyICswMDAwCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDBwdXJnZS5jYwky MDEyLTAxLTI2IDExOjU3OjUzICswMDAwCkBAIC0xLDYgKzEsNiBAQAogLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NiwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZm aWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NiwgMjAxMiwg T3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC02MDMsNiArNjAzLDcg QEAgdHJ4X3B1cmdlX3JzZWdfZ2V0X25leHRfaGlzdG9yeV9sb2coCiAJCQkJIklubm9EQjogcmVw b3J0LCBhbmQgc3VibWl0IGl0IgogCQkJCSIgdG8gaHR0cDovL2J1Z3MubXlzcWwuY29tXG4iLAog CQkJCSh1bG9uZykgdHJ4X3N5cy0+cnNlZ19oaXN0b3J5X2xlbik7CisJCQl1dF9hZCgwKTsKIAkJ fQogCiAJCW11dGV4X2V4aXQoJnRyeF9zeXMtPm11dGV4KTsKCj09PSBtb2RpZmllZCBmaWxlICdz dG9yYWdlL2lubm9iYXNlL3RyeC90cngwcmVjLmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Ry eC90cngwcmVjLmNjCTIwMTEtMTEtMDggMTA6MzI6MjMgKzAwMDAKKysrIGIvc3RvcmFnZS9pbm5v YmFzZS90cngvdHJ4MHJlYy5jYwkyMDEyLTAxLTI2IDExOjU3OjUzICswMDAwCkBAIC0xLDYgKzEs NiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NiwgMjAxMSwg T3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHly aWdodCAoYykgMTk5NiwgMjAxMiwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJp Z2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlCkBAIC0xMDA5LDYgKzEwMDksNyBAQCB0cnhfdW5kb191cGRhdGVfcmVjX2dldF91cGRhdGUo CiAJCQlmcHJpbnRmKHN0ZGVyciwgIlxuIgogCQkJCSJJbm5vREI6IG5fZmllbGRzID0gJWx1LCBp ID0gJWx1LCBwdHIgJXBcbiIsCiAJCQkJKHVsb25nKSBuX2ZpZWxkcywgKHVsb25nKSBpLCBwdHIp OworCQkJdXRfYWQoMCk7CiAJCQkqdXBkID0gTlVMTDsKIAkJCXJldHVybihOVUxMKTsKIAkJfQoK PT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvbXlpc2FtbXJnL2hhX215aXNhbW1yZy5jYycKLS0t IGEvc3RvcmFnZS9teWlzYW1tcmcvaGFfbXlpc2FtbXJnLmNjCTIwMTEtMTEtMTcgMTM6NDE6Mjgg KzAwMDAKKysrIGIvc3RvcmFnZS9teWlzYW1tcmcvaGFfbXlpc2FtbXJnLmNjCTIwMTItMDEtMjcg MDg6MTY6NDMgKzAwMDAKQEAgLTE0NjksMzEgKzE0NjksMzYgQEAgdm9pZCBoYV9teWlzYW1tcmc6 OnVwZGF0ZV9jcmVhdGVfaW5mbyhIQQogCiAgIGlmICghKGNyZWF0ZV9pbmZvLT51c2VkX2ZpZWxk cyAmIEhBX0NSRUFURV9VU0VEX1VOSU9OKSkKICAgewotICAgIE1ZUkdfVEFCTEUgKm9wZW5fdGFi bGU7CisgICAgVEFCTEVfTElTVCAqY2hpbGRfdGFibGU7CiAgICAgVEhEICp0aGQ9Y3VycmVudF90 aGQ7CiAKICAgICBjcmVhdGVfaW5mby0+bWVyZ2VfbGlzdC5uZXh0PSAmY3JlYXRlX2luZm8tPm1l cmdlX2xpc3QuZmlyc3Q7CiAgICAgY3JlYXRlX2luZm8tPm1lcmdlX2xpc3QuZWxlbWVudHM9MDsK IAotICAgIGZvciAob3Blbl90YWJsZT1maWxlLT5vcGVuX3RhYmxlcyA7Ci0JIG9wZW5fdGFibGUg IT0gZmlsZS0+ZW5kX3RhYmxlIDsKLQkgb3Blbl90YWJsZSsrKQorICAgIGlmIChjaGlsZHJlbl9s ICE9IE5VTEwpCiAgICAgewotICAgICAgVEFCTEVfTElTVCAqcHRyOwotICAgICAgTEVYX1NUUklO RyBkYiwgbmFtZTsKLSAgICAgIExJTlRfSU5JVChkYi5zdHIpOwotCi0gICAgICBpZiAoIShwdHIg PSAoVEFCTEVfTElTVCAqKSB0aGQtPmNhbGxvYyhzaXplb2YoVEFCTEVfTElTVCkpKSkKLQlnb3Rv IGVycjsKLSAgICAgIHNwbGl0X2ZpbGVfbmFtZShvcGVuX3RhYmxlLT50YWJsZS0+ZmlsZW5hbWUs ICZkYiwgJm5hbWUpOwotICAgICAgaWYgKCEocHRyLT50YWJsZV9uYW1lPSB0aGQtPnN0cm1ha2Uo bmFtZS5zdHIsIG5hbWUubGVuZ3RoKSkpCi0JZ290byBlcnI7Ci0gICAgICBpZiAoZGIubGVuZ3Ro ICYmICEocHRyLT5kYj0gdGhkLT5zdHJtYWtlKGRiLnN0ciwgZGIubGVuZ3RoKSkpCi0JZ290byBl cnI7Ci0KLSAgICAgIGNyZWF0ZV9pbmZvLT5tZXJnZV9saXN0LmVsZW1lbnRzKys7Ci0gICAgICAo KmNyZWF0ZV9pbmZvLT5tZXJnZV9saXN0Lm5leHQpID0gcHRyOwotICAgICAgY3JlYXRlX2luZm8t Pm1lcmdlX2xpc3QubmV4dD0gJnB0ci0+bmV4dF9sb2NhbDsKKyAgICAgIGZvciAoY2hpbGRfdGFi bGU9IGNoaWxkcmVuX2w7OworICAgICAgICAgICBjaGlsZF90YWJsZT0gY2hpbGRfdGFibGUtPm5l eHRfZ2xvYmFsKQorICAgICAgeworICAgICAgICBUQUJMRV9MSVNUICpwdHI7CisKKyAgICAgICAg aWYgKCEocHRyPSAoVEFCTEVfTElTVCAqKSB0aGQtPmNhbGxvYyhzaXplb2YoVEFCTEVfTElTVCkp KSkKKyAgICAgICAgICBnb3RvIGVycjsKKworICAgICAgICBpZiAoIShwdHItPnRhYmxlX25hbWU9 IHRoZC0+c3RybWFrZShjaGlsZF90YWJsZS0+dGFibGVfbmFtZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRfdGFibGUtPnRhYmxlX25hbWVfbGVuZ3Ro KSkpCisgICAgICAgICAgZ290byBlcnI7CisgICAgICAgIGlmIChjaGlsZF90YWJsZS0+ZGIgJiYg IShwdHItPmRiPSB0aGQtPnN0cm1ha2UoY2hpbGRfdGFibGUtPmRiLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjaGlsZF90YWJsZS0+ZGJfbGVuZ3RoKSkpCisgICAgICAgICAg Z290byBlcnI7CisKKyAgICAgICAgY3JlYXRlX2luZm8tPm1lcmdlX2xpc3QuZWxlbWVudHMrKzsK KyAgICAgICAgKCpjcmVhdGVfaW5mby0+bWVyZ2VfbGlzdC5uZXh0KT0gcHRyOworICAgICAgICBj cmVhdGVfaW5mby0+bWVyZ2VfbGlzdC5uZXh0PSAmcHRyLT5uZXh0X2xvY2FsOworCisgICAgICAg IGlmICgmY2hpbGRfdGFibGUtPm5leHRfZ2xvYmFsID09IGNoaWxkcmVuX2xhc3RfbCkKKyAgICAg ICAgICBicmVhazsKKyAgICAgIH0KICAgICB9CiAgICAgKmNyZWF0ZV9pbmZvLT5tZXJnZV9saXN0 Lm5leHQ9MDsKICAgfQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvcGVyZnNjaGVtYS9wZnNf aW5zdHJfY2xhc3MuY2MnCi0tLSBhL3N0b3JhZ2UvcGVyZnNjaGVtYS9wZnNfaW5zdHJfY2xhc3Mu Y2MJMjAxMi0wMS0yNCAyMzo0MjozNiArMDAwMAorKysgYi9zdG9yYWdlL3BlcmZzY2hlbWEvcGZz X2luc3RyX2NsYXNzLmNjCTIwMTItMDEtMjUgMjI6Mzc6NTUgKzAwMDAKQEAgLTQ3LDcgKzQ3LDEz IEBACiAqLwogbXlfYm9vbCBwZnNfZW5hYmxlZD0gVFJVRTsKIAotRFlOQU1JQ19BUlJBWSBwZnNf aW5zdHJfaW5pdF9hcnJheTsKKy8qKgorICBQRlNfSU5TVFJVTUVOVCBvcHRpb24gc2V0dGluZ3Mg YXJyYXkgYW5kIGFzc29jaWF0ZWQgc3RhdGUgdmFyaWFibGUgdG8KKyAgc2VyaWFsaXplIGFjY2Vz cyBkdXJpbmcgc2h1dGRvd24uCisgKi8KK0RZTkFNSUNfQVJSQVkgcGZzX2luc3RyX2NvbmZpZ19h cnJheTsKK2ludCBwZnNfaW5zdHJfY29uZmlnX3N0YXRlPSBQRlNfSU5TVFJfQ09ORklHX05PVF9J TklUSUFMSVpFRDsKKwogc3RhdGljIHZvaWQgY29uZmlndXJlX2luc3RyX2NsYXNzKFBGU19pbnN0 cl9jbGFzcyAqZW50cnkpOwogCiBzdGF0aWMgdm9pZCBpbml0X2luc3RyX2NsYXNzKFBGU19pbnN0 cl9jbGFzcyAqa2xhc3MsCkBAIC02MTksMTAgKzYyNSwxMCBAQCBzdGF0aWMgdm9pZCBjb25maWd1 cmVfaW5zdHJfY2xhc3MoUEZTX2luCiB7CiAgIHVpbnQgbWF0Y2hfbGVuZ3RoPSAwOyAvKiBsZW5n dGggb2YgbWF0Y2hpbmcgcGF0dGVybiAqLwogCi0gIGZvciAodWludCBpPSAwOyBpIDwgcGZzX2lu c3RyX2luaXRfYXJyYXkuZWxlbWVudHM7IGkrKykKKyAgZm9yICh1aW50IGk9IDA7IGkgPCBwZnNf aW5zdHJfY29uZmlnX2FycmF5LmVsZW1lbnRzOyBpKyspCiAgIHsKLSAgICBQRlNfaW5zdHJfaW5p dCogZTsKLSAgICBnZXRfZHluYW1pYygmcGZzX2luc3RyX2luaXRfYXJyYXksICh1Y2hhciopJmUs IGkpOworICAgIFBGU19pbnN0cl9jb25maWcqIGU7CisgICAgZ2V0X2R5bmFtaWMoJnBmc19pbnN0 cl9jb25maWdfYXJyYXksICh1Y2hhciopJmUsIGkpOwogCiAgICAgLyoqCiAgICAgICBDb21wYXJl IGNsYXNzIG5hbWUgdG8gYWxsIGNvbmZpZ3VyYXRpb24gZW50cmllcy4gSW4gY2FzZSBvZiBtdWx0 aXBsZQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvcGVyZnNjaGVtYS9wZnNfaW5zdHJfY2xh c3MuaCcKLS0tIGEvc3RvcmFnZS9wZXJmc2NoZW1hL3Bmc19pbnN0cl9jbGFzcy5oCTIwMTItMDEt MjQgMjM6NDI6MzYgKzAwMDAKKysrIGIvc3RvcmFnZS9wZXJmc2NoZW1hL3Bmc19pbnN0cl9jbGFz cy5oCTIwMTItMDEtMjUgMjI6Mzc6NTUgKzAwMDAKQEAgLTg3LDcgKzg3LDcgQEAgZW51bSBQRlNf Y2xhc3NfdHlwZQogfTsKIAogLyoqIFVzZXItZGVmaW5lZCBpbnN0cnVtZW50IGNvbmZpZ3VyYXRp b24uICovCi1zdHJ1Y3QgUEZTX2luc3RyX2luaXQKK3N0cnVjdCBQRlNfaW5zdHJfY29uZmlnCiB7 CiAgIC8qIEluc3RydW1lbnQgbmFtZS4gKi8KICAgY2hhciAqbV9uYW1lOwpAQCAtOTksNyArOTks MTIgQEAgc3RydWN0IFBGU19pbnN0cl9pbml0CiAgIGJvb2wgbV90aW1lZDsKIH07CiAKLWV4dGVy biBEWU5BTUlDX0FSUkFZIHBmc19pbnN0cl9pbml0X2FycmF5OworZXh0ZXJuIERZTkFNSUNfQVJS QVkgcGZzX2luc3RyX2NvbmZpZ19hcnJheTsKK2V4dGVybiBpbnQgcGZzX2luc3RyX2NvbmZpZ19z dGF0ZTsKKworc3RhdGljIGNvbnN0IGludCBQRlNfSU5TVFJfQ09ORklHX05PVF9JTklUSUFMSVpF RD0gMDsKK3N0YXRpYyBjb25zdCBpbnQgUEZTX0lOU1RSX0NPTkZJR19BTExPQ0FURUQ9IDE7Citz dGF0aWMgY29uc3QgaW50IFBGU19JTlNUUl9DT05GSUdfREVBTExPQ0FURUQ9IDI7CiAKIHN0cnVj dCBQRlNfdGhyZWFkOwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9wZXJmc2NoZW1hL3Bm c19zZXJ2ZXIuY2MnCi0tLSBhL3N0b3JhZ2UvcGVyZnNjaGVtYS9wZnNfc2VydmVyLmNjCTIwMTIt MDEtMjQgMjM6NDI6MzYgKzAwMDAKKysrIGIvc3RvcmFnZS9wZXJmc2NoZW1hL3Bmc19zZXJ2ZXIu Y2MJMjAxMi0wMS0yNiAxNzo0OTowMSArMDAwMApAQCAtNDYsNiArNDYsNyBAQCBzdGF0aWMgdm9p ZCBkZXN0cm95X3Bmc190aHJlYWQodm9pZCAqa2V5CiBDX01PREVfRU5ECiAKIHN0YXRpYyB2b2lk IGNsZWFudXBfcGVyZm9ybWFuY2Vfc2NoZW1hKHZvaWQpOwordm9pZCBjbGVhbnVwX2luc3RydW1l bnRfY29uZmlnKHZvaWQpOwogCiBzdHJ1Y3QgUFNJX2Jvb3RzdHJhcCoKIGluaXRpYWxpemVfcGVy Zm9ybWFuY2Vfc2NoZW1hKGNvbnN0IFBGU19nbG9iYWxfcGFyYW0gKnBhcmFtKQpAQCAtNjUsNiAr NjYsNyBAQCBpbml0aWFsaXplX3BlcmZvcm1hbmNlX3NjaGVtYShjb25zdCBQRlNfCiAKICAgaW5p dF90aW1lcnMoKTsKICAgUEZTX2F0b21pYzo6aW5pdCgpOworCiAgIGluaXRfZXZlbnRfbmFtZV9z aXppbmcocGFyYW0pOwogICByZWdpc3Rlcl9nbG9iYWxfY2xhc3NlcygpOwogCkBAIC0xNTAsNiAr MTUyLDggQEAgc3RhdGljIHZvaWQgZGVzdHJveV9wZnNfdGhyZWFkKHZvaWQgKmtleQogCiBzdGF0 aWMgdm9pZCBjbGVhbnVwX3BlcmZvcm1hbmNlX3NjaGVtYSh2b2lkKQogeworICBjbGVhbnVwX2lu c3RydW1lbnRfY29uZmlnKCk7CisvKiAgRGlzYWJsZWQ6IEJ1ZyM1NjY2CiAgIGNsZWFudXBfaW5z dHJ1bWVudHMoKTsKICAgY2xlYW51cF9zeW5jX2NsYXNzKCk7CiAgIGNsZWFudXBfdGhyZWFkX2Ns YXNzKCk7CkBAIC0xNzQsMTIgKzE3OCwxNCBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwX3BlcmZvcm1h bmNlX3NjaGVtYSh2CiAgIGNsZWFudXBfYWNjb3VudCgpOwogICBjbGVhbnVwX2FjY291bnRfaGFz aCgpOwogICBQRlNfYXRvbWljOjpjbGVhbnVwKCk7CisqLwogfQogCiB2b2lkIHNodXRkb3duX3Bl cmZvcm1hbmNlX3NjaGVtYSh2b2lkKQogewogICBwZnNfaW5pdGlhbGl6ZWQ9IGZhbHNlOwogICBj bGVhbnVwX3BlcmZvcm1hbmNlX3NjaGVtYSgpOworI2lmIDAKICAgLyoKICAgICBCZSBjYXJlZnVs IHRvIG5vdCBkZWxldGUgdW4taW5pdGlhbGl6ZWQga2V5cywKICAgICB0aGlzIHdvdWxkIGFmZmVj dCBrZXkgMCwgd2hpY2ggaXMgVEhSX0tFWV9teXN5cywKQEAgLTE5MCw2ICsxOTYsNyBAQCB2b2lk IHNodXRkb3duX3BlcmZvcm1hbmNlX3NjaGVtYSh2b2lkKQogICAgIHB0aHJlYWRfa2V5X2RlbGV0 ZShUSFJfUEZTKTsKICAgICBUSFJfUEZTX2luaXRpYWxpemVkPSBmYWxzZTsKICAgfQorI2VuZGlm CiB9CiAKIC8qKgpAQCAtMTk4LDcgKzIwNSwyMSBAQCB2b2lkIHNodXRkb3duX3BlcmZvcm1hbmNl X3NjaGVtYSh2b2lkKQogKi8KIHZvaWQgaW5pdF9wZnNfaW5zdHJ1bWVudF9hcnJheSgpCiB7Ci0g IG15X2luaXRfZHluYW1pY19hcnJheSgmcGZzX2luc3RyX2luaXRfYXJyYXksIHNpemVvZihQRlNf aW5zdHJfaW5pdCopLCAxMCwgMTApOworICBteV9pbml0X2R5bmFtaWNfYXJyYXkoJnBmc19pbnN0 cl9jb25maWdfYXJyYXksIHNpemVvZihQRlNfaW5zdHJfY29uZmlnKiksIDEwLCAxMCk7CisgIHBm c19pbnN0cl9jb25maWdfc3RhdGU9ICBQRlNfSU5TVFJfQ09ORklHX0FMTE9DQVRFRDsKK30KKwor LyoqCisgIERlYWxsb2NhdGUgdGhlIFBGU19JTlNUUlVNRU5UIGFycmF5LiBVc2UgYW4gYXRvbWlj IGNvbXBhcmUtYW5kLXN3YXAgdG8gZW5zdXJlCisgIHRoYXQgaXQgaXMgZGVhbGxvY2F0ZWQgb25s eSBvbmNlIGluIHRoZSBjaGFvdGljIGVudmlyb25tZW50IG9mIHNlcnZlciBzaHV0ZG93bi4KKyov Cit2b2lkIGNsZWFudXBfaW5zdHJ1bWVudF9jb25maWcoKQoreworICBpbnQgZGVzaXJlZF9zdGF0 ZT0gUEZTX0lOU1RSX0NPTkZJR19BTExPQ0FURUQ7CisgIAorICAvKiBJZ25vcmUgaWYgYW5vdGhl ciB0aHJlYWQgaGFzIGFscmVhZHkgZGVhbGxvY2F0ZWQgdGhlIGFycmF5ICovCisgIGlmIChteV9h dG9taWNfY2FzMzIoJnBmc19pbnN0cl9jb25maWdfc3RhdGUsICZkZXNpcmVkX3N0YXRlLCBQRlNf SU5TVFJfQ09ORklHX0RFQUxMT0NBVEVEKSkKKyAgICBkZWxldGVfZHluYW1pYygmcGZzX2luc3Ry X2NvbmZpZ19hcnJheSk7CiB9CiAKIC8qKgpAQCAtMjE3LDEyICsyMzgsMTIgQEAgaW50IGFkZF9w ZnNfaW5zdHJfdG9fYXJyYXkoY29uc3QgY2hhciogbgogICBpbnQgdmFsdWVfbGVuZ3RoPSBzdHJs ZW4odmFsdWUpOwogCiAgIC8qIEFsbG9jYXRlIHN0cnVjdHVyZSBwbHVzIHN0cmluZyBidWZmZXJz IHBsdXMgbnVsbCB0ZXJtaW5hdG9ycyAqLwotICBQRlNfaW5zdHJfaW5pdCogZSA9IChQRlNfaW5z dHJfaW5pdCopbXlfbWFsbG9jKHNpemVvZihQRlNfaW5zdHJfaW5pdCkKKyAgUEZTX2luc3RyX2Nv bmZpZyogZSA9IChQRlNfaW5zdHJfY29uZmlnKilteV9tYWxsb2Moc2l6ZW9mKFBGU19pbnN0cl9j b25maWcpCiAgICAgICAgICAgICAgICAgICAgICAgICsgbmFtZV9sZW5ndGggKyAxICsgdmFsdWVf bGVuZ3RoICsgMSwgTVlGKE1ZX1dNRSkpOwogICBpZiAoIWUpIHJldHVybiAxOwogICAKICAgLyog Q29weSB0aGUgaW5zdHJ1bWVudCBuYW1lICovCi0gIGUtPm1fbmFtZT0gKGNoYXIqKWUgKyBzaXpl b2YoUEZTX2luc3RyX2luaXQpOworICBlLT5tX25hbWU9IChjaGFyKillICsgc2l6ZW9mKFBGU19p bnN0cl9jb25maWcpOwogICBtZW1jcHkoZS0+bV9uYW1lLCBuYW1lLCBuYW1lX2xlbmd0aCk7CiAg IGUtPm1fbmFtZV9sZW5ndGg9IG5hbWVfbGVuZ3RoOwogICBlLT5tX25hbWVbbmFtZV9sZW5ndGhd PSAnXDAnOwpAQCAtMjU4LDcgKzI3OSw3IEBAIGludCBhZGRfcGZzX2luc3RyX3RvX2FycmF5KGNv bnN0IGNoYXIqIG4KICAgfQogCiAgIC8qIEFkZCB0byB0aGUgYXJyYXkgb2YgZGVmYXVsdCBzdGFy dHVwIG9wdGlvbnMgKi8KLSAgaWYgKGluc2VydF9keW5hbWljKCZwZnNfaW5zdHJfaW5pdF9hcnJh eSwgJmUpKQorICBpZiAoaW5zZXJ0X2R5bmFtaWMoJnBmc19pbnN0cl9jb25maWdfYXJyYXksICZl KSkKICAgewogICAgIG15X2ZyZWUoZSk7CiAgICAgcmV0dXJuIDE7CgpObyBidW5kbGUgKHJlYXNv bjogdXNlbGVzcyBmb3IgcHVzaCBlbWFpbHMpLg==