Name: series-workflown44pd Phase: Failed StartedAt: 2026-07-22 13:15:10 +0000 UTC FinishedAt: 2026-07-22 13:29:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflown44pd[0] Phase: Succeeded StartedAt: 2026-07-22 13:15:10 +0000 UTC FinishedAt: 2026-07-22 13:29:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflown44pd[0].run-triage Phase: Succeeded StartedAt: 2026-07-22 13:15:10 +0000 UTC FinishedAt: 2026-07-22 13:29:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEzOjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGJ1aWxkIHN5c3RlbSBmb3IgQlBGIHNlbGZ0ZXN0cyAoTWFrZWZpbGVzIGFuZCBhIHNoZWxsIHNjcmlwdCkuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEzOjI5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGUwY2E5MGJiN2ZhMzczZWM4ZjdlNGZmMTc2NGY4MWVhYmNjYTk2NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDIyIDEzOjI5OjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZVxuaW5kZXggYjY0MmVlNDg5ZWE2NDAuLmEzYWI1MjVmN2RmYWJiIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbkBAIC0xLDk2ICYjNDM7MSw0NCBAQFxuICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I1xuJiM0MzsjIEJQRiBzZWxmdGVzdHMgYnVpbGQuXG4mIzQzOyNcbiYjNDM7IyBUaGUgYnVpbGQgaXMgc3BsaXQgaW4gdHdvIGxheWVyczpcbiYjNDM7I1xuJiM0MzsjICAgTWFrZWZpbGUgKHRoaXMgZmlsZSlcbiYjNDM7IyAgICAgICBFdmVyeXRoaW5nIHRoYXQgZXhpc3RzIG9uY2U6IGtub2JzIGFuZCB0b29sY2hhaW4gc2V0dXAsIGxpYmJwZiAvXG4mIzQzOyMgICAgICAgYnBmdG9vbCAvIHJlc29sdmVfYnRmaWRzIHN1Yi1idWlsZHMsIHZtbGludXguaCwgc2lnbmluZyBrZXlzLFxuJiM0MzsjICAgICAgIGdlbmVyYXRlZCB0ZXN0cy5oIGhlYWRlcnMsIHNoYXJlZCBoZWxwZXIgb2JqZWN0cywgc3RhbmRhbG9uZSB0ZXN0XG4mIzQzOyMgICAgICAgYmluYXJpZXMgKGJlbmNoLCB2ZXJpc3RhdCwgdGVzdF92ZXJpZmllciwgeHNrKiwgLi4uKSwga2VybmVsIHRlc3RcbiYjNDM7IyAgICAgICBtb2R1bGVzLCBkb2NzLCBhbmQgdGhlIGtzZWxmdGVzdCBsaWIubWsgcnVuL2luc3RhbGwvY2xlYW5cbiYjNDM7IyAgICAgICBjb250cmFjdC5cbiYjNDM7I1xuJiM0MzsjICAgTWFrZWZpbGUucnVubmVyXG4mIzQzOyMgICAgICAgT25lIHRlc3QtcnVubmVyIGluc3RhbmNlICh0ZXN0X3Byb2dzLCB0ZXN0X3Byb2dzLVx1MDAzY2ZsYXZvclx1MDAzZSxcbiYjNDM7IyAgICAgICB0ZXN0X21hcHMpOiBCUEYgb2JqZWN0cywgc2tlbGV0b24gaGVhZGVycywgdGVzdCBvYmplY3RzIGFuZCB0aGVcbiYjNDM7IyAgICAgICBmaW5hbCBydW5uZXIgYmluYXJ5LiBJbnZva2VkIGZyb20gaGVyZSBvbmNlIHBlciBpbnN0YW5jZTsgZWFjaFxuJiM0MzsjICAgICAgIGludm9jYXRpb24gaXMgYW4gaW5kZXBlbmRlbnQgc2luZ2xlLWZsYXZvciBuYW1lc3BhY2UsIHNvIHRoZVxuJiM0MzsjICAgICAgIHJ1bm5lciBpcyBwbGFpbiBtYWtlIHdpdGhvdXQgJCQtZXNjYXBpbmcgb3IgZXZhbC5cbiYjNDM7I1xuJiM0MzsjICAgZ2VuX2JwZl9za2VsLnNoXG4mIzQzOyMgICAgICAgTGlua3MgQlBGIG9iamVjdHMgdmlhIGJwZnRvb2wgYW5kIGdlbmVyYXRlcyAobGlnaHQpIHNrZWxldG9ucztcbiYjNDM7IyAgICAgICBvbmUgc2NyaXB0IGluc3RlYWQgb2YgZm91ciBuZWFyLWlkZW50aWNhbCBtYWtlIHJlY2lwZXMuXG4mIzQzOyNcbiYjNDM7IyBTaGFyZWQgZGVmaW5pdGlvbnMgKHBhdGhzLCBmbGFncywgcGVybWlzc2l2ZS1tb2RlIGhlbHBlcnMpIGxpdmUgaW5cbiYjNDM7IyBNYWtlZmlsZS5idWlsZHZhcnMsIGluY2x1ZGVkIGJ5IGJvdGggbGF5ZXJzLlxuJiM0MztcbiBpbmNsdWRlIC4uLy4uLy4uL2J1aWxkL0J1aWxkLmluY2x1ZGVcbiBpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuYXJjaFxuIGluY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5pbmNsdWRlXG4gXG4tQ1hYID89ICQoQ1JPU1NfQ09NUElMRSlnJiM0MzsmIzQzO1xuLU9CSkNPUFkgPz0gJChDUk9TU19DT01QSUxFKW9iamNvcHlcbi1cbi1DVVJESVIgOj0gJChhYnNwYXRoIC4pXG4tVE9PTFNESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uKVxuLUxJQkRJUiA6PSAkKFRPT0xTRElSKS9saWJcbi1CUEZESVIgOj0gJChMSUJESVIpL2JwZlxuLVRPT0xTSU5DRElSIDo9ICQoVE9PTFNESVIpL2luY2x1ZGVcbi1UT09MU0FSQ0hJTkNESVIgOj0gJChUT09MU0RJUikvYXJjaC8kKFNSQ0FSQ0gpL2luY2x1ZGVcbi1CUEZUT09MRElSIDo9ICQoVE9PTFNESVIpL2JwZi9icGZ0b29sXG4tQVBJRElSIDo9ICQoVE9PTFNJTkNESVIpL3VhcGlcbi1pZm5lcSAoJChPKSwpXG4tR0VORElSIDo9ICQoTykvaW5jbHVkZS9nZW5lcmF0ZWRcbi1lbHNlXG4tR0VORElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLi8uLi9pbmNsdWRlL2dlbmVyYXRlZClcbi1lbmRpZlxuLUdFTkhEUiA6PSAkKEdFTkRJUikvYXV0b2NvbmYuaFxuLVBLR19DT05GSUcgPz0gJChDUk9TU19DT01QSUxFKXBrZy1jb25maWdcbi1cbi1pZm5lcSAoJCh3aWxkY2FyZCAkKEdFTkhEUikpLClcbi0gIEdFTkZMQUdTIDo9IC1ESEFWRV9HRU5IRFJcbiYjNDM7IyBUaGVzZSBwcm9iZXMgZ2F0ZSB0aGUgZmxhdm9yIGxpc3QsIHdoaWNoIG11c3QgYmUgZmluYWwgYmVmb3JlIGxpYi5tayBpc1xuJiM0MzsjIGluY2x1ZGVkOyBrZWVwIHZhbHVlcyBjb25zaXN0ZW50IHdpdGggTWFrZWZpbGUuYnVpbGR2YXJzLlxuJiM0MztpZmVxICgkKG9yaWdpbiBCUEZfR0NDKSx1bmRlZmluZWQpXG4mIzQzO0JQRl9HQ0MgOj0gJChzaGVsbCBjb21tYW5kIC12IGJwZi1nY2M7KVxuIGVuZGlmXG4tXG4tQlBGX0dDQ1x0XHQ/PSAkKHNoZWxsIGNvbW1hbmQgLXYgYnBmLWdjYzspXG4taWZkZWYgQVNBTlxuLVNBTl9DRkxBR1MgXHQ/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcbi1lbHNlXG4tU0FOX0NGTEFHU1x0Pz1cbi1lbmRpZlxuLVNBTl9MREZMQUdTXHQ/PSAkKFNBTl9DRkxBR1MpXG4tUkVMRUFTRVx0XHQ/PVxuLU9QVF9GTEFHU1x0Pz0gJChpZiAkKFJFTEVBU0UpLC1PMiwtTzApXG4tXG4tTElCRUxGX0NGTEFHU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWNmbGFncyAyXHUwMDNlL2Rldi9udWxsKVxuLUxJQkVMRl9MSUJTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyXHUwMDNlL2Rldi9udWxsIHx8IGVjaG8gLWxlbGYpXG4tXG4tU0tJUF9ET0NTXHQ/PVxuLVNLSVBfTExWTVx0Pz1cbi1TS0lQX0xJQkJGRFx0Pz1cbi1TS0lQX0NSWVBUT1x0Pz1cbi1cbi0jIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxuLSMgYmVuY2htYXJrIGNvbXBpbGF0aW9uIGZhaWx1cmUgaXMgZmF0YWwuIFNldCB0byAwIHRvIHRvbGVyYXRlIGZhaWx1cmVzXG4tIyBhbmQgY29udGludWUgYnVpbGRpbmcgdGhlIHJlbWFpbmluZyB0ZXN0cy5cbi1CUEZfU1RSSUNUX0JVSUxEID89IDFcbi1QRVJNSVNTSVZFIDo9ICQoZmlsdGVyIDAsJChCUEZfU1RSSUNUX0JVSUxEKSlcbi1cbi1pZmVxICgkKHNyY3RyZWUpLClcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKENVUkRJUikpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLWVuZGlmXG4tXG4tQ09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMVx0XHRcdFx0XFxcbi1cdCAgLVdhbGwgLVdlcnJvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclx0XHRcdFx0XFxcbi1cdCAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZVx0XHRcdFx0XHRcXFxuLVx0ICAkKEdFTkZMQUdTKSAkKFNBTl9DRkxBR1MpICQoTElCRUxGX0NGTEFHUylcdFx0XHRcXFxuLVx0ICAtSSQoQ1VSRElSKSAtSSQoSU5DTFVERV9ESVIpIC1JJChHRU5ESVIpIC1JJChMSUJESVIpXHRcdFxcXG4tXHQgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVClcdFxcXG4tXHQgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcbi1MREZMQUdTICYjNDM7PSAkKFNBTl9MREZMQUdTKVxuLUxETElCUyAmIzQzOz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkXG4tXG4tUENBUF9DRkxBR1NcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJwY2FwIDJcdTAwM2UvZGV2L251bGwgXHUwMDI2XHUwMDI2IGVjaG8gXCYjMzQ7LURUUkFGRklDX01PTklUT1I9MVwmIzM0Oylcbi1QQ0FQX0xJQlNcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGlicGNhcCAyXHUwMDNlL2Rldi9udWxsKVxuLUxETElCUyAmIzQzOz0gJChQQ0FQX0xJQlMpXG4tQ0ZMQUdTICYjNDM7PSAkKENPTU1PTl9DRkxBR1MpICQoUENBUF9DRkxBR1MpXG4tXG4tIyBTb21lIHV0aWxpdHkgZnVuY3Rpb25zIHVzZSBMTFZNIGxpYnJhcmllc1xuLWppdF9kaXNhc21faGVscGVycy5jLUNGTEFHUyA9ICQoTExWTV9DRkxBR1MpXG4tXG4taWZuZXEgKCQoTExWTSksKVxuLSMgU2lsZW5jZSBzb21lIHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgd2l0aCBjbGFuZ1xuLUNGTEFHUyAmIzQzOz0gLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50XG4tZW5kaWZcbi1cbi0jIENoZWNrIHdoZXRoZXIgYnBmIGNwdT12NCBpcyBzdXBwb3J0ZWQgb3Igbm90IGJ5IGNsYW5nXG4gaWZuZXEgKCQoc2hlbGwgJChDTEFORykgLS10YXJnZXQ9YnBmIC1tY3B1PWhlbHAgMlx1MDAzZVx1MDAyNjEgfCBncmVwICYjMzk7djQmIzM5OyksKVxuIENMQU5HX0NQVVY0IDo9IDFcbiBlbmRpZlxuIFxuLSMgQ2hlY2sgd2hldGhlciBjbGFuZyBzdXBwb3J0cyBCUEYgYWRkcmVzcyBzYW5pdGl6ZXIgKHJlcXVpcmVzIExMVk0gMjImIzQzOylcbi1DTEFOR19IQVNfQVJFTkFfQVNBTiA6PSAkKHNoZWxsIGVjaG8gJiMzOTtpbnQgeDsmIzM5OyB8IFxcXG4tXHQkKENMQU5HKSAtLXRhcmdldD1icGYgLWZzYW5pdGl6ZT1rZXJuZWwtYWRkcmVzcyBcXFxuLVx0LW1sbHZtIC1hc2FuLXNoYWRvdy1hZGRyLXNwYWNlPTEgXFxcbi1cdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlx1MDAzZS9kZXYvbnVsbCBcdTAwMjZcdTAwMjYgZWNobyAxKVxuLVxuICMgT3JkZXIgY29ycmVzcG9uZCB0byAmIzM5O21ha2UgcnVuX3Rlc3RzJiMzOTsgb3JkZXJcbiBURVNUX0dFTl9QUk9HUyA9IHRlc3RfdmVyaWZpZXIgdGVzdF90YWcgdGVzdF9tYXBzIHRlc3RfbHJ1X21hcCB0ZXN0X3Byb2dzIFxcXG4gXHR0ZXN0X3NvY2ttYXAgXFxcbkBAIC0xMDIsMTYgJiM0Mzs1MCw2IEBAIFRFU1RfSU5TVF9TVUJESVJTIDo9IG5vX2FsdTMyXG4gaWZuZXEgKCQoQlBGX0dDQyksKVxuIFRFU1RfR0VOX1BST0dTICYjNDM7PSB0ZXN0X3Byb2dzLWJwZl9nY2NcbiBURVNUX0lOU1RfU1VCRElSUyAmIzQzOz0gYnBmX2djY1xuLVxuLSMgVGhlIGZvbGxvd2luZyB0ZXN0cyBjb250YWluIEMgY29kZSB0aGF0LCBhbHRob3VnaCB0ZWNobmljYWxseSBsZWdhbCxcbi0jIHRyaWdnZXJzIEdDQyB3YXJuaW5ncyB0aGF0IGNhbm5vdCBiZSBkaXNhYmxlZDogZGVjbGFyYXRpb24gb2Zcbi0jIGFub255bW91cyBzdHJ1Y3QgdHlwZXMgaW4gZnVuY3Rpb24gcGFyYW1ldGVyIGxpc3RzLlxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX25hbWVzcGFjaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWNraW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9zeW50YXguYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tXG4gZW5kaWZcbiBcbiBpZm5lcSAoJChDTEFOR19DUFVWNCksKVxuQEAgLTEzMiwxMCAmIzQzOzcwLDYgQEAgVEVTVF9QUk9HUyA6PSB0ZXN0X2ttb2Quc2ggXFxcbiBURVNUX1BST0dTX0VYVEVOREVEIDo9IFxcXG4gXHRpbWFfc2V0dXAuc2ggdmVyaWZ5X3NpZ19zZXR1cC5zaFxuIFxuLVRFU1RfS01PRFMgOj0gYnBmX3Rlc3Rtb2Qua28gYnBmX3Rlc3Rfbm9fY2ZpLmtvIGJwZl90ZXN0X21vZG9yZGVyX3gua28gXFxcbi1cdGJwZl90ZXN0X21vZG9yZGVyX3kua28gYnBmX3Rlc3RfcnFzcGlubG9jay5rb1xuLVRFU1RfS01PRF9UQVJHRVRTID0gJChhZGRwcmVmaXggJChPVVRQVVQpLywkKFRFU1RfS01PRFMpKVxuLVxuICMgQ29tcGlsZSBidXQgbm90IHBhcnQgb2YgJiMzOTttYWtlIHJ1bl90ZXN0cyYjMzk7XG4gVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQgPSBcXFxuIFx0YmVuY2ggXFxcbkBAIC0xNDgsMTEgJiM0Mzs4MiwxMCBAQCBURVNUX0dFTl9QUk9HU19FWFRFTkRFRCA9IFxcXG4gXHR4ZHBfc3lucHJveHkgXFxcbiBcdHhza3hjZWl2ZXJcbiBcbi1URVNUX0dFTl9GSUxFUyAmIzQzOz0gJChURVNUX0tNT0RTKSBsaWJ1cmFuZG9tX3JlYWQuc28gdXJhbmRvbV9yZWFkIHNpZ24tZmlsZSB1cHJvYmVfbXVsdGlcbiYjNDM7VEVTVF9LTU9EUyA/PSBicGZfdGVzdG1vZC5rbyBicGZfdGVzdF9ub19jZmkua28gYnBmX3Rlc3RfbW9kb3JkZXJfeC5rbyBcXFxuJiM0MztcdGJwZl90ZXN0X21vZG9yZGVyX3kua28gYnBmX3Rlc3RfcnFzcGlubG9jay5rb1xuIFxuLWlmbmVxICgkKFYpLDEpXG4tc3VibWFrZV9leHRyYXMgOj0gZmVhdHVyZV9kaXNwbGF5PTBcbi1lbmRpZlxuJiM0MztURVNUX0dFTl9GSUxFUyAmIzQzOz0gJChURVNUX0tNT0RTKSBsaWJ1cmFuZG9tX3JlYWQuc28gdXJhbmRvbV9yZWFkIHNpZ24tZmlsZSB1cHJvYmVfbXVsdGlcbiBcbiAjIG92ZXJyaWRlIGxpYi5tayYjMzk7cyBkZWZhdWx0IHJ1bGVzXG4gT1ZFUlJJREVfVEFSR0VUUyA6PSAxXG5AQCAtMTcxLDcgJiM0MzsxMDQsNyBAQCBlbmRlZlxuIGluY2x1ZGUgLi4vbGliLm1rXG4gXG4gTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyA6PSBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHNcbi1DSEVDS19GRUFUIDo9ICQoZmlsdGVyLW91dCAkKE5PTl9DSEVDS19GRUFUX1RBUkdFVFMpLCQob3IgJChNQUtFQ01ER09BTFMpLCBcJiMzNDtub25lXCYjMzQ7KSlcbiYjNDM7Q0hFQ0tfRkVBVCA6PSAkKGZpbHRlci1vdXQgJChOT05fQ0hFQ0tfRkVBVF9UQVJHRVRTKSwkKG9yICQoTUFLRUNNREdPQUxTKSxhbGwpKVxuIGlmbmVxICgkKENIRUNLX0ZFQVQpLClcbiBGRUFUVVJFX1VTRVIgOj0gLnNlbGZ0ZXN0c1xuIEZFQVRVUkVfVEVTVFMgOj0gbGx2bVxuQEAgLTE4OCw2ICYjNDM7MTIxLDggQEAgb3ZlcnJpZGUgT1VUUFVUIDo9ICQocGF0c3Vic3QgJS8sJSwkKE9VVFBVVCkpXG4gZW5kaWZcbiBlbmRpZlxuIFxuJiM0MztpbmNsdWRlIE1ha2VmaWxlLmJ1aWxkdmFyc1xuJiM0MztcbiBpZm5lcSAoJChTS0lQX0xMVk0pLDEpXG4gaWZlcSAoJChmZWF0dXJlLWxsdm0pLDEpXG4gICBMTFZNX0NGTEFHUyAgJiM0Mzs9IC1ESEFWRV9MTFZNX1NVUFBPUlRcbkBAIC0yMTMsMzYgJiM0MzsxNDgsMTEgQEAgaWZlcSAoJChmZWF0dXJlLWxsdm0pLDEpXG4gZW5kaWZcbiBlbmRpZlxuIFxuLVNDUkFUQ0hfRElSIDo9ICQoT1VUUFVUKS90b29sc1xuLUJVSUxEX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9idWlsZFxuLUlOQ0xVREVfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2luY2x1ZGVcbi1CUEZPQkogOj0gJChCVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYVxuLWlmbmVxICgkKENST1NTX0NPTVBJTEUpLClcbi1IT1NUX0JVSUxEX0RJUlx0XHQ6PSAkKEJVSUxEX0RJUikvaG9zdFxuLUhPU1RfU0NSQVRDSF9ESVJcdDo9ICQoT1VUUFVUKS9ob3N0LXRvb2xzXG4tSE9TVF9JTkNMVURFX0RJUlx0Oj0gJChIT1NUX1NDUkFUQ0hfRElSKS9pbmNsdWRlXG4tZWxzZVxuLUhPU1RfQlVJTERfRElSXHRcdDo9ICQoQlVJTERfRElSKVxuLUhPU1RfU0NSQVRDSF9ESVJcdDo9ICQoU0NSQVRDSF9ESVIpXG4tSE9TVF9JTkNMVURFX0RJUlx0Oj0gJChJTkNMVURFX0RJUilcbi1lbmRpZlxuLUhPU1RfQlBGT0JKIDo9ICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYVxuLVJFU09MVkVfQlRGSURTIDo9ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzL3Jlc29sdmVfYnRmaWRzXG4tVk1MSU5VWF9CVEZfUEFUSFMgPz0gJChpZiAkKE8pLCQoTykvdm1saW51eClcdFx0XHRcdFxcXG4tXHRcdCAgICAgJChpZiAkKEtCVUlMRF9PVVRQVVQpLCQoS0JVSUxEX09VVFBVVCkvdm1saW51eClcdFxcXG4tXHRcdCAgICAgLi4vLi4vLi4vLi4vdm1saW51eFx0XHRcdFx0XFxcbi1cdFx0ICAgICAvc3lzL2tlcm5lbC9idGYvdm1saW51eFx0XHRcdFx0XFxcbi1cdFx0ICAgICAvYm9vdC92bWxpbnV4LSQoc2hlbGwgdW5hbWUgLXIpXG4tVk1MSU5VWF9CVEYgPz0gJChhYnNwYXRoICQoZmlyc3R3b3JkICQod2lsZGNhcmQgJChWTUxJTlVYX0JURl9QQVRIUykpKSlcbi1pZmVxICgkKFZNTElOVVhfQlRGKSwpXG4tJChlcnJvciBDYW5ub3QgZmluZCBhIHZtbGludXggZm9yIFZNTElOVVhfQlRGIGF0IGFueSBvZiBcJiMzNDskKFZNTElOVVhfQlRGX1BBVEhTKVwmIzM0Oylcbi1lbmRpZlxuLVxuICMgRGVmaW5lIHNpbXBsZSBhbmQgc2hvcnQgYG1ha2UgdGVzdF9wcm9nc2AsIGBtYWtlIHRlc3RfbWFwc2AsIGV0YyB0YXJnZXRzXG4gIyB0byBidWlsZCBpbmRpdmlkdWFsIHRlc3RzLlxuICMgTk9URTogU2VtaWNvbG9uIGF0IHRoZSBlbmQgaXMgY3JpdGljYWwgdG8gb3ZlcnJpZGUgbGliLm1rJiMzOTtzIGRlZmF1bHQgc3RhdGljXG4gIyBydWxlIGZvciBiaW5hcmllcy5cbi0kKG5vdGRpciAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfS01PRFMpXHRcdFx0XHRcXFxuJiM0MzskKG5vdGRpciAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfS01PRF9UQVJHRVRTKVx0XHRcdFx0XFxcbiBcdCAkKFRFU1RfR0VOX1BST0dTX0VYVEVOREVEKSk6ICU6ICQoT1VUUFVUKS8lIDtcbiBcbiAjIHNvcnQgcmVtb3ZlcyBsaWJicGYgZHVwbGljYXRlcyB3aGVuIG5vdCBjcm9zcy1idWlsZGluZ1xuQEAgLTI1NiwxMSAmIzQzOzE2NiwxNCBAQCAkKE1BS0VfRElSUyk6XG4gXG4gJChPVVRQVVQpLyUubzogJS5jXG4gXHQkKGNhbGwgbXNnLENDLCwkQClcbi1cdCQoUSkkKENDKSAkKENGTEFHUykgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEBcbiYjNDM7XHQkKFEpJChDQykgJChDRkxBR1MpIC1jICQoZmlsdGVyICUuYywkXikgLW8gJEBcbiBcbiYjNDM7IyBIZWFkZXJzIG1heSBhcHBlYXIgYW1vbmcgdGhlIHByZXJlcXVpc2l0ZXMgZm9yIGRlcGVuZGVuY3kgdHJhY2tpbmc7XG4mIzQzOyMgdGhleSBtdXN0IG5vdCByZWFjaCB0aGUgY2xhbmcvZ2NjIGNvbW1hbmQgbGluZSAoY2xhbmcgdHJlYXRzIGEgYmFyZSAuaFxuJiM0MzsjIGFyZ3VtZW50IGFzIGEgcHJlY29tcGlsZWQtaGVhZGVyIGpvYiBhbmQgcmVmdXNlcyAtbykuXG4gJChPVVRQVVQpLyU6JS5jXG4gXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4tXHQkKFEpJChMSU5LLmMpICReICQoTERMSUJTKSAtbyAkQFxuJiM0MztcdCQoUSkkKExJTksuYykgJChmaWx0ZXItb3V0ICUuaCwkXikgJChMRExJQlMpIC1vICRAXG4gXG4gIyBMTFZNJiMzOTtzIGxkLmxsZCBkb2VzbiYjMzk7dCBzdXBwb3J0IGFsbCB0aGUgYXJjaGl0ZWN0dXJlcywgc28gdXNlIGl0IG9ubHkgb24geDg2XG4gaWZlcSAoJChTUkNBUkNIKSwkKGZpbHRlciAkKFNSQ0FSQ0gpLHg4NiByaXNjdikpXG5AQCAtMjk3LDYgJiM0MzsyMTAsMTMgQEAgJChPVVRQVVQpL3NpZ24tZmlsZTogLi4vLi4vLi4vLi4vc2NyaXB0cy9zaWduLWZpbGUuY1xuIFx0XHQgICRcdTAwM2MgLW8gJEAgXFxcbiBcdFx0ICAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYmNyeXB0byAyXHUwMDNlIC9kZXYvbnVsbCB8fCBlY2hvIC1sY3J5cHRvKVxuIFxuJiM0MzsjIExpbmtpbmcgdXByb2JlX211bHRpIGNhbiBmYWlsIGR1ZSB0byByZWxvY2F0aW9uIG92ZXJmbG93cyBvbiBtaXBzLlxuJiM0MzskKE9VVFBVVCkvdXByb2JlX211bHRpOiBDRkxBR1MgJiM0Mzs9ICQoaWYgJChmaWx0ZXIgbWlwcywgJChBUkNIKSksLW14Z290KVxuJiM0MzskKE9VVFBVVCkvdXByb2JlX211bHRpOiB1cHJvYmVfbXVsdGkuYyB1cHJvYmVfbXVsdGkubGRcbiYjNDM7XHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4mIzQzO1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtV2wsLVQsdXByb2JlX211bHRpLmxkIC1PMCAkKExERkxBR1MpIFx0XFxcbiYjNDM7XHRcdCQoZmlsdGVyLW91dCAlLmxkLCReKSAkKExETElCUykgLW8gJEBcbiYjNDM7XG4gIyBUaGlzIHNob3VsZCByZWFsbHkgYmUgYSBncm91cGVkIHRhcmdldCwgYnV0IG1ha2UgdmVyc2lvbnMgYmVmb3JlIDQuMyBkb24mIzM5O3RcbiAjIHN1cHBvcnQgdGhhdCBmb3IgcmVndWxhciBydWxlcy4gSG93ZXZlciwgcGF0dGVybiBtYXRjaGluZyBydWxlcyBhcmUgaW1wbGljaXRseVxuICMgdHJlYXRlZCBhcyBncm91cGVkIGV2ZW4gd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBtYWtlLCBzbyBhcyBhIHdvcmthcm91bmQsIHRoZVxuQEAgLTMxMyw0MCAmIzQzOzIzMywxOCBAQCAkKFRFU1RfS01PRF9UQVJHRVRTKTogJChhZGRwcmVmaXggdGVzdF9rbW9kcy8sJChURVNUX0tNT0RTKSlcbiBcdCQoY2FsbCBtc2csTU9ELCwkQClcbiBcdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAtZiB0ZXN0X2ttb2RzLyQoQEYpIF07IHRoZW4gKWNwIHRlc3Rfa21vZHMvJChARikgJEAkKGlmICQoUEVSTUlTU0lWRSksOyBmaSlcbiBcbi1cbi1ERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tQ1JPU1NfQlBGVE9PTCA6PSAkKFNDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbi1UUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKVxuLVVTRV9CT09UU1RSQVAgOj0gXCYjMzQ7XCYjMzQ7XG4tZWxzZVxuLVRSVU5ORVJfQlBGVE9PTCA6PSAkKERFRkFVTFRfQlBGVE9PTClcbi1VU0VfQk9PVFNUUkFQIDo9IFwmIzM0O2Jvb3RzdHJhcC9cJiMzNDtcbi1lbmRpZlxuLVxuIFRFU1RfR0VOX1BST0dTX0VYVEVOREVEICYjNDM7PSAkKFRSVU5ORVJfQlBGVE9PTClcbiBcbiAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfR0VOX1BST0dTX0VYVEVOREVEKTogJChCUEZPQkopXG4gXG4tVEVTVElOR19IRUxQRVJTXHQ6PSAkKE9VVFBVVCkvdGVzdGluZ19oZWxwZXJzLm9cbi1DR1JPVVBfSEVMUEVSU1x0Oj0gJChPVVRQVVQpL2Nncm91cF9oZWxwZXJzLm9cbi1VTlBSSVZfSEVMUEVSUyAgOj0gJChPVVRQVVQpL3VucHJpdl9oZWxwZXJzLm9cbi1UUkFDRV9IRUxQRVJTXHQ6PSAkKE9VVFBVVCkvdHJhY2VfaGVscGVycy5vXG4tSlNPTl9XUklURVJcdFx0Oj0gJChPVVRQVVQpL2pzb25fd3JpdGVyLm9cbi1DQVBfSEVMUEVSU1x0Oj0gJChPVVRQVVQpL2NhcF9oZWxwZXJzLm9cbi1ORVRXT1JLX0hFTFBFUlMgOj0gJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vXG4tXG4tJChPVVRQVVQpL3Rlc3Rfc29ja21hcDogJChDR1JPVVBfSEVMUEVSUykgJChURVNUSU5HX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3RfdGNwbm90aWZ5X3VzZXI6ICQoQ0dST1VQX0hFTFBFUlMpICQoVEVTVElOR19IRUxQRVJTKSAkKFRSQUNFX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3Rfc29ja19maWVsZHM6ICQoQ0dST1VQX0hFTFBFUlMpICQoVEVTVElOR19IRUxQRVJTKVxuLSQoT1VUUFVUKS90ZXN0X3RhZzogJChURVNUSU5HX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3RfbGlyY19tb2RlMl91c2VyOiAkKFRFU1RJTkdfSEVMUEVSUylcbi0kKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZDogJChURVNUSU5HX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3RfbWFwczogJChURVNUSU5HX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6ICQoVEVTVElOR19IRUxQRVJTKSAkKENBUF9IRUxQRVJTKSAkKFVOUFJJVl9IRUxQRVJTKVxuLSQoT1VUUFVUKS94c2subzogJChCUEZPQkopXG4tXG4tQlBGVE9PTCA/PSAkKERFRkFVTFRfQlBGVE9PTClcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBUb29sIHN1Yi1idWlsZHM6IGJwZnRvb2wgYW5kIGxpYmJwZiAoaG9zdCBhbmQsIHdoZW4gY3Jvc3MtY29tcGlsaW5nLFxuJiM0MzsjIHRhcmdldCB2YXJpYW50cykgYW5kIHJlc29sdmVfYnRmaWRzLlxuJiM0MzsjXG4mIzQzOyMgTm90ZSB0aGUgZGVsaWJlcmF0ZSBhc3ltbWV0cnk6IHRoZSBob3N0IGxpYmJwZiBidWlsZHMgd2l0aG91dFxuJiM0MzsjIHNhbml0aXplcnMgYW5kIHdpdGggdGhlIGhvc3QgdG9vbGNoYWluLlxuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MztcbiAkKERFRkFVTFRfQlBGVE9PTCk6ICQod2lsZGNhcmQgJChCUEZUT09MRElSKS8qLltjaF0gJChCUEZUT09MRElSKS9NYWtlZmlsZSkgICAgXFxcbiBcdFx0ICAgICQoSE9TVF9CUEZPQkopIHwgJChIT1NUX0JVSUxEX0RJUikvYnBmdG9vbFxuIFx0JChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcykgIC1DICQoQlBGVE9PTERJUilcdFx0XHQgICAgICAgXFxcbkBAIC0zNzcsMjAgJiM0MzsyNzUsNiBAQCAkKENST1NTX0JQRlRPT0wpOiAkKHdpbGRjYXJkICQoQlBGVE9PTERJUikvKi5bY2hdICQoQlBGVE9PTERJUikvTWFrZWZpbGUpXHRcXFxuIFx0XHQgICAgcHJlZml4PSBERVNURElSPSQoU0NSQVRDSF9ESVIpLyBpbnN0YWxsLWJpblxuIGVuZGlmXG4gXG4taWZuZXEgKCQoU0tJUF9ET0NTKSwxKVxuLWFsbDogZG9jc1xuLWVuZGlmXG4tXG4tZG9jczpcbi1cdCQoUSlSU1QyTUFOX09QVFM9XCYjMzQ7LS1leGl0LXN0YXR1cz0xXCYjMzQ7ICQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcylcdFxcXG4tXHQgICAgICAgICAgICAtZiBNYWtlZmlsZS5kb2NzXHRcdFx0XHRcdFxcXG4tXHQgICAgICAgICAgICBwcmVmaXg9IE9VVFBVVD0kKE9VVFBVVCkvIERFU1RESVI9JChPVVRQVVQpLyAkQFxuLVxuLWRvY3MtY2xlYW46XG4tXHQkKFEpJChNQUtFKSAkKHN1Ym1ha2VfZXh0cmFzKVx0XHRcdFx0XHRcXFxuLVx0ICAgICAgICAgICAgLWYgTWFrZWZpbGUuZG9jc1x0XHRcdFx0XHRcXFxuLVx0ICAgICAgICAgICAgcHJlZml4PSBPVVRQVVQ9JChPVVRQVVQpLyBERVNURElSPSQoT1VUUFVUKS8gJEBcbi1cbiAkKEJQRk9CSik6ICQod2lsZGNhcmQgJChCUEZESVIpLyouW2NoXSAkKEJQRkRJUikvTWFrZWZpbGUpXHRcdCAgICAgICBcXFxuIFx0ICAgJChBUElESVIpL2xpbnV4L2JwZi5oXHRcdFx0XHRcdCAgICAgICBcXFxuIFx0ICAgfCAkKEJVSUxEX0RJUikvbGliYnBmXG5AQCAtNDEyLDE5ICYjNDM7Mjk2LDYgQEAgJChIT1NUX0JQRk9CSik6ICQod2lsZGNhcmQgJChCUEZESVIpLyouW2NoXSAkKEJQRkRJUikvTWFrZWZpbGUpXHRcdCAgICAgICBcXFxuIFx0XHQgICAgREVTVERJUj0kKEhPU1RfU0NSQVRDSF9ESVIpLyBwcmVmaXg9IGFsbCBpbnN0YWxsX2hlYWRlcnNcbiBlbmRpZlxuIFxuLSMgdm1saW51eC5oIGlzIGZpcnN0IGR1bXBlZCB0byBhIHRlbXBvcmFyeSBmaWxlIGFuZCB0aGVuIGNvbXBhcmVkIHRvXG4tIyB0aGUgcHJldmlvdXMgdmVyc2lvbi4gVGhpcyBoZWxwcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZS1idWlsZHMgb2Zcbi0jICQoVFJVTk5FUl9CUEZfT0JKUylcbi0kKElOQ0xVREVfRElSKS92bWxpbnV4Lmg6ICQoVk1MSU5VWF9CVEYpICQoQlBGVE9PTCkgfCAkKElOQ0xVREVfRElSKVxuLWlmZXEgKCQoVk1MSU5VWF9IKSwpXG4tXHQkKGNhbGwgbXNnLEdFTiwsJEApXG4tXHQkKFEpJChCUEZUT09MKSBidGYgZHVtcCBmaWxlICQoVk1MSU5VWF9CVEYpIGZvcm1hdCBjIFx1MDAzZSAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcFxuLVx0JChRKWNtcCAtcyAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcCAkQCB8fCBtdiAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcCAkQFxuLWVsc2Vcbi1cdCQoY2FsbCBtc2csQ1AsLCRAKVxuLVx0JChRKWNwIFwmIzM0OyQoVk1MSU5VWF9IKVwmIzM0OyAkQFxuLWVuZGlmXG4tXG4gJChSRVNPTFZFX0JURklEUyk6ICQoSE9TVF9CUEZPQkopIHwgJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHNcdFxcXG4gXHRcdCAgICAgICAkKFRPT0xTRElSKS9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jXHRcXFxuIFx0XHQgICAgICAgJChUT09MU0RJUikvbGliL3JidHJlZS5jXHRcdFx0XFxcbkBAIC00MzksMzc0ICYjNDM7MzEwLDM4IEBAICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzXHRcXFxuIFx0XHRIT1NUUEtHX0NPTkZJRz0mIzM5OyQoUEtHX0NPTkZJRykmIzM5OyBcXFxuIFx0XHRPVVRQVVQ9JChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvIEJQRk9CSj0kKEhPU1RfQlBGT0JKKVxuIFxuLSMgR2V0IENsYW5nJiMzOTtzIGRlZmF1bHQgaW5jbHVkZXMgb24gdGhpcyBzeXN0ZW0sIGFzIG9wcG9zZWQgdG8gdGhvc2Ugc2VlbiBieVxuLSMgJiMzOTstLXRhcmdldD1icGYmIzM5Oy4gVGhpcyBmaXhlcyBcJiMzNDttaXNzaW5nXCYjMzQ7IGZpbGVzIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcy9kaXN0cm9zLFxuLSMgc3VjaCBhcyBhc20vYnl0ZW9yZGVyLmgsIGFzbS9zb2NrZXQuaCwgYXNtL3NvY2tpb3MuaCwgc3lzL2NkZWZzLmggZXRjLlxuLSNcbi0jIFVzZSAmIzM5Oy1pZGlyYWZ0ZXImIzM5OzogRG9uJiMzOTt0IGludGVyZmVyZSB3aXRoIGluY2x1ZGUgbWVjaGFuaWNzIGV4Y2VwdCB3aGVyZSB0aGVcbi0jIGJ1aWxkIHdvdWxkIGhhdmUgZmFpbGVkIGFueXdheXMuXG4tZGVmaW5lIGdldF9zeXNfaW5jbHVkZXNcbi0kKHNoZWxsICQoMSkgJCgyKSAtdiAtRSAtIFx1MDAzYy9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MSBcXFxuLVx0fCBzZWQgLW4gJiMzOTsvXHUwMDNjLi4uXHUwMDNlIHNlYXJjaCBzdGFydHMgaGVyZTovLC9FbmQgb2Ygc2VhcmNoIGxpc3QuL3sgc3wgXFwoLy4qXFwpfC1pZGlyYWZ0ZXIgXFwxfHAgfSYjMzk7KSBcXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX3Jpc2N2X3hsZW4gJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKFwmIzM0Oy1EX19yaXNjdl94bGVuPSVkIC1EX19CSVRTX1BFUl9MT05HPSVkXCYjMzQ7LCAkJDMsICQkMyl9JiMzOTspIFxcXG4tJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAmIzM5O19fbG9vbmdhcmNoX2dybGVuICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZihcJiMzNDstRF9fQklUU19QRVJfTE9ORz0lZFwmIzM0OywgJCQzKX0mIzM5OykgXFxcbi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBncmVwIC1FICYjMzk7TUlQUyhFTHxFQil8X01JUFNfU1ooUFRSfExPTkcpIHxfTUlQU19TSU0gfF9BQkkoTzMyfE4zMnw2NCkgJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKFwmIzM0Oy1EJXM9JXMgXCYjMzQ7LCAkJDIsICQkMyl9JiMzOTspXG4tZW5kZWZcbi1cbi0jIERldGVybWluZSB0YXJnZXQgZW5kaWFubmVzcy5cbi1JU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgXFxcbi1cdFx0XHRncmVwICYjMzk7ZGVmaW5lIF9fQllURV9PUkRFUl9fIF9fT1JERVJfTElUVExFX0VORElBTl9fJiMzOTspXG4tTUVORElBTjo9JChpZiAkKElTX0xJVFRMRV9FTkRJQU4pLC1tbGl0dGxlLWVuZGlhbiwtbWJpZy1lbmRpYW4pXG4tQlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYilcbi1cbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tQ0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpXG4tZW5kaWZcbi1cbi1DTEFOR19TWVNfSU5DTFVERVMgPSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcywkKENMQU5HKSwkKENMQU5HX1RBUkdFVF9BUkNIKSlcbi1CUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXHRcXFxuLVx0ICAgICAtSSQoSU5DTFVERV9ESVIpIC1JJChDVVJESVIpIC1JJChBUElESVIpXHRcdFx0XFxcbi1cdCAgICAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVx0XHRcdFx0XFxcbi1cdCAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKVx0XHRcdFxcXG4tXHQgICAgIC1zdGQ9Z251MTFcdFx0IFx0XHRcdFx0XHRcXFxuLVx0ICAgICAtZm5vLXN0cmljdC1hbGlhc2luZyBcdFx0XHRcdFx0XFxcbi1cdCAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWdcdFx0XHRcdFx0XFxcbi1cdCAgICAgLWZtcy1leHRlbnNpb25zXHRcdFx0XHRcdFx0XFxcbi1cdCAgICAgLVduby1jb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXNcdFx0XHRcXFxuLVx0ICAgICAtV25vLWluaXRpYWxpemVyLW92ZXJyaWRlc1x0XHRcdFx0XHRcXFxuLVx0ICAgICAjXG4tIyBUT0RPOiBlbmFibGUgbWUgLVdzaWduLWNvbXBhcmVcbi1cbi1DTEFOR19DRkxBR1MgPSAkKENMQU5HX1NZU19JTkNMVURFUylcbi1cbi0kKE9VVFBVVCkvdGVzdF9sNGxiX25vaW5saW5lLm86IEJQRl9DRkxBR1MgJiM0Mzs9IC1mbm8taW5saW5lXG4tJChPVVRQVVQpL3Rlc3RfeGRwX25vaW5saW5lLm86IEJQRl9DRkxBR1MgJiM0Mzs9IC1mbm8taW5saW5lXG4tXG4tJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQubzogZmxvd19kaXNzZWN0b3JfbG9hZC5oXG4tJChPVVRQVVQpL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLm86IGNncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhcbi1cbi0jIEJ1aWxkIEJQRiBvYmplY3QgdXNpbmcgQ2xhbmdcbi0jICQxIC0gaW5wdXQgLmMgZmlsZVxuLSMgJDIgLSBvdXRwdXQgLm8gZmlsZVxuLSMgJDMgLSBDRkxBR1Ncbi0jICQ0IC0gYmluYXJ5IG5hbWVcbi1kZWZpbmUgQ0xBTkdfQlBGX0JVSUxEX1JVTEVcbi1cdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXG4tXHQkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXYzIC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJDI7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtQlBGJiMzOTsgJiMzOTskKG5vdGRpciAkMikmIzM5OyAxXHUwMDNlXHUwMDI2MikpXG4tZW5kZWZcbi0jIFNpbWlsYXIgdG8gQ0xBTkdfQlBGX0JVSUxEX1JVTEUsIGJ1dCB3aXRoIGRpc2FibGVkIGFsdTMyXG4tZGVmaW5lIENMQU5HX05PQUxVMzJfQlBGX0JVSUxEX1JVTEVcbi1cdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXG4tXHQkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXYyIC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJDI7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtQlBGJiMzOTsgJiMzOTskKG5vdGRpciAkMikmIzM5OyAxXHUwMDNlXHUwMDI2MikpXG4tZW5kZWZcbi0jIFNpbWlsYXIgdG8gQ0xBTkdfQlBGX0JVSUxEX1JVTEUsIGJ1dCB3aXRoIGNwdS12NFxuLWRlZmluZSBDTEFOR19DUFVWNF9CUEZfQlVJTERfUlVMRVxuLVx0JChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMilcbi1cdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djQgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkMjsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1CUEYmIzM5OyAmIzM5OyQobm90ZGlyICQyKSYjMzk7IDFcdTAwM2VcdTAwMjYyKSlcbi1lbmRlZlxuLSMgQnVpbGQgQlBGIG9iamVjdCB1c2luZyBHQ0Ncbi1kZWZpbmUgR0NDX0JQRl9CVUlMRF9SVUxFXG4tXHQkKGNhbGwgbXNnLEdDQy1CUEYsJDQsJDIpXG4tXHQkKFEpJChCUEZfR0NDKSAkMyAtREJQRl9OT19QUkVTRVJWRV9BQ0NFU1NfSU5ERVggLVduby1hdHRyaWJ1dGVzIC1PMiAtYyAkMSAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICQyOyBwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLUJQRiYjMzk7ICYjMzk7JChub3RkaXIgJDIpJiMzOTsgMVx1MDAzZVx1MDAyNjIpKVxuLWVuZGVmXG4tXG4tU0tFTF9CTEFDS0xJU1QgOj0gYnRmX18lIHRlc3RfcGlubmluZ19pbnZhbGlkLmMgdGVzdF9za19hc3NpZ24uY1xuLVxuLUxJTktFRF9TS0VMUyA6PSB0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oIGxpbmtlZF9mdW5jcy5za2VsLmhcdFx0XFxcbi1cdFx0bGlua2VkX3ZhcnMuc2tlbC5oIGxpbmtlZF9tYXBzLnNrZWwuaCBcdFx0XHRcXFxuLVx0XHR0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmhcdFxcXG4tXHRcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcdFx0XHRcXFxuLVx0XHR0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmhcdFx0XHRcdFxcXG4tXHRcdHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaFx0XHRcdFx0XFxcbi1cdFx0dHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaFxuLVxuLUxTS0VMUyA6PSBmZXhpdF9zbGVlcC5jIHRyYWNlX3ByaW50ay5jIHRyYWNlX3ZwcmludGsuYyBtYXBfcHRyX2tlcm4uYyBcdFxcXG4tXHRjb3JlX2tlcm4uYyBjb3JlX2tlcm5fb3ZlcmZsb3cuYyB0ZXN0X3JpbmdidWYuY1x0XHRcdFxcXG4tXHR0ZXN0X3JpbmdidWZfbi5jIHRlc3RfcmluZ2J1Zl9tYXBfa2V5LmMgdGVzdF9yaW5nYnVmX3dyaXRlLmMgICAgXFxcbi1cdHRlc3RfcmluZ2J1Zl9vdmVyd3JpdGUuY1xuLVxuLUxTS0VMU19TSUdORUQgOj0gZmVudHJ5X3Rlc3QuYyBmZXhpdF90ZXN0LmMgYXRvbWljcy5jXG4tXG4tIyBHZW5lcmF0ZSBib3RoIGxpZ2h0IHNrZWxldG9uIGFuZCBsaWJicGYgc2tlbGV0b24gZm9yIHRoZXNlXG4tTFNLRUxTX0VYVFJBIDo9IHRlc3Rfa3N5bXNfbW9kdWxlLmMgdGVzdF9rc3ltc193ZWFrLmMga2Z1bmNfY2FsbF90ZXN0LmMgXFxcbi1cdGtmdW5jX2NhbGxfdGVzdF9zdWJwcm9nLmNcbi1TS0VMX0JMQUNLTElTVCAmIzQzOz0gJCQoTFNLRUxTKSAkJChMU0tFTFNfU0lHTkVEKVxuLVxuLXRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmgtZGVwcyA6PSB0ZXN0X3N0YXRpY19saW5rZWQxLmJwZi5vIHRlc3Rfc3RhdGljX2xpbmtlZDIuYnBmLm9cbi1saW5rZWRfZnVuY3Muc2tlbC5oLWRlcHMgOj0gbGlua2VkX2Z1bmNzMS5icGYubyBsaW5rZWRfZnVuY3MyLmJwZi5vXG4tbGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYub1xuLWxpbmtlZF9tYXBzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9tYXBzMS5icGYubyBsaW5rZWRfbWFwczIuYnBmLm9cbi0jIEluIHRoZSBzdWJza2VsZXRvbiBjYXNlLCB3ZSB3YW50IHRoZSB0ZXN0X3N1YnNrZWxldG9uX2xpYi5zdWJza2VsLmggZmlsZVxuLSMgYnV0IHRoYXQmIzM5O3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi5cbi10ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXG4tdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vXG4tdGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vXG4teHNrX3hkcF9wcm9ncy5za2VsLmgtZGVwcyA6PSB4c2tfeGRwX3Byb2dzLmJwZi5vXG4teGRwX2h3X21ldGFkYXRhLnNrZWwuaC1kZXBzIDo9IHhkcF9od19tZXRhZGF0YS5icGYub1xuLXhkcF9mZWF0dXJlcy5za2VsLmgtZGVwcyA6PSB4ZHBfZmVhdHVyZXMuYnBmLm9cbi10cmFjaW5nX211bHRpLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbi10cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaF9tb2R1bGUuYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuLXRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4tdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfc2Vzc2lvbl9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuLVxuLUxJTktFRF9CUEZfT0JKUyA6PSAkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKVxuLUxJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoTElOS0VEX0JQRl9PQkpTKSlcbi1cbi1IRUFERVJTX0ZPUl9CUEZfT0JKUyA6PSAkKHdpbGRjYXJkICQoQlBGRElSKS8qLmJwZi5oKVx0XHRcXFxuLVx0XHRcdCQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKVx0XFxcbi1cdFx0XHQkKGFkZHByZWZpeCAkKEJQRkRJUikvLFx0YnBmX2NvcmVfcmVhZC5oXHRcXFxuLVx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl9lbmRpYW4uaFx0XFxcbi1cdFx0XHRcdFx0XHRicGZfaGVscGVycy5oXHRcXFxuLVx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl90cmFjaW5nLmgpXG4tXG4tIyBTZXQgdXAgZXh0cmEgVFJVTk5FUl9YWFggXCYjMzQ7dGVtcG9yYXJ5XCYjMzQ7IHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQgKHJlbGllcyBvblxuLSMgJGV2YWwoKSkgYW5kIHBhc3MgY29udHJvbCB0byBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMuXG4tIyBQYXJhbWV0ZXJzOlxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcJiMzNDtmbGF2b3JcJiMzNDsgKGUuZy4sIG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYywgZXRjKVxuLWRlZmluZSBERUZJTkVfVEVTVF9SVU5ORVJcbi1cbi1MU0tFTF9TSUdOIDo9IC1TIC1rICQoUFJJVkFURV9LRVkpIC1pICQoVkVSSUZJQ0FUSU9OX0NFUlQpXG4tVFJVTk5FUl9PVVRQVVQgOj0gJChPVVRQVVQpJChpZiAkMiwvKSQyXG4tVFJVTk5FUl9CSU5BUlkgOj0gJDEkKGlmICQyLC0pJDJcbi1UUlVOTkVSX1RFU1RfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5vLFx0XFxcbi1cdFx0XHRcdCAkJChub3RkaXIgJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jKSkpXG4tVFJVTk5FUl9FWFRSQV9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5vLFx0XHRcXFxuLVx0XHRcdFx0ICQkKGZpbHRlciAlLmMsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKSlcbi1UUlVOTkVSX0xJQl9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5vLFx0XHRcXFxuLVx0XHRcdFx0ICQkKGZpbHRlciAlLmMsJChUUlVOTkVSX0xJQl9TT1VSQ0VTKSkpXG4tVFJVTk5FUl9FWFRSQV9IRFJTIDo9ICQkKGZpbHRlciAlLmgsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKVxuLVRSVU5ORVJfVEVTVFNfSERSIDo9ICQoVFJVTk5FUl9URVNUU19ESVIpL3Rlc3RzLmhcbi1UUlVOTkVSX0JQRl9TUkNTIDo9ICQkKG5vdGRpciAkJCh3aWxkY2FyZCAkKFRSVU5ORVJfQlBGX1BST0dTX0RJUikvKi5jKSlcbi1UUlVOTkVSX0JQRl9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5icGYubywgJCQoVFJVTk5FUl9CUEZfU1JDUykpXG4tVFJVTk5FUl9CUEZfU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLnNrZWwuaCxcdFxcXG4tXHRcdFx0XHQgJCQoZmlsdGVyLW91dCAkKFNLRUxfQkxBQ0tMSVNUKSAkKExJTktFRF9CUEZfU1JDUyksXFxcbi1cdFx0XHRcdFx0ICAgICAgICQkKFRSVU5ORVJfQlBGX1NSQ1MpKSlcbi1UUlVOTkVSX0JQRl9MU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmxza2VsLmgsICQkKExTS0VMUykgJCQoTFNLRUxTX0VYVFJBKSlcbi1UUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQgOj0gJCQoYWRkcHJlZml4ICQkKFRSVU5ORVJfT1VUUFVUKS8sJChMSU5LRURfU0tFTFMpKVxuLVRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmxza2VsLmgsICQkKExTS0VMU19TSUdORUQpKVxuLVRFU1RfR0VOX0ZJTEVTICYjNDM7PSAkJChUUlVOTkVSX0JQRl9PQkpTKVxuLVxuLSMgRXZhbHVhdGUgcnVsZXMgbm93IHdpdGggZXh0cmEgVFJVTk5FUl9YWFggdmFyaWFibGVzIGFib3ZlIGFscmVhZHkgZGVmaW5lZFxuLSQkKGV2YWwgJCQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMsJDEsJDIpKVxuLVxuLWVuZGVmXG4tXG4tIyBVc2luZyBUUlVOTkVSX1hYWCB2YXJpYWJsZXMsIHByb3ZpZGVkIGJ5IGNhbGxlcnMgb2YgREVGSU5FX1RFU1RfUlVOTkVSIGFuZFxuLSMgc2V0IHVwIGJ5IERFRklORV9URVNUX1JVTk5FUiBpdHNlbGYsIGNyZWF0ZSB0ZXN0IHJ1bm5lciBidWlsZCBydWxlcyB3aXRoOlxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcJiMzNDtmbGF2b3JcJiMzNDsgKGUuZy4sIG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYywgZXRjKVxuLWRlZmluZSBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVNcbi1cbi0jIFBlcm1pc3NpdmUgYnVpbGQgYmVoYXZpb3VyIChza2lwLW9uLWZhaWx1cmUgY29tcGlsZSwgcGFydGlhbC1saW5rKSBvbmx5XG4tIyBhcHBsaWVzIHRvIHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzOyBydW5uZXJzIHRoYXQgdXNlIHN0cm9uZyBjcm9zcy1vYmplY3Rcbi0jIHJlZmVyZW5jZXMgKGUuZy4gdGVzdF9tYXBzKSBrZWVwIHN0cmljdCBzZW1hbnRpY3MgZXZlbiB3aGVuIHBlcm1pc3NpdmUuXG4tIyBUaGUgY2hlY2sgaXMgaW5saW5lZCBwZXItcnVubmVyIHNvICQxIGlzIHN1YnN0aXR1dGVkIGF0ICQoY2FsbCkgdGltZSBhbmRcbi0jIHRoZSByZXN1bHQgaXMgYmFrZWQgaW50byBlYWNoIHJ1bGUmIzM5O3MgcmVjaXBlLlxuLVxuLWlmZXEgKCQoJChUUlVOTkVSX09VVFBVVCktZGlyKSwpXG4tJChUUlVOTkVSX09VVFBVVCktZGlyIDo9IHlcbi0kKFRSVU5ORVJfT1VUUFVUKTpcbi1cdCQkKGNhbGwgbXNnLE1LRElSLCwkJEApXG4tXHQkKFEpbWtkaXIgLXAgJCRAXG4tZW5kaWZcbi1cbi0jIGVuc3VyZSB3ZSBzZXQgdXAgQlBGIG9iamVjdHMgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZSBmb3IgYSBnaXZlblxuLSMgaW5wdXQvb3V0cHV0IGRpcmVjdG9yeSBjb21iaW5hdGlvblxuLWlmZXEgKCQoJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMpLClcbi0kKFRSVU5ORVJfQlBGX1BST0dTX0RJUikkKGlmICQyLC0pJDItYnBmb2JqcyA6PSB5XG4tJChUUlVOTkVSX0JQRl9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5icGYubzpcdFx0XHRcdFxcXG4tXHRcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyUuY1x0XHRcdFxcXG4tXHRcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouaFx0XHRcdFxcXG4tXHRcdCAgICAgJCQoSU5DTFVERV9ESVIpL3ZtbGludXguaFx0XHRcdFx0XFxcbi1cdFx0ICAgICAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKVx0XHRcdFx0XFxcbi1cdFx0ICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpICQkKEJQRk9CSilcbi1cdCQkKGNhbGwgJChUUlVOTkVSX0JQRl9CVUlMRF9SVUxFKSwkJFx1MDAzYywkJEAsXHRcdFx0XFxcbi1cdFx0XHRcdFx0ICAkKFRSVU5ORVJfQlBGX0NGTEFHUykgICAgICAgICBcXFxuLVx0XHRcdFx0XHQgICQkKCQkXHUwMDNjLUNGTEFHUylcdFx0XFxcbi1cdFx0XHRcdFx0ICAkJCgkJFx1MDAzYy0kMi1DRkxBR1MpLCQoVFJVTk5FUl9CSU5BUlkpKVxuLVxuLSQoVFJVTk5FUl9CUEZfU0tFTFMpOiAlLnNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVClcbi1cdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAhIC1mICQkXHUwMDNjIF07IHRoZW5cdFx0XHRcXFxuLVx0XHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTtcdFx0XHRcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgJCRcdTAwM2MgXHUwMDI2XHUwMDI2XHRcdFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGlua2VkMy5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgXHUwMDI2XHUwMDI2XHRcdFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFx1MDAzYzouYnBmLm89KSkgXHUwMDNlICQkQCBcdTAwMjZcdTAwMjYgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBzdWJza2VsZXRvbiAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz0pKSBcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpOyBcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHR9KSBcdTAwMjZcdTAwMjYgXFxcbi1cdHJtIC1mICQkKFx1MDAzYzoubz0ubGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pXG4tXG4tJChUUlVOTkVSX0JQRl9MU0tFTFMpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQDtcdFx0XHRcdFx0XHRcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcdTAwMjZcdTAwMjYgXFxcbi1cdGRpZmYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uIC1MICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz1fbHNrZWwpKSBcdTAwM2UgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEA7IFxcXG4tXHRcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNiBcXFxuLVx0cm0gLWYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubylcbi1cbi0kKFRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQDtcdFx0XHRcdFx0XHRcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpIChzaWduZWQpXSAkJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcdTAwMjZcdTAwMjYgXFxcbi1cdGRpZmYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQoTFNLRUxfU0lHTikgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChcdTAwM2M6LmJwZi5vPV9sc2tlbCkpIFx1MDAzZSAkJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXFxcbi1cdFx0JCQoUk0pICQkQDsgXFxcbi1cdFx0cHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0fSkgXHUwMDI2XHUwMDI2IFxcXG4tXHRybSAtZiAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKVxuLVxuLSQoTElOS0VEX0JQRl9PQkpTKTogJTogJChUUlVOTkVSX09VVFBVVCkvJVxuLVxuLSMgLlNFQ09OREVYUEFOU0lPTiBoZXJlIGFsbG93cyB0byBjb3JyZWN0bHkgZXhwYW5kICUtZGVwcyB2YXJpYWJsZXMgYXMgcHJlcmVxdWlzaXRlc1xuLS5TRUNPTkRFWFBBTlNJT046XG4tJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpOiAkKFRSVU5ORVJfT1VUUFVUKS8lOiAkJCQkKCUtZGVwcykgJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGZvciBmIGluICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKTsgZG8gXFxcbi1cdFx0aWYgWyAhIC1mICQkJCRmIF07IHRoZW5cdFx0XHRcdFx0XHRcXFxuLVx0XHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1x0XHRcXFxuLVx0XHRcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdFx0XHRleGl0IDA7XHRcdFx0XHRcdFx0XHRcXFxuLVx0XHRmaTtcdFx0XHRcdFx0XHRcdFx0XFxcbi1cdGRvbmU7KVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtMSU5LLUJQRiYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCQoQDouc2tlbC5oPS5icGYubykpJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSAkJChhZGRwcmVmaXggJChUUlVOTkVSX09VVFBVVCkvLCQkKCQkKEBGKS1kZXBzKSkgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgXHUwMDI2XHUwMDI2XHRcXFxuLVx0cHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyAmIzM5O1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MiBcdTAwMjZcdTAwMjYgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoQDouc2tlbC5oPSkpIFx1MDAzZSAkJEAgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc3Vic2tlbGV0b24gJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKEA6LnNrZWwuaD0pKSBcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1x0XHRcdFxcXG4tXHRcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRybSAtZiAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKVxuLVxuLSMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdFxuLSMgZnVsbCBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciBjb3JyZXNwb25kaW5nICUub1xuLSMgZmlsZS4gdnBhdGggZGlyZWN0aXZlcyBiZWxvdyBpbnN0cnVjdCBtYWtlIHRvIHNlYXJjaCBmb3Igc2tlbCBmaWxlc1xuLSMgaW4gVFJVTk5FUl9PVVRQVVQsIGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50IGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeS5cbi12cGF0aCAlLnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLXZwYXRoICUubHNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLXZwYXRoICUuc3Vic2tlbC5oICQoVFJVTk5FUl9PVVRQVVQpXG4tXG4mIzQzO2lmbmVxICgkKFNLSVBfRE9DUyksMSlcbiYjNDM7YWxsOiBkb2NzXG4gZW5kaWZcbiBcbi0jIGVuc3VyZSB3ZSBzZXQgdXAgdGVzdHMuaCBoZWFkZXIgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZVxuLWlmZXEgKCQoJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyKSwpXG4tJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyIDo9IHlcbi0kKFRSVU5ORVJfVEVTVFNfSERSKTogJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jXG4tXHQkJChjYWxsIG1zZyxURVNULUhEUiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkJChzaGVsbCAoZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7XHRcdFx0XHRcdFxcXG4tXHRcdCAgc2VkIC1uIC1FICYjMzk7cy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dJiM0MzspXFwoKHZvaWQpP1xcKS4qL0RFRklORV9URVNUKFxcMikvcCYjMzk7XHRcXFxuLVx0XHRcdCQoVFJVTk5FUl9URVNUU19ESVIpLyouYyB8IHNvcnQgO1x0XFxcbi1cdFx0ICkgXHUwMDNlICQkQClcbi1lbmRpZlxuJiM0Mztkb2NzOlxuJiM0MztcdCQoUSlSU1QyTUFOX09QVFM9XCYjMzQ7LS1leGl0LXN0YXR1cz0xXCYjMzQ7ICQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcylcdFxcXG4mIzQzO1x0ICAgICAgICAgICAgLWYgTWFrZWZpbGUuZG9jc1x0XHRcdFx0XHRcXFxuJiM0MztcdCAgICAgICAgICAgIHByZWZpeD0gT1VUUFVUPSQoT1VUUFVUKS8gREVTVERJUj0kKE9VVFBVVCkvICRAXG4gXG4tJChUUlVOTkVSX09VVFBVVCkvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiAkKFJFU09MVkVfQlRGSURTKSAkKFRSVU5ORVJfT1VUUFVUKS9idGZfZGF0YS5icGYub1xuLSQoVFJVTk5FUl9PVVRQVVQpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogcHJpdmF0ZSBURVNUX05FRURTX0JURklEUyA9IDFcbi1cbi0jIGNvbXBpbGUgaW5kaXZpZHVhbCB0ZXN0IGZpbGVzXG4tIyBOb3RlOiB3ZSBjZCBpbnRvIG91dHB1dCBkaXJlY3RvcnkgdG8gZW5zdXJlIGVtYmVkZGVkIEJQRiBvYmplY3QgaXMgZm91bmRcbi0kKFRSVU5ORVJfVEVTVF9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0Lm86XHRcdFx0XFxcbi1cdFx0ICAgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jXHRcdFx0XHRcXFxuLVx0XHQgICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kXG4tXHQkJChjYWxsIG1zZyxURVNULU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkKFEpKGNkICQkKEBEKSBcdTAwMjZcdTAwMjYgJCQoQ0MpIC1JLiAkJChDRkxBR1MpIC1NTUQgLU1UICQkQCAtYyAkKENVUkRJUikvJCRcdTAwM2MgJCQoTERMSUJTKSAtbyAkJChARikpICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJCRAOyBwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVRFU1QmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjIpKSlcbi1cdCQkKGlmICQkKFRFU1RfTkVFRFNfQlRGSURTKSxcdFx0XHRcdFx0XHRcXFxuLVx0XHQkKFEpaWYgWyAtZiAkJEAgXTsgdGhlblx0XHRcdFx0XHRcdFxcXG4tXHRcdCQoaWYgJChmaWx0ZXIgMSwkKFYpKSx0cnVlLHByaW50ZiAmIzM5OyAgJS04cyVzICVzXFxuJiMzOTsgXCYjMzQ7QlRGSURTXCYjMzQ7IFwmIzM0OyBbJChUUlVOTkVSX0JJTkFSWSldXCYjMzQ7IFwmIzM0OyQkKG5vdGRpciAkJEApXCYjMzQ7KTsgXFxcbi1cdFx0JChSRVNPTFZFX0JURklEUykgLS1idGYgJChUUlVOTkVSX09VVFBVVCkvYnRmX2RhdGEuYnBmLm8gJCRAO1x0XFxcbi1cdFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJCRALkJURl9pZHMgJCRAO1x0XHRcXFxuLVx0XHRmaSlcbi1cbi0kKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKTogJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0LmQ6XHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jXHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpXHRcdFx0XFxcbi1cdFx0XHQgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpXHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9CUEZfU0tFTFMpXHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0JQRl9MU0tFTFMpXHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEKVx0XHRcXFxuLVx0XHRcdCAgICAkKFRSVU5ORVJfQlBGX1NLRUxTX0xJTktFRClcbi1cbi1pZmVxICgkKGZpbHRlciBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHMsJChNQUtFQ01ER09BTFMpKSwpXG4taW5jbHVkZSAkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUX09CSlM6Lm89LmQpKVxuLWVuZGlmXG4mIzQzO2RvY3MtY2xlYW46XG4mIzQzO1x0JChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcylcdFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgICAgICAgICAtZiBNYWtlZmlsZS5kb2NzXHRcdFx0XHRcdFxcXG4mIzQzO1x0ICAgICAgICAgICAgcHJlZml4PSBPVVRQVVQ9JChPVVRQVVQpLyBERVNURElSPSQoT1VUUFVUKS8gJEBcbiBcbi0jIGFkZCBwZXIgZXh0cmEgb2JqIENGR0xBR1MgZGVmaW5pdGlvbnNcbi0kKGZvcmVhY2ggTiwkKHBhdHN1YnN0ICQoVFJVTk5FUl9PVVRQVVQpLyUubywlLCQoVFJVTk5FUl9FWFRSQV9PQkpTKSksXHRcXFxuLVx0JChldmFsICQoVFJVTk5FUl9PVVRQVVQpLyQoTikubzogQ0ZMQUdTICYjNDM7PSAkKCQoTikuYy1DRkxBR1MpKSlcbi1cbi0kKFRSVU5ORVJfRVhUUkFfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUubzpcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAlLmNcdFx0XHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChWRVJJRllfU0lHX0hEUilcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFRSVU5ORVJfVEVTVFNfSERSKVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKVxuLVx0JCQoY2FsbCBtc2csRVhULU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgLWMgJCRcdTAwM2MgJCQoTERMSUJTKSAtbyAkJEBcbi1cbi0kKFRSVU5ORVJfTElCX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLm86JChUT09MU0RJUikvbGliLyUuY1xuLVx0JCQoY2FsbCBtc2csTElCLU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgLWMgJCRcdTAwM2MgJCQoTERMSUJTKSAtbyAkJEBcbi1cbi0jIG5vbi1mbGF2b3JlZCBpbi1zcmN0cmVlIGJ1aWxkcyByZWNlaXZlIHNwZWNpYWwgdHJlYXRtZW50LCBpbiBwYXJ0aWN1bGFyLCB3ZVxuLSMgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKVxuLSQoVFJVTk5FUl9CSU5BUlkpLWV4dHJhczogJChUUlVOTkVSX0VYVFJBX0ZJTEVTKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4taWZuZXEgKCQyOiQoT1VUUFVUKSw6JChzaGVsbCBwd2QpKVxuLVx0JCQoY2FsbCBtc2csRVhULUNPUFksJChUUlVOTkVSX0JJTkFSWSksJChUUlVOTkVSX0VYVFJBX0ZJTEVTKSlcbi1cdCQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJCReICQoVFJVTk5FUl9PVVRQVVQpL1xuJiM0MzsjIHZtbGludXguaCBpcyBmaXJzdCBkdW1wZWQgdG8gYSB0ZW1wb3JhcnkgZmlsZSBhbmQgdGhlbiBjb21wYXJlZCB0b1xuJiM0MzsjIHRoZSBwcmV2aW91cyB2ZXJzaW9uLiBUaGlzIGhlbHBzIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHJlLWJ1aWxkcyBvZlxuJiM0MzsjIEJQRiBvYmplY3RzLlxuJiM0MzskKElOQ0xVREVfRElSKS92bWxpbnV4Lmg6ICQoVk1MSU5VWF9CVEYpICQoQlBGVE9PTCkgfCAkKElOQ0xVREVfRElSKVxuJiM0MztpZmVxICgkKFZNTElOVVhfSCksKVxuJiM0MztcdCQoY2FsbCBtc2csR0VOLCwkQClcbiYjNDM7XHQkKFEpJChCUEZUT09MKSBidGYgZHVtcCBmaWxlICQoVk1MSU5VWF9CVEYpIGZvcm1hdCBjIFx1MDAzZSAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcFxuJiM0MztcdCQoUSljbXAgLXMgJChJTkNMVURFX0RJUikvLnZtbGludXguaC50bXAgJEAgfHwgbXYgJChJTkNMVURFX0RJUikvLnZtbGludXguaC50bXAgJEBcbiYjNDM7ZWxzZVxuJiM0MztcdCQoY2FsbCBtc2csQ1AsLCRAKVxuJiM0MztcdCQoUSljcCBcJiMzNDskKFZNTElOVVhfSClcJiMzNDsgJEBcbiBlbmRpZlxuIFxuLSMgc29tZSBYLnRlc3QubyBmaWxlcyBoYXZlIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIG9uIFkuYnBmLm8gZmlsZXNcbi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6IHwgJChUUlVOTkVSX0JQRl9PQkpTKVxuLVxuLSQoT1VUUFVUKS8kKFRSVU5ORVJfQklOQVJZKTogJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLCQkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUX09CSlMpKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSksJChUUlVOTkVSX1RFU1RfT0JKUykpXHRcXFxuLVx0XHRcdCAgICAgJChUUlVOTkVSX0VYVFJBX09CSlMpICQkKEJQRk9CSilcdFx0XFxcbi1cdFx0XHQgICAgICQoVFJVTk5FUl9MSUJfT0JKUylcdFx0XHRcXFxuLVx0XHRcdCAgICAgJChUUlVOTkVSX0JQRlRPT0wpXHRcdFx0XHRcXFxuLVx0XHRcdCAgICAgJChPVVRQVVQpL3ZlcmlzdGF0XHRcdFx0XHRcXFxuLVx0XHRcdCAgICAgfCAkKFRSVU5ORVJfQklOQVJZKS1leHRyYXNcdFx0XHRcXFxuLVx0XHRcdCAgICAgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLCQoVFJVTk5FUl9URVNUX09CSlMpKSlcbi1cdCQkKGNhbGwgbXNnLEJJTkFSWSwsJCRAKVxuLVx0JChRKSQkKENDKSAkJChDRkxBR1MpICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkJChmaWx0ZXIgJS5hICUubywkJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTKSkgJCQoZmlsdGVyLW91dCAkKFRSVU5ORVJfVEVTVF9PQkpTKSwkJF4pKSwkJChmaWx0ZXIgJS5hICUubywkJF4pKSwkJChmaWx0ZXIgJS5hICUubywkJF4pKSAkJChMRExJQlMpICQkKExMVk1fTERMSUJTKSAkJChMREZMQUdTKSAkJChMTFZNX0xERkxBR1MpIC1vICQkQFxuLVx0JChRKWxuIC1zZiAkKGlmICQyLC4uLC4pL3Rvb2xzL2J1aWxkL2JwZnRvb2wvJChVU0VfQk9PVFNUUkFQKWJwZnRvb2wgXFxcbi1cdFx0ICAgJChPVVRQVVQpLyQoaWYgJDIsJDIvKWJwZnRvb2xcbi1cbi1lbmRlZlxuLVxuLVZFUklGWV9TSUdfU0VUVVAgOj0gJChDVVJESVIpL3ZlcmlmeV9zaWdfc2V0dXAuc2hcbi1WRVJJRllfU0lHX0hEUiA6PSB2ZXJpZmljYXRpb25fY2VydC5oXG4tVkVSSUZJQ0FUSU9OX0NFUlQgICA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkuZGVyXG4tUFJJVkFURV9LRVkgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LnBlbVxuLVxuLSQoVkVSSUZJQ0FUSU9OX0NFUlQpICQoUFJJVkFURV9LRVkpOiAkKFZFUklGWV9TSUdfU0VUVVApXG4mIzQzOyMgT25lIGdlbmtleSBydW4gcHJvZHVjZXMgYm90aCBmaWxlcy4gQSBwbGFpbiB0d28tdGFyZ2V0IHJ1bGUgaXMgbm90XG4mIzQzOyMgZ3JvdXBlZCAtIHVuZGVyIC1qIG1ha2Ugd291bGQgcnVuIGdlbmtleSB0d2ljZSBjb25jdXJyZW50bHkgYW5kIHRoZVxuJiM0MzsjIG9wZW5zc2wgaW52b2NhdGlvbnMgcmFjZTsgdGhlIHBhdHRlcm4gZm9ybSBpcyBpbXBsaWNpdGx5IGdyb3VwZWQgZXZlblxuJiM0MzsjIHdpdGggbWFrZSBcdTAwM2MgNC4zIChzYW1lIHdvcmthcm91bmQgYXMgdGhlIHRlc3Rfa21vZHMgcnVsZSkuXG4mIzQzOyQoQlVJTERfRElSKS8lLnBlbSAkKEJVSUxEX0RJUikvJS5kZXI6ICQoVkVSSUZZX1NJR19TRVRVUClcbiBcdCQoUSlta2RpciAtcCAkKEJVSUxEX0RJUilcbiBcdCQoUSkkKFZFUklGWV9TSUdfU0VUVVApIGdlbmtleSAkKEJVSUxEX0RJUilcbiBcbkBAIC04MzUsMTE2ICYjNDM7MzcwLDE4MyBAQCBMSUJBUkVOQV9CUEZfREVQUyA6PSAkKHdpbGRjYXJkIGxpYmFyZW5hL01ha2VmaWxlXHRcdFxcXG4gXHRcdFx0XHQgbGliYXJlbmEvc2VsZnRlc3RzLypcdFx0XFxcbiBcdFx0XHRcdCBsaWJhcmVuYS8qLmJwZi5vKVxuIFxuLUxJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oXG4tXG4gJChMSUJBUkVOQV9TS0VMKTogJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoQlBGT0JKKSAkKExJQkFSRU5BX0JQRl9ERVBTKVxuIFx0JiM0MzskKE1BS0UpIC1DIGxpYmFyZW5hIGxpYmFyZW5hLnNrZWwuaCAkKExJQkFSRU5BX01BS0VfQVJHUylcbiBcbi1pZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKVxuLUxJQkFSRU5BX0FTQU5fU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYV9hc2FuLnNrZWwuaFxuLUNGTEFHUyAmIzQzOz0gLURIQVNfQlBGX0FSRU5BX0FTQU5cbiYjNDM7bGliYXJlbmE6ICQoTElCQVJFTkFfU0tFTClcbiBcbiYjNDM7aWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcbiAkKExJQkFSRU5BX0FTQU5fU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CUEZfREVQUylcbiBcdCYjNDM7JChNQUtFKSAtQyBsaWJhcmVuYSBsaWJhcmVuYV9hc2FuLnNrZWwuaCAkKExJQkFSRU5BX01BS0VfQVJHUylcbiYjNDM7XG4mIzQzO2xpYmFyZW5hX2FzYW46ICQoTElCQVJFTkFfQVNBTl9TS0VMKVxuIGVuZGlmXG4gXG4tIyBEZWZpbmUgdGVzdF9wcm9ncyB0ZXN0IHJ1bm5lci5cbi1UUlVOTkVSX1RFU1RTX0RJUiA6PSBwcm9nX3Rlc3RzXG4tVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzXG4tVFJVTk5FUl9FWFRSQV9TT1VSQ0VTIDo9IHRlc3RfcHJvZ3MuY1x0XHRcXFxuLVx0XHRcdCBjZ3JvdXBfaGVscGVycy5jXHRcXFxuLVx0XHRcdCB0cmFjZV9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IG5ldHdvcmtfaGVscGVycy5jXHRcXFxuLVx0XHRcdCB0ZXN0aW5nX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgYnRmX2hlbHBlcnMuY1x0XHRcXFxuLVx0XHRcdCBjYXBfaGVscGVycy5jXHRcdFxcXG4tXHRcdFx0IHVucHJpdl9oZWxwZXJzLmMgXHRcXFxuLVx0XHRcdCBzeXNjdGxfaGVscGVycy5jXHRcXFxuLVx0XHRcdCBuZXRsaW5rX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgaml0X2Rpc2FzbV9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IGlvX2hlbHBlcnMuY1x0XHRcXFxuLVx0XHRcdCB0ZXN0X2xvYWRlci5jXHRcdFxcXG4tXHRcdFx0IHhzay5jXHRcdFx0XFxcbi1cdFx0XHQgZGlzYXNtLmNcdFx0XFxcbi1cdFx0XHQgZGlzYXNtX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQganNvbl93cml0ZXIuYyBcdFx0XFxcbi1cdFx0XHQgJChWRVJJRllfU0lHX0hEUilcdFx0XFxcbi1cdFx0XHQgZmxvd19kaXNzZWN0b3JfbG9hZC5oXHRcXFxuLVx0XHRcdCBpcF9jaGVja19kZWZyYWdfZnJhZ3MuaFx0XFxcbi1cdFx0XHQgYnBmdG9vbF9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IHVzZHRfMS5jIHVzZHRfMi5jXHRcXFxuLVx0XHRcdCAkKExJQkFSRU5BX1NLRUwpXHRcXFxuLVx0XHRcdCAkKExJQkFSRU5BX0FTQU5fU0tFTClcbi1UUlVOTkVSX0xJQl9TT1VSQ0VTIDo9IGZpbmRfYml0LmNcbi1UUlVOTkVSX0VYVFJBX0ZJTEVTIDo9ICQoT1VUUFVUKS91cmFuZG9tX3JlYWRcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvXHRcdFx0XFxcbi1cdFx0ICAgICAgICQoT1VUUFVUKS94ZHBfc3lucHJveHlcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKE9VVFBVVCkvc2lnbi1maWxlXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChPVVRQVVQpL3Vwcm9iZV9tdWx0aVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoVEVTVF9LTU9EX1RBUkdFVFMpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgaW1hX3NldHVwLnNoIFx0XHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChWRVJJRllfU0lHX1NFVFVQKVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlXyouYylcdFx0XFxcbi1cdFx0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubylcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzKSlcbi1cbi0jIERlZmluZSB0ZXN0X3Byb2dzLW5vX2FsdTMyIHRlc3QgcnVubmVyLlxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfTk9BTFUzMl9CUEZfQlVJTERfUlVMRVxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKVxuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3Msbm9fYWx1MzIpKVxuLVxuLSMgRGVmaW5lIHRlc3RfcHJvZ3MtY3B1djQgdGVzdCBydW5uZXIuXG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzOyMgR2VuZXJhdGVkIHRlc3QgbGlzdCBoZWFkZXJzXG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO1xuJiM0MztkZWZpbmUgZ2VuX3Rlc3RzX2hkclxuJiM0MztcdCQoY2FsbCBtc2csVEVTVC1IRFIsLCRAKVxuJiM0MztcdCQoUSkoZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7XHRcdFxcXG4mIzQzO1x0ICAgICBzZWQgLW4gLUUgJiMzOTtzL152b2lkIChzZXJpYWxfKT90ZXN0XyhbYS16QS1aMC05X10mIzQzOylcXCgodm9pZCk/XFwpLiovREVGSU5FX1RFU1QoXFwyKS9wJiMzOTsgXFxcbiYjNDM7XHRcdCQoQEQpLyouYyB8IHNvcnQpIFx1MDAzZSAkQFxuJiM0MztlbmRlZlxuJiM0MztcbiYjNDM7cHJvZ190ZXN0cy90ZXN0cy5oOiAkKHdpbGRjYXJkIHByb2dfdGVzdHMvKi5jKVxuJiM0MztcdCQoZ2VuX3Rlc3RzX2hkcilcbiYjNDM7XG4mIzQzO21hcF90ZXN0cy90ZXN0cy5oOiAkKHdpbGRjYXJkIG1hcF90ZXN0cy8qLmMpXG4mIzQzO1x0JChnZW5fdGVzdHNfaGRyKVxuJiM0MztcbiYjNDM7dmVyaWZpZXIvdGVzdHMuaDogdmVyaWZpZXIvKi5jXG4mIzQzO1x0JChRKSggY2QgdmVyaWZpZXIvOyBcXFxuJiM0MztcdCAgICAgIGVjaG8gJiMzOTsvKiBHZW5lcmF0ZWQgaGVhZGVyLCBkbyBub3QgZWRpdCAqLyYjMzk7OyBcXFxuJiM0MztcdCAgICAgIGVjaG8gJiMzOTsjaWZkZWYgRklMTF9BUlJBWSYjMzk7OyBcXFxuJiM0MztcdCAgICAgIGxzICouYyAyXHUwMDNlIC9kZXYvbnVsbCB8IHNlZCAtZSAmIzM5O3NAXFwoLipcXClAI2luY2x1ZGUgXFxcJiMzNDtcXDFcXFwmIzM0O0AmIzM5OzsgXFxcbiYjNDM7XHQgICAgICBlY2hvICYjMzk7I2VuZGlmJiMzOTsgXFxcbiYjNDM7XHQgICAgKSBcdTAwM2UgdmVyaWZpZXIvdGVzdHMuaFxuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBTaGFyZWQgaGVscGVyIG9iamVjdHMsIHVzZWQgYnkgdGhlIHN0YW5kYWxvbmUgYmluYXJpZXMgYmVsb3cgYW5kIChhc1xuJiM0MzsjIHByZWJ1aWx0IGlucHV0cykgYnkgdGhlIHVuZmxhdm9yZWQgdGVzdF9wcm9ncyBydW5uZXIuXG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO1xuJiM0MzsjIFNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgdXNlIExMVk0gbGlicmFyaWVzXG4mIzQzOyQoT1VUUFVUKS9qaXRfZGlzYXNtX2hlbHBlcnMubzogQ0ZMQUdTICYjNDM7PSAkKExMVk1fQ0ZMQUdTKVxuJiM0MztcbiYjNDM7SEVMUEVSX09CSlMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyx0ZXN0aW5nX2hlbHBlcnMubyBjZ3JvdXBfaGVscGVycy5vIFxcXG4mIzQzO1x0ICAgICAgIHRyYWNlX2hlbHBlcnMubyBuZXR3b3JrX2hlbHBlcnMubyBqc29uX3dyaXRlci5vXHRcdFxcXG4mIzQzO1x0ICAgICAgIGNhcF9oZWxwZXJzLm8gdW5wcml2X2hlbHBlcnMubyB1c2R0XzEubyB1c2R0XzIubyB4c2subylcbiYjNDM7XG4mIzQzOyMgJChCUEZUT09MKSBpcyBhIHByZXJlcXVpc2l0ZSBiZWNhdXNlIGl0cyBzdWItbWFrZSBpcyB3aGF0IGluc3RhbGxzXG4mIzQzOyMgbGliYnBmJiMzOTtzIGludGVybmFsIGhlYWRlcnMgKGJwZi9oYXNobWFwLmgsIGJwZi9saWJicGZfaW50ZXJuYWwuaCkgaW50b1xuJiM0MzsjICQoSU5DTFVERV9ESVIpOyB3aXRob3V0IGl0LCBoZWxwZXJzIGluY2x1ZGluZyB0aG9zZSBoZWFkZXJzIHJhY2UgdGhlXG4mIzQzOyMgaW5zdGFsbCBhbmQgY2FuIHNpbGVudGx5IHBpY2sgdXAgdGhlIHNvdXJjZS10cmVlIGNvcGllcyBpbnN0ZWFkLlxuJiM0MzskKEhFTFBFUl9PQkpTKTogZmxvd19kaXNzZWN0b3JfbG9hZC5oIGlwX2NoZWNrX2RlZnJhZ19mcmFncy5oXHRcdFxcXG4mIzQzO1x0XHQkKFZFUklGWV9TSUdfSERSKSBwcm9nX3Rlc3RzL3Rlc3RzLmggJChCUEZPQkopICQoQlBGVE9PTClcbiYjNDM7XG4mIzQzOyQoT1VUUFVUKS90ZXN0X3NvY2ttYXA6ICQoT1VUUFVUKS9jZ3JvdXBfaGVscGVycy5vICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xuJiM0MzskKE9VVFBVVCkvdGVzdF90Y3Bub3RpZnlfdXNlcjogJChPVVRQVVQpL2Nncm91cF9oZWxwZXJzLm9cdFx0XFxcbiYjNDM7XHRcdFx0ICAgICAgICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1x0XHRcXFxuJiM0MztcdFx0XHQgICAgICAgJChPVVRQVVQpL3RyYWNlX2hlbHBlcnMub1xuJiM0MzskKE9VVFBVVCkvdGVzdF90YWc6ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xuJiM0MzskKE9VVFBVVCkvdGVzdF9saXJjX21vZGUyX3VzZXI6ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xuJiM0MzskKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZDogZmxvd19kaXNzZWN0b3JfbG9hZC5oICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBUZXN0IHJ1bm5lciBpbnN0YW5jZXMsIG9uZSBzdWItbWFrZSBlYWNoIChzZWUgTWFrZWZpbGUucnVubmVyKS5cbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzOyMgVGhlIExMVk0gZmVhdHVyZS1wcm9iZSByZXN1bHRzIGFyZSBleHBvcnRlZCB0byB0aGUgcnVubmVyIHN1Yi1tYWtlcy5cbiYjNDM7IyBDQyBpcyBwYXNzZWQgZXhwbGljaXRseSBpbnN0ZWFkOiBleHBvcnRpbmcgaXQgd291bGQgYWxzbyBsZWFrIGxpYi5tayYjMzk7c1xuJiM0MzsjIENDIGludG8gdGhlIGxpYmJwZi9icGZ0b29sL3Jlc29sdmVfYnRmaWRzIHN1Yi1idWlsZHMsIHdoaWNoIGNvbXB1dGVcbiYjNDM7IyB0aGVpciBvd24uXG4mIzQzO2V4cG9ydCBMTFZNX0NGTEFHUyBMTFZNX0xETElCUyBMTFZNX0xERkxBR1NcbiYjNDM7XG4mIzQzO1JVTk5FUl9NQUtFIDo9ICQoTUFLRSkgLWYgTWFrZWZpbGUucnVubmVyIE9VVFBVVD0kKE9VVFBVVCkgQ0M9JiMzOTskKENDKSYjMzk7XG4mIzQzO1xuJiM0MzsjIEV2ZXJ5dGhpbmcgYSBydW5uZXIgaW5zdGFuY2UgcmVmZXJlbmNlcyBidXQgZG9lcyBub3Qga25vdyBob3cgdG8gYnVpbGQuXG4mIzQzO1JVTk5FUl9QUkVSRVFTIDo9ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChCUEZUT09MKVx0XHRcXFxuJiM0MztcdFx0ICAkKFRSVU5ORVJfQlBGVE9PTCkgJChSRVNPTFZFX0JURklEUylcdFx0XHRcXFxuJiM0MztcdFx0ICAkKE9VVFBVVCkvdmVyaXN0YXRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdCAgJChWRVJJRllfU0lHX0hEUikgJChQUklWQVRFX0tFWSkgJChWRVJJRklDQVRJT05fQ0VSVClcdFxcXG4mIzQzO1x0XHQgICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXHRcdFxcXG4mIzQzO1x0XHQgIHByb2dfdGVzdHMvdGVzdHMuaFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0ICAkKEhFTFBFUl9PQkpTKVx0XHRcdFx0XHRcXFxuJiM0MztcdFx0ICAkKE9VVFBVVCkvdXJhbmRvbV9yZWFkICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc29cdFxcXG4mIzQzO1x0XHQgICQoT1VUUFVUKS94ZHBfc3lucHJveHkgJChPVVRQVVQpL3NpZ24tZmlsZVx0XHRcXFxuJiM0MztcdFx0ICAkKE9VVFBVVCkvdXByb2JlX211bHRpICQoVEVTVF9LTU9EX1RBUkdFVFMpXG4mIzQzO1xuJiM0MztGT1JDRTpcbiYjNDM7XG4mIzQzOyMgVGhlIGRlZmF1bHQgZmxhdm9yJiMzOTtzIHNrZWxldG9ucyBhcmUgYWxzbyBpbnB1dHMgb2YgYmVuY2gsIHRlc3RfbWFwcyxcbiYjNDM7IyB4c2t4Y2VpdmVyLCB4ZHBfKiBhbmQgdGVzdF9jcHA7IFwmIzM0O2RlZmF1bHQtc2tlbHNcJiMzNDsgYnVpbGRzIGp1c3QgdGhvc2VcbiYjNDM7IyB3aXRob3V0IHRoZSB0ZXN0X3Byb2dzIHRlc3Qgb2JqZWN0cyBhbmQgYmluYXJ5LlxuJiM0MzsuUEhPTlk6IGRlZmF1bHQtc2tlbHNcbiYjNDM7ZGVmYXVsdC1za2VsczogJChSVU5ORVJfUFJFUkVRUylcbiYjNDM7XHQmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9IFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXG4mIzQzO1x0XHRCUEZfQlVJTEQ9Y2xhbmcgQlBGX01DUFU9djMgQlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUUyBza2Vsc1xuJiM0MztcbiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3M6ICQoUlVOTkVSX1BSRVJFUVMpIGRlZmF1bHQtc2tlbHMgRk9SQ0VcbiYjNDM7XHQmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9IFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXG4mIzQzO1x0XHRCUEZfQlVJTEQ9Y2xhbmcgQlBGX01DUFU9djMgQlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUU1xuJiM0MztcbiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3Mtbm9fYWx1MzI6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXG4mIzQzO1x0JiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPW5vX2FsdTMyIFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXG4mIzQzO1x0XHRCUEZfQlVJTEQ9Y2xhbmcgQlBGX01DUFU9djJcbiYjNDM7XG4gaWZuZXEgKCQoQ0xBTkdfQ1BVVjQpLClcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX0NQVVY0X0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzLGNwdXY0KSlcbiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3MtY3B1djQ6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXG4mIzQzO1x0JiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPWNwdXY0IFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXG4mIzQzO1x0XHRCUEZfQlVJTEQ9Y2xhbmcgQlBGX01DUFU9djQgQlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUU1xuIGVuZGlmXG4gXG4tIyBEZWZpbmUgdGVzdF9wcm9ncyBCUEYtR0NDLWZsYXZvcmVkIHRlc3QgcnVubmVyLlxuIGlmbmVxICgkKEJQRl9HQ0MpLClcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IEdDQ19CUEZfQlVJTERfUlVMRVxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLGdjYywpXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxicGZfZ2NjKSlcbi1lbmRpZlxuLVxuLSMgRGVmaW5lIHRlc3RfbWFwcyB0ZXN0IHJ1bm5lci5cbi1UUlVOTkVSX1RFU1RTX0RJUiA6PSBtYXBfdGVzdHNcbi1UUlVOTkVSX0JQRl9QUk9HU19ESVIgOj0gcHJvZ3Ncbi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9tYXBzLmNcbi1UUlVOTkVSX0xJQl9TT1VSQ0VTIDo9XG4tVFJVTk5FUl9FWFRSQV9GSUxFUyA6PVxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gJCQoZXJyb3Igbm8gQlBGIG9iamVjdHMgc2hvdWxkIGJlIGJ1aWx0KVxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PVxuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfbWFwcykpXG4tXG4tIyBEZWZpbmUgdGVzdF92ZXJpZmllciB0ZXN0IHJ1bm5lci5cbi0jIEl0IGlzIG11Y2ggc2ltcGxlciB0aGFuIHRlc3RfbWFwcy90ZXN0X3Byb2dzIGFuZCBzdWZmaWNpZW50bHkgZGlmZmVyZW50IGZyb21cbi0jIHRoZW0gKGUuZy4sIHRlc3QuaCBpcyB1c2luZyBjb21wbGV0ZWx5IHBhdHRlcm4pLCB0aGF0IGl0JiMzOTtzIHdvcnRoIGp1c3Rcbi0jIGV4cGxpY2l0bHkgZGVmaW5pbmcgYWxsIHRoZSBydWxlcyBleHBsaWNpdGx5LlxuLXZlcmlmaWVyL3Rlc3RzLmg6IHZlcmlmaWVyLyouY1xuLVx0JChzaGVsbCAoIGNkIHZlcmlmaWVyLzsgXFxcbi1cdFx0ICBlY2hvICYjMzk7LyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8mIzM5OzsgXFxcbi1cdFx0ICBlY2hvICYjMzk7I2lmZGVmIEZJTExfQVJSQVkmIzM5OzsgXFxcbi1cdFx0ICBscyAqLmMgMlx1MDAzZSAvZGV2L251bGwgfCBzZWQgLWUgJiMzOTtzQFxcKC4qXFwpQCNpbmNsdWRlIFxcXCYjMzQ7XFwxXFxcJiMzNDtAJiMzOTs7IFxcXG4tXHRcdCAgZWNobyAmIzM5OyNlbmRpZiYjMzk7IFxcXG4tXHRcdCkgXHUwMDNlIHZlcmlmaWVyL3Rlc3RzLmgpXG4tJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6IHRlc3RfdmVyaWZpZXIuYyB2ZXJpZmllci90ZXN0cy5oICQoQlBGT0JKKSB8ICQoT1VUUFVUKVxuJiM0MzskKE9VVFBVVCkvdGVzdF9wcm9ncy1icGZfZ2NjOiAkKFJVTk5FUl9QUkVSRVFTKSBGT1JDRVxuJiM0MztcdCYjNDM7JChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1icGZfZ2NjIFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXG4mIzQzO1x0XHRCUEZfQlVJTEQ9Z2NjXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MzsjIHRlc3RfbWFwcyBjb21waWxlcyBtYXBfdGVzdHMvKi5jIGFnYWluc3QgdGhlIGRlZmF1bHQgZmxhdm9yJiMzOTtzIHNrZWxldG9uc1xuJiM0MzskKE9VVFBVVCkvdGVzdF9tYXBzOiAkKFJVTk5FUl9QUkVSRVFTKSBtYXBfdGVzdHMvdGVzdHMuaCBkZWZhdWx0LXNrZWxzIEZPUkNFXG4mIzQzO1x0JiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfbWFwcyBGTEFWT1I9IFRFU1RTX0RJUj1tYXBfdGVzdHMgXFxcbiYjNDM7XHRcdEJQRl9CVUlMRD1ub25lXG4mIzQzO1xuJiM0MzsjIERlZmF1bHQtZmxhdm9yIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnMgY29uc3VtZWQgYnkgdGFyZ2V0cyBpbiB0aGlzXG4mIzQzOyMgTWFrZWZpbGUgKGFuZCBieSBsaWIubWsmIzM5O3MgaW5zdGFsbCBydWxlKSBhcmUgcHJvZHVjZWQgYnkgdGhlIHJ1bm5lclxuJiM0MzsjIHN1Yi1tYWtlIGFib3ZlOyB0aGUgZW1wdHkgcmVjaXBlIHBsdXMgdGhlIG9yZGVyLW9ubHkgcHJlcmVxdWlzaXRlXG4mIzQzOyMgbWFrZXMgdGhlbSBhdmFpbGFibGUgaGVyZSB3aXRob3V0IGR1cGxpY2F0aW5nIHRoZSBydW5uZXImIzM5O3MgcnVsZXMuXG4mIzQzO0RFRkFVTFRfQlBGX09CSlMgOj0gJChwYXRzdWJzdCBwcm9ncy8lLmMsJChPVVRQVVQpLyUuYnBmLm8sJCh3aWxkY2FyZCBwcm9ncy8qLmMpKVxuJiM0MztURVNUX0dFTl9GSUxFUyAmIzQzOz0gJChERUZBVUxUX0JQRl9PQkpTKVxuJiM0MztcbiYjNDM7QkVOQ0hfU0tFTFMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyxcdFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgICAgdGVzdF9vdmVyaGVhZC5za2VsLmggdHJpZ2dlcl9iZW5jaC5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgICAgcmluZ2J1Zl9iZW5jaC5za2VsLmggcGVyZmJ1Zl9iZW5jaC5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgICAgYmxvb21fZmlsdGVyX2JlbmNoLnNrZWwuaCBicGZfbG9vcF9iZW5jaC5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgICAgc3RybmNtcF9iZW5jaC5za2VsLmggYnBmX2hhc2htYXBfZnVsbF91cGRhdGVfYmVuY2guc2tlbC5oXFxcbiYjNDM7XHQgICAgICAgbG9jYWxfc3RvcmFnZV9iZW5jaC5za2VsLmhcdFx0XHRcdFxcXG4mIzQzO1x0ICAgICAgIGxvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlX2JlbmNoLnNrZWwuaFx0XHRcXFxuJiM0MztcdCAgICAgICBiZW5jaF9sb2NhbF9zdG9yYWdlX2NyZWF0ZS5za2VsLmhcdFx0XHRcXFxuJiM0MztcdCAgICAgICBicGZfaGFzaG1hcF9sb29rdXAuc2tlbC5oIGh0YWJfbWVtX2JlbmNoLnNrZWwuaFx0XHRcXFxuJiM0MztcdCAgICAgICBjcnlwdG9fYmVuY2guc2tlbC5oIGJlbmNoX3NvY2ttYXBfcHJvZy5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgICAgbHBtX3RyaWVfYmVuY2guc2tlbC5oIGxwbV90cmllX21hcC5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgICAgYnBmX25vcF9iZW5jaC5za2VsLmggeGRwX2xiX2JlbmNoLnNrZWwuaClcbiYjNDM7VE9QX1NLRUxTIDo9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8seHNrX3hkcF9wcm9ncy5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgIHhkcF9od19tZXRhZGF0YS5za2VsLmggeGRwX2ZlYXR1cmVzLnNrZWwuaFx0XHRcdFxcXG4mIzQzO1x0ICAgICB0ZXN0X2NvcmVfZXh0ZXJuLnNrZWwuaCkgJChCRU5DSF9TS0VMUylcbiYjNDM7XG4mIzQzOyMgRW1wdHktcmVjaXBlIGRlbGVnYXRpb246IFwmIzM0O2RlZmF1bHQtc2tlbHNcJiMzNDsgKHJlKWJ1aWxkcyB0aGUgZmlsZSB2aWEgdGhlXG4mIzQzOyMgcnVubmVyIHN1Yi1tYWtlLCBhZnRlciB3aGljaCBtYWtlIHJlLXN0YXRzIHRoZSB0YXJnZXQsIHNvIGRlcGVuZGVudHNcbiYjNDM7IyBzZWUgZnJlc2ggdGltZXN0YW1wcyB3aXRoaW4gdGhlIHNhbWUgaW52b2NhdGlvbi4gRGVwZW5kZW50cyBzdGlsbFxuJiM0MzsjIHJlYnVpbGQgb24gbXRpbWUgb25seSAtIHRoZSBwaG9ueSBwcmVyZXF1aXNpdGUgZG9lcyBub3QgY2FzY2FkZS5cbiYjNDM7JChERUZBVUxUX0JQRl9PQkpTKSAkKFRPUF9TS0VMUyk6IGRlZmF1bHQtc2tlbHMgO1xuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBTdGFuZGFsb25lIHRlc3QgYmluYXJpZXNcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzOyMgdGVzdF92ZXJpZmllciBpcyBtdWNoIHNpbXBsZXIgdGhhbiB0ZXN0X21hcHMvdGVzdF9wcm9ncyBhbmRcbiYjNDM7IyBzdWZmaWNpZW50bHkgZGlmZmVyZW50IGZyb20gdGhlbSAoZS5nLiwgaXRzIHRlc3RzLmggdXNlcyBhIGNvbXBsZXRlbHlcbiYjNDM7IyBkaWZmZXJlbnQgcGF0dGVybiksIHRoYXQgaXQmIzM5O3Mgd29ydGgganVzdCBkZWZpbmluZyBpdHMgcnVsZXMgZXhwbGljaXRseS5cbiYjNDM7JChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6IHRlc3RfdmVyaWZpZXIuYyB2ZXJpZmllci90ZXN0cy5oICQoQlBGT0JKKVx0XFxcbiYjNDM7XHRcdFx0ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1x0XHRcdFxcXG4mIzQzO1x0XHRcdCAkKE9VVFBVVCkvY2FwX2hlbHBlcnMub1x0XHRcdFxcXG4mIzQzO1x0XHRcdCAkKE9VVFBVVCkvdW5wcml2X2hlbHBlcnMub1xuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuIFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuYywkXikgJChMRExJQlMpIC1vICRAXG4gXG4gIyBJbmNsdWRlIGZpbmRfYml0LmMgdG8gY29tcGlsZSB4c2t4Y2VpdmVyLlxuIEVYVFJBX1NSQyA6PSAkKFRPT0xTRElSKS9saWIvZmluZF9iaXQuYyBwcm9nX3Rlc3RzL3Rlc3RfeHNrLmMgcHJvZ190ZXN0cy90ZXN0X3hzay5oXG4tJChPVVRQVVQpL3hza3hjZWl2ZXI6ICQoRVhUUkFfU1JDKSB4c2t4Y2VpdmVyLmMgeHNreGNlaXZlci5oICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hza194ZHBfcHJvZ3Muc2tlbC5oICQoQlBGT0JKKSB8ICQoT1VUUFVUKVxuJiM0MzskKE9VVFBVVCkveHNreGNlaXZlcjogJChFWFRSQV9TUkMpIHhza3hjZWl2ZXIuYyB4c2t4Y2VpdmVyLmggJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveHNrX3hkcF9wcm9ncy5za2VsLmggJChCUEZPQkopXG4gXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4gXHQkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEBcbiBcbi0kKE9VVFBVVCkveGRwX2h3X21ldGFkYXRhOiB4ZHBfaHdfbWV0YWRhdGEuYyAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hzay5vICQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGEuc2tlbC5oIHwgJChPVVRQVVQpXG4mIzQzOyQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGE6IHhkcF9od19tZXRhZGF0YS5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YS5za2VsLmhcbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbiBcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxuIFxuLSQoT1VUUFVUKS94ZHBfZmVhdHVyZXM6IHhkcF9mZWF0dXJlcy5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveGRwX2ZlYXR1cmVzLnNrZWwuaCB8ICQoT1VUUFVUKVxuJiM0MzskKE9VVFBVVCkveGRwX2ZlYXR1cmVzOiB4ZHBfZmVhdHVyZXMuYyAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hkcF9mZWF0dXJlcy5za2VsLmhcbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbiBcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxuIFxuQEAgLTk1NiwxMSAmIzQzOzU1OCwxOCBAQCAkKE9VVFBVVCkvdGVzdF9jcHA6IHRlc3RfY3BwLmNwcCAkKE9VVFBVVCkvdGVzdF9jb3JlX2V4dGVybi5za2VsLmggJChCUEZPQkopXG4gXHQkKGNhbGwgbXNnLENYWCwsJEApXG4gXHQkKFEpJChDWFgpICQoQ1hYRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jcHAsJF4pICQoTERMSUJTKSAtbyAkQFxuIFxuLSMgQmVuY2htYXJrIHJ1bm5lclxuLSQoT1VUUFVUKS9iZW5jaF8lLm86IGJlbmNocy9iZW5jaF8lLmMgYmVuY2guaCAkKEJQRk9CSilcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBCZW5jaG1hcmsgcnVubmVyLiBUaGUgYmVuY2htYXJrIGxpc3QgaXMgZGVmaW5lZCBieSB0aGUgZmlsZXMgaW5cbiYjNDM7IyBiZW5jaHMvOiBldmVyeSBiZW5jaHMvYmVuY2hfKi5jIGlzIGNvbXBpbGVkIGFuZCBsaW5rZWQgaW4uXG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO1xuJiM0MztCRU5DSF9PQkpTIDo9ICQoc29ydCAkKHBhdHN1YnN0IGJlbmNocy8lLmMsJChPVVRQVVQpLyUubywkKHdpbGRjYXJkIGJlbmNocy9iZW5jaF8qLmMpKSlcbiYjNDM7XG4mIzQzOyQoT1VUUFVUKS9iZW5jaF8lLm86IGJlbmNocy9iZW5jaF8lLmMgYmVuY2guaCAkKEJQRk9CSikgfCBkZWZhdWx0LXNrZWxzXG4gXHQkKGNhbGwgbXNnLENDLCwkQClcbi1cdCQoUSkkKENDKSAkKENGTEFHUykgLU8yIC1jICQoZmlsdGVyICUuYywkXikgJChMRExJQlMpIC1vICRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJEA7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtQkVOQ0gmIzM5OyAmIzM5OyQobm90ZGlyICRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyKSlcbiYjNDM7XHQkKFEpJChDQykgJChDRkxBR1MpIC1PMiAtYyAkKGZpbHRlciAlLmMsJF4pIC1vICRAICQoY2FsbCBza2lwX29uX2ZhaWwsQkVOQ0gpXG4mIzQzO1xuJiM0MzsjIGJlbmNobWFyay1zcGVjaWZpYyBnZW5lcmF0ZWQtc2tlbGV0b24gZGVwZW5kZW5jaWVzXG4gJChPVVRQVVQpL2JlbmNoX3JlbmFtZS5vOiAkKE9VVFBVVCkvdGVzdF9vdmVyaGVhZC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfdHJpZ2dlci5vOiAkKE9VVFBVVCkvdHJpZ2dlcl9iZW5jaC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfcmluZ2J1ZnMubzogJChPVVRQVVQpL3JpbmdidWZfYmVuY2guc2tlbC5oIFxcXG5AQCAtOTgwLDM3ICYjNDM7NTg5LDE5IEBAICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubzogJChPVVRQVVQpL2xwbV90cmllX2JlbmNoLnNrZWwuaCAkKE9VVFBVVCkvbHBtX3RyXG4gJChPVVRQVVQpL2JlbmNoX2JwZl9ub3AubzogJChPVVRQVVQpL2JwZl9ub3BfYmVuY2guc2tlbC5oIGJlbmNoX2JwZl90aW1pbmcuaFxuICQoT1VUUFVUKS9iZW5jaF94ZHBfbGIubzogJChPVVRQVVQpL3hkcF9sYl9iZW5jaC5za2VsLmggYmVuY2hfYnBmX3RpbWluZy5oXG4gJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubzogYmVuY2hfYnBmX3RpbWluZy5oXG4mIzQzO1xuICQoT1VUUFVUKS9iZW5jaC5vOiBiZW5jaC5oIHRlc3RpbmdfaGVscGVycy5oICQoQlBGT0JKKVxuICQoT1VUUFVUKS9iZW5jaDogTERMSUJTICYjNDM7PSAtbG1cbi0kKE9VVFBVVCkvYmVuY2g6ICQoT1VUUFVUKS9iZW5jaC5vIFxcXG4tXHRcdCAkKFRFU1RJTkdfSEVMUEVSUykgXFxcbi1cdFx0ICQoVFJBQ0VfSEVMUEVSUykgXFxcbi1cdFx0ICQoQ0dST1VQX0hFTFBFUlMpIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfY291bnQubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3JlbmFtZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfdHJpZ2dlci5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfcmluZ2J1ZnMubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2Jsb29tX2ZpbHRlcl9tYXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9sb29wLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9zdHJuY21wLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfbG9jYWxfc3RvcmFnZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfbG9jYWxfc3RvcmFnZV9yY3VfdGFza3NfdHJhY2UubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfbG9jYWxfc3RvcmFnZV9jcmVhdGUubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2h0YWJfbWVtLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfY3J5cHRvLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9zb2NrbWFwLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9ub3AubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3hkcF9sYi5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvdXNkdF8xLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS91c2R0XzIubyBcXFxuLVx0XHQgI1xuJiM0MzskKE9VVFBVVCkvYmVuY2g6ICQoT1VUUFVUKS9iZW5jaC5vXHRcdFxcXG4mIzQzO1x0XHQgJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vXHRcXFxuJiM0MztcdFx0ICQoT1VUUFVUKS90cmFjZV9oZWxwZXJzLm9cdFxcXG4mIzQzO1x0XHQgJChPVVRQVVQpL2Nncm91cF9oZWxwZXJzLm9cdFxcXG4mIzQzO1x0XHQgJChPVVRQVVQpL3VzZHRfMS5vXHRcdFxcXG4mIzQzO1x0XHQgJChPVVRQVVQpL3VzZHRfMi5vXHRcdFxcXG4mIzQzO1x0XHQgJChCRU5DSF9PQkpTKVxuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuLVx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQCAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICRAOyBwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLUxJTksmIzM5OyAmIzM5OyQobm90ZGlyICRAKSAoc29tZSBiZW5jaG1hcmtzIG1heSBoYXZlIGJlZW4gc2tpcHBlZCkmIzM5OyAxXHUwMDNlXHUwMDI2MikpXG4mIzQzO1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQCBcXFxuJiM0MztcdFx0JChjYWxsIHNraXBfb25fZmFpbCxMSU5LLCwoc29tZSBiZW5jaG1hcmtzIG1heSBoYXZlIGJlZW4gc2tpcHBlZCkpXG4gXG4gIyBUaGlzIHdvcmtzIGFyb3VuZCBHQ0Mgd2FybmluZyBhYm91dCBzbnByaW50ZiB0cnVuY2F0aW5nIHN0cmluZ3MgbGlrZTpcbiAjXG5AQCAtMTAyMiwxMyAmIzQzOzYxMyw2IEBAICQoT1VUUFVUKS92ZXJpc3RhdDogJChPVVRQVVQpL3ZlcmlzdGF0Lm9cbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbiBcdCQoUSkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKGZpbHRlciAlLmEgJS5vLCReKSAkKExETElCUykgLW8gJEBcbiBcbi0jIExpbmtpbmcgdXByb2JlX211bHRpIGNhbiBmYWlsIGR1ZSB0byByZWxvY2F0aW9uIG92ZXJmbG93cyBvbiBtaXBzLlxuLSQoT1VUUFVUKS91cHJvYmVfbXVsdGk6IENGTEFHUyAmIzQzOz0gJChpZiAkKGZpbHRlciBtaXBzLCAkKEFSQ0gpKSwtbXhnb3QpXG4tJChPVVRQVVQpL3Vwcm9iZV9tdWx0aTogdXByb2JlX211bHRpLmMgdXByb2JlX211bHRpLmxkXG4tXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4tXHQkKFEpJChDQykgJChDRkxBR1MpIC1XbCwtVCx1cHJvYmVfbXVsdGkubGQgLU8wICQoTERGTEFHUykgXHRcXFxuLVx0XHQkKGZpbHRlci1vdXQgJS5sZCwkXikgJChMRExJQlMpIC1vICRAXG4tXG4gRVhUUkFfQ0xFQU4gOj0gJChTQ1JBVENIX0RJUikgJChIT1NUX1NDUkFUQ0hfRElSKVx0XHRcdFxcXG4gXHRwcm9nX3Rlc3RzL3Rlc3RzLmggbWFwX3Rlc3RzL3Rlc3RzLmggdmVyaWZpZXIvdGVzdHMuaFx0XHRcXFxuIFx0ZmVhdHVyZSBicGZ0b29sICQoVEVTVF9LTU9EX1RBUkdFVFMpXHRcdFx0XHRcXFxuQEAgLTEwMzgsNyAmIzQzOzYyMiw3IEBAIEVYVFJBX0NMRUFOIDo9ICQoU0NSQVRDSF9ESVIpICQoSE9TVF9TQ1JBVENIX0RJUilcdFx0XHRcXFxuIFx0XHRcdCAgICAgICBsaWJ1cmFuZG9tX3JlYWQuc28pXHRcdFx0XFxcbiBcdCQoT1VUUFVUKS9GRUFUVVJFLURVTVAuc2VsZnRlc3RzXG4gXG4tLlBIT05ZOiBkb2NzIGRvY3MtY2xlYW5cbiYjNDM7LlBIT05ZOiBkb2NzIGRvY3MtY2xlYW4gbGliYXJlbmEgbGliYXJlbmFfYXNhblxuIFxuICMgRGVsZXRlIHBhcnRpYWxseSB1cGRhdGVkIChjb3JydXB0ZWQpIGZpbGVzIG9uIGVycm9yXG4gLkRFTEVURV9PTl9FUlJPUjpcbkBAIC0xMDYyLDkgJiM0Mzs2NDYsMyBAQCBvdmVycmlkZSBkZWZpbmUgSU5TVEFMTF9SVUxFXG4gXHRcdFx0JChJTlNUQUxMX1BBVEgpLyQkRElSO1x0XHRcdFx0ICBcXFxuIFx0ZG9uZVxuIGVuZGVmXG4tXG4tbGliYXJlbmE6ICQoTElCQVJFTkFfU0tFTClcbi1cbi1pZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKVxuLWxpYmFyZW5hX2FzYW46ICQoTElCQVJFTkFfQVNBTl9TS0VMKVxuLWVuZGlmXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFycyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZWE5NzVmZWVmMDEzNmZcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnNcbkBAIC0wLDAgJiM0MzsxLDIwNCBAQFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOyNcbiYjNDM7IyBTaGFyZWQgdG9vbGNoYWluLCBwYXRoIGFuZCBmbGFnIGRlZmluaXRpb25zIGZvciB0aGUgQlBGIHNlbGZ0ZXN0cyBidWlsZC5cbiYjNDM7IyBJbmNsdWRlZCBieSBib3RoIE1ha2VmaWxlICh0aGUgdG9wIGxldmVsKSBhbmQgTWFrZWZpbGUucnVubmVyIChvbmVcbiYjNDM7IyB0ZXN0LXJ1bm5lciBpbnN0YW5jZSkuXG4mIzQzOyNcbiYjNDM7IyBSZXF1aXJlbWVudHMgYXQgaW5jbHVkZSB0aW1lOlxuJiM0MzsjICAgLSAkKE9VVFBVVCkgaXMgc2V0IHRvIGFuIGFic29sdXRlIHBhdGhcbiYjNDM7IyAgIC0gdG9vbHMvYnVpbGQvQnVpbGQuaW5jbHVkZSwgdG9vbHMvc2NyaXB0cy9NYWtlZmlsZS5hcmNoIGFuZFxuJiM0MzsjICAgICB0b29scy9zY3JpcHRzL01ha2VmaWxlLmluY2x1ZGUgaGF2ZSBiZWVuIGluY2x1ZGVkIChmb3IgU1JDQVJDSCBldGMuKVxuJiM0MztcbiYjNDM7Q1hYID89ICQoQ1JPU1NfQ09NUElMRSlnJiM0MzsmIzQzO1xuJiM0MztQS0dfQ09ORklHID89ICQoQ1JPU1NfQ09NUElMRSlwa2ctY29uZmlnXG4mIzQzO1xuJiM0MztUT09MU0RJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4pXG4mIzQzO0xJQkRJUiA6PSAkKFRPT0xTRElSKS9saWJcbiYjNDM7QlBGRElSIDo9ICQoTElCRElSKS9icGZcbiYjNDM7VE9PTFNJTkNESVIgOj0gJChUT09MU0RJUikvaW5jbHVkZVxuJiM0MztUT09MU0FSQ0hJTkNESVIgOj0gJChUT09MU0RJUikvYXJjaC8kKFNSQ0FSQ0gpL2luY2x1ZGVcbiYjNDM7QlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbFxuJiM0MztBUElESVIgOj0gJChUT09MU0lOQ0RJUikvdWFwaVxuJiM0MztpZm5lcSAoJChPKSwpXG4mIzQzO0dFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkXG4mIzQzO2Vsc2VcbiYjNDM7R0VORElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLi8uLi9pbmNsdWRlL2dlbmVyYXRlZClcbiYjNDM7ZW5kaWZcbiYjNDM7R0VOSERSIDo9ICQoR0VORElSKS9hdXRvY29uZi5oXG4mIzQzO1xuJiM0MztpZm5lcSAoJCh3aWxkY2FyZCAkKEdFTkhEUikpLClcbiYjNDM7ICBHRU5GTEFHUyA6PSAtREhBVkVfR0VOSERSXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MztpZmVxICgkKHNyY3RyZWUpLClcbiYjNDM7c3JjdHJlZSA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4pXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MzsjIEltbWVkaWF0ZSAod2l0aCBhbiBvdmVycmlkZS1wcmVzZXJ2aW5nIGd1YXJkKTogYSBwbGFpbiA/PSBzdGF5c1xuJiM0MzsjIHJlY3Vyc2l2ZWx5IGV4cGFuZGVkIGFuZCB3b3VsZCByZS1ydW4gJiMzOTtjb21tYW5kIC12JiMzOTsgb24gZXZlcnkgZXhwYW5zaW9uLlxuJiM0MztpZmVxICgkKG9yaWdpbiBCUEZfR0NDKSx1bmRlZmluZWQpXG4mIzQzO0JQRl9HQ0NcdFx0Oj0gJChzaGVsbCBjb21tYW5kIC12IGJwZi1nY2M7KVxuJiM0MztlbmRpZlxuJiM0MztpZmRlZiBBU0FOXG4mIzQzO1NBTl9DRkxBR1NcdD89IC1mc2FuaXRpemU9YWRkcmVzcyAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclxuJiM0MztlbHNlXG4mIzQzO1NBTl9DRkxBR1NcdD89XG4mIzQzO2VuZGlmXG4mIzQzO1NBTl9MREZMQUdTXHQ/PSAkKFNBTl9DRkxBR1MpXG4mIzQzO1JFTEVBU0VcdFx0Pz1cbiYjNDM7T1BUX0ZMQUdTXHQ/PSAkKGlmICQoUkVMRUFTRSksLU8yLC1PMClcbiYjNDM7XG4mIzQzO0xJQkVMRl9DRkxBR1NcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1jZmxhZ3MgMlx1MDAzZS9kZXYvbnVsbClcbiYjNDM7TElCRUxGX0xJQlNcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1saWJzIDJcdTAwM2UvZGV2L251bGwgfHwgZWNobyAtbGVsZilcbiYjNDM7XG4mIzQzO1NLSVBfRE9DU1x0Pz1cbiYjNDM7U0tJUF9MTFZNXHQ/PVxuJiM0MztTS0lQX0xJQkJGRFx0Pz1cbiYjNDM7U0tJUF9DUllQVE9cdD89XG4mIzQzO1xuJiM0MzsjIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxuJiM0MzsjIGJlbmNobWFyayBjb21waWxhdGlvbiBmYWlsdXJlIGlzIGZhdGFsLiBTZXQgdG8gMCB0byB0b2xlcmF0ZSBmYWlsdXJlc1xuJiM0MzsjIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLlxuJiM0MztCUEZfU1RSSUNUX0JVSUxEID89IDFcbiYjNDM7UEVSTUlTU0lWRSA6PSAkKGZpbHRlciAwLCQoQlBGX1NUUklDVF9CVUlMRCkpXG4mIzQzO1xuJiM0MzsjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgc3VmZml4OiBvbiBmYWlsdXJlLCByZW1vdmUgdGhlIHRhcmdldCwgZW1pdCBhXG4mIzQzOyMgU0tJUCBtYXJrZXIgYW5kIHJlcG9ydCBzdWNjZXNzIHNvIHRoZSByZXN0IG9mIHRoZSBidWlsZCBjb250aW51ZXMuXG4mIzQzOyMgJCgxKSAtIFNLSVAgdGFnIChCUEYsIFRFU1QsIEJFTkNILCBTS0VMLCBMSU5LLCAuLi4pXG4mIzQzOyMgJCgyKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldFxuJiM0MzsjICQoMykgLSBvcHRpb25hbCBub3RlIGFwcGVuZGVkIHRvIHRoZSBTS0lQIG1lc3NhZ2VcbiYjNDM7c2tpcF9vbl9mYWlsID0gJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgJChSTSkgJEAgJCgyKTsgXFxcbiYjNDM7XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLSQoMSkmIzM5OyAmIzM5OyQobm90ZGlyICRAKSQoaWYgJCgzKSwgJCgzKSkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgfSlcbiYjNDM7XG4mIzQzOyMgS2VybmVsIHRlc3QgbW9kdWxlczsgVEVTVF9LTU9EUz0gb24gdGhlIGNvbW1hbmQgbGluZSBkaXNhYmxlcyB0aGVtLlxuJiM0MztURVNUX0tNT0RTID89IGJwZl90ZXN0bW9kLmtvIGJwZl90ZXN0X25vX2NmaS5rbyBicGZfdGVzdF9tb2RvcmRlcl94LmtvIFxcXG4mIzQzO1x0YnBmX3Rlc3RfbW9kb3JkZXJfeS5rbyBicGZfdGVzdF9ycXNwaW5sb2NrLmtvXG4mIzQzO1RFU1RfS01PRF9UQVJHRVRTID0gJChhZGRwcmVmaXggJChPVVRQVVQpLywkKFRFU1RfS01PRFMpKVxuJiM0MztcbiYjNDM7IyBPdXRwdXQtdHJlZSBsYXlvdXQuIERlZmluZWQgYmVmb3JlIENPTU1PTl9DRkxBR1Mgb24gcHVycG9zZTogQ0ZMQUdTXG4mIzQzOyMgYmVsb3cgaXMgZXhwYW5kZWQgaW1tZWRpYXRlbHkgYW5kIHJlZmVyZW5jZXMgJChJTkNMVURFX0RJUikuXG4mIzQzO1NDUkFUQ0hfRElSIDo9ICQoT1VUUFVUKS90b29sc1xuJiM0MztCVUlMRF9ESVIgOj0gJChTQ1JBVENIX0RJUikvYnVpbGRcbiYjNDM7SU5DTFVERV9ESVIgOj0gJChTQ1JBVENIX0RJUikvaW5jbHVkZVxuJiM0MztCUEZPQkogOj0gJChCVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYVxuJiM0MztpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4mIzQzO0hPU1RfQlVJTERfRElSXHRcdDo9ICQoQlVJTERfRElSKS9ob3N0XG4mIzQzO0hPU1RfU0NSQVRDSF9ESVJcdDo9ICQoT1VUUFVUKS9ob3N0LXRvb2xzXG4mIzQzO0hPU1RfSU5DTFVERV9ESVJcdDo9ICQoSE9TVF9TQ1JBVENIX0RJUikvaW5jbHVkZVxuJiM0MztlbHNlXG4mIzQzO0hPU1RfQlVJTERfRElSXHRcdDo9ICQoQlVJTERfRElSKVxuJiM0MztIT1NUX1NDUkFUQ0hfRElSXHQ6PSAkKFNDUkFUQ0hfRElSKVxuJiM0MztIT1NUX0lOQ0xVREVfRElSXHQ6PSAkKElOQ0xVREVfRElSKVxuJiM0MztlbmRpZlxuJiM0MztIT1NUX0JQRk9CSiA6PSAkKEhPU1RfQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcbiYjNDM7UkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHNcbiYjNDM7XG4mIzQzO0RFRkFVTFRfQlBGVE9PTCA6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxuJiM0MztpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4mIzQzO0NST1NTX0JQRlRPT0wgOj0gJChTQ1JBVENIX0RJUikvc2Jpbi9icGZ0b29sXG4mIzQzO1RSVU5ORVJfQlBGVE9PTCA6PSAkKENST1NTX0JQRlRPT0wpXG4mIzQzO1VTRV9CT09UU1RSQVAgOj1cbiYjNDM7ZWxzZVxuJiM0MztUUlVOTkVSX0JQRlRPT0wgOj0gJChERUZBVUxUX0JQRlRPT0wpXG4mIzQzO1VTRV9CT09UU1RSQVAgOj0gYm9vdHN0cmFwL1xuJiM0MztlbmRpZlxuJiM0MztCUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKVxuJiM0MztcbiYjNDM7Q09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMVx0XHRcdFxcXG4mIzQzO1x0ICAtV2FsbCAtV2Vycm9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXHRcdFx0XHRcXFxuJiM0MztcdCAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZVx0XHRcdFx0XHRcXFxuJiM0MztcdCAgJChHRU5GTEFHUykgJChTQU5fQ0ZMQUdTKSAkKExJQkVMRl9DRkxBR1MpXHRcdFx0XFxcbiYjNDM7XHQgIC1JJChDVVJESVIpIC1JJChJTkNMVURFX0RJUikgLUkkKEdFTkRJUikgLUkkKExJQkRJUilcdFx0XFxcbiYjNDM7XHQgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVClcdFxcXG4mIzQzO1x0ICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXG4mIzQzO0xERkxBR1MgJiM0Mzs9ICQoU0FOX0xERkxBR1MpXG4mIzQzO0xETElCUyAmIzQzOz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkXG4mIzQzO1xuJiM0MztQQ0FQX0NGTEFHU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGxpYnBjYXAgMlx1MDAzZS9kZXYvbnVsbCBcdTAwMjZcdTAwMjYgZWNobyBcJiMzNDstRFRSQUZGSUNfTU9OSVRPUj0xXCYjMzQ7KVxuJiM0MztQQ0FQX0xJQlNcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGlicGNhcCAyXHUwMDNlL2Rldi9udWxsKVxuJiM0MztMRExJQlMgJiM0Mzs9ICQoUENBUF9MSUJTKVxuJiM0MzsjIFByZXBlbmQgcmF0aGVyIHRoYW4gYXBwZW5kOiB0aGUgaW5jbHVkZS1zZWFyY2ggb3JkZXIgbXVzdCBzdGF5XG4mIzQzOyMgXCYjMzQ7JChDT01NT05fQ0ZMQUdTKSBmaXJzdCwgbGliLm1rIGFkZGl0aW9ucyBhZnRlclwmIzM0OyByZWdhcmRsZXNzIG9mIHdoZXRoZXJcbiYjNDM7IyBsaWIubWsgd2FzIGluY2x1ZGVkIGJlZm9yZSB0aGlzIGZpbGUgKHRvcCBsZXZlbCkgb3Igbm90IGF0IGFsbCAocnVubmVyKS5cbiYjNDM7Q0ZMQUdTIDo9ICQoQ09NTU9OX0NGTEFHUykgJChQQ0FQX0NGTEFHUykgJChDRkxBR1MpXG4mIzQzO1xuJiM0MztpZm5lcSAoJChMTFZNKSwpXG4mIzQzOyMgU2lsZW5jZSBzb21lIHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgd2l0aCBjbGFuZ1xuJiM0MztDRkxBR1MgJiM0Mzs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudFxuJiM0MztlbmRpZlxuJiM0MztcbiYjNDM7IyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMiYjNDM7KVxuJiM0MztDTEFOR19IQVNfQVJFTkFfQVNBTiA6PSAkKHNoZWxsIGVjaG8gJiMzOTtpbnQgeDsmIzM5OyB8IFxcXG4mIzQzO1x0JChDTEFORykgLS10YXJnZXQ9YnBmIC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MgXFxcbiYjNDM7XHQtbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcXFxuJiM0MztcdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlx1MDAzZS9kZXYvbnVsbCBcdTAwMjZcdTAwMjYgZWNobyAxKVxuJiM0MztpZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKVxuJiM0MztDRkxBR1MgJiM0Mzs9IC1ESEFTX0JQRl9BUkVOQV9BU0FOXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MztWTUxJTlVYX0JURl9QQVRIUyA/PSAkKGlmICQoTyksJChPKS92bWxpbnV4KVx0XHRcdFx0XFxcbiYjNDM7XHRcdCAgICAgJChpZiAkKEtCVUlMRF9PVVRQVVQpLCQoS0JVSUxEX09VVFBVVCkvdm1saW51eClcdFxcXG4mIzQzO1x0XHQgICAgIC4uLy4uLy4uLy4uL3ZtbGludXhcdFx0XHRcdFxcXG4mIzQzO1x0XHQgICAgIC9zeXMva2VybmVsL2J0Zi92bWxpbnV4XHRcdFx0XHRcXFxuJiM0MztcdFx0ICAgICAvYm9vdC92bWxpbnV4LSQoc2hlbGwgdW5hbWUgLXIpXG4mIzQzO1ZNTElOVVhfQlRGID89ICQoYWJzcGF0aCAkKGZpcnN0d29yZCAkKHdpbGRjYXJkICQoVk1MSU5VWF9CVEZfUEFUSFMpKSkpXG4mIzQzO2lmZXEgKCQoVk1MSU5VWF9CVEYpLClcbiYjNDM7JChlcnJvciBDYW5ub3QgZmluZCBhIHZtbGludXggZm9yIFZNTElOVVhfQlRGIGF0IGFueSBvZiBcJiMzNDskKFZNTElOVVhfQlRGX1BBVEhTKVwmIzM0OylcbiYjNDM7ZW5kaWZcbiYjNDM7XG4mIzQzOyMgR2V0IENsYW5nJiMzOTtzIGRlZmF1bHQgaW5jbHVkZXMgb24gdGhpcyBzeXN0ZW0sIGFzIG9wcG9zZWQgdG8gdGhvc2Ugc2VlbiBieVxuJiM0MzsjICYjMzk7LS10YXJnZXQ9YnBmJiMzOTsuIFRoaXMgZml4ZXMgXCYjMzQ7bWlzc2luZ1wmIzM0OyBmaWxlcyBvbiBzb21lIGFyY2hpdGVjdHVyZXMvZGlzdHJvcyxcbiYjNDM7IyBzdWNoIGFzIGFzbS9ieXRlb3JkZXIuaCwgYXNtL3NvY2tldC5oLCBhc20vc29ja2lvcy5oLCBzeXMvY2RlZnMuaCBldGMuXG4mIzQzOyNcbiYjNDM7IyBVc2UgJiMzOTstaWRpcmFmdGVyJiMzOTs6IERvbiYjMzk7dCBpbnRlcmZlcmUgd2l0aCBpbmNsdWRlIG1lY2hhbmljcyBleGNlcHQgd2hlcmUgdGhlXG4mIzQzOyMgYnVpbGQgd291bGQgaGF2ZSBmYWlsZWQgYW55d2F5cy5cbiYjNDM7ZGVmaW5lIGdldF9zeXNfaW5jbHVkZXNcbiYjNDM7JChzaGVsbCAkKDEpICQoMikgLXYgLUUgLSBcdTAwM2MvZGV2L251bGwgMlx1MDAzZVx1MDAyNjEgXFxcbiYjNDM7XHR8IHNlZCAtbiAmIzM5Oy9cdTAwM2MuLi5cdTAwM2Ugc2VhcmNoIHN0YXJ0cyBoZXJlOi8sL0VuZCBvZiBzZWFyY2ggbGlzdC4veyBzfCBcXCgvLipcXCl8LWlkaXJhZnRlciBcXDF8cCB9JiMzOTspIFxcXG4mIzQzOyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX3Jpc2N2X3hsZW4gJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKFwmIzM0Oy1EX19yaXNjdl94bGVuPSVkIC1EX19CSVRTX1BFUl9MT05HPSVkXCYjMzQ7LCAkJDMsICQkMyl9JiMzOTspIFxcXG4mIzQzOyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX2xvb25nYXJjaF9ncmxlbiAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoXCYjMzQ7LURfX0JJVFNfUEVSX0xPTkc9JWRcJiMzNDssICQkMyl9JiMzOTspIFxcXG4mIzQzOyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgLUUgJiMzOTtNSVBTKEVMfEVCKXxfTUlQU19TWihQVFJ8TE9ORykgfF9NSVBTX1NJTSB8X0FCSShPMzJ8TjMyfDY0KSAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoXCYjMzQ7LUQlcz0lcyBcJiMzNDssICQkMiwgJCQzKX0mIzM5OylcbiYjNDM7ZW5kZWZcbiYjNDM7XG4mIzQzOyMgRGV0ZXJtaW5lIHRhcmdldCBlbmRpYW5uZXNzLlxuJiM0MztJU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgXFxcbiYjNDM7XHRcdFx0Z3JlcCAmIzM5O2RlZmluZSBfX0JZVEVfT1JERVJfXyBfX09SREVSX0xJVFRMRV9FTkRJQU5fXyYjMzk7KVxuJiM0MztNRU5ESUFOIDo9ICQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKVxuJiM0MztCUEZfVEFSR0VUX0VORElBTiA6PSAkKGlmICQoSVNfTElUVExFX0VORElBTiksLS10YXJnZXQ9YnBmZWwsLS10YXJnZXQ9YnBmZWIpXG4mIzQzO1xuJiM0MztpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4mIzQzO0NMQU5HX1RBUkdFVF9BUkNIID0gLS10YXJnZXQ9JChub3RkaXIgJChDUk9TU19DT01QSUxFOiUtPSUpKVxuJiM0MztlbmRpZlxuJiM0MztcbiYjNDM7Q0xBTkdfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLCQoQ0xBTkcpLCQoQ0xBTkdfVEFSR0VUX0FSQ0gpKVxuJiM0MztCUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXHRcXFxuJiM0MztcdCAgICAgLUkkKElOQ0xVREVfRElSKSAtSSQoQ1VSRElSKSAtSSQoQVBJRElSKVx0XHRcdFxcXG4mIzQzO1x0ICAgICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXHRcdFx0XHRcXFxuJiM0MztcdCAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKVx0XHRcdFxcXG4mIzQzO1x0ICAgICAtc3RkPWdudTExXHRcdCBcdFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIFx0XHRcdFx0XHRcXFxuJiM0MztcdCAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWdcdFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgIC1mbXMtZXh0ZW5zaW9uc1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0ICAgICAtV25vLWNvbXBhcmUtZGlzdGluY3QtcG9pbnRlci10eXBlc1x0XHRcdFxcXG4mIzQzO1x0ICAgICAtV25vLWluaXRpYWxpemVyLW92ZXJyaWRlc1x0XHRcdFx0XHRcXFxuJiM0MztcdCAgICAgI1xuJiM0MzsjIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZVxuJiM0MztcbiYjNDM7Q0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXG4mIzQzO1xuJiM0MzsjIFNpZ25pbmcga2V5L2NlcnQgc2hhcmVkIGJ5IHRoZSBzaWduZWQgbGlnaHQgc2tlbGV0b25zIGFuZCB0ZXN0X3Byb2dzLlxuJiM0MztWRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXG4mIzQzO1ZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0LmhcbiYjNDM7VkVSSUZJQ0FUSU9OX0NFUlQgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LmRlclxuJiM0MztQUklWQVRFX0tFWSA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkucGVtXG4mIzQzO1xuJiM0MzsjIGxpYmFyZW5hIHNrZWxldG9ucywgYnVpbHQgYnkgdGhlIGxpYmFyZW5hLyBzdWItbWFrZSAoZHJpdmVuIGJ5IHRoZSB0b3BcbiYjNDM7IyBsZXZlbCBNYWtlZmlsZSk7IHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzIGRlcGVuZCBvbiB0aGUgaGVhZGVycy5cbiYjNDM7TElCQVJFTkFfU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYS5za2VsLmhcbiYjNDM7aWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcbiYjNDM7TElCQVJFTkFfQVNBTl9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hX2FzYW4uc2tlbC5oXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MztpZm5lcSAoJChWKSwxKVxuJiM0MztzdWJtYWtlX2V4dHJhcyA6PSBmZWF0dXJlX2Rpc3BsYXk9MFxuJiM0MztlbmRpZlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXIgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjRjNThjYzUxZjI1MTRlXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyXG5AQCAtMCwwICYjNDM7MSwzMTMgQEBcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjXG4mIzQzOyMgQnVpbGQgb25lIEJQRiB0ZXN0LXJ1bm5lciBpbnN0YW5jZTogdGVzdF9wcm9ncywgb25lIG9mIGl0cyBmbGF2b3JzXG4mIzQzOyMgKG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYyksIG9yIHRlc3RfbWFwcy5cbiYjNDM7I1xuJiM0MzsjIEVhY2ggaW5zdGFuY2UgaXMgYW4gaW5kZXBlbmRlbnQgc3ViLW1ha2Ugd2l0aCBpdHMgb3duIG91dHB1dCBkaXJlY3RvcnksXG4mIzQzOyMgc28gZXZlcnl0aGluZyBoZXJlIGlzIHdyaXR0ZW4gaW4gcGxhaW4gbWFrZSAtIG5vICQkLWVzY2FwaW5nLCBubyBldmFsLFxuJiM0MzsjIG5vIHBlci1mbGF2b3IgZ3VhcmRzLiBUaGlzIGZpbGUgaXMgYWx3YXlzIGludm9rZWQgYnkgdGhlIG1haW4gTWFrZWZpbGUsXG4mIzQzOyMgbmV2ZXIgZGlyZWN0bHk6IGFsbCBzaGFyZWQgcHJlcmVxdWlzaXRlcyAobGliYnBmLCBicGZ0b29sLCB2bWxpbnV4LmgsXG4mIzQzOyMgdmVyaXN0YXQsIGhlbHBlciBvYmplY3RzLCBzaWduaW5nIGtleSwgZ2VuZXJhdGVkIHRlc3RzLmgsIGV4dHJhXG4mIzQzOyMgYmluYXJpZXMpIGFyZSBidWlsdCBieSB0aGUgbWFpbiBNYWtlZmlsZSAqYmVmb3JlKiB0aGlzIG9uZSBydW5zIGFuZCBhcmVcbiYjNDM7IyByZWZlcmVuY2VkIGJlbG93IGFzIHBsYWluIGZpbGVzLlxuJiM0MzsjXG4mIzQzOyMgUGFyYW1ldGVycyAoYWxsIHBhc3NlZCBvbiB0aGUgc3ViLW1ha2UgY29tbWFuZCBsaW5lKTpcbiYjNDM7IyAgIE9VVFBVVCAgICAgIGFic29sdXRlIHBhdGggb2YgdGhlIHNlbGZ0ZXN0cyBvdXRwdXQgZGlyZWN0b3J5XG4mIzQzOyMgICBSVU5ORVIgICAgICBiYXNlIGJpbmFyeSBuYW1lOiB0ZXN0X3Byb2dzIHwgdGVzdF9tYXBzXG4mIzQzOyMgICBGTEFWT1IgICAgICBmbGF2b3Igc3VmZml4OiBlbXB0eSB8IG5vX2FsdTMyIHwgY3B1djQgfCBicGZfZ2NjXG4mIzQzOyMgICBURVNUU19ESVIgICBkaXJlY3Rvcnkgd2l0aCB0aGUgdGVzdCBzb3VyY2VzOiBwcm9nX3Rlc3RzIHwgbWFwX3Rlc3RzXG4mIzQzOyMgICBCUEZfQlVJTEQgICBob3cgdG8gYnVpbGQgcHJvZ3MvKi5jIEJQRiBvYmplY3RzOiBjbGFuZyB8IGdjYyB8IG5vbmVcbiYjNDM7IyAgIEJQRl9NQ1BVICAgIGNsYW5nIC1tY3B1PSB2YWx1ZTogdjIgfCB2MyB8IHY0XG4mIzQzOyMgICBCUEZfREVGSU5FUyBleHRyYSBkZWZpbmVzIGZvciBCUEYgb2JqZWN0cyAoZS5nLiAtREVOQUJMRV9BVE9NSUNTX1RFU1RTKVxuJiM0MzsjICAgQ0MgICAgICAgICAgQyBjb21waWxlciAoYXMgcmVzb2x2ZWQgYnkgbGliLm1rIGluIHRoZSBtYWluIE1ha2VmaWxlKVxuJiM0MzsjICAgTExWTV9DRkxBR1MvTExWTV9MRExJQlMvTExWTV9MREZMQUdTXG4mIzQzOyMgICAgICAgICAgICAgICByZXN1bHRzIG9mIHRoZSB0b3AtbGV2ZWwgTExWTSBmZWF0dXJlIHByb2JlXG4mIzQzO1xuJiM0MztpbmNsdWRlIC4uLy4uLy4uL2J1aWxkL0J1aWxkLmluY2x1ZGVcbiYjNDM7aW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2hcbiYjNDM7aW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmluY2x1ZGVcbiYjNDM7XG4mIzQzOyMgU2FtZSBtZXNzYWdlIGhlbHBlcnMgYXMgLi4vbGliLm1rLCB3aGljaCBvbmx5IHRoZSB0b3AgbGV2ZWwgaW5jbHVkZXMuXG4mIzQzO2lmZXEgKCQoViksMSlcbiYjNDM7USA9XG4mIzQzO21zZyA9XG4mIzQzO2Vsc2VcbiYjNDM7USA9IEBcbiYjNDM7bXNnID0gQHByaW50ZiAmIzM5OyAgJS04cyVzICVzJXNcXG4mIzM5OyBcJiMzNDskKDEpXCYjMzQ7IFwmIzM0OyQoaWYgJCgyKSwgWyQoMildKVwmIzM0OyBcJiMzNDskKG5vdGRpciAkKDMpKVwmIzM0OyBcJiMzNDskKGlmICQoNCksICQoNCkpXCYjMzQ7O1xuJiM0MztNQUtFRkxBR1MgJiM0Mzs9IC0tbm8tcHJpbnQtZGlyZWN0b3J5XG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MztpbmNsdWRlIE1ha2VmaWxlLmJ1aWxkdmFyc1xuJiM0MztcbiYjNDM7IyBLZWVwIGluIHN5bmMgd2l0aCB0aGUgQ0ZMQUdTL0xERkxBR1MgYWRkaXRpb25zIGluIC4uL2xpYi5tay5cbiYjNDM7Q0ZMQUdTICYjNDM7PSAtRF9HTlVfU09VUkNFPVxuJiM0MztDRkxBR1MgJiM0Mzs9IC1JJChzcmN0cmVlKS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0c1xuJiM0MztDRkxBR1MgJiM0Mzs9ICQoVVNFUkNGTEFHUylcbiYjNDM7TERGTEFHUyAmIzQzOz0gJChVU0VSTERGTEFHUylcbiYjNDM7aWZuZXEgKCQoTExWTSksKVxuJiM0MztDRkxBR1MgJiM0Mzs9IC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyXG4mIzQzO0NGTEFHUyAmIzQzOz0gLVduby1nbnUtdmFyaWFibGUtc2l6ZWQtdHlwZS1ub3QtYXQtZW5kXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MztCSU5BUlkgOj0gJChSVU5ORVIpJChpZiAkKEZMQVZPUiksLSQoRkxBVk9SKSlcbiYjNDM7UkRJUiAgIDo9ICQoT1VUUFVUKSQoaWYgJChGTEFWT1IpLC8kKEZMQVZPUikpXG4mIzQzO1xuJiM0MzthbGw6ICQoT1VUUFVUKS8kKEJJTkFSWSlcbiYjNDM7LlBIT05ZOiBhbGxcbiYjNDM7XG4mIzQzOyMgRGVsZXRlIHBhcnRpYWxseSB1cGRhdGVkIChjb3JydXB0ZWQpIGZpbGVzIG9uIGVycm9yXG4mIzQzOy5ERUxFVEVfT05fRVJST1I6XG4mIzQzO1xuJiM0MzsjIFBlcm1pc3NpdmUgc2tpcC1vbi1mYWlsdXJlIG9mIGluZGl2aWR1YWwgdGVzdHMgYXBwbGllcyB0byB0ZXN0X3Byb2dzIGFuZFxuJiM0MzsjIGl0cyBmbGF2b3JzIG9ubHk7IHRlc3RfbWFwcyB1c2VzIHN0cm9uZyBjcm9zcy1vYmplY3QgcmVmZXJlbmNlcyBhbmQga2VlcHNcbiYjNDM7IyBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBCUEZfU1RSSUNUX0JVSUxEPTAuXG4mIzQzO1BFUk1JU1NJVkVfVEVTVFMgOj0gJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzLCQoUlVOTkVSKSksJChQRVJNSVNTSVZFKSlcbiYjNDM7XG4mIzQzOyQoUkRJUik6XG4mIzQzO1x0JChjYWxsIG1zZyxNS0RJUiwsJEApXG4mIzQzO1x0JChRKW1rZGlyIC1wICRAXG4mIzQzO1xuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MzsjIFBlci1ydW5uZXIgc291cmNlc1xuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MztcbiYjNDM7aWZlcSAoJChSVU5ORVIpLHRlc3RfcHJvZ3MpXG4mIzQzO0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9wcm9ncy5jIGNncm91cF9oZWxwZXJzLmMgdHJhY2VfaGVscGVycy5jXHRcdFxcXG4mIzQzO1x0XHQgbmV0d29ya19oZWxwZXJzLmMgdGVzdGluZ19oZWxwZXJzLmMgYnRmX2hlbHBlcnMuY1x0XFxcbiYjNDM7XHRcdCBjYXBfaGVscGVycy5jIHVucHJpdl9oZWxwZXJzLmMgc3lzY3RsX2hlbHBlcnMuY1x0XFxcbiYjNDM7XHRcdCBuZXRsaW5rX2hlbHBlcnMuYyBqaXRfZGlzYXNtX2hlbHBlcnMuYyBpb19oZWxwZXJzLmNcdFxcXG4mIzQzO1x0XHQgdGVzdF9sb2FkZXIuYyB4c2suYyBkaXNhc20uYyBkaXNhc21faGVscGVycy5jXHRcdFxcXG4mIzQzO1x0XHQganNvbl93cml0ZXIuYyBicGZ0b29sX2hlbHBlcnMuYyB1c2R0XzEuYyB1c2R0XzIuY1xuJiM0MztMSUJfU09VUkNFUyA6PSBmaW5kX2JpdC5jXG4mIzQzO0VYVFJBX0hEUlMgOj0gZmxvd19kaXNzZWN0b3JfbG9hZC5oIGlwX2NoZWNrX2RlZnJhZ19mcmFncy5oXHRcdFxcXG4mIzQzO1x0ICAgICAgJChWRVJJRllfU0lHX0hEUikgJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTClcbiYjNDM7RVhUUkFfRklMRVMgOj0gJChPVVRQVVQpL3VyYW5kb21fcmVhZCAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvXHRcXFxuJiM0MztcdCAgICAgICAkKE9VVFBVVCkveGRwX3N5bnByb3h5ICQoT1VUUFVUKS9zaWduLWZpbGVcdFx0XFxcbiYjNDM7XHQgICAgICAgJChPVVRQVVQpL3Vwcm9iZV9tdWx0aVx0XHRcdFx0XHRcXFxuJiM0MztcdCAgICAgICAkKFRFU1RfS01PRF9UQVJHRVRTKVx0XHRcdFx0XHRcXFxuJiM0MztcdCAgICAgICBpbWFfc2V0dXAuc2ggJChWRVJJRllfU0lHX1NFVFVQKVx0XHRcdFx0XFxcbiYjNDM7XHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKVx0XHRcdFxcXG4mIzQzO1x0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubylcbiYjNDM7ZW5kaWZcbiYjNDM7XG4mIzQzO2lmZXEgKCQoUlVOTkVSKSx0ZXN0X21hcHMpXG4mIzQzO0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9tYXBzLmMgdGVzdGluZ19oZWxwZXJzLmNcbiYjNDM7ZW5kaWZcbiYjNDM7XG4mIzQzOyMgTm90ZSBvbiB0aGUgdW5mbGF2b3JlZCBydW5uZXJzLCB3aGljaCBzaGFyZSAkKE9VVFBVVCkgd2l0aCB0aGUgbWFpblxuJiM0MzsjIE1ha2VmaWxlOiBoZWxwZXIgb2JqZWN0cyB0aGUgbWFpbiBNYWtlZmlsZSBhbHNvIHVzZXMgKGFuZCBsaXN0cyBpbiB0aGVcbiYjNDM7IyBydW5uZXIgcHJlcmVxdWlzaXRlcykgYXJlIGFscmVhZHkgYnVpbHQgYW5kIGZyZXNoIHdoZW4gYSBydW5uZXIgc3RhcnRzLFxuJiM0MzsjIHNvIHRoZSBydWxlcyBiZWxvdyBmaW5kIHRoZW0gdXAgdG8gZGF0ZSBhbmQgbmV2ZXIgd3JpdGUgdGhlbS5cbiYjNDM7XG4mIzQzO1RFU1RTX0hEUiA6PSAkKFRFU1RTX0RJUikvdGVzdHMuaFxuJiM0MztcbiYjNDM7VEVTVF9TUkNTICA6PSAkKG5vdGRpciAkKHdpbGRjYXJkICQoVEVTVFNfRElSKS8qLmMpKVxuJiM0MztURVNUX09CSlMgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS50ZXN0Lm8sJChURVNUX1NSQ1MpKVxuJiM0MztURVNUX0RFUFMgIDo9ICQoVEVTVF9PQkpTOi5vPS5kKVxuJiM0MztFWFRSQV9PQkpTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5vLCQoZmlsdGVyICUuYywkKEVYVFJBX1NPVVJDRVMpKSlcbiYjNDM7TElCX09CSlMgICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubywkKExJQl9TT1VSQ0VTKSlcbiYjNDM7XG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzOyMgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9uc1xuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MztcbiYjNDM7aWZuZXEgKCQoQlBGX0JVSUxEKSxub25lKVxuJiM0MztcbiYjNDM7QlBGX1NSQ1MgOj0gJChub3RkaXIgJCh3aWxkY2FyZCBwcm9ncy8qLmMpKVxuJiM0MztCUEZfT0JKUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUuYnBmLm8sJChCUEZfU1JDUykpXG4mIzQzO1xuJiM0MzsjIFdoaWNoIHRlc3RzIHdhbnQgYSBsaWdodCBza2VsZXRvbiBpcyBkZXJpdmVkIGZyb20gdGhlIHRlc3Qgc291cmNlc1xuJiM0MzsjIHRoZW1zZWx2ZXM6IGFuICYjMzk7I2luY2x1ZGUgXCYjMzQ7Zm9vLmxza2VsLmhcJiMzNDsmIzM5OyBsaW5lIGlzIHRoZSBzaW5nbGUgc291cmNlIG9mXG4mIzQzOyMgdHJ1dGguIFRlc3RzIHRoYXQgaW5jbHVkZSBib3RoIGZvby5za2VsLmggYW5kIGZvby5sc2tlbC5oIGdldCBib3RoLlxuJiM0Mztza2VsX2luY2x1ZGVzID0gJChzaGVsbCBncmVwIC1yaG9FICYjMzk7XCYjMzQ7W2EtekEtWjAtOV9dJiM0MztcXC4kKDEpXCYjMzQ7JiMzOTsgcHJvZ190ZXN0cyBiZW5jaHMgbWFwX3Rlc3RzICouYyAqLmNwcCAyXHUwMDNlL2Rldi9udWxsKVxuJiM0MztMU0tFTF9CQVNFUyA6PSAkKHNvcnQgJChwYXRzdWJzdCBcJiMzNDslLmxza2VsLmhcJiMzNDssJSwkKGNhbGwgc2tlbF9pbmNsdWRlcyxsc2tlbC5oKSkpXG4mIzQzO1NLRUxfREVNQU5ERUQgOj0gJChzb3J0ICQocGF0c3Vic3QgXCYjMzQ7JS5za2VsLmhcJiMzNDssJSwkKGNhbGwgc2tlbF9pbmNsdWRlcyxza2VsLmgpKSlcbiYjNDM7XG4mIzQzOyMgU2lnbmluZyBpcyBub3QgZXhwcmVzc2VkIGluIHRoZSBpbmNsdWRlLCBzbyB0aGUgc2lnbmVkIHN1YnNldCBzdGF5c1xuJiM0MzsjIGV4cGxpY2l0LlxuJiM0MztMU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0IGZleGl0X3Rlc3QgYXRvbWljc1xuJiM0MztcbiYjNDM7IyBCUEYgb2JqZWN0cyB0aGF0IGNhbm5vdCBoYXZlIGEgcmVndWxhciBza2VsZXRvbiwgcGx1cyBsc2tlbC1vbmx5IHRlc3RzXG4mIzQzOyMgKGxpZ2h0LXNrZWxldG9uIHVzZXJzIHdob3NlIHNvdXJjZXMgbmV2ZXIgaW5jbHVkZSB0aGUgLnNrZWwuaCBmb3JtKS5cbiYjNDM7U0tFTF9CTEFDS0xJU1QgOj0gYnRmX18lIHRlc3RfcGlubmluZ19pbnZhbGlkLmMgdGVzdF9za19hc3NpZ24uYyBcXFxuJiM0MztcdFx0ICAkKGFkZHN1ZmZpeCAuYywkKGZpbHRlci1vdXQgJChTS0VMX0RFTUFOREVEKSwkKExTS0VMX0JBU0VTKSkpXG4mIzQzO1xuJiM0MzsjIFNrZWxldG9ucyBtYWRlIGJ5IGxpbmtpbmcgbXVsdGlwbGUgQlBGIG9iamVjdHMgdG9nZXRoZXIuIFRoZSAlLWRlcHNcbiYjNDM7IyBtYXBwaW5nIGlzIHRoZSBvbmx5IGhhbmQtbWFpbnRhaW5lZCBtZXRhZGF0YTogaXQgY2Fubm90IGJlIGRlcml2ZWQgZnJvbVxuJiM0MzsjIHRoZSBzb3VyY2VzLlxuJiM0Mzt0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vXG4mIzQzO2xpbmtlZF9mdW5jcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfZnVuY3MxLmJwZi5vIGxpbmtlZF9mdW5jczIuYnBmLm9cbiYjNDM7bGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYub1xuJiM0MztsaW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vXG4mIzQzOyMgSW4gdGhlIHN1YnNrZWxldG9uIGNhc2UsIHdlIHdhbnQgdGhlIHRlc3Rfc3Vic2tlbGV0b25fbGliLnN1YnNrZWwuaCBmaWxlXG4mIzQzOyMgYnV0IHRoYXQmIzM5O3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi5cbiYjNDM7dGVzdF9zdWJza2VsZXRvbi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbi5icGYub1xuJiM0Mzt0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm9cbiYjNDM7dGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vXG4mIzQzO3RyYWNpbmdfbXVsdGkuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuJiM0Mzt0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaF9tb2R1bGUuYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuJiM0Mzt0cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuJiM0Mzt0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9zZXNzaW9uX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4mIzQzO1xuJiM0MztMSU5LRURfU0tFTFMgOj0gdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaCBsaW5rZWRfZnVuY3Muc2tlbC5oXHRcdFxcXG4mIzQzO1x0XHRsaW5rZWRfdmFycy5za2VsLmggbGlua2VkX21hcHMuc2tlbC5oXHRcdFx0XFxcbiYjNDM7XHRcdHRlc3Rfc3Vic2tlbGV0b24uc2tlbC5oIHRlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaFx0XFxcbiYjNDM7XHRcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcdFx0XHRcXFxuJiM0MztcdFx0dHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oXHRcdFx0XHRcXFxuJiM0MztcdFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oXHRcdFx0XHRcXFxuJiM0MztcdFx0dHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaFxuJiM0MztMSU5LRURfQlBGX1NSQ1MgOj0gJChwYXRzdWJzdCAlLmJwZi5vLCUuYywkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKSlcbiYjNDM7XG4mIzQzO1NLRUxTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5za2VsLmgsXHRcdFx0XHRcXFxuJiM0MztcdCAgICQoZmlsdGVyLW91dCAkKFNLRUxfQkxBQ0tMSVNUKSAkKExJTktFRF9CUEZfU1JDUyksJChCUEZfU1JDUykpKVxuJiM0MztMU0tFTFNfSCAgICAgICAgOj0gJChwYXRzdWJzdCAlLCQoUkRJUikvJS5sc2tlbC5oLCQoZmlsdGVyLW91dCAkKExTS0VMU19TSUdORUQpLCQoTFNLRUxfQkFTRVMpKSlcbiYjNDM7TFNLRUxTX1NJR05FRF9IIDo9ICQocGF0c3Vic3QgJSwkKFJESVIpLyUubHNrZWwuaCwkKExTS0VMU19TSUdORUQpKVxuJiM0MztMSU5LRURfU0tFTFNfSCAgOj0gJChhZGRwcmVmaXggJChSRElSKS8sJChMSU5LRURfU0tFTFMpKVxuJiM0MztBTExfU0tFTFMgOj0gJChTS0VMUykgJChMU0tFTFNfSCkgJChMU0tFTFNfU0lHTkVEX0gpICQoTElOS0VEX1NLRUxTX0gpXG4mIzQzO1xuJiM0MztIRUFERVJTX0ZPUl9CUEZfT0JKUyA6PSAkKHdpbGRjYXJkICQoQlBGRElSKS8qLmJwZi5oKVx0XHRcdFxcXG4mIzQzO1x0XHRcdCQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKVx0XFxcbiYjNDM7XHRcdFx0JChhZGRwcmVmaXggJChCUEZESVIpLyxcdGJwZl9jb3JlX3JlYWQuaFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRicGZfZW5kaWFuLmhcdFx0XFxcbiYjNDM7XHRcdFx0XHRcdFx0YnBmX2hlbHBlcnMuaFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRicGZfdHJhY2luZy5oKVxuJiM0MztcbiYjNDM7IyBQZXItc291cmNlIEJQRiBjb21waWxhdGlvbiBmbGFnIG92ZXJyaWRlcyAoJFx1MDAzYy1DRkxBR1MgLyAkXHUwMDNjLSQoRkxBVk9SKS1DRkxBR1MpLlxuJiM0MzsjIEdDQyBjYW5ub3QgZGlzYWJsZSBcJiMzNDtkZWNsYXJhdGlvbiBvZiBhbm9ueW1vdXMgc3RydWN0IGluIHBhcmFtZXRlciBsaXN0XCYjMzQ7XG4mIzQzOyMgd2FybmluZ3MgdHJpZ2dlcmVkIGJ5IHRoZXNlICh0ZWNobmljYWxseSBsZWdhbCkgdGVzdCBwcm9ncmFtcy5cbiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX2JpdGZpZWxkcy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcbiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX25hbWVzcGFjaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuJiM0Mztwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfcGFja2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcbiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhZGRpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4mIzQzO3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9zeW50YXguYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4mIzQzO1xuJiM0MztpZmVxICgkKEJQRl9CVUlMRCksZ2NjKVxuJiM0MztCUEZfQ0NfTVNHIDo9IEdDQy1CUEZcbiYjNDM7IyBOb3RlOiBzeXMgaW5jbHVkZXMgY29tZSBmcm9tIHRoZSAqaG9zdCogZ2NjLCBub3QgJChCUEZfR0NDKSAtIGJwZi1nY2MmIzM5O3NcbiYjNDM7IyBvd24gc2VhcmNoIHBhdGggbGFja3MgdGhlIGhvc3QmIzM5O3MgYXNtLWdlbmVyaWMvIGhlYWRlcnMuIENvbXB1dGVkIG9uY2VcbiYjNDM7IyBoZXJlOiBicGZfY2MgYmVsb3cgaXMgZGVmZXJyZWQgYW5kIGV4cGFuZHMgcGVyIGNvbXBpbGVkIG9iamVjdC5cbiYjNDM7R0NDX1NZU19JTkNMVURFUyA6PSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcyxnY2MsKVxuJiM0MzticGZfY2MgPSAkKEJQRl9HQ0MpICQoQlBGX0NGTEFHUykgJChHQ0NfU1lTX0lOQ0xVREVTKVx0XHRcdFxcXG4mIzQzO1x0ICQoQlBGX0RFRklORVMpICQoJFx1MDAzYy1DRkxBR1MpICQoJFx1MDAzYy0kKEZMQVZPUiktQ0ZMQUdTKVx0XHRcXFxuJiM0MztcdCAtREJQRl9OT19QUkVTRVJWRV9BQ0NFU1NfSU5ERVggLVduby1hdHRyaWJ1dGVzIC1PMiAtYyAkXHUwMDNjIC1vICRAXG4mIzQzO2Vsc2VcbiYjNDM7QlBGX0NDX01TRyA6PSBDTE5HLUJQRlxuJiM0MzticGZfY2MgPSAkKENMQU5HKSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKSAkKEJQRl9ERUZJTkVTKVx0XHRcXFxuJiM0MztcdCAkKCRcdTAwM2MtQ0ZMQUdTKSAkKCRcdTAwM2MtJChGTEFWT1IpLUNGTEFHUylcdFx0XHRcdFxcXG4mIzQzO1x0IC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkXHUwMDNjIC1tY3B1PSQoQlBGX01DUFUpIC1vICRAXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MzskKEJQRl9PQkpTKTogJChSRElSKS8lLmJwZi5vOiBwcm9ncy8lLmMgcHJvZ3MvKi5oXHRcdFx0XFxcbiYjNDM7XHQgICAgICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKVx0XHRcXFxuJiM0MztcdCAgICAgfCAkKFJESVIpICQoQlBGT0JKKVxuJiM0MztcdCQoY2FsbCBtc2csJChCUEZfQ0NfTVNHKSwkKEJJTkFSWSksJEApXG4mIzQzO1x0JChRKSQoYnBmX2NjKSAkKGNhbGwgc2tpcF9vbl9mYWlsLEJQRilcbiYjNDM7XG4mIzQzOyMgZ2VuX2JwZl9za2VsLnNoIHBpY2tzIHRoZSBicGZ0b29sIGJpbmFyeSB1cCBmcm9tIHRoZSBlbnZpcm9ubWVudC5cbiYjNDM7ZXhwb3J0IEJQRlRPT0xcbiYjNDM7R0VOX1NLRUwgOj0gLi9nZW5fYnBmX3NrZWwuc2hcbiYjNDM7XG4mIzQzOyQoU0tFTFMpOiAkKFJESVIpLyUuc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKSB8ICQoUkRJUilcbiYjNDM7XHQkKFEpJChHRU5fU0tFTCkgLS10YWcgJiMzOTskKEJJTkFSWSkmIzM5OyAtLW5hbWUgJCogLS1pbmZpeCBsaW5rZWRcdFxcXG4mIzQzO1x0XHQtLXNrZWwgJEAgLS1zdWJza2VsICQoQDouc2tlbC5oPS5zdWJza2VsLmgpICRcdTAwM2NcdFx0XFxcbiYjNDM7XHRcdCQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTCwkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSlcbiYjNDM7XG4mIzQzOyQoTFNLRUxTX0gpOiAkKFJESVIpLyUubHNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkgfCAkKFJESVIpXG4mIzQzO1x0JChRKSQoR0VOX1NLRUwpIC0tdGFnICYjMzk7JChCSU5BUlkpJiMzOTsgLS1uYW1lICQqX2xza2VsIC0taW5maXggbGxpbmtlZCBcXFxuJiM0MztcdFx0LS1sc2tlbCAtLXNrZWwgJEAgJFx1MDAzYyAkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwpXG4mIzQzO1xuJiM0MzskKExTS0VMU19TSUdORURfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKVx0XFxcbiYjNDM7XHRcdCAgICAkKFBSSVZBVEVfS0VZKSAkKFZFUklGSUNBVElPTl9DRVJUKSB8ICQoUkRJUilcbiYjNDM7XHQkKFEpJChHRU5fU0tFTCkgLS10YWcgJiMzOTskKEJJTkFSWSkgKHNpZ25lZCkmIzM5OyAtLW5hbWUgJCpfbHNrZWxcdFxcXG4mIzQzO1x0XHQtLWluZml4IGxsaW5rZWRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0LS1zaWduICYjMzk7LVMgLWsgJChQUklWQVRFX0tFWSkgLWkgJChWRVJJRklDQVRJT05fQ0VSVCkmIzM5O1x0XFxcbiYjNDM7XHRcdC0tc2tlbCAkQCAkXHUwMDNjICQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTClcbiYjNDM7XG4mIzQzOy5TRUNPTkRFWFBBTlNJT046XG4mIzQzOyQoTElOS0VEX1NLRUxTX0gpOiAkKFJESVIpLyUuc2tlbC5oOiAkJChhZGRwcmVmaXggJChSRElSKS8sJCQoJCQqLnNrZWwuaC1kZXBzKSkgXFxcbiYjNDM7XHRcdCAgICQoQlBGVE9PTCkgfCAkKFJESVIpXG4mIzQzO1x0JChRKSQoR0VOX1NLRUwpIC0tdGFnICYjMzk7JChCSU5BUlkpJiMzOTsgLS1uYW1lICQqIC0taW5maXggbGlua2VkXHRcXFxuJiM0MztcdFx0LS1za2VsICRAIC0tc3Vic2tlbCAkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKVx0XHRcXFxuJiM0MztcdFx0JChhZGRwcmVmaXggJChSRElSKS8sJCgkKi5za2VsLmgtZGVwcykpXHRcdFx0XFxcbiYjNDM7XHRcdCQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTCwkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSlcbiYjNDM7XG4mIzQzO2VuZGlmICMgQlBGX0JVSUxEICE9IG5vbmVcbiYjNDM7XG4mIzQzOy5QSE9OWTogc2tlbHNcbiYjNDM7c2tlbHM6ICQoQUxMX1NLRUxTKVxuJiM0MztcbiYjNDM7IyBXaGVuIHRoZSBjb21waWxlciBnZW5lcmF0ZXMgYSAlLmQgZmlsZSwgb25seSBza2VsIGJhc2VuYW1lcyAobm90IGZ1bGxcbiYjNDM7IyBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciB0aGUgY29ycmVzcG9uZGluZyAlLm8gZmlsZS5cbiYjNDM7IyBUaGUgdnBhdGggZGlyZWN0aXZlcyBpbnN0cnVjdCBtYWtlIHRvIGFsc28gc2VhcmNoIGZvciBza2VsIGZpbGVzIGluXG4mIzQzOyMgJChSRElSKSBpZiB0aGV5IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkuXG4mIzQzO3ZwYXRoICUuc2tlbC5oICQoUkRJUilcbiYjNDM7dnBhdGggJS5sc2tlbC5oICQoUkRJUilcbiYjNDM7dnBhdGggJS5zdWJza2VsLmggJChSRElSKVxuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBUZXN0IG9iamVjdHMgYW5kIHJ1bm5lciBiaW5hcnlcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzOyQoUkRJUikvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiAkKFJFU09MVkVfQlRGSURTKSAkKFJESVIpL2J0Zl9kYXRhLmJwZi5vXG4mIzQzOyQoUkRJUikvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiBwcml2YXRlIFRFU1RfTkVFRFNfQlRGSURTID0gMVxuJiM0MztcbiYjNDM7IyBDb21waWxlIGluZGl2aWR1YWwgdGVzdCBmaWxlcy5cbiYjNDM7IyBOb3RlOiB3ZSBjZCBpbnRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0c1xuJiM0MzsjIGFyZSBmb3VuZC4gVGhlICUudGVzdC5kIGRlcGVuZGVuY3kgZmlsZXMgYXJlIGEgc2lkZSBlZmZlY3Qgb2YgdGhlIC1NTURcbiYjNDM7IyBiZWxvdzsgdGhlIHNlcGFyYXRlIG5vLXJlY2lwZSBydWxlIGZvciB0aGVtIG9yZGVycyB0aGUgZmlyc3RcbiYjNDM7IyBjb21waWxhdGlvbiBhZnRlciBza2VsZXRvbiBnZW5lcmF0aW9uIGFuZCByZS1vcmRlcnMgdGVzdCBvYmplY3RcbiYjNDM7IyBjb21waWxhdGlvbiB3aGVuIGhlYWRlcnMgY2hhbmdlLlxuJiM0MzskKFRFU1RfT0JKUyk6ICQoUkRJUikvJS50ZXN0Lm86ICQoVEVTVFNfRElSKS8lLmMgfCAkKFJESVIpLyUudGVzdC5kXG4mIzQzO1x0JChjYWxsIG1zZyxURVNULU9CSiwkKEJJTkFSWSksJEApXG4mIzQzO1x0JChRKShjZCAkKEBEKSBcdTAwMjZcdTAwMjYgJChDQykgLUkuICQoQ0ZMQUdTKSAtTU1EIC1NVCAkQCAtYyAkKENVUkRJUikvJFx1MDAzYyAtbyAkKEBGKSkgXFxcbiYjNDM7XHRcdCQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKGNhbGwgc2tpcF9vbl9mYWlsLFRFU1QpKVxuJiM0MztcdCQoaWYgJChURVNUX05FRURTX0JURklEUyksXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQkKFEpaWYgWyAtZiAkQCBdOyB0aGVuXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQkKGlmICQoZmlsdGVyIDEsJChWKSksdHJ1ZSxwcmludGYgJiMzOTsgICUtOHMlcyAlc1xcbiYjMzk7IFwmIzM0O0JURklEU1wmIzM0OyBcJiMzNDsgWyQoQklOQVJZKV1cJiMzNDsgXCYjMzQ7JChub3RkaXIgJEApXCYjMzQ7KTsgXFxcbiYjNDM7XHRcdCQoUkVTT0xWRV9CVEZJRFMpIC0tYnRmICQoUkRJUikvYnRmX2RhdGEuYnBmLm8gJEA7XHRcXFxuJiM0MztcdFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJEAuQlRGX2lkcyAkQDtcdFx0XFxcbiYjNDM7XHRcdGZpKVxuJiM0MztcbiYjNDM7JChURVNUX0RFUFMpOiAkKFJESVIpLyUudGVzdC5kOiAkKFRFU1RTX0RJUikvJS5jICQoRVhUUkFfSERSUykgJChCUEZPQkopIFxcXG4mIzQzO1x0ICAgICAgfCAkKFJESVIpICQoQUxMX1NLRUxTKVxuJiM0MztcbiYjNDM7aW5jbHVkZSAkKHdpbGRjYXJkICQoVEVTVF9ERVBTKSlcbiYjNDM7XG4mIzQzOyQoUkRJUikvaml0X2Rpc2FzbV9oZWxwZXJzLm86IENGTEFHUyAmIzQzOz0gJChMTFZNX0NGTEFHUylcbiYjNDM7XG4mIzQzOyQoRVhUUkFfT0JKUyk6ICQoUkRJUikvJS5vOiAlLmMgJChFWFRSQV9IRFJTKSAkKFRFU1RTX0hEUikgJChCUEZPQkopIHwgJChSRElSKVxuJiM0MztcdCQoY2FsbCBtc2csRVhULU9CSiwkKEJJTkFSWSksJEApXG4mIzQzO1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkXHUwMDNjIC1vICRAXG4mIzQzO1xuJiM0MzskKExJQl9PQkpTKTogJChSRElSKS8lLm86ICQoVE9PTFNESVIpL2xpYi8lLmMgfCAkKFJESVIpXG4mIzQzO1x0JChjYWxsIG1zZyxMSUItT0JKLCQoQklOQVJZKSwkQClcbiYjNDM7XHQkKFEpJChDQykgJChDRkxBR1MpIC1jICRcdTAwM2MgLW8gJEBcbiYjNDM7XG4mIzQzOyMgTm9uLWZsYXZvcmVkIGluLXNyY3RyZWUgYnVpbGRzIHJlY2VpdmUgc3BlY2lhbCB0cmVhdG1lbnQsIGluIHBhcnRpY3VsYXJcbiYjNDM7IyB3ZSBkbyBub3QgbmVlZCB0byBjb3B5IGV4dHJhIHJlc291cmNlcyAoc2VlIGUuZy4gdGVzdF9idGZfZHVtcF9jYXNlKCkpLlxuJiM0MzsuUEhPTlk6IGV4dHJhc1xuJiM0MztleHRyYXM6ICQoaWYgJChQRVJNSVNTSVZFKSwkKHdpbGRjYXJkICQoRVhUUkFfRklMRVMpKSwkKEVYVFJBX0ZJTEVTKSkgfCAkKFJESVIpXG4mIzQzO2lmbmVxICgkKEZMQVZPUik6JChPVVRQVVQpLDokKENVUkRJUikpXG4mIzQzO2lmbmVxICgkKHN0cmlwICQoRVhUUkFfRklMRVMpKSwpXG4mIzQzO1x0JChjYWxsIG1zZyxFWFQtQ09QWSwkKEJJTkFSWSksJChub3RkaXIgJChFWFRSQV9GSUxFUykpKVxuJiM0MztcdCQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJChFWFRSQV9GSUxFUykgJChSRElSKS9cbiYjNDM7ZW5kaWZcbiYjNDM7ZW5kaWZcbiYjNDM7XG4mIzQzOyMgSW4gcGVybWlzc2l2ZSBtb2RlLCBsaW5rIHdoYXRldmVyIHRlc3Qgb2JqZWN0cyB3ZXJlIHN1Y2Nlc3NmdWxseSBidWlsdFxuJiM0MzsjICh0aGVpciBjb21waWxhdGlvbiBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpOyB0aGUgd2lsZGNhcmQgaW4gdGhlIHJlY2lwZVxuJiM0MzsjIHBpY2tzIHVwIHRoZSBzdXJ2aXZvcnMgYXQgbGluayB0aW1lLlxuJiM0MzsjIFByZXJlcXVpc2l0ZSBvcmRlciBpcyBhbHNvIGxpbmsgb3JkZXIgKHRlc3Qgb2JqZWN0cywgZXh0cmEgb2JqZWN0cyxcbiYjNDM7IyBsaWJicGYsIGxpYiBvYmplY3RzKS5cbiYjNDM7JChPVVRQVVQpLyQoQklOQVJZKTogJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCwkKFRFU1RfT0JKUykpXHRcdFxcXG4mIzQzO1x0XHQgICAgICQoRVhUUkFfT0JKUykgJChCUEZPQkopICQoTElCX09CSlMpXHRcdFxcXG4mIzQzO1x0XHQgICAgICQoVFJVTk5FUl9CUEZUT09MKSAkKE9VVFBVVCkvdmVyaXN0YXRcdFx0XFxcbiYjNDM7XHRcdCAgICAgfCBleHRyYXMgJChCUEZfT0JKUylcdFx0XHRcdFxcXG4mIzQzO1x0XHQgICAgICQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKFRFU1RfT0JKUykpXG4mIzQzO1x0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuJiM0MztcdCQoUSkkKENDKSAkKENGTEFHUylcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0JChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKSlcdFxcXG4mIzQzO1x0XHQkKGZpbHRlciAlLmEgJS5vLCReKVx0XHRcdFx0XHRcXFxuJiM0MztcdFx0JChMRExJQlMpICQoTExWTV9MRExJQlMpICQoTERGTEFHUykgJChMTFZNX0xERkxBR1MpIC1vICRAXG4mIzQzO1x0JChRKWxuIC1zZiAkKGlmICQoRkxBVk9SKSwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFxcXG4mIzQzO1x0XHQgICAkKFJESVIpL2JwZnRvb2xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4wYjIzN2Y2Mzk2N2RkNlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaFxuQEAgLTAsMCAmIzQzOzEsOTcgQEBcbiYjNDM7IyEvYmluL2Jhc2hcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjXG4mIzQzOyMgTGluayBCUEYgb2JqZWN0IGZpbGUocykgd2l0aCBcJiMzNDticGZ0b29sIGdlbiBvYmplY3RcJiMzNDsgYW5kIGdlbmVyYXRlIGFcbiYjNDM7IyBza2VsZXRvbiAob3IgbGlnaHQgc2tlbGV0b24pIGhlYWRlciBmcm9tIHRoZSByZXN1bHQuXG4mIzQzOyNcbiYjNDM7IyBVc2FnZTpcbiYjNDM7IyAgIEJQRlRPT0w9XHUwMDNjYnBmdG9vbFx1MDAzZSBnZW5fYnBmX3NrZWwuc2ggLS1uYW1lIE5BTUUgLS1za2VsIE9VVCBbb3B0aW9uc10gT0JKLi4uXG4mIzQzOyNcbiYjNDM7IyAgIC0tbmFtZSBOQU1FICAgICAgIHNrZWxldG9uIG9iamVjdCBuYW1lIChcJiMzNDtuYW1lIE5BTUVcJiMzNDsgZm9yIGJwZnRvb2wpXG4mIzQzOyMgICAtLXNrZWwgT1VUICAgICAgICBvdXRwdXQgaGVhZGVyIChcJiMzNDtmb28uc2tlbC5oXCYjMzQ7IG9yIFwmIzM0O2Zvby5sc2tlbC5oXCYjMzQ7KVxuJiM0MzsjICAgLS1zdWJza2VsIE9VVCAgICAgYWxzbyBnZW5lcmF0ZSBhIHN1YnNrZWxldG9uIGhlYWRlciBpbnRvIE9VVFxuJiM0MzsjICAgLS1sc2tlbCAgICAgICAgICAgZ2VuZXJhdGUgYSBsaWdodCBza2VsZXRvbiAoYnBmdG9vbCBnZW4gc2tlbGV0b24gLUwpXG4mIzQzOyMgICAtLXNpZ24gJiMzOTtBUkdTJiMzOTsgICAgIGV4dHJhIFwmIzM0O2dlbiBza2VsZXRvblwmIzM0OyBhcmdzIGZvciBzaWduaW5nICgtUyAtayAuLiAtaSAuLilcbiYjNDM7IyAgIC0tdGFnIFRBRyAgICAgICAgIGJ1aWxkLWxvZyB0YWcsIGUuZy4gXCYjMzQ7dGVzdF9wcm9ncy1ub19hbHUzMlwmIzM0O1xuJiM0MzsjICAgLS1pbmZpeCBTVFIgICAgICAgaW50ZXJtZWRpYXRlIGZpbGUgaW5maXggKGRlZmF1bHQ6IGxpbmtlZCkuIENhbGxlcnNcbiYjNDM7IyAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRpbmcgYm90aCBhIC5za2VsLmggYW5kIGEgLmxza2VsLmggZnJvbSB0aGVcbiYjNDM7IyAgICAgICAgICAgICAgICAgICAgIHNhbWUgLmJwZi5vIE1VU1QgdXNlIGRpc3RpbmN0IGluZml4ZXMsIG9yIHBhcmFsbGVsXG4mIzQzOyMgICAgICAgICAgICAgICAgICAgICBidWlsZHMgcmFjZSBvbiB0aGUgaW50ZXJtZWRpYXRlIGZpbGVzLlxuJiM0MzsjICAgLS1uby1kZXRlcm1pbmlzbS1jaGVja1xuJiM0MzsjICAgICAgICAgICAgICAgICAgICAgbGluayB0aGUgaW5wdXRzIG9uY2UgaW5zdGVhZCBvZiB0aHJlZSB0aW1lcy5cbiYjNDM7IyAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQgdGhlIG9iamVjdCBpcyByZS1saW5rZWQgdHdpY2UgbW9yZSBhbmRcbiYjNDM7IyAgICAgICAgICAgICAgICAgICAgIHRoZSAybmQgYW5kIDNyZCByZXN1bHRzIGNvbXBhcmVkLCBhcyBhIHJlZ3Jlc3Npb25cbiYjNDM7IyAgICAgICAgICAgICAgICAgICAgIHRlc3QgZm9yIHRoZSBkZXRlcm1pbmlzbSBvZiBcJiMzNDticGZ0b29sIGdlbiBvYmplY3RcJiMzNDsuXG4mIzQzOyNcbiYjNDM7IyBUaGUgYnBmdG9vbCBiaW5hcnkgaXMgdGFrZW4gZnJvbSAkQlBGVE9PTCAoZGVmYXVsdDogYnBmdG9vbCBmcm9tIFBBVEgpLlxuJiM0MzsjIE9uIGZhaWx1cmUgYWxsIG91dHB1dHMgYW5kIGludGVybWVkaWF0ZXMgYXJlIHJlbW92ZWQgYW5kIHRoZSBzY3JpcHRcbiYjNDM7IyBleGl0cyBub24temVybzsgcGVybWlzc2l2ZS1tb2RlIHNraXBwaW5nIGlzIHRoZSBjYWxsZXImIzM5O3MgYnVzaW5lc3NcbiYjNDM7IyAoc2VlIHNraXBfb25fZmFpbCBpbiBNYWtlZmlsZS5idWlsZHZhcnMpLlxuJiM0MztcbiYjNDM7c2V0IC11XG4mIzQzO1xuJiM0MzticGZ0b29sPSR7QlBGVE9PTDotYnBmdG9vbH1cbiYjNDM7bmFtZT0mIzM5OyYjMzk7IHNrZWw9JiMzOTsmIzM5OyBzdWJza2VsPSYjMzk7JiMzOTsgdGFnPSYjMzk7JiMzOTsgc2lnbl9hcmdzPSYjMzk7JiMzOTsgaW5maXg9bGlua2VkXG4mIzQzO2xza2VsPTAgZGV0X2NoZWNrPTFcbiYjNDM7XG4mIzQzO3doaWxlIFsgJCMgLWd0IDAgXTsgZG9cbiYjNDM7XHRjYXNlIFwmIzM0OyQxXCYjMzQ7IGluXG4mIzQzO1x0LS1uYW1lKVx0XHRuYW1lPSQyOyBzaGlmdCAyIDs7XG4mIzQzO1x0LS1za2VsKVx0XHRza2VsPSQyOyBzaGlmdCAyIDs7XG4mIzQzO1x0LS1zdWJza2VsKVx0c3Vic2tlbD0kMjsgc2hpZnQgMiA7O1xuJiM0MztcdC0tdGFnKVx0XHR0YWc9JDI7IHNoaWZ0IDIgOztcbiYjNDM7XHQtLWluZml4KVx0aW5maXg9JDI7IHNoaWZ0IDIgOztcbiYjNDM7XHQtLXNpZ24pXHRcdHNpZ25fYXJncz0kMjsgc2hpZnQgMiA7O1xuJiM0MztcdC0tbHNrZWwpXHRsc2tlbD0xOyBzaGlmdCA7O1xuJiM0MztcdC0tbm8tZGV0ZXJtaW5pc20tY2hlY2spIGRldF9jaGVjaz0wOyBzaGlmdCA7O1xuJiM0MztcdC0tKVx0XHRzaGlmdDsgYnJlYWsgOztcbiYjNDM7XHQtKilcdFx0ZWNobyBcJiMzNDskMDogdW5rbm93biBvcHRpb246ICQxXCYjMzQ7IFx1MDAzZVx1MDAyNjI7IGV4aXQgMSA7O1xuJiM0MztcdCopXHRcdGJyZWFrIDs7XG4mIzQzO1x0ZXNhY1xuJiM0Mztkb25lXG4mIzQzO1xuJiM0MztpZiBbIC16IFwmIzM0OyRuYW1lXCYjMzQ7IF0gfHwgWyAteiBcJiMzNDskc2tlbFwmIzM0OyBdIHx8IFsgJCMgLWVxIDAgXTsgdGhlblxuJiM0MztcdGVjaG8gXCYjMzQ7dXNhZ2U6ICQwIC0tbmFtZSBOQU1FIC0tc2tlbCBPVVQgW29wdGlvbnNdIE9CSi4uLlwmIzM0OyBcdTAwM2VcdTAwMjYyXG4mIzQzO1x0ZXhpdCAxXG4mIzQzO2ZpXG4mIzQzO1xuJiM0MztiYXNlPSR7c2tlbCUuc2tlbC5ofVxuJiM0MztiYXNlPSR7YmFzZSUubHNrZWwuaH1cbiYjNDM7dDE9JGJhc2UuJHtpbmZpeH0xLm9cbiYjNDM7dDI9JGJhc2UuJHtpbmZpeH0yLm9cbiYjNDM7dDM9JGJhc2UuJHtpbmZpeH0zLm9cbiYjNDM7XG4mIzQzO2ZhaWwoKSB7XG4mIzQzO1x0cm0gLWYgXCYjMzQ7JHNrZWxcJiMzNDsgJHtzdWJza2VsOiYjNDM7XCYjMzQ7JHN1YnNrZWxcJiMzNDt9IFwmIzM0OyR0MVwmIzM0OyBcJiMzNDskdDJcJiMzNDsgXCYjMzQ7JHQzXCYjMzQ7XG4mIzQzO1x0ZXhpdCAxXG4mIzQzO31cbiYjNDM7XG4mIzQzO2lmIFsgJCMgLWd0IDEgXTsgdGhlblxuJiM0MztcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O0xJTkstQlBGJiMzOTsgXCYjMzQ7JHt0YWc6JiM0MztbJHRhZ10gfSQoYmFzZW5hbWUgXCYjMzQ7JGJhc2VcJiMzNDspLmJwZi5vXCYjMzQ7IFx1MDAzZVx1MDAyNjJcbiYjNDM7ZmlcbiYjNDM7cHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyBcJiMzNDske3RhZzomIzQzO1skdGFnXSB9JChiYXNlbmFtZSBcJiMzNDskc2tlbFwmIzM0OylcJiMzNDsgXHUwMDNlXHUwMDI2MlxuJiM0MztcbiYjNDM7XCYjMzQ7JGJwZnRvb2xcJiMzNDsgZ2VuIG9iamVjdCBcJiMzNDskdDFcJiMzNDsgXCYjMzQ7JEBcJiMzNDsgfHwgZmFpbFxuJiM0MztmaW5hbD0kdDFcbiYjNDM7aWYgWyBcJiMzNDskZGV0X2NoZWNrXCYjMzQ7IC1lcSAxIF07IHRoZW5cbiYjNDM7XHRcJiMzNDskYnBmdG9vbFwmIzM0OyBnZW4gb2JqZWN0IFwmIzM0OyR0MlwmIzM0OyBcJiMzNDskdDFcJiMzNDsgfHwgZmFpbFxuJiM0MztcdFwmIzM0OyRicGZ0b29sXCYjMzQ7IGdlbiBvYmplY3QgXCYjMzQ7JHQzXCYjMzQ7IFwmIzM0OyR0MlwmIzM0OyB8fCBmYWlsXG4mIzQzO1x0aWYgISBjbXAgLXMgXCYjMzQ7JHQyXCYjMzQ7IFwmIzM0OyR0M1wmIzM0OzsgdGhlblxuJiM0MztcdFx0ZWNobyBcJiMzNDskMDogYnBmdG9vbCBnZW4gb2JqZWN0IGlzIG5vdCBkZXRlcm1pbmlzdGljIGZvciAkc2tlbFwmIzM0OyBcdTAwM2VcdTAwMjYyXG4mIzQzO1x0XHRmYWlsXG4mIzQzO1x0ZmlcbiYjNDM7XHRmaW5hbD0kdDNcbiYjNDM7ZmlcbiYjNDM7XG4mIzQzO2ZsYWdzPVxuJiM0MztbIFwmIzM0OyRsc2tlbFwmIzM0OyAtZXEgMSBdIFx1MDAyNlx1MDAyNiBmbGFncz0tTFxuJiM0MzsjICRzaWduX2FyZ3MgaW50ZW50aW9uYWxseSB1bnF1b3RlZDogaXQgaXMgYSBsaXN0IG9mIGJwZnRvb2wgYXJndW1lbnRzXG4mIzQzOyMgc2hlbGxjaGVjayBkaXNhYmxlPVNDMjA4NlxuJiM0MztcJiMzNDskYnBmdG9vbFwmIzM0OyBnZW4gc2tlbGV0b24gJHNpZ25fYXJncyAkZmxhZ3MgXCYjMzQ7JGZpbmFsXCYjMzQ7IG5hbWUgXCYjMzQ7JG5hbWVcJiMzNDsgXHUwMDNlIFwmIzM0OyRza2VsXCYjMzQ7IHx8IGZhaWxcbiYjNDM7XG4mIzQzO2lmIFsgLW4gXCYjMzQ7JHN1YnNrZWxcJiMzNDsgXTsgdGhlblxuJiM0MztcdFwmIzM0OyRicGZ0b29sXCYjMzQ7IGdlbiBzdWJza2VsZXRvbiBcJiMzNDskZmluYWxcJiMzNDsgbmFtZSBcJiMzNDskbmFtZVwmIzM0OyBcdTAwM2UgXCYjMzQ7JHN1YnNrZWxcJiMzNDsgfHwgZmFpbFxuJiM0MztmaVxuJiM0MztcbiYjNDM7cm0gLWYgXCYjMzQ7JHQxXCYjMzQ7IFwmIzM0OyR0MlwmIzM0OyBcJiMzNDskdDNcJiMzNDtcbiYjNDM7ZXhpdCAwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTM6Mjk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGJ1aWxkIHN5c3RlbSBmb3IgQlBGIHNlbGZ0ZXN0cyAoTWFrZWZpbGVzIGFuZCBhIHNoZWxsIHNjcmlwdCkuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwZTBjYTkwYmI3ZmEzNzNlYzhmN2U0ZmYxNzY0ZjgxZWFiY2NhOTY2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjIgMTM6Mjk6MjEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUKaW5kZXggYjY0MmVlNDg5ZWE2NDAuLmEzYWI1MjVmN2RmYWJiIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlCkBAIC0xLDk2ICYjNDM7MSw0NCBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyMKJiM0MzsjIEJQRiBzZWxmdGVzdHMgYnVpbGQuCiYjNDM7IwomIzQzOyMgVGhlIGJ1aWxkIGlzIHNwbGl0IGluIHR3byBsYXllcnM6CiYjNDM7IwomIzQzOyMgICBNYWtlZmlsZSAodGhpcyBmaWxlKQomIzQzOyMgICAgICAgRXZlcnl0aGluZyB0aGF0IGV4aXN0cyBvbmNlOiBrbm9icyBhbmQgdG9vbGNoYWluIHNldHVwLCBsaWJicGYgLwomIzQzOyMgICAgICAgYnBmdG9vbCAvIHJlc29sdmVfYnRmaWRzIHN1Yi1idWlsZHMsIHZtbGludXguaCwgc2lnbmluZyBrZXlzLAomIzQzOyMgICAgICAgZ2VuZXJhdGVkIHRlc3RzLmggaGVhZGVycywgc2hhcmVkIGhlbHBlciBvYmplY3RzLCBzdGFuZGFsb25lIHRlc3QKJiM0MzsjICAgICAgIGJpbmFyaWVzIChiZW5jaCwgdmVyaXN0YXQsIHRlc3RfdmVyaWZpZXIsIHhzayosIC4uLiksIGtlcm5lbCB0ZXN0CiYjNDM7IyAgICAgICBtb2R1bGVzLCBkb2NzLCBhbmQgdGhlIGtzZWxmdGVzdCBsaWIubWsgcnVuL2luc3RhbGwvY2xlYW4KJiM0MzsjICAgICAgIGNvbnRyYWN0LgomIzQzOyMKJiM0MzsjICAgTWFrZWZpbGUucnVubmVyCiYjNDM7IyAgICAgICBPbmUgdGVzdC1ydW5uZXIgaW5zdGFuY2UgKHRlc3RfcHJvZ3MsIHRlc3RfcHJvZ3MtJmx0O2ZsYXZvciZndDssCiYjNDM7IyAgICAgICB0ZXN0X21hcHMpOiBCUEYgb2JqZWN0cywgc2tlbGV0b24gaGVhZGVycywgdGVzdCBvYmplY3RzIGFuZCB0aGUKJiM0MzsjICAgICAgIGZpbmFsIHJ1bm5lciBiaW5hcnkuIEludm9rZWQgZnJvbSBoZXJlIG9uY2UgcGVyIGluc3RhbmNlOyBlYWNoCiYjNDM7IyAgICAgICBpbnZvY2F0aW9uIGlzIGFuIGluZGVwZW5kZW50IHNpbmdsZS1mbGF2b3IgbmFtZXNwYWNlLCBzbyB0aGUKJiM0MzsjICAgICAgIHJ1bm5lciBpcyBwbGFpbiBtYWtlIHdpdGhvdXQgJCQtZXNjYXBpbmcgb3IgZXZhbC4KJiM0MzsjCiYjNDM7IyAgIGdlbl9icGZfc2tlbC5zaAomIzQzOyMgICAgICAgTGlua3MgQlBGIG9iamVjdHMgdmlhIGJwZnRvb2wgYW5kIGdlbmVyYXRlcyAobGlnaHQpIHNrZWxldG9uczsKJiM0MzsjICAgICAgIG9uZSBzY3JpcHQgaW5zdGVhZCBvZiBmb3VyIG5lYXItaWRlbnRpY2FsIG1ha2UgcmVjaXBlcy4KJiM0MzsjCiYjNDM7IyBTaGFyZWQgZGVmaW5pdGlvbnMgKHBhdGhzLCBmbGFncywgcGVybWlzc2l2ZS1tb2RlIGhlbHBlcnMpIGxpdmUgaW4KJiM0MzsjIE1ha2VmaWxlLmJ1aWxkdmFycywgaW5jbHVkZWQgYnkgYm90aCBsYXllcnMuCiYjNDM7CiBpbmNsdWRlIC4uLy4uLy4uL2J1aWxkL0J1aWxkLmluY2x1ZGUKIGluY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5hcmNoCiBpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZQogCi1DWFggPz0gJChDUk9TU19DT01QSUxFKWcmIzQzOyYjNDM7Ci1PQkpDT1BZID89ICQoQ1JPU1NfQ09NUElMRSlvYmpjb3B5Ci0KLUNVUkRJUiA6PSAkKGFic3BhdGggLikKLVRPT0xTRElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLikKLUxJQkRJUiA6PSAkKFRPT0xTRElSKS9saWIKLUJQRkRJUiA6PSAkKExJQkRJUikvYnBmCi1UT09MU0lOQ0RJUiA6PSAkKFRPT0xTRElSKS9pbmNsdWRlCi1UT09MU0FSQ0hJTkNESVIgOj0gJChUT09MU0RJUikvYXJjaC8kKFNSQ0FSQ0gpL2luY2x1ZGUKLUJQRlRPT0xESVIgOj0gJChUT09MU0RJUikvYnBmL2JwZnRvb2wKLUFQSURJUiA6PSAkKFRPT0xTSU5DRElSKS91YXBpCi1pZm5lcSAoJChPKSwpCi1HRU5ESVIgOj0gJChPKS9pbmNsdWRlL2dlbmVyYXRlZAotZWxzZQotR0VORElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLi8uLi9pbmNsdWRlL2dlbmVyYXRlZCkKLWVuZGlmCi1HRU5IRFIgOj0gJChHRU5ESVIpL2F1dG9jb25mLmgKLVBLR19DT05GSUcgPz0gJChDUk9TU19DT01QSUxFKXBrZy1jb25maWcKLQotaWZuZXEgKCQod2lsZGNhcmQgJChHRU5IRFIpKSwpCi0gIEdFTkZMQUdTIDo9IC1ESEFWRV9HRU5IRFIKJiM0MzsjIFRoZXNlIHByb2JlcyBnYXRlIHRoZSBmbGF2b3IgbGlzdCwgd2hpY2ggbXVzdCBiZSBmaW5hbCBiZWZvcmUgbGliLm1rIGlzCiYjNDM7IyBpbmNsdWRlZDsga2VlcCB2YWx1ZXMgY29uc2lzdGVudCB3aXRoIE1ha2VmaWxlLmJ1aWxkdmFycy4KJiM0MztpZmVxICgkKG9yaWdpbiBCUEZfR0NDKSx1bmRlZmluZWQpCiYjNDM7QlBGX0dDQyA6PSAkKHNoZWxsIGNvbW1hbmQgLXYgYnBmLWdjYzspCiBlbmRpZgotCi1CUEZfR0NDCQk/PSAkKHNoZWxsIGNvbW1hbmQgLXYgYnBmLWdjYzspCi1pZmRlZiBBU0FOCi1TQU5fQ0ZMQUdTIAk/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIKLWVsc2UKLVNBTl9DRkxBR1MJPz0KLWVuZGlmCi1TQU5fTERGTEFHUwk/PSAkKFNBTl9DRkxBR1MpCi1SRUxFQVNFCQk/PQotT1BUX0ZMQUdTCT89ICQoaWYgJChSRUxFQVNFKSwtTzIsLU8wKQotCi1MSUJFTEZfQ0ZMQUdTCTo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1jZmxhZ3MgMiZndDsvZGV2L251bGwpCi1MSUJFTEZfTElCUwk6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyJmd0Oy9kZXYvbnVsbCB8fCBlY2hvIC1sZWxmKQotCi1TS0lQX0RPQ1MJPz0KLVNLSVBfTExWTQk/PQotU0tJUF9MSUJCRkQJPz0KLVNLSVBfQ1JZUFRPCT89Ci0KLSMgV2hlbiBCUEZfU1RSSUNUX0JVSUxEIGlzIDEsIGFueSBCUEYgb2JqZWN0LCBza2VsZXRvbiwgdGVzdCBvYmplY3QsIG9yCi0jIGJlbmNobWFyayBjb21waWxhdGlvbiBmYWlsdXJlIGlzIGZhdGFsLiBTZXQgdG8gMCB0byB0b2xlcmF0ZSBmYWlsdXJlcwotIyBhbmQgY29udGludWUgYnVpbGRpbmcgdGhlIHJlbWFpbmluZyB0ZXN0cy4KLUJQRl9TVFJJQ1RfQlVJTEQgPz0gMQotUEVSTUlTU0lWRSA6PSAkKGZpbHRlciAwLCQoQlBGX1NUUklDVF9CVUlMRCkpCi0KLWlmZXEgKCQoc3JjdHJlZSksKQotc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChDVVJESVIpKSkKLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKQotc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpCi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSkKLWVuZGlmCi0KLUNPTU1PTl9DRkxBR1MgPSAtZyAkKE9QVF9GTEFHUykgLXJkeW5hbWljIC1zdGQ9Z251MTEJCQkJXAotCSAgLVdhbGwgLVdlcnJvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlcgkJCQlcCi0JICAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlCQkJCQlcCi0JICAkKEdFTkZMQUdTKSAkKFNBTl9DRkxBR1MpICQoTElCRUxGX0NGTEFHUykJCQlcCi0JICAtSSQoQ1VSRElSKSAtSSQoSU5DTFVERV9ESVIpIC1JJChHRU5ESVIpIC1JJChMSUJESVIpCQlcCi0JICAtSSQoVE9PTFNJTkNESVIpIC1JJChUT09MU0FSQ0hJTkNESVIpIC1JJChBUElESVIpIC1JJChPVVRQVVQpCVwKLQkgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUKLUxERkxBR1MgJiM0Mzs9ICQoU0FOX0xERkxBR1MpCi1MRExJQlMgJiM0Mzs9ICQoTElCRUxGX0xJQlMpIC1seiAtbHJ0IC1scHRocmVhZAotCi1QQ0FQX0NGTEFHUwk6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlicGNhcCAyJmd0Oy9kZXYvbnVsbCAmYW1wOyZhbXA7IGVjaG8gJiMzNDstRFRSQUZGSUNfTU9OSVRPUj0xJiMzNDspCi1QQ0FQX0xJQlMJOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBsaWJwY2FwIDImZ3Q7L2Rldi9udWxsKQotTERMSUJTICYjNDM7PSAkKFBDQVBfTElCUykKLUNGTEFHUyAmIzQzOz0gJChDT01NT05fQ0ZMQUdTKSAkKFBDQVBfQ0ZMQUdTKQotCi0jIFNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgdXNlIExMVk0gbGlicmFyaWVzCi1qaXRfZGlzYXNtX2hlbHBlcnMuYy1DRkxBR1MgPSAkKExMVk1fQ0ZMQUdTKQotCi1pZm5lcSAoJChMTFZNKSwpCi0jIFNpbGVuY2Ugc29tZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHdpdGggY2xhbmcKLUNGTEFHUyAmIzQzOz0gLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50Ci1lbmRpZgotCi0jIENoZWNrIHdoZXRoZXIgYnBmIGNwdT12NCBpcyBzdXBwb3J0ZWQgb3Igbm90IGJ5IGNsYW5nCiBpZm5lcSAoJChzaGVsbCAkKENMQU5HKSAtLXRhcmdldD1icGYgLW1jcHU9aGVscCAyJmd0OyZhbXA7MSB8IGdyZXAgJiMzOTt2NCYjMzk7KSwpCiBDTEFOR19DUFVWNCA6PSAxCiBlbmRpZgogCi0jIENoZWNrIHdoZXRoZXIgY2xhbmcgc3VwcG9ydHMgQlBGIGFkZHJlc3Mgc2FuaXRpemVyIChyZXF1aXJlcyBMTFZNIDIyJiM0MzspCi1DTEFOR19IQVNfQVJFTkFfQVNBTiA6PSAkKHNoZWxsIGVjaG8gJiMzOTtpbnQgeDsmIzM5OyB8IFwKLQkkKENMQU5HKSAtLXRhcmdldD1icGYgLWZzYW5pdGl6ZT1rZXJuZWwtYWRkcmVzcyBcCi0JLW1sbHZtIC1hc2FuLXNoYWRvdy1hZGRyLXNwYWNlPTEgXAotCS14IGMgLWMgLSAtbyAvZGV2L251bGwgMiZndDsvZGV2L251bGwgJmFtcDsmYW1wOyBlY2hvIDEpCi0KICMgT3JkZXIgY29ycmVzcG9uZCB0byAmIzM5O21ha2UgcnVuX3Rlc3RzJiMzOTsgb3JkZXIKIFRFU1RfR0VOX1BST0dTID0gdGVzdF92ZXJpZmllciB0ZXN0X3RhZyB0ZXN0X21hcHMgdGVzdF9scnVfbWFwIHRlc3RfcHJvZ3MgXAogCXRlc3Rfc29ja21hcCBcCkBAIC0xMDIsMTYgJiM0Mzs1MCw2IEBAIFRFU1RfSU5TVF9TVUJESVJTIDo9IG5vX2FsdTMyCiBpZm5lcSAoJChCUEZfR0NDKSwpCiBURVNUX0dFTl9QUk9HUyAmIzQzOz0gdGVzdF9wcm9ncy1icGZfZ2NjCiBURVNUX0lOU1RfU1VCRElSUyAmIzQzOz0gYnBmX2djYwotCi0jIFRoZSBmb2xsb3dpbmcgdGVzdHMgY29udGFpbiBDIGNvZGUgdGhhdCwgYWx0aG91Z2ggdGVjaG5pY2FsbHkgbGVnYWwsCi0jIHRyaWdnZXJzIEdDQyB3YXJuaW5ncyB0aGF0IGNhbm5vdCBiZSBkaXNhYmxlZDogZGVjbGFyYXRpb24gb2YKLSMgYW5vbnltb3VzIHN0cnVjdCB0eXBlcyBpbiBmdW5jdGlvbiBwYXJhbWV0ZXIgbGlzdHMuCi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfYml0ZmllbGRzLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvcgotcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX25hbWVzcGFjaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvcgotcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhY2tpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfcGFkZGluZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3IKLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9zeW50YXguYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCi0KIGVuZGlmCiAKIGlmbmVxICgkKENMQU5HX0NQVVY0KSwpCkBAIC0xMzIsMTAgJiM0Mzs3MCw2IEBAIFRFU1RfUFJPR1MgOj0gdGVzdF9rbW9kLnNoIFwKIFRFU1RfUFJPR1NfRVhURU5ERUQgOj0gXAogCWltYV9zZXR1cC5zaCB2ZXJpZnlfc2lnX3NldHVwLnNoCiAKLVRFU1RfS01PRFMgOj0gYnBmX3Rlc3Rtb2Qua28gYnBmX3Rlc3Rfbm9fY2ZpLmtvIGJwZl90ZXN0X21vZG9yZGVyX3gua28gXAotCWJwZl90ZXN0X21vZG9yZGVyX3kua28gYnBmX3Rlc3RfcnFzcGlubG9jay5rbwotVEVTVF9LTU9EX1RBUkdFVFMgPSAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLCQoVEVTVF9LTU9EUykpCi0KICMgQ29tcGlsZSBidXQgbm90IHBhcnQgb2YgJiMzOTttYWtlIHJ1bl90ZXN0cyYjMzk7CiBURVNUX0dFTl9QUk9HU19FWFRFTkRFRCA9IFwKIAliZW5jaCBcCkBAIC0xNDgsMTEgJiM0Mzs4MiwxMCBAQCBURVNUX0dFTl9QUk9HU19FWFRFTkRFRCA9IFwKIAl4ZHBfc3lucHJveHkgXAogCXhza3hjZWl2ZXIKIAotVEVTVF9HRU5fRklMRVMgJiM0Mzs9ICQoVEVTVF9LTU9EUykgbGlidXJhbmRvbV9yZWFkLnNvIHVyYW5kb21fcmVhZCBzaWduLWZpbGUgdXByb2JlX211bHRpCiYjNDM7VEVTVF9LTU9EUyA/PSBicGZfdGVzdG1vZC5rbyBicGZfdGVzdF9ub19jZmkua28gYnBmX3Rlc3RfbW9kb3JkZXJfeC5rbyBcCiYjNDM7CWJwZl90ZXN0X21vZG9yZGVyX3kua28gYnBmX3Rlc3RfcnFzcGlubG9jay5rbwogCi1pZm5lcSAoJChWKSwxKQotc3VibWFrZV9leHRyYXMgOj0gZmVhdHVyZV9kaXNwbGF5PTAKLWVuZGlmCiYjNDM7VEVTVF9HRU5fRklMRVMgJiM0Mzs9ICQoVEVTVF9LTU9EUykgbGlidXJhbmRvbV9yZWFkLnNvIHVyYW5kb21fcmVhZCBzaWduLWZpbGUgdXByb2JlX211bHRpCiAKICMgb3ZlcnJpZGUgbGliLm1rJiMzOTtzIGRlZmF1bHQgcnVsZXMKIE9WRVJSSURFX1RBUkdFVFMgOj0gMQpAQCAtMTcxLDcgJiM0MzsxMDQsNyBAQCBlbmRlZgogaW5jbHVkZSAuLi9saWIubWsKIAogTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyA6PSBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHMKLUNIRUNLX0ZFQVQgOj0gJChmaWx0ZXItb3V0ICQoTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyksJChvciAkKE1BS0VDTURHT0FMUyksICYjMzQ7bm9uZSYjMzQ7KSkKJiM0MztDSEVDS19GRUFUIDo9ICQoZmlsdGVyLW91dCAkKE5PTl9DSEVDS19GRUFUX1RBUkdFVFMpLCQob3IgJChNQUtFQ01ER09BTFMpLGFsbCkpCiBpZm5lcSAoJChDSEVDS19GRUFUKSwpCiBGRUFUVVJFX1VTRVIgOj0gLnNlbGZ0ZXN0cwogRkVBVFVSRV9URVNUUyA6PSBsbHZtCkBAIC0xODgsNiAmIzQzOzEyMSw4IEBAIG92ZXJyaWRlIE9VVFBVVCA6PSAkKHBhdHN1YnN0ICUvLCUsJChPVVRQVVQpKQogZW5kaWYKIGVuZGlmCiAKJiM0MztpbmNsdWRlIE1ha2VmaWxlLmJ1aWxkdmFycwomIzQzOwogaWZuZXEgKCQoU0tJUF9MTFZNKSwxKQogaWZlcSAoJChmZWF0dXJlLWxsdm0pLDEpCiAgIExMVk1fQ0ZMQUdTICAmIzQzOz0gLURIQVZFX0xMVk1fU1VQUE9SVApAQCAtMjEzLDM2ICYjNDM7MTQ4LDExIEBAIGlmZXEgKCQoZmVhdHVyZS1sbHZtKSwxKQogZW5kaWYKIGVuZGlmCiAKLVNDUkFUQ0hfRElSIDo9ICQoT1VUUFVUKS90b29scwotQlVJTERfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2J1aWxkCi1JTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlCi1CUEZPQkogOj0gJChCVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYQotaWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKQotSE9TVF9CVUlMRF9ESVIJCTo9ICQoQlVJTERfRElSKS9ob3N0Ci1IT1NUX1NDUkFUQ0hfRElSCTo9ICQoT1VUUFVUKS9ob3N0LXRvb2xzCi1IT1NUX0lOQ0xVREVfRElSCTo9ICQoSE9TVF9TQ1JBVENIX0RJUikvaW5jbHVkZQotZWxzZQotSE9TVF9CVUlMRF9ESVIJCTo9ICQoQlVJTERfRElSKQotSE9TVF9TQ1JBVENIX0RJUgk6PSAkKFNDUkFUQ0hfRElSKQotSE9TVF9JTkNMVURFX0RJUgk6PSAkKElOQ0xVREVfRElSKQotZW5kaWYKLUhPU1RfQlBGT0JKIDo9ICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYQotUkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHMKLVZNTElOVVhfQlRGX1BBVEhTID89ICQoaWYgJChPKSwkKE8pL3ZtbGludXgpCQkJCVwKLQkJICAgICAkKGlmICQoS0JVSUxEX09VVFBVVCksJChLQlVJTERfT1VUUFVUKS92bWxpbnV4KQlcCi0JCSAgICAgLi4vLi4vLi4vLi4vdm1saW51eAkJCQlcCi0JCSAgICAgL3N5cy9rZXJuZWwvYnRmL3ZtbGludXgJCQkJXAotCQkgICAgIC9ib290L3ZtbGludXgtJChzaGVsbCB1bmFtZSAtcikKLVZNTElOVVhfQlRGID89ICQoYWJzcGF0aCAkKGZpcnN0d29yZCAkKHdpbGRjYXJkICQoVk1MSU5VWF9CVEZfUEFUSFMpKSkpCi1pZmVxICgkKFZNTElOVVhfQlRGKSwpCi0kKGVycm9yIENhbm5vdCBmaW5kIGEgdm1saW51eCBmb3IgVk1MSU5VWF9CVEYgYXQgYW55IG9mICYjMzQ7JChWTUxJTlVYX0JURl9QQVRIUykmIzM0OykKLWVuZGlmCi0KICMgRGVmaW5lIHNpbXBsZSBhbmQgc2hvcnQgYG1ha2UgdGVzdF9wcm9nc2AsIGBtYWtlIHRlc3RfbWFwc2AsIGV0YyB0YXJnZXRzCiAjIHRvIGJ1aWxkIGluZGl2aWR1YWwgdGVzdHMuCiAjIE5PVEU6IFNlbWljb2xvbiBhdCB0aGUgZW5kIGlzIGNyaXRpY2FsIHRvIG92ZXJyaWRlIGxpYi5tayYjMzk7cyBkZWZhdWx0IHN0YXRpYwogIyBydWxlIGZvciBiaW5hcmllcy4KLSQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EUykJCQkJXAomIzQzOyQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EX1RBUkdFVFMpCQkJCVwKIAkgJChURVNUX0dFTl9QUk9HU19FWFRFTkRFRCkpOiAlOiAkKE9VVFBVVCkvJSA7CiAKICMgc29ydCByZW1vdmVzIGxpYmJwZiBkdXBsaWNhdGVzIHdoZW4gbm90IGNyb3NzLWJ1aWxkaW5nCkBAIC0yNTYsMTEgJiM0MzsxNjYsMTQgQEAgJChNQUtFX0RJUlMpOgogCiAkKE9VVFBVVCkvJS5vOiAlLmMKIAkkKGNhbGwgbXNnLENDLCwkQCkKLQkkKFEpJChDQykgJChDRkxBR1MpIC1jICQoZmlsdGVyICUuYywkXikgJChMRExJQlMpIC1vICRACiYjNDM7CSQoUSkkKENDKSAkKENGTEFHUykgLWMgJChmaWx0ZXIgJS5jLCReKSAtbyAkQAogCiYjNDM7IyBIZWFkZXJzIG1heSBhcHBlYXIgYW1vbmcgdGhlIHByZXJlcXVpc2l0ZXMgZm9yIGRlcGVuZGVuY3kgdHJhY2tpbmc7CiYjNDM7IyB0aGV5IG11c3Qgbm90IHJlYWNoIHRoZSBjbGFuZy9nY2MgY29tbWFuZCBsaW5lIChjbGFuZyB0cmVhdHMgYSBiYXJlIC5oCiYjNDM7IyBhcmd1bWVudCBhcyBhIHByZWNvbXBpbGVkLWhlYWRlciBqb2IgYW5kIHJlZnVzZXMgLW8pLgogJChPVVRQVVQpLyU6JS5jCiAJJChjYWxsIG1zZyxCSU5BUlksLCRAKQotCSQoUSkkKExJTksuYykgJF4gJChMRExJQlMpIC1vICRACiYjNDM7CSQoUSkkKExJTksuYykgJChmaWx0ZXItb3V0ICUuaCwkXikgJChMRExJQlMpIC1vICRACiAKICMgTExWTSYjMzk7cyBsZC5sbGQgZG9lc24mIzM5O3Qgc3VwcG9ydCBhbGwgdGhlIGFyY2hpdGVjdHVyZXMsIHNvIHVzZSBpdCBvbmx5IG9uIHg4NgogaWZlcSAoJChTUkNBUkNIKSwkKGZpbHRlciAkKFNSQ0FSQ0gpLHg4NiByaXNjdikpCkBAIC0yOTcsNiAmIzQzOzIxMCwxMyBAQCAkKE9VVFBVVCkvc2lnbi1maWxlOiAuLi8uLi8uLi8uLi9zY3JpcHRzL3NpZ24tZmlsZS5jCiAJCSAgJCZsdDsgLW8gJEAgXAogCQkgICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGliY3J5cHRvIDImZ3Q7IC9kZXYvbnVsbCB8fCBlY2hvIC1sY3J5cHRvKQogCiYjNDM7IyBMaW5raW5nIHVwcm9iZV9tdWx0aSBjYW4gZmFpbCBkdWUgdG8gcmVsb2NhdGlvbiBvdmVyZmxvd3Mgb24gbWlwcy4KJiM0MzskKE9VVFBVVCkvdXByb2JlX211bHRpOiBDRkxBR1MgJiM0Mzs9ICQoaWYgJChmaWx0ZXIgbWlwcywgJChBUkNIKSksLW14Z290KQomIzQzOyQoT1VUUFVUKS91cHJvYmVfbXVsdGk6IHVwcm9iZV9tdWx0aS5jIHVwcm9iZV9tdWx0aS5sZAomIzQzOwkkKGNhbGwgbXNnLEJJTkFSWSwsJEApCiYjNDM7CSQoUSkkKENDKSAkKENGTEFHUykgLVdsLC1ULHVwcm9iZV9tdWx0aS5sZCAtTzAgJChMREZMQUdTKSAJXAomIzQzOwkJJChmaWx0ZXItb3V0ICUubGQsJF4pICQoTERMSUJTKSAtbyAkQAomIzQzOwogIyBUaGlzIHNob3VsZCByZWFsbHkgYmUgYSBncm91cGVkIHRhcmdldCwgYnV0IG1ha2UgdmVyc2lvbnMgYmVmb3JlIDQuMyBkb24mIzM5O3QKICMgc3VwcG9ydCB0aGF0IGZvciByZWd1bGFyIHJ1bGVzLiBIb3dldmVyLCBwYXR0ZXJuIG1hdGNoaW5nIHJ1bGVzIGFyZSBpbXBsaWNpdGx5CiAjIHRyZWF0ZWQgYXMgZ3JvdXBlZCBldmVuIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgbWFrZSwgc28gYXMgYSB3b3JrYXJvdW5kLCB0aGUKQEAgLTMxMyw0MCAmIzQzOzIzMywxOCBAQCAkKFRFU1RfS01PRF9UQVJHRVRTKTogJChhZGRwcmVmaXggdGVzdF9rbW9kcy8sJChURVNUX0tNT0RTKSkKIAkkKGNhbGwgbXNnLE1PRCwsJEApCiAJJChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbIC1mIHRlc3Rfa21vZHMvJChARikgXTsgdGhlbiApY3AgdGVzdF9rbW9kcy8kKEBGKSAkQCQoaWYgJChQRVJNSVNTSVZFKSw7IGZpKQogCi0KLURFRkFVTFRfQlBGVE9PTCA6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbAotaWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKQotQ1JPU1NfQlBGVE9PTCA6PSAkKFNDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2wKLVRSVU5ORVJfQlBGVE9PTCA6PSAkKENST1NTX0JQRlRPT0wpCi1VU0VfQk9PVFNUUkFQIDo9ICYjMzQ7JiMzNDsKLWVsc2UKLVRSVU5ORVJfQlBGVE9PTCA6PSAkKERFRkFVTFRfQlBGVE9PTCkKLVVTRV9CT09UU1RSQVAgOj0gJiMzNDtib290c3RyYXAvJiMzNDsKLWVuZGlmCi0KIFRFU1RfR0VOX1BST0dTX0VYVEVOREVEICYjNDM7PSAkKFRSVU5ORVJfQlBGVE9PTCkKIAogJChURVNUX0dFTl9QUk9HUykgJChURVNUX0dFTl9QUk9HU19FWFRFTkRFRCk6ICQoQlBGT0JKKQogCi1URVNUSU5HX0hFTFBFUlMJOj0gJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vCi1DR1JPVVBfSEVMUEVSUwk6PSAkKE9VVFBVVCkvY2dyb3VwX2hlbHBlcnMubwotVU5QUklWX0hFTFBFUlMgIDo9ICQoT1VUUFVUKS91bnByaXZfaGVscGVycy5vCi1UUkFDRV9IRUxQRVJTCTo9ICQoT1VUUFVUKS90cmFjZV9oZWxwZXJzLm8KLUpTT05fV1JJVEVSCQk6PSAkKE9VVFBVVCkvanNvbl93cml0ZXIubwotQ0FQX0hFTFBFUlMJOj0gJChPVVRQVVQpL2NhcF9oZWxwZXJzLm8KLU5FVFdPUktfSEVMUEVSUyA6PSAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8KLQotJChPVVRQVVQpL3Rlc3Rfc29ja21hcDogJChDR1JPVVBfSEVMUEVSUykgJChURVNUSU5HX0hFTFBFUlMpCi0kKE9VVFBVVCkvdGVzdF90Y3Bub3RpZnlfdXNlcjogJChDR1JPVVBfSEVMUEVSUykgJChURVNUSU5HX0hFTFBFUlMpICQoVFJBQ0VfSEVMUEVSUykKLSQoT1VUUFVUKS90ZXN0X3NvY2tfZmllbGRzOiAkKENHUk9VUF9IRUxQRVJTKSAkKFRFU1RJTkdfSEVMUEVSUykKLSQoT1VUUFVUKS90ZXN0X3RhZzogJChURVNUSU5HX0hFTFBFUlMpCi0kKE9VVFBVVCkvdGVzdF9saXJjX21vZGUyX3VzZXI6ICQoVEVTVElOR19IRUxQRVJTKQotJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQ6ICQoVEVTVElOR19IRUxQRVJTKQotJChPVVRQVVQpL3Rlc3RfbWFwczogJChURVNUSU5HX0hFTFBFUlMpCi0kKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogJChURVNUSU5HX0hFTFBFUlMpICQoQ0FQX0hFTFBFUlMpICQoVU5QUklWX0hFTFBFUlMpCi0kKE9VVFBVVCkveHNrLm86ICQoQlBGT0JKKQotCi1CUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKQomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7IyBUb29sIHN1Yi1idWlsZHM6IGJwZnRvb2wgYW5kIGxpYmJwZiAoaG9zdCBhbmQsIHdoZW4gY3Jvc3MtY29tcGlsaW5nLAomIzQzOyMgdGFyZ2V0IHZhcmlhbnRzKSBhbmQgcmVzb2x2ZV9idGZpZHMuCiYjNDM7IwomIzQzOyMgTm90ZSB0aGUgZGVsaWJlcmF0ZSBhc3ltbWV0cnk6IHRoZSBob3N0IGxpYmJwZiBidWlsZHMgd2l0aG91dAomIzQzOyMgc2FuaXRpemVycyBhbmQgd2l0aCB0aGUgaG9zdCB0b29sY2hhaW4uCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsKICQoREVGQVVMVF9CUEZUT09MKTogJCh3aWxkY2FyZCAkKEJQRlRPT0xESVIpLyouW2NoXSAkKEJQRlRPT0xESVIpL01ha2VmaWxlKSAgICBcCiAJCSAgICAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL2JwZnRvb2wKIAkkKFEpJChNQUtFKSAkKHN1Ym1ha2VfZXh0cmFzKSAgLUMgJChCUEZUT09MRElSKQkJCSAgICAgICBcCkBAIC0zNzcsMjAgJiM0MzsyNzUsNiBAQCAkKENST1NTX0JQRlRPT0wpOiAkKHdpbGRjYXJkICQoQlBGVE9PTERJUikvKi5bY2hdICQoQlBGVE9PTERJUikvTWFrZWZpbGUpCVwKIAkJICAgIHByZWZpeD0gREVTVERJUj0kKFNDUkFUQ0hfRElSKS8gaW5zdGFsbC1iaW4KIGVuZGlmCiAKLWlmbmVxICgkKFNLSVBfRE9DUyksMSkKLWFsbDogZG9jcwotZW5kaWYKLQotZG9jczoKLQkkKFEpUlNUMk1BTl9PUFRTPSYjMzQ7LS1leGl0LXN0YXR1cz0xJiMzNDsgJChNQUtFKSAkKHN1Ym1ha2VfZXh0cmFzKQlcCi0JICAgICAgICAgICAgLWYgTWFrZWZpbGUuZG9jcwkJCQkJXAotCSAgICAgICAgICAgIHByZWZpeD0gT1VUUFVUPSQoT1VUUFVUKS8gREVTVERJUj0kKE9VVFBVVCkvICRACi0KLWRvY3MtY2xlYW46Ci0JJChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcykJCQkJCVwKLQkgICAgICAgICAgICAtZiBNYWtlZmlsZS5kb2NzCQkJCQlcCi0JICAgICAgICAgICAgcHJlZml4PSBPVVRQVVQ9JChPVVRQVVQpLyBERVNURElSPSQoT1VUUFVUKS8gJEAKLQogJChCUEZPQkopOiAkKHdpbGRjYXJkICQoQlBGRElSKS8qLltjaF0gJChCUEZESVIpL01ha2VmaWxlKQkJICAgICAgIFwKIAkgICAkKEFQSURJUikvbGludXgvYnBmLmgJCQkJCSAgICAgICBcCiAJICAgfCAkKEJVSUxEX0RJUikvbGliYnBmCkBAIC00MTIsMTkgJiM0MzsyOTYsNiBAQCAkKEhPU1RfQlBGT0JKKTogJCh3aWxkY2FyZCAkKEJQRkRJUikvKi5bY2hdICQoQlBGRElSKS9NYWtlZmlsZSkJCSAgICAgICBcCiAJCSAgICBERVNURElSPSQoSE9TVF9TQ1JBVENIX0RJUikvIHByZWZpeD0gYWxsIGluc3RhbGxfaGVhZGVycwogZW5kaWYKIAotIyB2bWxpbnV4LmggaXMgZmlyc3QgZHVtcGVkIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kIHRoZW4gY29tcGFyZWQgdG8KLSMgdGhlIHByZXZpb3VzIHZlcnNpb24uIFRoaXMgaGVscHMgdG8gYXZvaWQgdW5uZWNlc3NhcnkgcmUtYnVpbGRzIG9mCi0jICQoVFJVTk5FUl9CUEZfT0JKUykKLSQoSU5DTFVERV9ESVIpL3ZtbGludXguaDogJChWTUxJTlVYX0JURikgJChCUEZUT09MKSB8ICQoSU5DTFVERV9ESVIpCi1pZmVxICgkKFZNTElOVVhfSCksKQotCSQoY2FsbCBtc2csR0VOLCwkQCkKLQkkKFEpJChCUEZUT09MKSBidGYgZHVtcCBmaWxlICQoVk1MSU5VWF9CVEYpIGZvcm1hdCBjICZndDsgJChJTkNMVURFX0RJUikvLnZtbGludXguaC50bXAKLQkkKFEpY21wIC1zICQoSU5DTFVERV9ESVIpLy52bWxpbnV4LmgudG1wICRAIHx8IG12ICQoSU5DTFVERV9ESVIpLy52bWxpbnV4LmgudG1wICRACi1lbHNlCi0JJChjYWxsIG1zZyxDUCwsJEApCi0JJChRKWNwICYjMzQ7JChWTUxJTlVYX0gpJiMzNDsgJEAKLWVuZGlmCi0KICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzCVwKIAkJICAgICAgICQoVE9PTFNESVIpL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMJXAogCQkgICAgICAgJChUT09MU0RJUikvbGliL3JidHJlZS5jCQkJXApAQCAtNDM5LDM3NCAmIzQzOzMxMCwzOCBAQCAkKFJFU09MVkVfQlRGSURTKTogJChIT1NUX0JQRk9CSikgfCAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0ZmlkcwlcCiAJCUhPU1RQS0dfQ09ORklHPSYjMzk7JChQS0dfQ09ORklHKSYjMzk7IFwKIAkJT1VUUFVUPSQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzLyBCUEZPQko9JChIT1NUX0JQRk9CSikKIAotIyBHZXQgQ2xhbmcmIzM5O3MgZGVmYXVsdCBpbmNsdWRlcyBvbiB0aGlzIHN5c3RlbSwgYXMgb3Bwb3NlZCB0byB0aG9zZSBzZWVuIGJ5Ci0jICYjMzk7LS10YXJnZXQ9YnBmJiMzOTsuIFRoaXMgZml4ZXMgJiMzNDttaXNzaW5nJiMzNDsgZmlsZXMgb24gc29tZSBhcmNoaXRlY3R1cmVzL2Rpc3Ryb3MsCi0jIHN1Y2ggYXMgYXNtL2J5dGVvcmRlci5oLCBhc20vc29ja2V0LmgsIGFzbS9zb2NraW9zLmgsIHN5cy9jZGVmcy5oIGV0Yy4KLSMKLSMgVXNlICYjMzk7LWlkaXJhZnRlciYjMzk7OiBEb24mIzM5O3QgaW50ZXJmZXJlIHdpdGggaW5jbHVkZSBtZWNoYW5pY3MgZXhjZXB0IHdoZXJlIHRoZQotIyBidWlsZCB3b3VsZCBoYXZlIGZhaWxlZCBhbnl3YXlzLgotZGVmaW5lIGdldF9zeXNfaW5jbHVkZXMKLSQoc2hlbGwgJCgxKSAkKDIpIC12IC1FIC0gJmx0Oy9kZXYvbnVsbCAyJmd0OyZhbXA7MSBcCi0JfCBzZWQgLW4gJiMzOTsvJmx0Oy4uLiZndDsgc2VhcmNoIHN0YXJ0cyBoZXJlOi8sL0VuZCBvZiBzZWFyY2ggbGlzdC4veyBzfCBcKC8uKlwpfC1pZGlyYWZ0ZXIgXDF8cCB9JiMzOTspIFwKLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtICZsdDsvZGV2L251bGwgfCBncmVwICYjMzk7X19yaXNjdl94bGVuICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZigmIzM0Oy1EX19yaXNjdl94bGVuPSVkIC1EX19CSVRTX1BFUl9MT05HPSVkJiMzNDssICQkMywgJCQzKX0mIzM5OykgXAotJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX2xvb25nYXJjaF9ncmxlbiAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoJiMzNDstRF9fQklUU19QRVJfTE9ORz0lZCYjMzQ7LCAkJDMpfSYjMzk7KSBcCi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSAmbHQ7L2Rldi9udWxsIHwgZ3JlcCAtRSAmIzM5O01JUFMoRUx8RUIpfF9NSVBTX1NaKFBUUnxMT05HKSB8X01JUFNfU0lNIHxfQUJJKE8zMnxOMzJ8NjQpICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZigmIzM0Oy1EJXM9JXMgJiMzNDssICQkMiwgJCQzKX0mIzM5OykKLWVuZGVmCi0KLSMgRGV0ZXJtaW5lIHRhcmdldCBlbmRpYW5uZXNzLgotSVNfTElUVExFX0VORElBTiA6PSAkKHNoZWxsICQoQ0MpIC1kTSAtRSAtICZsdDsvZGV2L251bGwgfCBcCi0JCQlncmVwICYjMzk7ZGVmaW5lIF9fQllURV9PUkRFUl9fIF9fT1JERVJfTElUVExFX0VORElBTl9fJiMzOTspCi1NRU5ESUFOOj0kKGlmICQoSVNfTElUVExFX0VORElBTiksLW1saXR0bGUtZW5kaWFuLC1tYmlnLWVuZGlhbikKLUJQRl9UQVJHRVRfRU5ESUFOOj0kKGlmICQoSVNfTElUVExFX0VORElBTiksLS10YXJnZXQ9YnBmZWwsLS10YXJnZXQ9YnBmZWIpCi0KLWlmbmVxICgkKENST1NTX0NPTVBJTEUpLCkKLUNMQU5HX1RBUkdFVF9BUkNIID0gLS10YXJnZXQ9JChub3RkaXIgJChDUk9TU19DT01QSUxFOiUtPSUpKQotZW5kaWYKLQotQ0xBTkdfU1lTX0lOQ0xVREVTID0gJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsJChDTEFORyksJChDTEFOR19UQVJHRVRfQVJDSCkpCi1CUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pCVwKLQkgICAgIC1JJChJTkNMVURFX0RJUikgLUkkKENVUkRJUikgLUkkKEFQSURJUikJCQlcCi0JICAgICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlCQkJCVwKLQkgICAgIC1JJChhYnNwYXRoICQoT1VUUFVUKS8uLi91c3IvaW5jbHVkZSkJCQlcCi0JICAgICAtc3RkPWdudTExCQkgCQkJCQlcCi0JICAgICAtZm5vLXN0cmljdC1hbGlhc2luZyAJCQkJCVwKLQkgICAgIC1Xbm8tbWljcm9zb2Z0LWFub24tdGFnCQkJCQlcCi0JICAgICAtZm1zLWV4dGVuc2lvbnMJCQkJCQlcCi0JICAgICAtV25vLWNvbXBhcmUtZGlzdGluY3QtcG9pbnRlci10eXBlcwkJCVwKLQkgICAgIC1Xbm8taW5pdGlhbGl6ZXItb3ZlcnJpZGVzCQkJCQlcCi0JICAgICAjCi0jIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZQotCi1DTEFOR19DRkxBR1MgPSAkKENMQU5HX1NZU19JTkNMVURFUykKLQotJChPVVRQVVQpL3Rlc3RfbDRsYl9ub2lubGluZS5vOiBCUEZfQ0ZMQUdTICYjNDM7PSAtZm5vLWlubGluZQotJChPVVRQVVQpL3Rlc3RfeGRwX25vaW5saW5lLm86IEJQRl9DRkxBR1MgJiM0Mzs9IC1mbm8taW5saW5lCi0KLSQoT1VUUFVUKS9mbG93X2Rpc3NlY3Rvcl9sb2FkLm86IGZsb3dfZGlzc2VjdG9yX2xvYWQuaAotJChPVVRQVVQpL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLm86IGNncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmgKLQotIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIENsYW5nCi0jICQxIC0gaW5wdXQgLmMgZmlsZQotIyAkMiAtIG91dHB1dCAubyBmaWxlCi0jICQzIC0gQ0ZMQUdTCi0jICQ0IC0gYmluYXJ5IG5hbWUKLWRlZmluZSBDTEFOR19CUEZfQlVJTERfUlVMRQotCSQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpCi0JJChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12MyAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXAotCQkoJChSTSkgJDI7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1CUEYmIzM5OyAmIzM5OyQobm90ZGlyICQyKSYjMzk7IDEmZ3Q7JmFtcDsyKSkKLWVuZGVmCi0jIFNpbWlsYXIgdG8gQ0xBTkdfQlBGX0JVSUxEX1JVTEUsIGJ1dCB3aXRoIGRpc2FibGVkIGFsdTMyCi1kZWZpbmUgQ0xBTkdfTk9BTFUzMl9CUEZfQlVJTERfUlVMRQotCSQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpCi0JJChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12MiAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXAotCQkoJChSTSkgJDI7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1CUEYmIzM5OyAmIzM5OyQobm90ZGlyICQyKSYjMzk7IDEmZ3Q7JmFtcDsyKSkKLWVuZGVmCi0jIFNpbWlsYXIgdG8gQ0xBTkdfQlBGX0JVSUxEX1JVTEUsIGJ1dCB3aXRoIGNwdS12NAotZGVmaW5lIENMQU5HX0NQVVY0X0JQRl9CVUlMRF9SVUxFCi0JJChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMikKLQkkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXY0IC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcCi0JCSgkKFJNKSAkMjsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLUJQRiYjMzk7ICYjMzk7JChub3RkaXIgJDIpJiMzOTsgMSZndDsmYW1wOzIpKQotZW5kZWYKLSMgQnVpbGQgQlBGIG9iamVjdCB1c2luZyBHQ0MKLWRlZmluZSBHQ0NfQlBGX0JVSUxEX1JVTEUKLQkkKGNhbGwgbXNnLEdDQy1CUEYsJDQsJDIpCi0JJChRKSQoQlBGX0dDQykgJDMgLURCUEZfTk9fUFJFU0VSVkVfQUNDRVNTX0lOREVYIC1Xbm8tYXR0cmlidXRlcyAtTzIgLWMgJDEgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFwKLQkJKCQoUk0pICQyOyBwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtQlBGJiMzOTsgJiMzOTskKG5vdGRpciAkMikmIzM5OyAxJmd0OyZhbXA7MikpCi1lbmRlZgotCi1TS0VMX0JMQUNLTElTVCA6PSBidGZfXyUgdGVzdF9waW5uaW5nX2ludmFsaWQuYyB0ZXN0X3NrX2Fzc2lnbi5jCi0KLUxJTktFRF9TS0VMUyA6PSB0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oIGxpbmtlZF9mdW5jcy5za2VsLmgJCVwKLQkJbGlua2VkX3ZhcnMuc2tlbC5oIGxpbmtlZF9tYXBzLnNrZWwuaCAJCQlcCi0JCXRlc3Rfc3Vic2tlbGV0b24uc2tlbC5oIHRlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaAlcCi0JCXRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmgJCQlcCi0JCXRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaAkJCQlcCi0JCXRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaAkJCQlcCi0JCXRyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmgKLQotTFNLRUxTIDo9IGZleGl0X3NsZWVwLmMgdHJhY2VfcHJpbnRrLmMgdHJhY2VfdnByaW50ay5jIG1hcF9wdHJfa2Vybi5jIAlcCi0JY29yZV9rZXJuLmMgY29yZV9rZXJuX292ZXJmbG93LmMgdGVzdF9yaW5nYnVmLmMJCQlcCi0JdGVzdF9yaW5nYnVmX24uYyB0ZXN0X3JpbmdidWZfbWFwX2tleS5jIHRlc3RfcmluZ2J1Zl93cml0ZS5jICAgIFwKLQl0ZXN0X3JpbmdidWZfb3ZlcndyaXRlLmMKLQotTFNLRUxTX1NJR05FRCA6PSBmZW50cnlfdGVzdC5jIGZleGl0X3Rlc3QuYyBhdG9taWNzLmMKLQotIyBHZW5lcmF0ZSBib3RoIGxpZ2h0IHNrZWxldG9uIGFuZCBsaWJicGYgc2tlbGV0b24gZm9yIHRoZXNlCi1MU0tFTFNfRVhUUkEgOj0gdGVzdF9rc3ltc19tb2R1bGUuYyB0ZXN0X2tzeW1zX3dlYWsuYyBrZnVuY19jYWxsX3Rlc3QuYyBcCi0Ja2Z1bmNfY2FsbF90ZXN0X3N1YnByb2cuYwotU0tFTF9CTEFDS0xJU1QgJiM0Mzs9ICQkKExTS0VMUykgJCQoTFNLRUxTX1NJR05FRCkKLQotdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3RhdGljX2xpbmtlZDEuYnBmLm8gdGVzdF9zdGF0aWNfbGlua2VkMi5icGYubwotbGlua2VkX2Z1bmNzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9mdW5jczEuYnBmLm8gbGlua2VkX2Z1bmNzMi5icGYubwotbGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYubwotbGlua2VkX21hcHMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX21hcHMxLmJwZi5vIGxpbmtlZF9tYXBzMi5icGYubwotIyBJbiB0aGUgc3Vic2tlbGV0b24gY2FzZSwgd2Ugd2FudCB0aGUgdGVzdF9zdWJza2VsZXRvbl9saWIuc3Vic2tlbC5oIGZpbGUKLSMgYnV0IHRoYXQmIzM5O3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi4KLXRlc3Rfc3Vic2tlbGV0b24uc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b24uYnBmLm8KLXRlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubwotdGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vCi14c2tfeGRwX3Byb2dzLnNrZWwuaC1kZXBzIDo9IHhza194ZHBfcHJvZ3MuYnBmLm8KLXhkcF9od19tZXRhZGF0YS5za2VsLmgtZGVwcyA6PSB4ZHBfaHdfbWV0YWRhdGEuYnBmLm8KLXhkcF9mZWF0dXJlcy5za2VsLmgtZGVwcyA6PSB4ZHBfZmVhdHVyZXMuYnBmLm8KLXRyYWNpbmdfbXVsdGkuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYubwotdHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2hfbW9kdWxlLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm8KLXRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vCi10cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9zZXNzaW9uX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vCi0KLUxJTktFRF9CUEZfT0JKUyA6PSAkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKQotTElOS0VEX0JQRl9TUkNTIDo9ICQocGF0c3Vic3QgJS5icGYubywlLmMsJChMSU5LRURfQlBGX09CSlMpKQotCi1IRUFERVJTX0ZPUl9CUEZfT0JKUyA6PSAkKHdpbGRjYXJkICQoQlBGRElSKS8qLmJwZi5oKQkJXAotCQkJJCh3aWxkY2FyZCAkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZS8qLltjaF0pCVwKLQkJCSQoYWRkcHJlZml4ICQoQlBGRElSKS8sCWJwZl9jb3JlX3JlYWQuaAlcCi0JCQkgICAgICAgICAgICAgICAgICAgICAgICBicGZfZW5kaWFuLmgJXAotCQkJCQkJYnBmX2hlbHBlcnMuaAlcCi0JCQkgICAgICAgICAgICAgICAgICAgICAgICBicGZfdHJhY2luZy5oKQotCi0jIFNldCB1cCBleHRyYSBUUlVOTkVSX1hYWCAmIzM0O3RlbXBvcmFyeSYjMzQ7IHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQgKHJlbGllcyBvbgotIyAkZXZhbCgpKSBhbmQgcGFzcyBjb250cm9sIHRvIERFRklORV9URVNUX1JVTk5FUl9SVUxFUy4KLSMgUGFyYW1ldGVyczoKLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKQotIyAkMiAtIHRlc3QgcnVubmVyIGV4dHJhICYjMzQ7Zmxhdm9yJiMzNDsgKGUuZy4sIG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYywgZXRjKQotZGVmaW5lIERFRklORV9URVNUX1JVTk5FUgotCi1MU0tFTF9TSUdOIDo9IC1TIC1rICQoUFJJVkFURV9LRVkpIC1pICQoVkVSSUZJQ0FUSU9OX0NFUlQpCi1UUlVOTkVSX09VVFBVVCA6PSAkKE9VVFBVVCkkKGlmICQyLC8pJDIKLVRSVU5ORVJfQklOQVJZIDo9ICQxJChpZiAkMiwtKSQyCi1UUlVOTkVSX1RFU1RfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5vLAlcCi0JCQkJICQkKG5vdGRpciAkJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVFNfRElSKS8qLmMpKSkKLVRSVU5ORVJfRVhUUkFfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubywJCVwKLQkJCQkgJCQoZmlsdGVyICUuYywkKFRSVU5ORVJfRVhUUkFfU09VUkNFUykpKQotVFJVTk5FUl9MSUJfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubywJCVwKLQkJCQkgJCQoZmlsdGVyICUuYywkKFRSVU5ORVJfTElCX1NPVVJDRVMpKSkKLVRSVU5ORVJfRVhUUkFfSERSUyA6PSAkJChmaWx0ZXIgJS5oLCQoVFJVTk5FUl9FWFRSQV9TT1VSQ0VTKSkKLVRSVU5ORVJfVEVTVFNfSERSIDo9ICQoVFJVTk5FUl9URVNUU19ESVIpL3Rlc3RzLmgKLVRSVU5ORVJfQlBGX1NSQ1MgOj0gJCQobm90ZGlyICQkKHdpbGRjYXJkICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8qLmMpKQotVFJVTk5FUl9CUEZfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUuYnBmLm8sICQkKFRSVU5ORVJfQlBGX1NSQ1MpKQotVFJVTk5FUl9CUEZfU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLnNrZWwuaCwJXAotCQkJCSAkJChmaWx0ZXItb3V0ICQoU0tFTF9CTEFDS0xJU1QpICQoTElOS0VEX0JQRl9TUkNTKSxcCi0JCQkJCSAgICAgICAkJChUUlVOTkVSX0JQRl9TUkNTKSkpCi1UUlVOTkVSX0JQRl9MU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmxza2VsLmgsICQkKExTS0VMUykgJCQoTFNLRUxTX0VYVFJBKSkKLVRSVU5ORVJfQlBGX1NLRUxTX0xJTktFRCA6PSAkJChhZGRwcmVmaXggJCQoVFJVTk5FUl9PVVRQVVQpLywkKExJTktFRF9TS0VMUykpCi1UUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5sc2tlbC5oLCAkJChMU0tFTFNfU0lHTkVEKSkKLVRFU1RfR0VOX0ZJTEVTICYjNDM7PSAkJChUUlVOTkVSX0JQRl9PQkpTKQotCi0jIEV2YWx1YXRlIHJ1bGVzIG5vdyB3aXRoIGV4dHJhIFRSVU5ORVJfWFhYIHZhcmlhYmxlcyBhYm92ZSBhbHJlYWR5IGRlZmluZWQKLSQkKGV2YWwgJCQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMsJDEsJDIpKQotCi1lbmRlZgotCi0jIFVzaW5nIFRSVU5ORVJfWFhYIHZhcmlhYmxlcywgcHJvdmlkZWQgYnkgY2FsbGVycyBvZiBERUZJTkVfVEVTVF9SVU5ORVIgYW5kCi0jIHNldCB1cCBieSBERUZJTkVfVEVTVF9SVU5ORVIgaXRzZWxmLCBjcmVhdGUgdGVzdCBydW5uZXIgYnVpbGQgcnVsZXMgd2l0aDoKLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKQotIyAkMiAtIHRlc3QgcnVubmVyIGV4dHJhICYjMzQ7Zmxhdm9yJiMzNDsgKGUuZy4sIG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYywgZXRjKQotZGVmaW5lIERFRklORV9URVNUX1JVTk5FUl9SVUxFUwotCi0jIFBlcm1pc3NpdmUgYnVpbGQgYmVoYXZpb3VyIChza2lwLW9uLWZhaWx1cmUgY29tcGlsZSwgcGFydGlhbC1saW5rKSBvbmx5Ci0jIGFwcGxpZXMgdG8gdGVzdF9wcm9ncyBhbmQgaXRzIGZsYXZvcnM7IHJ1bm5lcnMgdGhhdCB1c2Ugc3Ryb25nIGNyb3NzLW9iamVjdAotIyByZWZlcmVuY2VzIChlLmcuIHRlc3RfbWFwcykga2VlcCBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBwZXJtaXNzaXZlLgotIyBUaGUgY2hlY2sgaXMgaW5saW5lZCBwZXItcnVubmVyIHNvICQxIGlzIHN1YnN0aXR1dGVkIGF0ICQoY2FsbCkgdGltZSBhbmQKLSMgdGhlIHJlc3VsdCBpcyBiYWtlZCBpbnRvIGVhY2ggcnVsZSYjMzk7cyByZWNpcGUuCi0KLWlmZXEgKCQoJChUUlVOTkVSX09VVFBVVCktZGlyKSwpCi0kKFRSVU5ORVJfT1VUUFVUKS1kaXIgOj0geQotJChUUlVOTkVSX09VVFBVVCk6Ci0JJCQoY2FsbCBtc2csTUtESVIsLCQkQCkKLQkkKFEpbWtkaXIgLXAgJCRACi1lbmRpZgotCi0jIGVuc3VyZSB3ZSBzZXQgdXAgQlBGIG9iamVjdHMgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZSBmb3IgYSBnaXZlbgotIyBpbnB1dC9vdXRwdXQgZGlyZWN0b3J5IGNvbWJpbmF0aW9uCi1pZmVxICgkKCQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKSQoaWYgJDIsLSkkMi1icGZvYmpzKSwpCi0kKFRSVU5ORVJfQlBGX1BST0dTX0RJUikkKGlmICQyLC0pJDItYnBmb2JqcyA6PSB5Ci0kKFRSVU5ORVJfQlBGX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLmJwZi5vOgkJCQlcCi0JCSAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyUuYwkJCVwKLQkJICAgICAkKFRSVU5ORVJfQlBGX1BST0dTX0RJUikvKi5oCQkJXAotCQkgICAgICQkKElOQ0xVREVfRElSKS92bWxpbnV4LmgJCQkJXAotCQkgICAgICQoSEVBREVSU19GT1JfQlBGX09CSlMpCQkJCVwKLQkJICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpICQkKEJQRk9CSikKLQkkJChjYWxsICQoVFJVTk5FUl9CUEZfQlVJTERfUlVMRSksJCQmbHQ7LCQkQCwJCQlcCi0JCQkJCSAgJChUUlVOTkVSX0JQRl9DRkxBR1MpICAgICAgICAgXAotCQkJCQkgICQkKCQkJmx0Oy1DRkxBR1MpCQlcCi0JCQkJCSAgJCQoJCQmbHQ7LSQyLUNGTEFHUyksJChUUlVOTkVSX0JJTkFSWSkpCi0KLSQoVFJVTk5FUl9CUEZfU0tFTFMpOiAlLnNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVCkKLQkkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJCZsdDsgXTsgdGhlbgkJCVwKLQkJJCQoUk0pICQkQCAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCk7CQkJXAotCQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCQlleGl0IDA7CQkJCQkJCVwKLQlmaTspCQkJCQkJCQlcCi0JcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJCgmbHQ7Oi5vPS5saW5rZWQxLm8pICQkJmx0OyAmYW1wOyZhbXA7CQlcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJCgmbHQ7Oi5vPS5saW5rZWQyLm8pICQkKCZsdDs6Lm89LmxpbmtlZDEubykgJmFtcDsmYW1wOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJCgmbHQ7Oi5vPS5saW5rZWQzLm8pICQkKCZsdDs6Lm89LmxpbmtlZDIubykgJmFtcDsmYW1wOyBcCi0JZGlmZiAkJCgmbHQ7Oi5vPS5saW5rZWQyLm8pICQkKCZsdDs6Lm89LmxpbmtlZDMubykgJmFtcDsmYW1wOwkJXAotCSQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkJCgmbHQ7Oi5vPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKCZsdDs6LmJwZi5vPSkpICZndDsgJCRAICZhbXA7JmFtcDsgXAotCSQkKEJQRlRPT0wpIGdlbiBzdWJza2VsZXRvbiAkJCgmbHQ7Oi5vPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKCZsdDs6LmJwZi5vPSkpICZndDsgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFwKLQkJJCQoUk0pICQkQCAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCk7IFwKLQkJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQl9KSAmYW1wOyZhbXA7IFwKLQlybSAtZiAkJCgmbHQ7Oi5vPS5saW5rZWQxLm8pICQkKCZsdDs6Lm89LmxpbmtlZDIubykgJCQoJmx0Ozoubz0ubGlua2VkMy5vKQotCi0kKFRSVU5ORVJfQlBGX0xTS0VMUyk6ICUubHNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVCkKLQkkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJCZsdDsgXTsgdGhlbgkJCVwKLQkJJCQoUk0pICQkQDsJCQkJCQlcCi0JCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JCWV4aXQgMDsJCQkJCQkJXAotCWZpOykJCQkJCQkJCVwKLQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O0dFTi1TS0VMJiMzOTsgJiMzOTtbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKCZsdDs6Lm89LmxsaW5rZWQxLm8pICQkJmx0OyAmYW1wOyZhbXA7CQlcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJCgmbHQ7Oi5vPS5sbGlua2VkMi5vKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMS5vKSAmYW1wOyZhbXA7IFwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKCZsdDs6Lm89LmxsaW5rZWQzLm8pICQkKCZsdDs6Lm89LmxsaW5rZWQyLm8pICZhbXA7JmFtcDsgXAotCWRpZmYgJCQoJmx0Ozoubz0ubGxpbmtlZDIubykgJCQoJmx0Ozoubz0ubGxpbmtlZDMubykgJmFtcDsmYW1wOwkJXAotCSQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAtTCAkJCgmbHQ7Oi5vPS5sbGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJCgmbHQ7Oi5icGYubz1fbHNrZWwpKSAmZ3Q7ICQkQCAkKGlmICQoUEVSTUlTU0lWRSksfHwgeyBcCi0JCSQkKFJNKSAkJEA7IFwKLQkJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQl9KSAmYW1wOyZhbXA7IFwKLQlybSAtZiAkJCgmbHQ7Oi5vPS5sbGlua2VkMS5vKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMi5vKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMy5vKQotCi0kKFRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpCi0JJChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbICEgLWYgJCQmbHQ7IF07IHRoZW4JCQlcCi0JCSQkKFJNKSAkJEA7CQkJCQkJXAotCQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCQlleGl0IDA7CQkJCQkJCVwKLQlmaTspCQkJCQkJCQlcCi0JcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpIChzaWduZWQpXSAkJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJCgmbHQ7Oi5vPS5sbGlua2VkMS5vKSAkJCZsdDsgJmFtcDsmYW1wOwkJXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoJmx0Ozoubz0ubGxpbmtlZDIubykgJCQoJmx0Ozoubz0ubGxpbmtlZDEubykgJmFtcDsmYW1wOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJCgmbHQ7Oi5vPS5sbGlua2VkMy5vKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMi5vKSAmYW1wOyZhbXA7IFwKLQlkaWZmICQkKCZsdDs6Lm89LmxsaW5rZWQyLm8pICQkKCZsdDs6Lm89LmxsaW5rZWQzLm8pICZhbXA7JmFtcDsJCVwKLQkkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJChMU0tFTF9TSUdOKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJCgmbHQ7Oi5icGYubz1fbHNrZWwpKSAmZ3Q7ICQkQCAkKGlmICQoUEVSTUlTU0lWRSksfHwgeyBcCi0JCSQkKFJNKSAkJEA7IFwKLQkJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQl9KSAmYW1wOyZhbXA7IFwKLQlybSAtZiAkJCgmbHQ7Oi5vPS5sbGlua2VkMS5vKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMi5vKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMy5vKQotCi0kKExJTktFRF9CUEZfT0JKUyk6ICU6ICQoVFJVTk5FUl9PVVRQVVQpLyUKLQotIyAuU0VDT05ERVhQQU5TSU9OIGhlcmUgYWxsb3dzIHRvIGNvcnJlY3RseSBleHBhbmQgJS1kZXBzIHZhcmlhYmxlcyBhcyBwcmVyZXF1aXNpdGVzCi0uU0VDT05ERVhQQU5TSU9OOgotJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpOiAkKFRSVU5ORVJfT1VUUFVUKS8lOiAkJCQkKCUtZGVwcykgJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpCi0JJChRKSQoaWYgJChQRVJNSVNTSVZFKSxmb3IgZiBpbiAkJChhZGRwcmVmaXggJChUUlVOTkVSX09VVFBVVCkvLCQkKCQkKEBGKS1kZXBzKSk7IGRvIFwKLQkJaWYgWyAhIC1mICQkJCRmIF07IHRoZW4JCQkJCQlcCi0JCQkkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTsJCVwKLQkJCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JCQlleGl0IDA7CQkJCQkJCVwKLQkJZmk7CQkJCQkJCQlcCi0JZG9uZTspCQkJCQkJCQkJXAotCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7TElOSy1CUEYmIzM5OyAmIzM5O1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkKEA6LnNrZWwuaD0uYnBmLm8pKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoYWRkcHJlZml4ICQoVFJVTk5FUl9PVVRQVVQpLywkJCgkJChARiktZGVwcykpICZhbXA7JmFtcDsgXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSAmYW1wOyZhbXA7IFwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgJmFtcDsmYW1wOyBcCi0JZGlmZiAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pICZhbXA7JmFtcDsJXAotCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyAmIzM5O1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MiAmYW1wOyZhbXA7IFwKLQkkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKEA6LnNrZWwuaD0pKSAmZ3Q7ICQkQCAmYW1wOyZhbXA7IFwKLQkkJChCUEZUT09MKSBnZW4gc3Vic2tlbGV0b24gJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKEA6LnNrZWwuaD0pKSAmZ3Q7ICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSAkKGlmICQoUEVSTUlTU0lWRSksfHwgeyBcCi0JCSQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpOwkJCVwKLQkJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQl9KSAmYW1wOyZhbXA7CQkJCQkJCQkJXAotCXJtIC1mICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pCi0KLSMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdAotIyBmdWxsIHBhdGhzKSBhcmUgc3BlY2lmaWVkIGFzIHByZXJlcXVpc2l0ZXMgZm9yIGNvcnJlc3BvbmRpbmcgJS5vCi0jIGZpbGUuIHZwYXRoIGRpcmVjdGl2ZXMgYmVsb3cgaW5zdHJ1Y3QgbWFrZSB0byBzZWFyY2ggZm9yIHNrZWwgZmlsZXMKLSMgaW4gVFJVTk5FUl9PVVRQVVQsIGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50IGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeS4KLXZwYXRoICUuc2tlbC5oICQoVFJVTk5FUl9PVVRQVVQpCi12cGF0aCAlLmxza2VsLmggJChUUlVOTkVSX09VVFBVVCkKLXZwYXRoICUuc3Vic2tlbC5oICQoVFJVTk5FUl9PVVRQVVQpCi0KJiM0MztpZm5lcSAoJChTS0lQX0RPQ1MpLDEpCiYjNDM7YWxsOiBkb2NzCiBlbmRpZgogCi0jIGVuc3VyZSB3ZSBzZXQgdXAgdGVzdHMuaCBoZWFkZXIgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZQotaWZlcSAoJCgkKFRSVU5ORVJfVEVTVFNfRElSKS10ZXN0cy1oZHIpLCkKLSQoVFJVTk5FUl9URVNUU19ESVIpLXRlc3RzLWhkciA6PSB5Ci0kKFRSVU5ORVJfVEVTVFNfSERSKTogJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jCi0JJCQoY2FsbCBtc2csVEVTVC1IRFIsJChUUlVOTkVSX0JJTkFSWSksJCRAKQotCSQkKHNoZWxsIChlY2hvICYjMzk7LyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8mIzM5OzsJCQkJCVwKLQkJICBzZWQgLW4gLUUgJiMzOTtzL152b2lkIChzZXJpYWxfKT90ZXN0XyhbYS16QS1aMC05X10mIzQzOylcKCh2b2lkKT9cKS4qL0RFRklORV9URVNUKFwyKS9wJiMzOTsJXAotCQkJJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jIHwgc29ydCA7CVwKLQkJICkgJmd0OyAkJEApCi1lbmRpZgomIzQzO2RvY3M6CiYjNDM7CSQoUSlSU1QyTUFOX09QVFM9JiMzNDstLWV4aXQtc3RhdHVzPTEmIzM0OyAkKE1BS0UpICQoc3VibWFrZV9leHRyYXMpCVwKJiM0MzsJICAgICAgICAgICAgLWYgTWFrZWZpbGUuZG9jcwkJCQkJXAomIzQzOwkgICAgICAgICAgICBwcmVmaXg9IE9VVFBVVD0kKE9VVFBVVCkvIERFU1RESVI9JChPVVRQVVQpLyAkQAogCi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86ICQoUkVTT0xWRV9CVEZJRFMpICQoVFJVTk5FUl9PVVRQVVQpL2J0Zl9kYXRhLmJwZi5vCi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86IHByaXZhdGUgVEVTVF9ORUVEU19CVEZJRFMgPSAxCi0KLSMgY29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXMKLSMgTm90ZTogd2UgY2QgaW50byBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0IGlzIGZvdW5kCi0kKFRSVU5ORVJfVEVTVF9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0Lm86CQkJXAotCQkgICAgICAkKFRSVU5ORVJfVEVTVFNfRElSKS8lLmMJCQkJXAotCQkgICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kCi0JJCQoY2FsbCBtc2csVEVTVC1PQkosJChUUlVOTkVSX0JJTkFSWSksJCRAKQotCSQoUSkoY2QgJCQoQEQpICZhbXA7JmFtcDsgJCQoQ0MpIC1JLiAkJChDRkxBR1MpIC1NTUQgLU1UICQkQCAtYyAkKENVUkRJUikvJCQmbHQ7ICQkKExETElCUykgLW8gJCQoQEYpKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksfHwgXAotCQkoJChSTSkgJCRAOyBwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtVEVTVCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MikpKQotCSQkKGlmICQkKFRFU1RfTkVFRFNfQlRGSURTKSwJCQkJCQlcCi0JCSQoUSlpZiBbIC1mICQkQCBdOyB0aGVuCQkJCQkJXAotCQkkKGlmICQoZmlsdGVyIDEsJChWKSksdHJ1ZSxwcmludGYgJiMzOTsgICUtOHMlcyAlc1xuJiMzOTsgJiMzNDtCVEZJRFMmIzM0OyAmIzM0OyBbJChUUlVOTkVSX0JJTkFSWSldJiMzNDsgJiMzNDskJChub3RkaXIgJCRAKSYjMzQ7KTsgXAotCQkkKFJFU09MVkVfQlRGSURTKSAtLWJ0ZiAkKFRSVU5ORVJfT1VUUFVUKS9idGZfZGF0YS5icGYubyAkJEA7CVwKLQkJJChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJCRALkJURl9pZHMgJCRAOwkJXAotCQlmaSkKLQotJChUUlVOTkVSX1RFU1RfT0JKUzoubz0uZCk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kOgkJCVwKLQkJCSAgICAkKFRSVU5ORVJfVEVTVFNfRElSKS8lLmMJCQlcCi0JCQkgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpCQkJXAotCQkJICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKQkJXAotCQkJICAgICQoVFJVTk5FUl9CUEZfU0tFTFMpCQkJXAotCQkJICAgICQoVFJVTk5FUl9CUEZfTFNLRUxTKQkJCVwKLQkJCSAgICAkKFRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQpCQlcCi0JCQkgICAgJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpCi0KLWlmZXEgKCQoZmlsdGVyIGNsZWFuIGRvY3MtY2xlYW4gZW1pdF90ZXN0cywkKE1BS0VDTURHT0FMUykpLCkKLWluY2x1ZGUgJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKSkKLWVuZGlmCiYjNDM7ZG9jcy1jbGVhbjoKJiM0MzsJJChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcykJCQkJCVwKJiM0MzsJICAgICAgICAgICAgLWYgTWFrZWZpbGUuZG9jcwkJCQkJXAomIzQzOwkgICAgICAgICAgICBwcmVmaXg9IE9VVFBVVD0kKE9VVFBVVCkvIERFU1RESVI9JChPVVRQVVQpLyAkQAogCi0jIGFkZCBwZXIgZXh0cmEgb2JqIENGR0xBR1MgZGVmaW5pdGlvbnMKLSQoZm9yZWFjaCBOLCQocGF0c3Vic3QgJChUUlVOTkVSX09VVFBVVCkvJS5vLCUsJChUUlVOTkVSX0VYVFJBX09CSlMpKSwJXAotCSQoZXZhbCAkKFRSVU5ORVJfT1VUUFVUKS8kKE4pLm86IENGTEFHUyAmIzQzOz0gJCgkKE4pLmMtQ0ZMQUdTKSkpCi0KLSQoVFJVTk5FUl9FWFRSQV9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5vOgkJCQlcCi0JCSAgICAgICAlLmMJCQkJCQlcCi0JCSAgICAgICAkKFRSVU5ORVJfRVhUUkFfSERSUykJCQkJXAotCQkgICAgICAgJChWRVJJRllfU0lHX0hEUikJCQkJXAotCQkgICAgICAgJChUUlVOTkVSX1RFU1RTX0hEUikJCQkJXAotCQkgICAgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpCi0JJCQoY2FsbCBtc2csRVhULU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApCi0JJChRKSQkKENDKSAkJChDRkxBR1MpIC1jICQkJmx0OyAkJChMRExJQlMpIC1vICQkQAotCi0kKFRSVU5ORVJfTElCX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLm86JChUT09MU0RJUikvbGliLyUuYwotCSQkKGNhbGwgbXNnLExJQi1PQkosJChUUlVOTkVSX0JJTkFSWSksJCRAKQotCSQoUSkkJChDQykgJCQoQ0ZMQUdTKSAtYyAkJCZsdDsgJCQoTERMSUJTKSAtbyAkJEAKLQotIyBub24tZmxhdm9yZWQgaW4tc3JjdHJlZSBidWlsZHMgcmVjZWl2ZSBzcGVjaWFsIHRyZWF0bWVudCwgaW4gcGFydGljdWxhciwgd2UKLSMgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKQotJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzOiAkKFRSVU5ORVJfRVhUUkFfRklMRVMpIHwgJChUUlVOTkVSX09VVFBVVCkKLWlmbmVxICgkMjokKE9VVFBVVCksOiQoc2hlbGwgcHdkKSkKLQkkJChjYWxsIG1zZyxFWFQtQ09QWSwkKFRSVU5ORVJfQklOQVJZKSwkKFRSVU5ORVJfRVhUUkFfRklMRVMpKQotCSQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJCReICQoVFJVTk5FUl9PVVRQVVQpLwomIzQzOyMgdm1saW51eC5oIGlzIGZpcnN0IGR1bXBlZCB0byBhIHRlbXBvcmFyeSBmaWxlIGFuZCB0aGVuIGNvbXBhcmVkIHRvCiYjNDM7IyB0aGUgcHJldmlvdXMgdmVyc2lvbi4gVGhpcyBoZWxwcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZS1idWlsZHMgb2YKJiM0MzsjIEJQRiBvYmplY3RzLgomIzQzOyQoSU5DTFVERV9ESVIpL3ZtbGludXguaDogJChWTUxJTlVYX0JURikgJChCUEZUT09MKSB8ICQoSU5DTFVERV9ESVIpCiYjNDM7aWZlcSAoJChWTUxJTlVYX0gpLCkKJiM0MzsJJChjYWxsIG1zZyxHRU4sLCRAKQomIzQzOwkkKFEpJChCUEZUT09MKSBidGYgZHVtcCBmaWxlICQoVk1MSU5VWF9CVEYpIGZvcm1hdCBjICZndDsgJChJTkNMVURFX0RJUikvLnZtbGludXguaC50bXAKJiM0MzsJJChRKWNtcCAtcyAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcCAkQCB8fCBtdiAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcCAkQAomIzQzO2Vsc2UKJiM0MzsJJChjYWxsIG1zZyxDUCwsJEApCiYjNDM7CSQoUSljcCAmIzM0OyQoVk1MSU5VWF9IKSYjMzQ7ICRACiBlbmRpZgogCi0jIHNvbWUgWC50ZXN0Lm8gZmlsZXMgaGF2ZSBydW50aW1lIGRlcGVuZGVuY2llcyBvbiBZLmJwZi5vIGZpbGVzCi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6IHwgJChUUlVOTkVSX0JQRl9PQkpTKQotCi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6ICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTKSksJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKQlcCi0JCQkgICAgICQoVFJVTk5FUl9FWFRSQV9PQkpTKSAkJChCUEZPQkopCQlcCi0JCQkgICAgICQoVFJVTk5FUl9MSUJfT0JKUykJCQlcCi0JCQkgICAgICQoVFJVTk5FUl9CUEZUT09MKQkJCQlcCi0JCQkgICAgICQoT1VUUFVUKS92ZXJpc3RhdAkJCQlcCi0JCQkgICAgIHwgJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzCQkJXAotCQkJICAgICAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJChUUlVOTkVSX1RFU1RfT0JKUykpKQotCSQkKGNhbGwgbXNnLEJJTkFSWSwsJCRAKQotCSQoUSkkJChDQykgJCQoQ0ZMQUdTKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQoZmlsdGVyICUuYSAlLm8sJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpICQkKGZpbHRlci1vdXQgJChUUlVOTkVSX1RFU1RfT0JKUyksJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSkgJCQoTERMSUJTKSAkJChMTFZNX0xETElCUykgJCQoTERGTEFHUykgJCQoTExWTV9MREZMQUdTKSAtbyAkJEAKLQkkKFEpbG4gLXNmICQoaWYgJDIsLi4sLikvdG9vbHMvYnVpbGQvYnBmdG9vbC8kKFVTRV9CT09UU1RSQVApYnBmdG9vbCBcCi0JCSAgICQoT1VUUFVUKS8kKGlmICQyLCQyLylicGZ0b29sCi0KLWVuZGVmCi0KLVZFUklGWV9TSUdfU0VUVVAgOj0gJChDVVJESVIpL3ZlcmlmeV9zaWdfc2V0dXAuc2gKLVZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0LmgKLVZFUklGSUNBVElPTl9DRVJUICAgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LmRlcgotUFJJVkFURV9LRVkgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LnBlbQotCi0kKFZFUklGSUNBVElPTl9DRVJUKSAkKFBSSVZBVEVfS0VZKTogJChWRVJJRllfU0lHX1NFVFVQKQomIzQzOyMgT25lIGdlbmtleSBydW4gcHJvZHVjZXMgYm90aCBmaWxlcy4gQSBwbGFpbiB0d28tdGFyZ2V0IHJ1bGUgaXMgbm90CiYjNDM7IyBncm91cGVkIC0gdW5kZXIgLWogbWFrZSB3b3VsZCBydW4gZ2Vua2V5IHR3aWNlIGNvbmN1cnJlbnRseSBhbmQgdGhlCiYjNDM7IyBvcGVuc3NsIGludm9jYXRpb25zIHJhY2U7IHRoZSBwYXR0ZXJuIGZvcm0gaXMgaW1wbGljaXRseSBncm91cGVkIGV2ZW4KJiM0MzsjIHdpdGggbWFrZSAmbHQ7IDQuMyAoc2FtZSB3b3JrYXJvdW5kIGFzIHRoZSB0ZXN0X2ttb2RzIHJ1bGUpLgomIzQzOyQoQlVJTERfRElSKS8lLnBlbSAkKEJVSUxEX0RJUikvJS5kZXI6ICQoVkVSSUZZX1NJR19TRVRVUCkKIAkkKFEpbWtkaXIgLXAgJChCVUlMRF9ESVIpCiAJJChRKSQoVkVSSUZZX1NJR19TRVRVUCkgZ2Vua2V5ICQoQlVJTERfRElSKQogCkBAIC04MzUsMTE2ICYjNDM7MzcwLDE4MyBAQCBMSUJBUkVOQV9CUEZfREVQUyA6PSAkKHdpbGRjYXJkIGxpYmFyZW5hL01ha2VmaWxlCQlcCiAJCQkJIGxpYmFyZW5hL3NlbGZ0ZXN0cy8qCQlcCiAJCQkJIGxpYmFyZW5hLyouYnBmLm8pCiAKLUxJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oCi0KICQoTElCQVJFTkFfU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CUEZfREVQUykKIAkmIzQzOyQoTUFLRSkgLUMgbGliYXJlbmEgbGliYXJlbmEuc2tlbC5oICQoTElCQVJFTkFfTUFLRV9BUkdTKQogCi1pZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKQotTElCQVJFTkFfQVNBTl9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hX2FzYW4uc2tlbC5oCi1DRkxBR1MgJiM0Mzs9IC1ESEFTX0JQRl9BUkVOQV9BU0FOCiYjNDM7bGliYXJlbmE6ICQoTElCQVJFTkFfU0tFTCkKIAomIzQzO2lmbmVxICgkKENMQU5HX0hBU19BUkVOQV9BU0FOKSwpCiAkKExJQkFSRU5BX0FTQU5fU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CUEZfREVQUykKIAkmIzQzOyQoTUFLRSkgLUMgbGliYXJlbmEgbGliYXJlbmFfYXNhbi5za2VsLmggJChMSUJBUkVOQV9NQUtFX0FSR1MpCiYjNDM7CiYjNDM7bGliYXJlbmFfYXNhbjogJChMSUJBUkVOQV9BU0FOX1NLRUwpCiBlbmRpZgogCi0jIERlZmluZSB0ZXN0X3Byb2dzIHRlc3QgcnVubmVyLgotVFJVTk5FUl9URVNUU19ESVIgOj0gcHJvZ190ZXN0cwotVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzCi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9wcm9ncy5jCQlcCi0JCQkgY2dyb3VwX2hlbHBlcnMuYwlcCi0JCQkgdHJhY2VfaGVscGVycy5jCVwKLQkJCSBuZXR3b3JrX2hlbHBlcnMuYwlcCi0JCQkgdGVzdGluZ19oZWxwZXJzLmMJXAotCQkJIGJ0Zl9oZWxwZXJzLmMJCVwKLQkJCSBjYXBfaGVscGVycy5jCQlcCi0JCQkgdW5wcml2X2hlbHBlcnMuYyAJXAotCQkJIHN5c2N0bF9oZWxwZXJzLmMJXAotCQkJIG5ldGxpbmtfaGVscGVycy5jCVwKLQkJCSBqaXRfZGlzYXNtX2hlbHBlcnMuYwlcCi0JCQkgaW9faGVscGVycy5jCQlcCi0JCQkgdGVzdF9sb2FkZXIuYwkJXAotCQkJIHhzay5jCQkJXAotCQkJIGRpc2FzbS5jCQlcCi0JCQkgZGlzYXNtX2hlbHBlcnMuYwlcCi0JCQkganNvbl93cml0ZXIuYyAJCVwKLQkJCSAkKFZFUklGWV9TSUdfSERSKQkJXAotCQkJIGZsb3dfZGlzc2VjdG9yX2xvYWQuaAlcCi0JCQkgaXBfY2hlY2tfZGVmcmFnX2ZyYWdzLmgJXAotCQkJIGJwZnRvb2xfaGVscGVycy5jCVwKLQkJCSB1c2R0XzEuYyB1c2R0XzIuYwlcCi0JCQkgJChMSUJBUkVOQV9TS0VMKQlcCi0JCQkgJChMSUJBUkVOQV9BU0FOX1NLRUwpCi1UUlVOTkVSX0xJQl9TT1VSQ0VTIDo9IGZpbmRfYml0LmMKLVRSVU5ORVJfRVhUUkFfRklMRVMgOj0gJChPVVRQVVQpL3VyYW5kb21fcmVhZAkJCQlcCi0JCSAgICAgICAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvCQkJXAotCQkgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eQkJCQlcCi0JCSAgICAgICAkKE9VVFBVVCkvc2lnbi1maWxlCQkJCVwKLQkJICAgICAgICQoT1VUUFVUKS91cHJvYmVfbXVsdGkJCQkJXAotCQkgICAgICAgJChURVNUX0tNT0RfVEFSR0VUUykJCQkJXAotCQkgICAgICAgaW1hX3NldHVwLnNoIAkJCQkJXAotCQkgICAgICAgJChWRVJJRllfU0lHX1NFVFVQKQkJCQlcCi0JCSAgICAgICAkKHdpbGRjYXJkIHByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV8qLmMpCQlcCi0JCSAgICAgICAkKHdpbGRjYXJkIHByb2dzLyouYnBmLm8pCi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX0JQRl9CVUlMRF9SVUxFCi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykgLURFTkFCTEVfQVRPTUlDU19URVNUUwotJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncykpCi0KLSMgRGVmaW5lIHRlc3RfcHJvZ3Mtbm9fYWx1MzIgdGVzdCBydW5uZXIuCi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX05PQUxVMzJfQlBGX0JVSUxEX1JVTEUKLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKQotJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxub19hbHUzMikpCi0KLSMgRGVmaW5lIHRlc3RfcHJvZ3MtY3B1djQgdGVzdCBydW5uZXIuCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsjIEdlbmVyYXRlZCB0ZXN0IGxpc3QgaGVhZGVycwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7CiYjNDM7ZGVmaW5lIGdlbl90ZXN0c19oZHIKJiM0MzsJJChjYWxsIG1zZyxURVNULUhEUiwsJEApCiYjNDM7CSQoUSkoZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7CQlcCiYjNDM7CSAgICAgc2VkIC1uIC1FICYjMzk7cy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dJiM0MzspXCgodm9pZCk/XCkuKi9ERUZJTkVfVEVTVChcMikvcCYjMzk7IFwKJiM0MzsJCSQoQEQpLyouYyB8IHNvcnQpICZndDsgJEAKJiM0MztlbmRlZgomIzQzOwomIzQzO3Byb2dfdGVzdHMvdGVzdHMuaDogJCh3aWxkY2FyZCBwcm9nX3Rlc3RzLyouYykKJiM0MzsJJChnZW5fdGVzdHNfaGRyKQomIzQzOwomIzQzO21hcF90ZXN0cy90ZXN0cy5oOiAkKHdpbGRjYXJkIG1hcF90ZXN0cy8qLmMpCiYjNDM7CSQoZ2VuX3Rlc3RzX2hkcikKJiM0MzsKJiM0Mzt2ZXJpZmllci90ZXN0cy5oOiB2ZXJpZmllci8qLmMKJiM0MzsJJChRKSggY2QgdmVyaWZpZXIvOyBcCiYjNDM7CSAgICAgIGVjaG8gJiMzOTsvKiBHZW5lcmF0ZWQgaGVhZGVyLCBkbyBub3QgZWRpdCAqLyYjMzk7OyBcCiYjNDM7CSAgICAgIGVjaG8gJiMzOTsjaWZkZWYgRklMTF9BUlJBWSYjMzk7OyBcCiYjNDM7CSAgICAgIGxzICouYyAyJmd0OyAvZGV2L251bGwgfCBzZWQgLWUgJiMzOTtzQFwoLipcKUAjaW5jbHVkZSBcJiMzNDtcMVwmIzM0O0AmIzM5OzsgXAomIzQzOwkgICAgICBlY2hvICYjMzk7I2VuZGlmJiMzOTsgXAomIzQzOwkgICAgKSAmZ3Q7IHZlcmlmaWVyL3Rlc3RzLmgKJiM0MzsKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgU2hhcmVkIGhlbHBlciBvYmplY3RzLCB1c2VkIGJ5IHRoZSBzdGFuZGFsb25lIGJpbmFyaWVzIGJlbG93IGFuZCAoYXMKJiM0MzsjIHByZWJ1aWx0IGlucHV0cykgYnkgdGhlIHVuZmxhdm9yZWQgdGVzdF9wcm9ncyBydW5uZXIuCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsKJiM0MzsjIFNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgdXNlIExMVk0gbGlicmFyaWVzCiYjNDM7JChPVVRQVVQpL2ppdF9kaXNhc21faGVscGVycy5vOiBDRkxBR1MgJiM0Mzs9ICQoTExWTV9DRkxBR1MpCiYjNDM7CiYjNDM7SEVMUEVSX09CSlMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyx0ZXN0aW5nX2hlbHBlcnMubyBjZ3JvdXBfaGVscGVycy5vIFwKJiM0MzsJICAgICAgIHRyYWNlX2hlbHBlcnMubyBuZXR3b3JrX2hlbHBlcnMubyBqc29uX3dyaXRlci5vCQlcCiYjNDM7CSAgICAgICBjYXBfaGVscGVycy5vIHVucHJpdl9oZWxwZXJzLm8gdXNkdF8xLm8gdXNkdF8yLm8geHNrLm8pCiYjNDM7CiYjNDM7IyAkKEJQRlRPT0wpIGlzIGEgcHJlcmVxdWlzaXRlIGJlY2F1c2UgaXRzIHN1Yi1tYWtlIGlzIHdoYXQgaW5zdGFsbHMKJiM0MzsjIGxpYmJwZiYjMzk7cyBpbnRlcm5hbCBoZWFkZXJzIChicGYvaGFzaG1hcC5oLCBicGYvbGliYnBmX2ludGVybmFsLmgpIGludG8KJiM0MzsjICQoSU5DTFVERV9ESVIpOyB3aXRob3V0IGl0LCBoZWxwZXJzIGluY2x1ZGluZyB0aG9zZSBoZWFkZXJzIHJhY2UgdGhlCiYjNDM7IyBpbnN0YWxsIGFuZCBjYW4gc2lsZW50bHkgcGljayB1cCB0aGUgc291cmNlLXRyZWUgY29waWVzIGluc3RlYWQuCiYjNDM7JChIRUxQRVJfT0JKUyk6IGZsb3dfZGlzc2VjdG9yX2xvYWQuaCBpcF9jaGVja19kZWZyYWdfZnJhZ3MuaAkJXAomIzQzOwkJJChWRVJJRllfU0lHX0hEUikgcHJvZ190ZXN0cy90ZXN0cy5oICQoQlBGT0JKKSAkKEJQRlRPT0wpCiYjNDM7CiYjNDM7JChPVVRQVVQpL3Rlc3Rfc29ja21hcDogJChPVVRQVVQpL2Nncm91cF9oZWxwZXJzLm8gJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vCiYjNDM7JChPVVRQVVQpL3Rlc3RfdGNwbm90aWZ5X3VzZXI6ICQoT1VUUFVUKS9jZ3JvdXBfaGVscGVycy5vCQlcCiYjNDM7CQkJICAgICAgICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMubwkJXAomIzQzOwkJCSAgICAgICAkKE9VVFBVVCkvdHJhY2VfaGVscGVycy5vCiYjNDM7JChPVVRQVVQpL3Rlc3RfdGFnOiAkKE9VVFBVVCkvdGVzdGluZ19oZWxwZXJzLm8KJiM0MzskKE9VVFBVVCkvdGVzdF9saXJjX21vZGUyX3VzZXI6ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMubwomIzQzOyQoT1VUUFVUKS9mbG93X2Rpc3NlY3Rvcl9sb2FkOiBmbG93X2Rpc3NlY3Rvcl9sb2FkLmggJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vCiYjNDM7CiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsjIFRlc3QgcnVubmVyIGluc3RhbmNlcywgb25lIHN1Yi1tYWtlIGVhY2ggKHNlZSBNYWtlZmlsZS5ydW5uZXIpLgomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7CiYjNDM7IyBUaGUgTExWTSBmZWF0dXJlLXByb2JlIHJlc3VsdHMgYXJlIGV4cG9ydGVkIHRvIHRoZSBydW5uZXIgc3ViLW1ha2VzLgomIzQzOyMgQ0MgaXMgcGFzc2VkIGV4cGxpY2l0bHkgaW5zdGVhZDogZXhwb3J0aW5nIGl0IHdvdWxkIGFsc28gbGVhayBsaWIubWsmIzM5O3MKJiM0MzsjIENDIGludG8gdGhlIGxpYmJwZi9icGZ0b29sL3Jlc29sdmVfYnRmaWRzIHN1Yi1idWlsZHMsIHdoaWNoIGNvbXB1dGUKJiM0MzsjIHRoZWlyIG93bi4KJiM0MztleHBvcnQgTExWTV9DRkxBR1MgTExWTV9MRExJQlMgTExWTV9MREZMQUdTCiYjNDM7CiYjNDM7UlVOTkVSX01BS0UgOj0gJChNQUtFKSAtZiBNYWtlZmlsZS5ydW5uZXIgT1VUUFVUPSQoT1VUUFVUKSBDQz0mIzM5OyQoQ0MpJiMzOTsKJiM0MzsKJiM0MzsjIEV2ZXJ5dGhpbmcgYSBydW5uZXIgaW5zdGFuY2UgcmVmZXJlbmNlcyBidXQgZG9lcyBub3Qga25vdyBob3cgdG8gYnVpbGQuCiYjNDM7UlVOTkVSX1BSRVJFUVMgOj0gJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoQlBGT0JKKSAkKEJQRlRPT0wpCQlcCiYjNDM7CQkgICQoVFJVTk5FUl9CUEZUT09MKSAkKFJFU09MVkVfQlRGSURTKQkJCVwKJiM0MzsJCSAgJChPVVRQVVQpL3ZlcmlzdGF0CQkJCQlcCiYjNDM7CQkgICQoVkVSSUZZX1NJR19IRFIpICQoUFJJVkFURV9LRVkpICQoVkVSSUZJQ0FUSU9OX0NFUlQpCVwKJiM0MzsJCSAgJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTCkJCVwKJiM0MzsJCSAgcHJvZ190ZXN0cy90ZXN0cy5oCQkJCQlcCiYjNDM7CQkgICQoSEVMUEVSX09CSlMpCQkJCQlcCiYjNDM7CQkgICQoT1VUUFVUKS91cmFuZG9tX3JlYWQgJChPVVRQVVQpL2xpYnVyYW5kb21fcmVhZC5zbwlcCiYjNDM7CQkgICQoT1VUUFVUKS94ZHBfc3lucHJveHkgJChPVVRQVVQpL3NpZ24tZmlsZQkJXAomIzQzOwkJICAkKE9VVFBVVCkvdXByb2JlX211bHRpICQoVEVTVF9LTU9EX1RBUkdFVFMpCiYjNDM7CiYjNDM7Rk9SQ0U6CiYjNDM7CiYjNDM7IyBUaGUgZGVmYXVsdCBmbGF2b3ImIzM5O3Mgc2tlbGV0b25zIGFyZSBhbHNvIGlucHV0cyBvZiBiZW5jaCwgdGVzdF9tYXBzLAomIzQzOyMgeHNreGNlaXZlciwgeGRwXyogYW5kIHRlc3RfY3BwOyAmIzM0O2RlZmF1bHQtc2tlbHMmIzM0OyBidWlsZHMganVzdCB0aG9zZQomIzQzOyMgd2l0aG91dCB0aGUgdGVzdF9wcm9ncyB0ZXN0IG9iamVjdHMgYW5kIGJpbmFyeS4KJiM0MzsuUEhPTlk6IGRlZmF1bHQtc2tlbHMKJiM0MztkZWZhdWx0LXNrZWxzOiAkKFJVTk5FUl9QUkVSRVFTKQomIzQzOwkmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9IFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFwKJiM0MzsJCUJQRl9CVUlMRD1jbGFuZyBCUEZfTUNQVT12MyBCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTIHNrZWxzCiYjNDM7CiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3M6ICQoUlVOTkVSX1BSRVJFUVMpIGRlZmF1bHQtc2tlbHMgRk9SQ0UKJiM0MzsJJiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPSBURVNUU19ESVI9cHJvZ190ZXN0cyBcCiYjNDM7CQlCUEZfQlVJTEQ9Y2xhbmcgQlBGX01DUFU9djMgQlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUUwomIzQzOwomIzQzOyQoT1VUUFVUKS90ZXN0X3Byb2dzLW5vX2FsdTMyOiAkKFJVTk5FUl9QUkVSRVFTKSBGT1JDRQomIzQzOwkmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9bm9fYWx1MzIgVEVTVFNfRElSPXByb2dfdGVzdHMgXAomIzQzOwkJQlBGX0JVSUxEPWNsYW5nIEJQRl9NQ1BVPXYyCiYjNDM7CiBpZm5lcSAoJChDTEFOR19DUFVWNCksKQotVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19DUFVWNF9CUEZfQlVJTERfUlVMRQotVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFMKLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MsY3B1djQpKQomIzQzOyQoT1VUUFVUKS90ZXN0X3Byb2dzLWNwdXY0OiAkKFJVTk5FUl9QUkVSRVFTKSBGT1JDRQomIzQzOwkmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9Y3B1djQgVEVTVFNfRElSPXByb2dfdGVzdHMgXAomIzQzOwkJQlBGX0JVSUxEPWNsYW5nIEJQRl9NQ1BVPXY0IEJQRl9ERUZJTkVTPS1ERU5BQkxFX0FUT01JQ1NfVEVTVFMKIGVuZGlmCiAKLSMgRGVmaW5lIHRlc3RfcHJvZ3MgQlBGLUdDQy1mbGF2b3JlZCB0ZXN0IHJ1bm5lci4KIGlmbmVxICgkKEJQRl9HQ0MpLCkKLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gR0NDX0JQRl9CVUlMRF9SVUxFCi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcyxnY2MsKQotJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxicGZfZ2NjKSkKLWVuZGlmCi0KLSMgRGVmaW5lIHRlc3RfbWFwcyB0ZXN0IHJ1bm5lci4KLVRSVU5ORVJfVEVTVFNfRElSIDo9IG1hcF90ZXN0cwotVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzCi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9tYXBzLmMKLVRSVU5ORVJfTElCX1NPVVJDRVMgOj0KLVRSVU5ORVJfRVhUUkFfRklMRVMgOj0KLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gJCQoZXJyb3Igbm8gQlBGIG9iamVjdHMgc2hvdWxkIGJlIGJ1aWx0KQotVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9Ci0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X21hcHMpKQotCi0jIERlZmluZSB0ZXN0X3ZlcmlmaWVyIHRlc3QgcnVubmVyLgotIyBJdCBpcyBtdWNoIHNpbXBsZXIgdGhhbiB0ZXN0X21hcHMvdGVzdF9wcm9ncyBhbmQgc3VmZmljaWVudGx5IGRpZmZlcmVudCBmcm9tCi0jIHRoZW0gKGUuZy4sIHRlc3QuaCBpcyB1c2luZyBjb21wbGV0ZWx5IHBhdHRlcm4pLCB0aGF0IGl0JiMzOTtzIHdvcnRoIGp1c3QKLSMgZXhwbGljaXRseSBkZWZpbmluZyBhbGwgdGhlIHJ1bGVzIGV4cGxpY2l0bHkuCi12ZXJpZmllci90ZXN0cy5oOiB2ZXJpZmllci8qLmMKLQkkKHNoZWxsICggY2QgdmVyaWZpZXIvOyBcCi0JCSAgZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7IFwKLQkJICBlY2hvICYjMzk7I2lmZGVmIEZJTExfQVJSQVkmIzM5OzsgXAotCQkgIGxzICouYyAyJmd0OyAvZGV2L251bGwgfCBzZWQgLWUgJiMzOTtzQFwoLipcKUAjaW5jbHVkZSBcJiMzNDtcMVwmIzM0O0AmIzM5OzsgXAotCQkgIGVjaG8gJiMzOTsjZW5kaWYmIzM5OyBcCi0JCSkgJmd0OyB2ZXJpZmllci90ZXN0cy5oKQotJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6IHRlc3RfdmVyaWZpZXIuYyB2ZXJpZmllci90ZXN0cy5oICQoQlBGT0JKKSB8ICQoT1VUUFVUKQomIzQzOyQoT1VUUFVUKS90ZXN0X3Byb2dzLWJwZl9nY2M6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFCiYjNDM7CSYjNDM7JChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1icGZfZ2NjIFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFwKJiM0MzsJCUJQRl9CVUlMRD1nY2MKJiM0MztlbmRpZgomIzQzOwomIzQzOyMgdGVzdF9tYXBzIGNvbXBpbGVzIG1hcF90ZXN0cy8qLmMgYWdhaW5zdCB0aGUgZGVmYXVsdCBmbGF2b3ImIzM5O3Mgc2tlbGV0b25zCiYjNDM7JChPVVRQVVQpL3Rlc3RfbWFwczogJChSVU5ORVJfUFJFUkVRUykgbWFwX3Rlc3RzL3Rlc3RzLmggZGVmYXVsdC1za2VscyBGT1JDRQomIzQzOwkmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9tYXBzIEZMQVZPUj0gVEVTVFNfRElSPW1hcF90ZXN0cyBcCiYjNDM7CQlCUEZfQlVJTEQ9bm9uZQomIzQzOwomIzQzOyMgRGVmYXVsdC1mbGF2b3IgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9ucyBjb25zdW1lZCBieSB0YXJnZXRzIGluIHRoaXMKJiM0MzsjIE1ha2VmaWxlIChhbmQgYnkgbGliLm1rJiMzOTtzIGluc3RhbGwgcnVsZSkgYXJlIHByb2R1Y2VkIGJ5IHRoZSBydW5uZXIKJiM0MzsjIHN1Yi1tYWtlIGFib3ZlOyB0aGUgZW1wdHkgcmVjaXBlIHBsdXMgdGhlIG9yZGVyLW9ubHkgcHJlcmVxdWlzaXRlCiYjNDM7IyBtYWtlcyB0aGVtIGF2YWlsYWJsZSBoZXJlIHdpdGhvdXQgZHVwbGljYXRpbmcgdGhlIHJ1bm5lciYjMzk7cyBydWxlcy4KJiM0MztERUZBVUxUX0JQRl9PQkpTIDo9ICQocGF0c3Vic3QgcHJvZ3MvJS5jLCQoT1VUUFVUKS8lLmJwZi5vLCQod2lsZGNhcmQgcHJvZ3MvKi5jKSkKJiM0MztURVNUX0dFTl9GSUxFUyAmIzQzOz0gJChERUZBVUxUX0JQRl9PQkpTKQomIzQzOwomIzQzO0JFTkNIX1NLRUxTIDo9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sCQkJCQlcCiYjNDM7CSAgICAgICB0ZXN0X292ZXJoZWFkLnNrZWwuaCB0cmlnZ2VyX2JlbmNoLnNrZWwuaAkJXAomIzQzOwkgICAgICAgcmluZ2J1Zl9iZW5jaC5za2VsLmggcGVyZmJ1Zl9iZW5jaC5za2VsLmgJCVwKJiM0MzsJICAgICAgIGJsb29tX2ZpbHRlcl9iZW5jaC5za2VsLmggYnBmX2xvb3BfYmVuY2guc2tlbC5oCQlcCiYjNDM7CSAgICAgICBzdHJuY21wX2JlbmNoLnNrZWwuaCBicGZfaGFzaG1hcF9mdWxsX3VwZGF0ZV9iZW5jaC5za2VsLmhcCiYjNDM7CSAgICAgICBsb2NhbF9zdG9yYWdlX2JlbmNoLnNrZWwuaAkJCQlcCiYjNDM7CSAgICAgICBsb2NhbF9zdG9yYWdlX3JjdV90YXNrc190cmFjZV9iZW5jaC5za2VsLmgJCVwKJiM0MzsJICAgICAgIGJlbmNoX2xvY2FsX3N0b3JhZ2VfY3JlYXRlLnNrZWwuaAkJCVwKJiM0MzsJICAgICAgIGJwZl9oYXNobWFwX2xvb2t1cC5za2VsLmggaHRhYl9tZW1fYmVuY2guc2tlbC5oCQlcCiYjNDM7CSAgICAgICBjcnlwdG9fYmVuY2guc2tlbC5oIGJlbmNoX3NvY2ttYXBfcHJvZy5za2VsLmgJCVwKJiM0MzsJICAgICAgIGxwbV90cmllX2JlbmNoLnNrZWwuaCBscG1fdHJpZV9tYXAuc2tlbC5oCQlcCiYjNDM7CSAgICAgICBicGZfbm9wX2JlbmNoLnNrZWwuaCB4ZHBfbGJfYmVuY2guc2tlbC5oKQomIzQzO1RPUF9TS0VMUyA6PSAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLHhza194ZHBfcHJvZ3Muc2tlbC5oCQlcCiYjNDM7CSAgICAgeGRwX2h3X21ldGFkYXRhLnNrZWwuaCB4ZHBfZmVhdHVyZXMuc2tlbC5oCQkJXAomIzQzOwkgICAgIHRlc3RfY29yZV9leHRlcm4uc2tlbC5oKSAkKEJFTkNIX1NLRUxTKQomIzQzOwomIzQzOyMgRW1wdHktcmVjaXBlIGRlbGVnYXRpb246ICYjMzQ7ZGVmYXVsdC1za2VscyYjMzQ7IChyZSlidWlsZHMgdGhlIGZpbGUgdmlhIHRoZQomIzQzOyMgcnVubmVyIHN1Yi1tYWtlLCBhZnRlciB3aGljaCBtYWtlIHJlLXN0YXRzIHRoZSB0YXJnZXQsIHNvIGRlcGVuZGVudHMKJiM0MzsjIHNlZSBmcmVzaCB0aW1lc3RhbXBzIHdpdGhpbiB0aGUgc2FtZSBpbnZvY2F0aW9uLiBEZXBlbmRlbnRzIHN0aWxsCiYjNDM7IyByZWJ1aWxkIG9uIG10aW1lIG9ubHkgLSB0aGUgcGhvbnkgcHJlcmVxdWlzaXRlIGRvZXMgbm90IGNhc2NhZGUuCiYjNDM7JChERUZBVUxUX0JQRl9PQkpTKSAkKFRPUF9TS0VMUyk6IGRlZmF1bHQtc2tlbHMgOwomIzQzOwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7IyBTdGFuZGFsb25lIHRlc3QgYmluYXJpZXMKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzOyMgdGVzdF92ZXJpZmllciBpcyBtdWNoIHNpbXBsZXIgdGhhbiB0ZXN0X21hcHMvdGVzdF9wcm9ncyBhbmQKJiM0MzsjIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgZnJvbSB0aGVtIChlLmcuLCBpdHMgdGVzdHMuaCB1c2VzIGEgY29tcGxldGVseQomIzQzOyMgZGlmZmVyZW50IHBhdHRlcm4pLCB0aGF0IGl0JiMzOTtzIHdvcnRoIGp1c3QgZGVmaW5pbmcgaXRzIHJ1bGVzIGV4cGxpY2l0bHkuCiYjNDM7JChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6IHRlc3RfdmVyaWZpZXIuYyB2ZXJpZmllci90ZXN0cy5oICQoQlBGT0JKKQlcCiYjNDM7CQkJICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMubwkJCVwKJiM0MzsJCQkgJChPVVRQVVQpL2NhcF9oZWxwZXJzLm8JCQlcCiYjNDM7CQkJICQoT1VUUFVUKS91bnByaXZfaGVscGVycy5vCiAJJChjYWxsIG1zZyxCSU5BUlksLCRAKQogCSQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQAogCiAjIEluY2x1ZGUgZmluZF9iaXQuYyB0byBjb21waWxlIHhza3hjZWl2ZXIuCiBFWFRSQV9TUkMgOj0gJChUT09MU0RJUikvbGliL2ZpbmRfYml0LmMgcHJvZ190ZXN0cy90ZXN0X3hzay5jIHByb2dfdGVzdHMvdGVzdF94c2suaAotJChPVVRQVVQpL3hza3hjZWl2ZXI6ICQoRVhUUkFfU1JDKSB4c2t4Y2VpdmVyLmMgeHNreGNlaXZlci5oICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hza194ZHBfcHJvZ3Muc2tlbC5oICQoQlBGT0JKKSB8ICQoT1VUUFVUKQomIzQzOyQoT1VUUFVUKS94c2t4Y2VpdmVyOiAkKEVYVFJBX1NSQykgeHNreGNlaXZlci5jIHhza3hjZWl2ZXIuaCAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hzay5vICQoT1VUUFVUKS94c2tfeGRwX3Byb2dzLnNrZWwuaCAkKEJQRk9CSikKIAkkKGNhbGwgbXNnLEJJTkFSWSwsJEApCiAJJChRKSQoQ0MpICQoQ0ZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuYywkXikgJChMRExJQlMpIC1vICRACiAKLSQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGE6IHhkcF9od19tZXRhZGF0YS5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YS5za2VsLmggfCAkKE9VVFBVVCkKJiM0MzskKE9VVFBVVCkveGRwX2h3X21ldGFkYXRhOiB4ZHBfaHdfbWV0YWRhdGEuYyAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hzay5vICQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGEuc2tlbC5oCiAJJChjYWxsIG1zZyxCSU5BUlksLCRAKQogCSQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQAogCi0kKE9VVFBVVCkveGRwX2ZlYXR1cmVzOiB4ZHBfZmVhdHVyZXMuYyAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hkcF9mZWF0dXJlcy5za2VsLmggfCAkKE9VVFBVVCkKJiM0MzskKE9VVFBVVCkveGRwX2ZlYXR1cmVzOiB4ZHBfZmVhdHVyZXMuYyAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hkcF9mZWF0dXJlcy5za2VsLmgKIAkkKGNhbGwgbXNnLEJJTkFSWSwsJEApCiAJJChRKSQoQ0MpICQoQ0ZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuYywkXikgJChMRExJQlMpIC1vICRACiAKQEAgLTk1NiwxMSAmIzQzOzU1OCwxOCBAQCAkKE9VVFBVVCkvdGVzdF9jcHA6IHRlc3RfY3BwLmNwcCAkKE9VVFBVVCkvdGVzdF9jb3JlX2V4dGVybi5za2VsLmggJChCUEZPQkopCiAJJChjYWxsIG1zZyxDWFgsLCRAKQogCSQoUSkkKENYWCkgJChDWFhGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmNwcCwkXikgJChMRExJQlMpIC1vICRACiAKLSMgQmVuY2htYXJrIHJ1bm5lcgotJChPVVRQVVQpL2JlbmNoXyUubzogYmVuY2hzL2JlbmNoXyUuYyBiZW5jaC5oICQoQlBGT0JKKQomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7IyBCZW5jaG1hcmsgcnVubmVyLiBUaGUgYmVuY2htYXJrIGxpc3QgaXMgZGVmaW5lZCBieSB0aGUgZmlsZXMgaW4KJiM0MzsjIGJlbmNocy86IGV2ZXJ5IGJlbmNocy9iZW5jaF8qLmMgaXMgY29tcGlsZWQgYW5kIGxpbmtlZCBpbi4KJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzO0JFTkNIX09CSlMgOj0gJChzb3J0ICQocGF0c3Vic3QgYmVuY2hzLyUuYywkKE9VVFBVVCkvJS5vLCQod2lsZGNhcmQgYmVuY2hzL2JlbmNoXyouYykpKQomIzQzOwomIzQzOyQoT1VUUFVUKS9iZW5jaF8lLm86IGJlbmNocy9iZW5jaF8lLmMgYmVuY2guaCAkKEJQRk9CSikgfCBkZWZhdWx0LXNrZWxzCiAJJChjYWxsIG1zZyxDQywsJEApCi0JJChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFwKLQkJKCQoUk0pICRAOyBwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtQkVOQ0gmIzM5OyAmIzM5OyQobm90ZGlyICRAKSYjMzk7IDEmZ3Q7JmFtcDsyKSkKJiM0MzsJJChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAtbyAkQCAkKGNhbGwgc2tpcF9vbl9mYWlsLEJFTkNIKQomIzQzOwomIzQzOyMgYmVuY2htYXJrLXNwZWNpZmljIGdlbmVyYXRlZC1za2VsZXRvbiBkZXBlbmRlbmNpZXMKICQoT1VUUFVUKS9iZW5jaF9yZW5hbWUubzogJChPVVRQVVQpL3Rlc3Rfb3ZlcmhlYWQuc2tlbC5oCiAkKE9VVFBVVCkvYmVuY2hfdHJpZ2dlci5vOiAkKE9VVFBVVCkvdHJpZ2dlcl9iZW5jaC5za2VsLmgKICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vOiAkKE9VVFBVVCkvcmluZ2J1Zl9iZW5jaC5za2VsLmggXApAQCAtOTgwLDM3ICYjNDM7NTg5LDE5IEBAICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubzogJChPVVRQVVQpL2xwbV90cmllX2JlbmNoLnNrZWwuaCAkKE9VVFBVVCkvbHBtX3RyCiAkKE9VVFBVVCkvYmVuY2hfYnBmX25vcC5vOiAkKE9VVFBVVCkvYnBmX25vcF9iZW5jaC5za2VsLmggYmVuY2hfYnBmX3RpbWluZy5oCiAkKE9VVFBVVCkvYmVuY2hfeGRwX2xiLm86ICQoT1VUUFVUKS94ZHBfbGJfYmVuY2guc2tlbC5oIGJlbmNoX2JwZl90aW1pbmcuaAogJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubzogYmVuY2hfYnBmX3RpbWluZy5oCiYjNDM7CiAkKE9VVFBVVCkvYmVuY2gubzogYmVuY2guaCB0ZXN0aW5nX2hlbHBlcnMuaCAkKEJQRk9CSikKICQoT1VUUFVUKS9iZW5jaDogTERMSUJTICYjNDM7PSAtbG0KLSQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXAotCQkgJChURVNUSU5HX0hFTFBFUlMpIFwKLQkJICQoVFJBQ0VfSEVMUEVSUykgXAotCQkgJChDR1JPVVBfSEVMUEVSUykgXAotCQkgJChPVVRQVVQpL2JlbmNoX2NvdW50Lm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX3JlbmFtZS5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF90cmlnZ2VyLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX3JpbmdidWZzLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2Jsb29tX2ZpbHRlcl9tYXAubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfYnBmX2xvb3AubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX2NyZWF0ZS5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9odGFiX21lbS5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9icGZfY3J5cHRvLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX3NvY2ttYXAubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfbHBtX3RyaWVfbWFwLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfYnBmX25vcC5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF94ZHBfbGIubyBcCi0JCSAkKE9VVFBVVCkvdXNkdF8xLm8gXAotCQkgJChPVVRQVVQpL3VzZHRfMi5vIFwKLQkJICMKJiM0MzskKE9VVFBVVCkvYmVuY2g6ICQoT1VUUFVUKS9iZW5jaC5vCQlcCiYjNDM7CQkgJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vCVwKJiM0MzsJCSAkKE9VVFBVVCkvdHJhY2VfaGVscGVycy5vCVwKJiM0MzsJCSAkKE9VVFBVVCkvY2dyb3VwX2hlbHBlcnMubwlcCiYjNDM7CQkgJChPVVRQVVQpL3VzZHRfMS5vCQlcCiYjNDM7CQkgJChPVVRQVVQpL3VzZHRfMi5vCQlcCiYjNDM7CQkgJChCRU5DSF9PQkpTKQogCSQoY2FsbCBtc2csQklOQVJZLCwkQCkKLQkkKFEpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChmaWx0ZXIgJS5hICUubywkXikgJChMRExJQlMpIC1vICRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcCi0JCSgkKFJNKSAkQDsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLUxJTksmIzM5OyAmIzM5OyQobm90ZGlyICRAKSAoc29tZSBiZW5jaG1hcmtzIG1heSBoYXZlIGJlZW4gc2tpcHBlZCkmIzM5OyAxJmd0OyZhbXA7MikpCiYjNDM7CSQoUSkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKGZpbHRlciAlLmEgJS5vLCReKSAkKExETElCUykgLW8gJEAgXAomIzQzOwkJJChjYWxsIHNraXBfb25fZmFpbCxMSU5LLCwoc29tZSBiZW5jaG1hcmtzIG1heSBoYXZlIGJlZW4gc2tpcHBlZCkpCiAKICMgVGhpcyB3b3JrcyBhcm91bmQgR0NDIHdhcm5pbmcgYWJvdXQgc25wcmludGYgdHJ1bmNhdGluZyBzdHJpbmdzIGxpa2U6CiAjCkBAIC0xMDIyLDEzICYjNDM7NjEzLDYgQEAgJChPVVRQVVQpL3ZlcmlzdGF0OiAkKE9VVFBVVCkvdmVyaXN0YXQubwogCSQoY2FsbCBtc2csQklOQVJZLCwkQCkKIAkkKFEpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChmaWx0ZXIgJS5hICUubywkXikgJChMRExJQlMpIC1vICRACiAKLSMgTGlua2luZyB1cHJvYmVfbXVsdGkgY2FuIGZhaWwgZHVlIHRvIHJlbG9jYXRpb24gb3ZlcmZsb3dzIG9uIG1pcHMuCi0kKE9VVFBVVCkvdXByb2JlX211bHRpOiBDRkxBR1MgJiM0Mzs9ICQoaWYgJChmaWx0ZXIgbWlwcywgJChBUkNIKSksLW14Z290KQotJChPVVRQVVQpL3Vwcm9iZV9tdWx0aTogdXByb2JlX211bHRpLmMgdXByb2JlX211bHRpLmxkCi0JJChjYWxsIG1zZyxCSU5BUlksLCRAKQotCSQoUSkkKENDKSAkKENGTEFHUykgLVdsLC1ULHVwcm9iZV9tdWx0aS5sZCAtTzAgJChMREZMQUdTKSAJXAotCQkkKGZpbHRlci1vdXQgJS5sZCwkXikgJChMRExJQlMpIC1vICRACi0KIEVYVFJBX0NMRUFOIDo9ICQoU0NSQVRDSF9ESVIpICQoSE9TVF9TQ1JBVENIX0RJUikJCQlcCiAJcHJvZ190ZXN0cy90ZXN0cy5oIG1hcF90ZXN0cy90ZXN0cy5oIHZlcmlmaWVyL3Rlc3RzLmgJCVwKIAlmZWF0dXJlIGJwZnRvb2wgJChURVNUX0tNT0RfVEFSR0VUUykJCQkJXApAQCAtMTAzOCw3ICYjNDM7NjIyLDcgQEAgRVhUUkFfQ0xFQU4gOj0gJChTQ1JBVENIX0RJUikgJChIT1NUX1NDUkFUQ0hfRElSKQkJCVwKIAkJCSAgICAgICBsaWJ1cmFuZG9tX3JlYWQuc28pCQkJXAogCSQoT1VUUFVUKS9GRUFUVVJFLURVTVAuc2VsZnRlc3RzCiAKLS5QSE9OWTogZG9jcyBkb2NzLWNsZWFuCiYjNDM7LlBIT05ZOiBkb2NzIGRvY3MtY2xlYW4gbGliYXJlbmEgbGliYXJlbmFfYXNhbgogCiAjIERlbGV0ZSBwYXJ0aWFsbHkgdXBkYXRlZCAoY29ycnVwdGVkKSBmaWxlcyBvbiBlcnJvcgogLkRFTEVURV9PTl9FUlJPUjoKQEAgLTEwNjIsOSAmIzQzOzY0NiwzIEBAIG92ZXJyaWRlIGRlZmluZSBJTlNUQUxMX1JVTEUKIAkJCSQoSU5TVEFMTF9QQVRIKS8kJERJUjsJCQkJICBcCiAJZG9uZQogZW5kZWYKLQotbGliYXJlbmE6ICQoTElCQVJFTkFfU0tFTCkKLQotaWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLCkKLWxpYmFyZW5hX2FzYW46ICQoTElCQVJFTkFfQVNBTl9TS0VMKQotZW5kaWYKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lYTk3NWZlZWYwMTM2ZgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnMKQEAgLTAsMCAmIzQzOzEsMjA0IEBACiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyMKJiM0MzsjIFNoYXJlZCB0b29sY2hhaW4sIHBhdGggYW5kIGZsYWcgZGVmaW5pdGlvbnMgZm9yIHRoZSBCUEYgc2VsZnRlc3RzIGJ1aWxkLgomIzQzOyMgSW5jbHVkZWQgYnkgYm90aCBNYWtlZmlsZSAodGhlIHRvcCBsZXZlbCkgYW5kIE1ha2VmaWxlLnJ1bm5lciAob25lCiYjNDM7IyB0ZXN0LXJ1bm5lciBpbnN0YW5jZSkuCiYjNDM7IwomIzQzOyMgUmVxdWlyZW1lbnRzIGF0IGluY2x1ZGUgdGltZToKJiM0MzsjICAgLSAkKE9VVFBVVCkgaXMgc2V0IHRvIGFuIGFic29sdXRlIHBhdGgKJiM0MzsjICAgLSB0b29scy9idWlsZC9CdWlsZC5pbmNsdWRlLCB0b29scy9zY3JpcHRzL01ha2VmaWxlLmFyY2ggYW5kCiYjNDM7IyAgICAgdG9vbHMvc2NyaXB0cy9NYWtlZmlsZS5pbmNsdWRlIGhhdmUgYmVlbiBpbmNsdWRlZCAoZm9yIFNSQ0FSQ0ggZXRjLikKJiM0MzsKJiM0MztDWFggPz0gJChDUk9TU19DT01QSUxFKWcmIzQzOyYjNDM7CiYjNDM7UEtHX0NPTkZJRyA/PSAkKENST1NTX0NPTVBJTEUpcGtnLWNvbmZpZwomIzQzOwomIzQzO1RPT0xTRElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLikKJiM0MztMSUJESVIgOj0gJChUT09MU0RJUikvbGliCiYjNDM7QlBGRElSIDo9ICQoTElCRElSKS9icGYKJiM0MztUT09MU0lOQ0RJUiA6PSAkKFRPT0xTRElSKS9pbmNsdWRlCiYjNDM7VE9PTFNBUkNISU5DRElSIDo9ICQoVE9PTFNESVIpL2FyY2gvJChTUkNBUkNIKS9pbmNsdWRlCiYjNDM7QlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbAomIzQzO0FQSURJUiA6PSAkKFRPT0xTSU5DRElSKS91YXBpCiYjNDM7aWZuZXEgKCQoTyksKQomIzQzO0dFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkCiYjNDM7ZWxzZQomIzQzO0dFTkRJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4vaW5jbHVkZS9nZW5lcmF0ZWQpCiYjNDM7ZW5kaWYKJiM0MztHRU5IRFIgOj0gJChHRU5ESVIpL2F1dG9jb25mLmgKJiM0MzsKJiM0MztpZm5lcSAoJCh3aWxkY2FyZCAkKEdFTkhEUikpLCkKJiM0MzsgIEdFTkZMQUdTIDo9IC1ESEFWRV9HRU5IRFIKJiM0MztlbmRpZgomIzQzOwomIzQzO2lmZXEgKCQoc3JjdHJlZSksKQomIzQzO3NyY3RyZWUgOj0gJChhYnNwYXRoIC4uLy4uLy4uLy4uKQomIzQzO2VuZGlmCiYjNDM7CiYjNDM7IyBJbW1lZGlhdGUgKHdpdGggYW4gb3ZlcnJpZGUtcHJlc2VydmluZyBndWFyZCk6IGEgcGxhaW4gPz0gc3RheXMKJiM0MzsjIHJlY3Vyc2l2ZWx5IGV4cGFuZGVkIGFuZCB3b3VsZCByZS1ydW4gJiMzOTtjb21tYW5kIC12JiMzOTsgb24gZXZlcnkgZXhwYW5zaW9uLgomIzQzO2lmZXEgKCQob3JpZ2luIEJQRl9HQ0MpLHVuZGVmaW5lZCkKJiM0MztCUEZfR0NDCQk6PSAkKHNoZWxsIGNvbW1hbmQgLXYgYnBmLWdjYzspCiYjNDM7ZW5kaWYKJiM0MztpZmRlZiBBU0FOCiYjNDM7U0FOX0NGTEFHUwk/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIKJiM0MztlbHNlCiYjNDM7U0FOX0NGTEFHUwk/PQomIzQzO2VuZGlmCiYjNDM7U0FOX0xERkxBR1MJPz0gJChTQU5fQ0ZMQUdTKQomIzQzO1JFTEVBU0UJCT89CiYjNDM7T1BUX0ZMQUdTCT89ICQoaWYgJChSRUxFQVNFKSwtTzIsLU8wKQomIzQzOwomIzQzO0xJQkVMRl9DRkxBR1MJOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWNmbGFncyAyJmd0Oy9kZXYvbnVsbCkKJiM0MztMSUJFTEZfTElCUwk6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyJmd0Oy9kZXYvbnVsbCB8fCBlY2hvIC1sZWxmKQomIzQzOwomIzQzO1NLSVBfRE9DUwk/PQomIzQzO1NLSVBfTExWTQk/PQomIzQzO1NLSVBfTElCQkZECT89CiYjNDM7U0tJUF9DUllQVE8JPz0KJiM0MzsKJiM0MzsjIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvcgomIzQzOyMgYmVuY2htYXJrIGNvbXBpbGF0aW9uIGZhaWx1cmUgaXMgZmF0YWwuIFNldCB0byAwIHRvIHRvbGVyYXRlIGZhaWx1cmVzCiYjNDM7IyBhbmQgY29udGludWUgYnVpbGRpbmcgdGhlIHJlbWFpbmluZyB0ZXN0cy4KJiM0MztCUEZfU1RSSUNUX0JVSUxEID89IDEKJiM0MztQRVJNSVNTSVZFIDo9ICQoZmlsdGVyIDAsJChCUEZfU1RSSUNUX0JVSUxEKSkKJiM0MzsKJiM0MzsjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgc3VmZml4OiBvbiBmYWlsdXJlLCByZW1vdmUgdGhlIHRhcmdldCwgZW1pdCBhCiYjNDM7IyBTS0lQIG1hcmtlciBhbmQgcmVwb3J0IHN1Y2Nlc3Mgc28gdGhlIHJlc3Qgb2YgdGhlIGJ1aWxkIGNvbnRpbnVlcy4KJiM0MzsjICQoMSkgLSBTS0lQIHRhZyAoQlBGLCBURVNULCBCRU5DSCwgU0tFTCwgTElOSywgLi4uKQomIzQzOyMgJCgyKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldAomIzQzOyMgJCgzKSAtIG9wdGlvbmFsIG5vdGUgYXBwZW5kZWQgdG8gdGhlIFNLSVAgbWVzc2FnZQomIzQzO3NraXBfb25fZmFpbCA9ICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7ICQoUk0pICRAICQoMik7IFwKJiM0MzsJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLSQoMSkmIzM5OyAmIzM5OyQobm90ZGlyICRAKSQoaWYgJCgzKSwgJCgzKSkmIzM5OyAxJmd0OyZhbXA7MjsgfSkKJiM0MzsKJiM0MzsjIEtlcm5lbCB0ZXN0IG1vZHVsZXM7IFRFU1RfS01PRFM9IG9uIHRoZSBjb21tYW5kIGxpbmUgZGlzYWJsZXMgdGhlbS4KJiM0MztURVNUX0tNT0RTID89IGJwZl90ZXN0bW9kLmtvIGJwZl90ZXN0X25vX2NmaS5rbyBicGZfdGVzdF9tb2RvcmRlcl94LmtvIFwKJiM0MzsJYnBmX3Rlc3RfbW9kb3JkZXJfeS5rbyBicGZfdGVzdF9ycXNwaW5sb2NrLmtvCiYjNDM7VEVTVF9LTU9EX1RBUkdFVFMgPSAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLCQoVEVTVF9LTU9EUykpCiYjNDM7CiYjNDM7IyBPdXRwdXQtdHJlZSBsYXlvdXQuIERlZmluZWQgYmVmb3JlIENPTU1PTl9DRkxBR1Mgb24gcHVycG9zZTogQ0ZMQUdTCiYjNDM7IyBiZWxvdyBpcyBleHBhbmRlZCBpbW1lZGlhdGVseSBhbmQgcmVmZXJlbmNlcyAkKElOQ0xVREVfRElSKS4KJiM0MztTQ1JBVENIX0RJUiA6PSAkKE9VVFBVVCkvdG9vbHMKJiM0MztCVUlMRF9ESVIgOj0gJChTQ1JBVENIX0RJUikvYnVpbGQKJiM0MztJTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlCiYjNDM7QlBGT0JKIDo9ICQoQlVJTERfRElSKS9saWJicGYvbGliYnBmLmEKJiM0MztpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpCiYjNDM7SE9TVF9CVUlMRF9ESVIJCTo9ICQoQlVJTERfRElSKS9ob3N0CiYjNDM7SE9TVF9TQ1JBVENIX0RJUgk6PSAkKE9VVFBVVCkvaG9zdC10b29scwomIzQzO0hPU1RfSU5DTFVERV9ESVIJOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9pbmNsdWRlCiYjNDM7ZWxzZQomIzQzO0hPU1RfQlVJTERfRElSCQk6PSAkKEJVSUxEX0RJUikKJiM0MztIT1NUX1NDUkFUQ0hfRElSCTo9ICQoU0NSQVRDSF9ESVIpCiYjNDM7SE9TVF9JTkNMVURFX0RJUgk6PSAkKElOQ0xVREVfRElSKQomIzQzO2VuZGlmCiYjNDM7SE9TVF9CUEZPQkogOj0gJChIT1NUX0JVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hCiYjNDM7UkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHMKJiM0MzsKJiM0MztERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2wKJiM0MztpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpCiYjNDM7Q1JPU1NfQlBGVE9PTCA6PSAkKFNDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2wKJiM0MztUUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKQomIzQzO1VTRV9CT09UU1RSQVAgOj0KJiM0MztlbHNlCiYjNDM7VFJVTk5FUl9CUEZUT09MIDo9ICQoREVGQVVMVF9CUEZUT09MKQomIzQzO1VTRV9CT09UU1RSQVAgOj0gYm9vdHN0cmFwLwomIzQzO2VuZGlmCiYjNDM7QlBGVE9PTCA/PSAkKERFRkFVTFRfQlBGVE9PTCkKJiM0MzsKJiM0MztDT01NT05fQ0ZMQUdTID0gLWcgJChPUFRfRkxBR1MpIC1yZHluYW1pYyAtc3RkPWdudTExCQkJXAomIzQzOwkgIC1XYWxsIC1XZXJyb3IgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIJCQkJXAomIzQzOwkgIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUJCQkJCVwKJiM0MzsJICAkKEdFTkZMQUdTKSAkKFNBTl9DRkxBR1MpICQoTElCRUxGX0NGTEFHUykJCQlcCiYjNDM7CSAgLUkkKENVUkRJUikgLUkkKElOQ0xVREVfRElSKSAtSSQoR0VORElSKSAtSSQoTElCRElSKQkJXAomIzQzOwkgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVCkJXAomIzQzOwkgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUKJiM0MztMREZMQUdTICYjNDM7PSAkKFNBTl9MREZMQUdTKQomIzQzO0xETElCUyAmIzQzOz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkCiYjNDM7CiYjNDM7UENBUF9DRkxBR1MJOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGxpYnBjYXAgMiZndDsvZGV2L251bGwgJmFtcDsmYW1wOyBlY2hvICYjMzQ7LURUUkFGRklDX01PTklUT1I9MSYjMzQ7KQomIzQzO1BDQVBfTElCUwk6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYnBjYXAgMiZndDsvZGV2L251bGwpCiYjNDM7TERMSUJTICYjNDM7PSAkKFBDQVBfTElCUykKJiM0MzsjIFByZXBlbmQgcmF0aGVyIHRoYW4gYXBwZW5kOiB0aGUgaW5jbHVkZS1zZWFyY2ggb3JkZXIgbXVzdCBzdGF5CiYjNDM7IyAmIzM0OyQoQ09NTU9OX0NGTEFHUykgZmlyc3QsIGxpYi5tayBhZGRpdGlvbnMgYWZ0ZXImIzM0OyByZWdhcmRsZXNzIG9mIHdoZXRoZXIKJiM0MzsjIGxpYi5tayB3YXMgaW5jbHVkZWQgYmVmb3JlIHRoaXMgZmlsZSAodG9wIGxldmVsKSBvciBub3QgYXQgYWxsIChydW5uZXIpLgomIzQzO0NGTEFHUyA6PSAkKENPTU1PTl9DRkxBR1MpICQoUENBUF9DRkxBR1MpICQoQ0ZMQUdTKQomIzQzOwomIzQzO2lmbmVxICgkKExMVk0pLCkKJiM0MzsjIFNpbGVuY2Ugc29tZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHdpdGggY2xhbmcKJiM0MztDRkxBR1MgJiM0Mzs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudAomIzQzO2VuZGlmCiYjNDM7CiYjNDM7IyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMiYjNDM7KQomIzQzO0NMQU5HX0hBU19BUkVOQV9BU0FOIDo9ICQoc2hlbGwgZWNobyAmIzM5O2ludCB4OyYjMzk7IHwgXAomIzQzOwkkKENMQU5HKSAtLXRhcmdldD1icGYgLWZzYW5pdGl6ZT1rZXJuZWwtYWRkcmVzcyBcCiYjNDM7CS1tbGx2bSAtYXNhbi1zaGFkb3ctYWRkci1zcGFjZT0xIFwKJiM0MzsJLXggYyAtYyAtIC1vIC9kZXYvbnVsbCAyJmd0Oy9kZXYvbnVsbCAmYW1wOyZhbXA7IGVjaG8gMSkKJiM0MztpZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKQomIzQzO0NGTEFHUyAmIzQzOz0gLURIQVNfQlBGX0FSRU5BX0FTQU4KJiM0MztlbmRpZgomIzQzOwomIzQzO1ZNTElOVVhfQlRGX1BBVEhTID89ICQoaWYgJChPKSwkKE8pL3ZtbGludXgpCQkJCVwKJiM0MzsJCSAgICAgJChpZiAkKEtCVUlMRF9PVVRQVVQpLCQoS0JVSUxEX09VVFBVVCkvdm1saW51eCkJXAomIzQzOwkJICAgICAuLi8uLi8uLi8uLi92bWxpbnV4CQkJCVwKJiM0MzsJCSAgICAgL3N5cy9rZXJuZWwvYnRmL3ZtbGludXgJCQkJXAomIzQzOwkJICAgICAvYm9vdC92bWxpbnV4LSQoc2hlbGwgdW5hbWUgLXIpCiYjNDM7Vk1MSU5VWF9CVEYgPz0gJChhYnNwYXRoICQoZmlyc3R3b3JkICQod2lsZGNhcmQgJChWTUxJTlVYX0JURl9QQVRIUykpKSkKJiM0MztpZmVxICgkKFZNTElOVVhfQlRGKSwpCiYjNDM7JChlcnJvciBDYW5ub3QgZmluZCBhIHZtbGludXggZm9yIFZNTElOVVhfQlRGIGF0IGFueSBvZiAmIzM0OyQoVk1MSU5VWF9CVEZfUEFUSFMpJiMzNDspCiYjNDM7ZW5kaWYKJiM0MzsKJiM0MzsjIEdldCBDbGFuZyYjMzk7cyBkZWZhdWx0IGluY2x1ZGVzIG9uIHRoaXMgc3lzdGVtLCBhcyBvcHBvc2VkIHRvIHRob3NlIHNlZW4gYnkKJiM0MzsjICYjMzk7LS10YXJnZXQ9YnBmJiMzOTsuIFRoaXMgZml4ZXMgJiMzNDttaXNzaW5nJiMzNDsgZmlsZXMgb24gc29tZSBhcmNoaXRlY3R1cmVzL2Rpc3Ryb3MsCiYjNDM7IyBzdWNoIGFzIGFzbS9ieXRlb3JkZXIuaCwgYXNtL3NvY2tldC5oLCBhc20vc29ja2lvcy5oLCBzeXMvY2RlZnMuaCBldGMuCiYjNDM7IwomIzQzOyMgVXNlICYjMzk7LWlkaXJhZnRlciYjMzk7OiBEb24mIzM5O3QgaW50ZXJmZXJlIHdpdGggaW5jbHVkZSBtZWNoYW5pY3MgZXhjZXB0IHdoZXJlIHRoZQomIzQzOyMgYnVpbGQgd291bGQgaGF2ZSBmYWlsZWQgYW55d2F5cy4KJiM0MztkZWZpbmUgZ2V0X3N5c19pbmNsdWRlcwomIzQzOyQoc2hlbGwgJCgxKSAkKDIpIC12IC1FIC0gJmx0Oy9kZXYvbnVsbCAyJmd0OyZhbXA7MSBcCiYjNDM7CXwgc2VkIC1uICYjMzk7LyZsdDsuLi4mZ3Q7IHNlYXJjaCBzdGFydHMgaGVyZTovLC9FbmQgb2Ygc2VhcmNoIGxpc3QuL3sgc3wgXCgvLipcKXwtaWRpcmFmdGVyIFwxfHAgfSYjMzk7KSBcCiYjNDM7JChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX3Jpc2N2X3hsZW4gJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKCYjMzQ7LURfX3Jpc2N2X3hsZW49JWQgLURfX0JJVFNfUEVSX0xPTkc9JWQmIzM0OywgJCQzLCAkJDMpfSYjMzk7KSBcCiYjNDM7JChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX2xvb25nYXJjaF9ncmxlbiAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoJiMzNDstRF9fQklUU19QRVJfTE9ORz0lZCYjMzQ7LCAkJDMpfSYjMzk7KSBcCiYjNDM7JChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IGdyZXAgLUUgJiMzOTtNSVBTKEVMfEVCKXxfTUlQU19TWihQVFJ8TE9ORykgfF9NSVBTX1NJTSB8X0FCSShPMzJ8TjMyfDY0KSAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoJiMzNDstRCVzPSVzICYjMzQ7LCAkJDIsICQkMyl9JiMzOTspCiYjNDM7ZW5kZWYKJiM0MzsKJiM0MzsjIERldGVybWluZSB0YXJnZXQgZW5kaWFubmVzcy4KJiM0MztJU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IFwKJiM0MzsJCQlncmVwICYjMzk7ZGVmaW5lIF9fQllURV9PUkRFUl9fIF9fT1JERVJfTElUVExFX0VORElBTl9fJiMzOTspCiYjNDM7TUVORElBTiA6PSAkKGlmICQoSVNfTElUVExFX0VORElBTiksLW1saXR0bGUtZW5kaWFuLC1tYmlnLWVuZGlhbikKJiM0MztCUEZfVEFSR0VUX0VORElBTiA6PSAkKGlmICQoSVNfTElUVExFX0VORElBTiksLS10YXJnZXQ9YnBmZWwsLS10YXJnZXQ9YnBmZWIpCiYjNDM7CiYjNDM7aWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKQomIzQzO0NMQU5HX1RBUkdFVF9BUkNIID0gLS10YXJnZXQ9JChub3RkaXIgJChDUk9TU19DT01QSUxFOiUtPSUpKQomIzQzO2VuZGlmCiYjNDM7CiYjNDM7Q0xBTkdfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLCQoQ0xBTkcpLCQoQ0xBTkdfVEFSR0VUX0FSQ0gpKQomIzQzO0JQRl9DRkxBR1MgPSAtZyAtV2FsbCAtV2Vycm9yIC1EX19UQVJHRVRfQVJDSF8kKFNSQ0FSQ0gpICQoTUVORElBTikJXAomIzQzOwkgICAgIC1JJChJTkNMVURFX0RJUikgLUkkKENVUkRJUikgLUkkKEFQSURJUikJCQlcCiYjNDM7CSAgICAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZQkJCQlcCiYjNDM7CSAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKQkJCVwKJiM0MzsJICAgICAtc3RkPWdudTExCQkgCQkJCQlcCiYjNDM7CSAgICAgLWZuby1zdHJpY3QtYWxpYXNpbmcgCQkJCQlcCiYjNDM7CSAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWcJCQkJCVwKJiM0MzsJICAgICAtZm1zLWV4dGVuc2lvbnMJCQkJCQlcCiYjNDM7CSAgICAgLVduby1jb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXMJCQlcCiYjNDM7CSAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXMJCQkJCVwKJiM0MzsJICAgICAjCiYjNDM7IyBUT0RPOiBlbmFibGUgbWUgLVdzaWduLWNvbXBhcmUKJiM0MzsKJiM0MztDTEFOR19DRkxBR1MgPSAkKENMQU5HX1NZU19JTkNMVURFUykKJiM0MzsKJiM0MzsjIFNpZ25pbmcga2V5L2NlcnQgc2hhcmVkIGJ5IHRoZSBzaWduZWQgbGlnaHQgc2tlbGV0b25zIGFuZCB0ZXN0X3Byb2dzLgomIzQzO1ZFUklGWV9TSUdfU0VUVVAgOj0gJChDVVJESVIpL3ZlcmlmeV9zaWdfc2V0dXAuc2gKJiM0MztWRVJJRllfU0lHX0hEUiA6PSB2ZXJpZmljYXRpb25fY2VydC5oCiYjNDM7VkVSSUZJQ0FUSU9OX0NFUlQgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LmRlcgomIzQzO1BSSVZBVEVfS0VZIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5wZW0KJiM0MzsKJiM0MzsjIGxpYmFyZW5hIHNrZWxldG9ucywgYnVpbHQgYnkgdGhlIGxpYmFyZW5hLyBzdWItbWFrZSAoZHJpdmVuIGJ5IHRoZSB0b3AKJiM0MzsjIGxldmVsIE1ha2VmaWxlKTsgdGVzdF9wcm9ncyBhbmQgaXRzIGZsYXZvcnMgZGVwZW5kIG9uIHRoZSBoZWFkZXJzLgomIzQzO0xJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oCiYjNDM7aWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLCkKJiM0MztMSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmgKJiM0MztlbmRpZgomIzQzOwomIzQzO2lmbmVxICgkKFYpLDEpCiYjNDM7c3VibWFrZV9leHRyYXMgOj0gZmVhdHVyZV9kaXNwbGF5PTAKJiM0MztlbmRpZgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnJ1bm5lciBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjRjNThjYzUxZjI1MTRlCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnJ1bm5lcgpAQCAtMCwwICYjNDM7MSwzMTMgQEAKJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7IwomIzQzOyMgQnVpbGQgb25lIEJQRiB0ZXN0LXJ1bm5lciBpbnN0YW5jZTogdGVzdF9wcm9ncywgb25lIG9mIGl0cyBmbGF2b3JzCiYjNDM7IyAobm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjKSwgb3IgdGVzdF9tYXBzLgomIzQzOyMKJiM0MzsjIEVhY2ggaW5zdGFuY2UgaXMgYW4gaW5kZXBlbmRlbnQgc3ViLW1ha2Ugd2l0aCBpdHMgb3duIG91dHB1dCBkaXJlY3RvcnksCiYjNDM7IyBzbyBldmVyeXRoaW5nIGhlcmUgaXMgd3JpdHRlbiBpbiBwbGFpbiBtYWtlIC0gbm8gJCQtZXNjYXBpbmcsIG5vIGV2YWwsCiYjNDM7IyBubyBwZXItZmxhdm9yIGd1YXJkcy4gVGhpcyBmaWxlIGlzIGFsd2F5cyBpbnZva2VkIGJ5IHRoZSBtYWluIE1ha2VmaWxlLAomIzQzOyMgbmV2ZXIgZGlyZWN0bHk6IGFsbCBzaGFyZWQgcHJlcmVxdWlzaXRlcyAobGliYnBmLCBicGZ0b29sLCB2bWxpbnV4LmgsCiYjNDM7IyB2ZXJpc3RhdCwgaGVscGVyIG9iamVjdHMsIHNpZ25pbmcga2V5LCBnZW5lcmF0ZWQgdGVzdHMuaCwgZXh0cmEKJiM0MzsjIGJpbmFyaWVzKSBhcmUgYnVpbHQgYnkgdGhlIG1haW4gTWFrZWZpbGUgKmJlZm9yZSogdGhpcyBvbmUgcnVucyBhbmQgYXJlCiYjNDM7IyByZWZlcmVuY2VkIGJlbG93IGFzIHBsYWluIGZpbGVzLgomIzQzOyMKJiM0MzsjIFBhcmFtZXRlcnMgKGFsbCBwYXNzZWQgb24gdGhlIHN1Yi1tYWtlIGNvbW1hbmQgbGluZSk6CiYjNDM7IyAgIE9VVFBVVCAgICAgIGFic29sdXRlIHBhdGggb2YgdGhlIHNlbGZ0ZXN0cyBvdXRwdXQgZGlyZWN0b3J5CiYjNDM7IyAgIFJVTk5FUiAgICAgIGJhc2UgYmluYXJ5IG5hbWU6IHRlc3RfcHJvZ3MgfCB0ZXN0X21hcHMKJiM0MzsjICAgRkxBVk9SICAgICAgZmxhdm9yIHN1ZmZpeDogZW1wdHkgfCBub19hbHUzMiB8IGNwdXY0IHwgYnBmX2djYwomIzQzOyMgICBURVNUU19ESVIgICBkaXJlY3Rvcnkgd2l0aCB0aGUgdGVzdCBzb3VyY2VzOiBwcm9nX3Rlc3RzIHwgbWFwX3Rlc3RzCiYjNDM7IyAgIEJQRl9CVUlMRCAgIGhvdyB0byBidWlsZCBwcm9ncy8qLmMgQlBGIG9iamVjdHM6IGNsYW5nIHwgZ2NjIHwgbm9uZQomIzQzOyMgICBCUEZfTUNQVSAgICBjbGFuZyAtbWNwdT0gdmFsdWU6IHYyIHwgdjMgfCB2NAomIzQzOyMgICBCUEZfREVGSU5FUyBleHRyYSBkZWZpbmVzIGZvciBCUEYgb2JqZWN0cyAoZS5nLiAtREVOQUJMRV9BVE9NSUNTX1RFU1RTKQomIzQzOyMgICBDQyAgICAgICAgICBDIGNvbXBpbGVyIChhcyByZXNvbHZlZCBieSBsaWIubWsgaW4gdGhlIG1haW4gTWFrZWZpbGUpCiYjNDM7IyAgIExMVk1fQ0ZMQUdTL0xMVk1fTERMSUJTL0xMVk1fTERGTEFHUwomIzQzOyMgICAgICAgICAgICAgICByZXN1bHRzIG9mIHRoZSB0b3AtbGV2ZWwgTExWTSBmZWF0dXJlIHByb2JlCiYjNDM7CiYjNDM7aW5jbHVkZSAuLi8uLi8uLi9idWlsZC9CdWlsZC5pbmNsdWRlCiYjNDM7aW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2gKJiM0MztpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZQomIzQzOwomIzQzOyMgU2FtZSBtZXNzYWdlIGhlbHBlcnMgYXMgLi4vbGliLm1rLCB3aGljaCBvbmx5IHRoZSB0b3AgbGV2ZWwgaW5jbHVkZXMuCiYjNDM7aWZlcSAoJChWKSwxKQomIzQzO1EgPQomIzQzO21zZyA9CiYjNDM7ZWxzZQomIzQzO1EgPSBACiYjNDM7bXNnID0gQHByaW50ZiAmIzM5OyAgJS04cyVzICVzJXNcbiYjMzk7ICYjMzQ7JCgxKSYjMzQ7ICYjMzQ7JChpZiAkKDIpLCBbJCgyKV0pJiMzNDsgJiMzNDskKG5vdGRpciAkKDMpKSYjMzQ7ICYjMzQ7JChpZiAkKDQpLCAkKDQpKSYjMzQ7OwomIzQzO01BS0VGTEFHUyAmIzQzOz0gLS1uby1wcmludC1kaXJlY3RvcnkKJiM0MztlbmRpZgomIzQzOwomIzQzO2luY2x1ZGUgTWFrZWZpbGUuYnVpbGR2YXJzCiYjNDM7CiYjNDM7IyBLZWVwIGluIHN5bmMgd2l0aCB0aGUgQ0ZMQUdTL0xERkxBR1MgYWRkaXRpb25zIGluIC4uL2xpYi5tay4KJiM0MztDRkxBR1MgJiM0Mzs9IC1EX0dOVV9TT1VSQ0U9CiYjNDM7Q0ZMQUdTICYjNDM7PSAtSSQoc3JjdHJlZSkvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMKJiM0MztDRkxBR1MgJiM0Mzs9ICQoVVNFUkNGTEFHUykKJiM0MztMREZMQUdTICYjNDM7PSAkKFVTRVJMREZMQUdTKQomIzQzO2lmbmVxICgkKExMVk0pLCkKJiM0MztDRkxBR1MgJiM0Mzs9IC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyCiYjNDM7Q0ZMQUdTICYjNDM7PSAtV25vLWdudS12YXJpYWJsZS1zaXplZC10eXBlLW5vdC1hdC1lbmQKJiM0MztlbmRpZgomIzQzOwomIzQzO0JJTkFSWSA6PSAkKFJVTk5FUikkKGlmICQoRkxBVk9SKSwtJChGTEFWT1IpKQomIzQzO1JESVIgICA6PSAkKE9VVFBVVCkkKGlmICQoRkxBVk9SKSwvJChGTEFWT1IpKQomIzQzOwomIzQzO2FsbDogJChPVVRQVVQpLyQoQklOQVJZKQomIzQzOy5QSE9OWTogYWxsCiYjNDM7CiYjNDM7IyBEZWxldGUgcGFydGlhbGx5IHVwZGF0ZWQgKGNvcnJ1cHRlZCkgZmlsZXMgb24gZXJyb3IKJiM0MzsuREVMRVRFX09OX0VSUk9SOgomIzQzOwomIzQzOyMgUGVybWlzc2l2ZSBza2lwLW9uLWZhaWx1cmUgb2YgaW5kaXZpZHVhbCB0ZXN0cyBhcHBsaWVzIHRvIHRlc3RfcHJvZ3MgYW5kCiYjNDM7IyBpdHMgZmxhdm9ycyBvbmx5OyB0ZXN0X21hcHMgdXNlcyBzdHJvbmcgY3Jvc3Mtb2JqZWN0IHJlZmVyZW5jZXMgYW5kIGtlZXBzCiYjNDM7IyBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBCUEZfU1RSSUNUX0JVSUxEPTAuCiYjNDM7UEVSTUlTU0lWRV9URVNUUyA6PSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MsJChSVU5ORVIpKSwkKFBFUk1JU1NJVkUpKQomIzQzOwomIzQzOyQoUkRJUik6CiYjNDM7CSQoY2FsbCBtc2csTUtESVIsLCRAKQomIzQzOwkkKFEpbWtkaXIgLXAgJEAKJiM0MzsKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgUGVyLXJ1bm5lciBzb3VyY2VzCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsKJiM0MztpZmVxICgkKFJVTk5FUiksdGVzdF9wcm9ncykKJiM0MztFWFRSQV9TT1VSQ0VTIDo9IHRlc3RfcHJvZ3MuYyBjZ3JvdXBfaGVscGVycy5jIHRyYWNlX2hlbHBlcnMuYwkJXAomIzQzOwkJIG5ldHdvcmtfaGVscGVycy5jIHRlc3RpbmdfaGVscGVycy5jIGJ0Zl9oZWxwZXJzLmMJXAomIzQzOwkJIGNhcF9oZWxwZXJzLmMgdW5wcml2X2hlbHBlcnMuYyBzeXNjdGxfaGVscGVycy5jCVwKJiM0MzsJCSBuZXRsaW5rX2hlbHBlcnMuYyBqaXRfZGlzYXNtX2hlbHBlcnMuYyBpb19oZWxwZXJzLmMJXAomIzQzOwkJIHRlc3RfbG9hZGVyLmMgeHNrLmMgZGlzYXNtLmMgZGlzYXNtX2hlbHBlcnMuYwkJXAomIzQzOwkJIGpzb25fd3JpdGVyLmMgYnBmdG9vbF9oZWxwZXJzLmMgdXNkdF8xLmMgdXNkdF8yLmMKJiM0MztMSUJfU09VUkNFUyA6PSBmaW5kX2JpdC5jCiYjNDM7RVhUUkFfSERSUyA6PSBmbG93X2Rpc3NlY3Rvcl9sb2FkLmggaXBfY2hlY2tfZGVmcmFnX2ZyYWdzLmgJCVwKJiM0MzsJICAgICAgJChWRVJJRllfU0lHX0hEUikgJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTCkKJiM0MztFWFRSQV9GSUxFUyA6PSAkKE9VVFBVVCkvdXJhbmRvbV9yZWFkICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc28JXAomIzQzOwkgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eSAkKE9VVFBVVCkvc2lnbi1maWxlCQlcCiYjNDM7CSAgICAgICAkKE9VVFBVVCkvdXByb2JlX211bHRpCQkJCQlcCiYjNDM7CSAgICAgICAkKFRFU1RfS01PRF9UQVJHRVRTKQkJCQkJXAomIzQzOwkgICAgICAgaW1hX3NldHVwLnNoICQoVkVSSUZZX1NJR19TRVRVUCkJCQkJXAomIzQzOwkgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKQkJCVwKJiM0MzsJICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubykKJiM0MztlbmRpZgomIzQzOwomIzQzO2lmZXEgKCQoUlVOTkVSKSx0ZXN0X21hcHMpCiYjNDM7RVhUUkFfU09VUkNFUyA6PSB0ZXN0X21hcHMuYyB0ZXN0aW5nX2hlbHBlcnMuYwomIzQzO2VuZGlmCiYjNDM7CiYjNDM7IyBOb3RlIG9uIHRoZSB1bmZsYXZvcmVkIHJ1bm5lcnMsIHdoaWNoIHNoYXJlICQoT1VUUFVUKSB3aXRoIHRoZSBtYWluCiYjNDM7IyBNYWtlZmlsZTogaGVscGVyIG9iamVjdHMgdGhlIG1haW4gTWFrZWZpbGUgYWxzbyB1c2VzIChhbmQgbGlzdHMgaW4gdGhlCiYjNDM7IyBydW5uZXIgcHJlcmVxdWlzaXRlcykgYXJlIGFscmVhZHkgYnVpbHQgYW5kIGZyZXNoIHdoZW4gYSBydW5uZXIgc3RhcnRzLAomIzQzOyMgc28gdGhlIHJ1bGVzIGJlbG93IGZpbmQgdGhlbSB1cCB0byBkYXRlIGFuZCBuZXZlciB3cml0ZSB0aGVtLgomIzQzOwomIzQzO1RFU1RTX0hEUiA6PSAkKFRFU1RTX0RJUikvdGVzdHMuaAomIzQzOwomIzQzO1RFU1RfU1JDUyAgOj0gJChub3RkaXIgJCh3aWxkY2FyZCAkKFRFU1RTX0RJUikvKi5jKSkKJiM0MztURVNUX09CSlMgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS50ZXN0Lm8sJChURVNUX1NSQ1MpKQomIzQzO1RFU1RfREVQUyAgOj0gJChURVNUX09CSlM6Lm89LmQpCiYjNDM7RVhUUkFfT0JKUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubywkKGZpbHRlciAlLmMsJChFWFRSQV9TT1VSQ0VTKSkpCiYjNDM7TElCX09CSlMgICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubywkKExJQl9TT1VSQ0VTKSkKJiM0MzsKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9ucwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7CiYjNDM7aWZuZXEgKCQoQlBGX0JVSUxEKSxub25lKQomIzQzOwomIzQzO0JQRl9TUkNTIDo9ICQobm90ZGlyICQod2lsZGNhcmQgcHJvZ3MvKi5jKSkKJiM0MztCUEZfT0JKUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUuYnBmLm8sJChCUEZfU1JDUykpCiYjNDM7CiYjNDM7IyBXaGljaCB0ZXN0cyB3YW50IGEgbGlnaHQgc2tlbGV0b24gaXMgZGVyaXZlZCBmcm9tIHRoZSB0ZXN0IHNvdXJjZXMKJiM0MzsjIHRoZW1zZWx2ZXM6IGFuICYjMzk7I2luY2x1ZGUgJiMzNDtmb28ubHNrZWwuaCYjMzQ7JiMzOTsgbGluZSBpcyB0aGUgc2luZ2xlIHNvdXJjZSBvZgomIzQzOyMgdHJ1dGguIFRlc3RzIHRoYXQgaW5jbHVkZSBib3RoIGZvby5za2VsLmggYW5kIGZvby5sc2tlbC5oIGdldCBib3RoLgomIzQzO3NrZWxfaW5jbHVkZXMgPSAkKHNoZWxsIGdyZXAgLXJob0UgJiMzOTsmIzM0O1thLXpBLVowLTlfXSYjNDM7XC4kKDEpJiMzNDsmIzM5OyBwcm9nX3Rlc3RzIGJlbmNocyBtYXBfdGVzdHMgKi5jICouY3BwIDImZ3Q7L2Rldi9udWxsKQomIzQzO0xTS0VMX0JBU0VTIDo9ICQoc29ydCAkKHBhdHN1YnN0ICYjMzQ7JS5sc2tlbC5oJiMzNDssJSwkKGNhbGwgc2tlbF9pbmNsdWRlcyxsc2tlbC5oKSkpCiYjNDM7U0tFTF9ERU1BTkRFRCA6PSAkKHNvcnQgJChwYXRzdWJzdCAmIzM0OyUuc2tlbC5oJiMzNDssJSwkKGNhbGwgc2tlbF9pbmNsdWRlcyxza2VsLmgpKSkKJiM0MzsKJiM0MzsjIFNpZ25pbmcgaXMgbm90IGV4cHJlc3NlZCBpbiB0aGUgaW5jbHVkZSwgc28gdGhlIHNpZ25lZCBzdWJzZXQgc3RheXMKJiM0MzsjIGV4cGxpY2l0LgomIzQzO0xTS0VMU19TSUdORUQgOj0gZmVudHJ5X3Rlc3QgZmV4aXRfdGVzdCBhdG9taWNzCiYjNDM7CiYjNDM7IyBCUEYgb2JqZWN0cyB0aGF0IGNhbm5vdCBoYXZlIGEgcmVndWxhciBza2VsZXRvbiwgcGx1cyBsc2tlbC1vbmx5IHRlc3RzCiYjNDM7IyAobGlnaHQtc2tlbGV0b24gdXNlcnMgd2hvc2Ugc291cmNlcyBuZXZlciBpbmNsdWRlIHRoZSAuc2tlbC5oIGZvcm0pLgomIzQzO1NLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmMgXAomIzQzOwkJICAkKGFkZHN1ZmZpeCAuYywkKGZpbHRlci1vdXQgJChTS0VMX0RFTUFOREVEKSwkKExTS0VMX0JBU0VTKSkpCiYjNDM7CiYjNDM7IyBTa2VsZXRvbnMgbWFkZSBieSBsaW5raW5nIG11bHRpcGxlIEJQRiBvYmplY3RzIHRvZ2V0aGVyLiBUaGUgJS1kZXBzCiYjNDM7IyBtYXBwaW5nIGlzIHRoZSBvbmx5IGhhbmQtbWFpbnRhaW5lZCBtZXRhZGF0YTogaXQgY2Fubm90IGJlIGRlcml2ZWQgZnJvbQomIzQzOyMgdGhlIHNvdXJjZXMuCiYjNDM7dGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3RhdGljX2xpbmtlZDEuYnBmLm8gdGVzdF9zdGF0aWNfbGlua2VkMi5icGYubwomIzQzO2xpbmtlZF9mdW5jcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfZnVuY3MxLmJwZi5vIGxpbmtlZF9mdW5jczIuYnBmLm8KJiM0MztsaW5rZWRfdmFycy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfdmFyczEuYnBmLm8gbGlua2VkX3ZhcnMyLmJwZi5vCiYjNDM7bGlua2VkX21hcHMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX21hcHMxLmJwZi5vIGxpbmtlZF9tYXBzMi5icGYubwomIzQzOyMgSW4gdGhlIHN1YnNrZWxldG9uIGNhc2UsIHdlIHdhbnQgdGhlIHRlc3Rfc3Vic2tlbGV0b25fbGliLnN1YnNrZWwuaCBmaWxlCiYjNDM7IyBidXQgdGhhdCYjMzk7cyBjcmVhdGVkIGFzIGEgc2lkZS1lZmZlY3Qgb2YgdGhlIHNrZWwuaCBnZW5lcmF0aW9uLgomIzQzO3Rlc3Rfc3Vic2tlbGV0b24uc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b24uYnBmLm8KJiM0Mzt0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm8KJiM0Mzt0ZXN0X3VzZHQuc2tlbC5oLWRlcHMgOj0gdGVzdF91c2R0LmJwZi5vIHRlc3RfdXNkdF9tdWx0aXNwZWMuYnBmLm8KJiM0Mzt0cmFjaW5nX211bHRpLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm8KJiM0Mzt0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaF9tb2R1bGUuYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYubwomIzQzO3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vCiYjNDM7dHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfc2Vzc2lvbl9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYubwomIzQzOwomIzQzO0xJTktFRF9TS0VMUyA6PSB0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oIGxpbmtlZF9mdW5jcy5za2VsLmgJCVwKJiM0MzsJCWxpbmtlZF92YXJzLnNrZWwuaCBsaW5rZWRfbWFwcy5za2VsLmgJCQlcCiYjNDM7CQl0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmgJXAomIzQzOwkJdGVzdF91c2R0LnNrZWwuaCB0cmFjaW5nX211bHRpLnNrZWwuaAkJCVwKJiM0MzsJCXRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaAkJCQlcCiYjNDM7CQl0cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmgJCQkJXAomIzQzOwkJdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaAomIzQzO0xJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoZm9yZWFjaCBza2VsLCQoTElOS0VEX1NLRUxTKSwkKCQoc2tlbCktZGVwcykpKQomIzQzOwomIzQzO1NLRUxTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5za2VsLmgsCQkJCVwKJiM0MzsJICAgJChmaWx0ZXItb3V0ICQoU0tFTF9CTEFDS0xJU1QpICQoTElOS0VEX0JQRl9TUkNTKSwkKEJQRl9TUkNTKSkpCiYjNDM7TFNLRUxTX0ggICAgICAgIDo9ICQocGF0c3Vic3QgJSwkKFJESVIpLyUubHNrZWwuaCwkKGZpbHRlci1vdXQgJChMU0tFTFNfU0lHTkVEKSwkKExTS0VMX0JBU0VTKSkpCiYjNDM7TFNLRUxTX1NJR05FRF9IIDo9ICQocGF0c3Vic3QgJSwkKFJESVIpLyUubHNrZWwuaCwkKExTS0VMU19TSUdORUQpKQomIzQzO0xJTktFRF9TS0VMU19IICA6PSAkKGFkZHByZWZpeCAkKFJESVIpLywkKExJTktFRF9TS0VMUykpCiYjNDM7QUxMX1NLRUxTIDo9ICQoU0tFTFMpICQoTFNLRUxTX0gpICQoTFNLRUxTX1NJR05FRF9IKSAkKExJTktFRF9TS0VMU19IKQomIzQzOwomIzQzO0hFQURFUlNfRk9SX0JQRl9PQkpTIDo9ICQod2lsZGNhcmQgJChCUEZESVIpLyouYnBmLmgpCQkJXAomIzQzOwkJCSQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKQlcCiYjNDM7CQkJJChhZGRwcmVmaXggJChCUEZESVIpLywJYnBmX2NvcmVfcmVhZC5oCQlcCiYjNDM7CQkJCQkJYnBmX2VuZGlhbi5oCQlcCiYjNDM7CQkJCQkJYnBmX2hlbHBlcnMuaAkJXAomIzQzOwkJCQkJCWJwZl90cmFjaW5nLmgpCiYjNDM7CiYjNDM7IyBQZXItc291cmNlIEJQRiBjb21waWxhdGlvbiBmbGFnIG92ZXJyaWRlcyAoJCZsdDstQ0ZMQUdTIC8gJCZsdDstJChGTEFWT1IpLUNGTEFHUykuCiYjNDM7IyBHQ0MgY2Fubm90IGRpc2FibGUgJiMzNDtkZWNsYXJhdGlvbiBvZiBhbm9ueW1vdXMgc3RydWN0IGluIHBhcmFtZXRlciBsaXN0JiMzNDsKJiM0MzsjIHdhcm5pbmdzIHRyaWdnZXJlZCBieSB0aGVzZSAodGVjaG5pY2FsbHkgbGVnYWwpIHRlc3QgcHJvZ3JhbXMuCiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX2JpdGZpZWxkcy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3IKJiM0Mztwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfbmFtZXNwYWNpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhY2tpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhZGRpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3N5bnRheC5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3IKJiM0MzsKJiM0MztpZmVxICgkKEJQRl9CVUlMRCksZ2NjKQomIzQzO0JQRl9DQ19NU0cgOj0gR0NDLUJQRgomIzQzOyMgTm90ZTogc3lzIGluY2x1ZGVzIGNvbWUgZnJvbSB0aGUgKmhvc3QqIGdjYywgbm90ICQoQlBGX0dDQykgLSBicGYtZ2NjJiMzOTtzCiYjNDM7IyBvd24gc2VhcmNoIHBhdGggbGFja3MgdGhlIGhvc3QmIzM5O3MgYXNtLWdlbmVyaWMvIGhlYWRlcnMuIENvbXB1dGVkIG9uY2UKJiM0MzsjIGhlcmU6IGJwZl9jYyBiZWxvdyBpcyBkZWZlcnJlZCBhbmQgZXhwYW5kcyBwZXIgY29tcGlsZWQgb2JqZWN0LgomIzQzO0dDQ19TWVNfSU5DTFVERVMgOj0gJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsZ2NjLCkKJiM0MzticGZfY2MgPSAkKEJQRl9HQ0MpICQoQlBGX0NGTEFHUykgJChHQ0NfU1lTX0lOQ0xVREVTKQkJCVwKJiM0MzsJICQoQlBGX0RFRklORVMpICQoJCZsdDstQ0ZMQUdTKSAkKCQmbHQ7LSQoRkxBVk9SKS1DRkxBR1MpCQlcCiYjNDM7CSAtREJQRl9OT19QUkVTRVJWRV9BQ0NFU1NfSU5ERVggLVduby1hdHRyaWJ1dGVzIC1PMiAtYyAkJmx0OyAtbyAkQAomIzQzO2Vsc2UKJiM0MztCUEZfQ0NfTVNHIDo9IENMTkctQlBGCiYjNDM7YnBmX2NjID0gJChDTEFORykgJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykgJChCUEZfREVGSU5FUykJCVwKJiM0MzsJICQoJCZsdDstQ0ZMQUdTKSAkKCQmbHQ7LSQoRkxBVk9SKS1DRkxBR1MpCQkJCVwKJiM0MzsJIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkJmx0OyAtbWNwdT0kKEJQRl9NQ1BVKSAtbyAkQAomIzQzO2VuZGlmCiYjNDM7CiYjNDM7JChCUEZfT0JKUyk6ICQoUkRJUikvJS5icGYubzogcHJvZ3MvJS5jIHByb2dzLyouaAkJCVwKJiM0MzsJICAgICAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChIRUFERVJTX0ZPUl9CUEZfT0JKUykJCVwKJiM0MzsJICAgICB8ICQoUkRJUikgJChCUEZPQkopCiYjNDM7CSQoY2FsbCBtc2csJChCUEZfQ0NfTVNHKSwkKEJJTkFSWSksJEApCiYjNDM7CSQoUSkkKGJwZl9jYykgJChjYWxsIHNraXBfb25fZmFpbCxCUEYpCiYjNDM7CiYjNDM7IyBnZW5fYnBmX3NrZWwuc2ggcGlja3MgdGhlIGJwZnRvb2wgYmluYXJ5IHVwIGZyb20gdGhlIGVudmlyb25tZW50LgomIzQzO2V4cG9ydCBCUEZUT09MCiYjNDM7R0VOX1NLRUwgOj0gLi9nZW5fYnBmX3NrZWwuc2gKJiM0MzsKJiM0MzskKFNLRUxTKTogJChSRElSKS8lLnNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkgfCAkKFJESVIpCiYjNDM7CSQoUSkkKEdFTl9TS0VMKSAtLXRhZyAmIzM5OyQoQklOQVJZKSYjMzk7IC0tbmFtZSAkKiAtLWluZml4IGxpbmtlZAlcCiYjNDM7CQktLXNrZWwgJEAgLS1zdWJza2VsICQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQmbHQ7CQlcCiYjNDM7CQkkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpCiYjNDM7CiYjNDM7JChMU0tFTFNfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKSB8ICQoUkRJUikKJiM0MzsJJChRKSQoR0VOX1NLRUwpIC0tdGFnICYjMzk7JChCSU5BUlkpJiMzOTsgLS1uYW1lICQqX2xza2VsIC0taW5maXggbGxpbmtlZCBcCiYjNDM7CQktLWxza2VsIC0tc2tlbCAkQCAkJmx0OyAkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwpCiYjNDM7CiYjNDM7JChMU0tFTFNfU0lHTkVEX0gpOiAkKFJESVIpLyUubHNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkJXAomIzQzOwkJICAgICQoUFJJVkFURV9LRVkpICQoVkVSSUZJQ0FUSU9OX0NFUlQpIHwgJChSRElSKQomIzQzOwkkKFEpJChHRU5fU0tFTCkgLS10YWcgJiMzOTskKEJJTkFSWSkgKHNpZ25lZCkmIzM5OyAtLW5hbWUgJCpfbHNrZWwJXAomIzQzOwkJLS1pbmZpeCBsbGlua2VkCQkJCQkJXAomIzQzOwkJLS1zaWduICYjMzk7LVMgLWsgJChQUklWQVRFX0tFWSkgLWkgJChWRVJJRklDQVRJT05fQ0VSVCkmIzM5OwlcCiYjNDM7CQktLXNrZWwgJEAgJCZsdDsgJChjYWxsIHNraXBfb25fZmFpbCxTS0VMKQomIzQzOwomIzQzOy5TRUNPTkRFWFBBTlNJT046CiYjNDM7JChMSU5LRURfU0tFTFNfSCk6ICQoUkRJUikvJS5za2VsLmg6ICQkKGFkZHByZWZpeCAkKFJESVIpLywkJCgkJCouc2tlbC5oLWRlcHMpKSBcCiYjNDM7CQkgICAkKEJQRlRPT0wpIHwgJChSRElSKQomIzQzOwkkKFEpJChHRU5fU0tFTCkgLS10YWcgJiMzOTskKEJJTkFSWSkmIzM5OyAtLW5hbWUgJCogLS1pbmZpeCBsaW5rZWQJXAomIzQzOwkJLS1za2VsICRAIC0tc3Vic2tlbCAkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKQkJXAomIzQzOwkJJChhZGRwcmVmaXggJChSRElSKS8sJCgkKi5za2VsLmgtZGVwcykpCQkJXAomIzQzOwkJJChjYWxsIHNraXBfb25fZmFpbCxTS0VMLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKQomIzQzOwomIzQzO2VuZGlmICMgQlBGX0JVSUxEICE9IG5vbmUKJiM0MzsKJiM0MzsuUEhPTlk6IHNrZWxzCiYjNDM7c2tlbHM6ICQoQUxMX1NLRUxTKQomIzQzOwomIzQzOyMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdCBmdWxsCiYjNDM7IyBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciB0aGUgY29ycmVzcG9uZGluZyAlLm8gZmlsZS4KJiM0MzsjIFRoZSB2cGF0aCBkaXJlY3RpdmVzIGluc3RydWN0IG1ha2UgdG8gYWxzbyBzZWFyY2ggZm9yIHNrZWwgZmlsZXMgaW4KJiM0MzsjICQoUkRJUikgaWYgdGhleSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LgomIzQzO3ZwYXRoICUuc2tlbC5oICQoUkRJUikKJiM0Mzt2cGF0aCAlLmxza2VsLmggJChSRElSKQomIzQzO3ZwYXRoICUuc3Vic2tlbC5oICQoUkRJUikKJiM0MzsKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgVGVzdCBvYmplY3RzIGFuZCBydW5uZXIgYmluYXJ5CiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsKJiM0MzskKFJESVIpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogJChSRVNPTFZFX0JURklEUykgJChSRElSKS9idGZfZGF0YS5icGYubwomIzQzOyQoUkRJUikvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiBwcml2YXRlIFRFU1RfTkVFRFNfQlRGSURTID0gMQomIzQzOwomIzQzOyMgQ29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXMuCiYjNDM7IyBOb3RlOiB3ZSBjZCBpbnRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0cwomIzQzOyMgYXJlIGZvdW5kLiBUaGUgJS50ZXN0LmQgZGVwZW5kZW5jeSBmaWxlcyBhcmUgYSBzaWRlIGVmZmVjdCBvZiB0aGUgLU1NRAomIzQzOyMgYmVsb3c7IHRoZSBzZXBhcmF0ZSBuby1yZWNpcGUgcnVsZSBmb3IgdGhlbSBvcmRlcnMgdGhlIGZpcnN0CiYjNDM7IyBjb21waWxhdGlvbiBhZnRlciBza2VsZXRvbiBnZW5lcmF0aW9uIGFuZCByZS1vcmRlcnMgdGVzdCBvYmplY3QKJiM0MzsjIGNvbXBpbGF0aW9uIHdoZW4gaGVhZGVycyBjaGFuZ2UuCiYjNDM7JChURVNUX09CSlMpOiAkKFJESVIpLyUudGVzdC5vOiAkKFRFU1RTX0RJUikvJS5jIHwgJChSRElSKS8lLnRlc3QuZAomIzQzOwkkKGNhbGwgbXNnLFRFU1QtT0JKLCQoQklOQVJZKSwkQCkKJiM0MzsJJChRKShjZCAkKEBEKSAmYW1wOyZhbXA7ICQoQ0MpIC1JLiAkKENGTEFHUykgLU1NRCAtTVQgJEAgLWMgJChDVVJESVIpLyQmbHQ7IC1vICQoQEYpKSBcCiYjNDM7CQkkKGlmICQoUEVSTUlTU0lWRV9URVNUUyksJChjYWxsIHNraXBfb25fZmFpbCxURVNUKSkKJiM0MzsJJChpZiAkKFRFU1RfTkVFRFNfQlRGSURTKSwJCQkJCVwKJiM0MzsJCSQoUSlpZiBbIC1mICRAIF07IHRoZW4JCQkJCVwKJiM0MzsJCSQoaWYgJChmaWx0ZXIgMSwkKFYpKSx0cnVlLHByaW50ZiAmIzM5OyAgJS04cyVzICVzXG4mIzM5OyAmIzM0O0JURklEUyYjMzQ7ICYjMzQ7IFskKEJJTkFSWSldJiMzNDsgJiMzNDskKG5vdGRpciAkQCkmIzM0Oyk7IFwKJiM0MzsJCSQoUkVTT0xWRV9CVEZJRFMpIC0tYnRmICQoUkRJUikvYnRmX2RhdGEuYnBmLm8gJEA7CVwKJiM0MzsJCSQoUkVTT0xWRV9CVEZJRFMpIC0tcGF0Y2hfYnRmaWRzICRALkJURl9pZHMgJEA7CQlcCiYjNDM7CQlmaSkKJiM0MzsKJiM0MzskKFRFU1RfREVQUyk6ICQoUkRJUikvJS50ZXN0LmQ6ICQoVEVTVFNfRElSKS8lLmMgJChFWFRSQV9IRFJTKSAkKEJQRk9CSikgXAomIzQzOwkgICAgICB8ICQoUkRJUikgJChBTExfU0tFTFMpCiYjNDM7CiYjNDM7aW5jbHVkZSAkKHdpbGRjYXJkICQoVEVTVF9ERVBTKSkKJiM0MzsKJiM0MzskKFJESVIpL2ppdF9kaXNhc21faGVscGVycy5vOiBDRkxBR1MgJiM0Mzs9ICQoTExWTV9DRkxBR1MpCiYjNDM7CiYjNDM7JChFWFRSQV9PQkpTKTogJChSRElSKS8lLm86ICUuYyAkKEVYVFJBX0hEUlMpICQoVEVTVFNfSERSKSAkKEJQRk9CSikgfCAkKFJESVIpCiYjNDM7CSQoY2FsbCBtc2csRVhULU9CSiwkKEJJTkFSWSksJEApCiYjNDM7CSQoUSkkKENDKSAkKENGTEFHUykgLWMgJCZsdDsgLW8gJEAKJiM0MzsKJiM0MzskKExJQl9PQkpTKTogJChSRElSKS8lLm86ICQoVE9PTFNESVIpL2xpYi8lLmMgfCAkKFJESVIpCiYjNDM7CSQoY2FsbCBtc2csTElCLU9CSiwkKEJJTkFSWSksJEApCiYjNDM7CSQoUSkkKENDKSAkKENGTEFHUykgLWMgJCZsdDsgLW8gJEAKJiM0MzsKJiM0MzsjIE5vbi1mbGF2b3JlZCBpbi1zcmN0cmVlIGJ1aWxkcyByZWNlaXZlIHNwZWNpYWwgdHJlYXRtZW50LCBpbiBwYXJ0aWN1bGFyCiYjNDM7IyB3ZSBkbyBub3QgbmVlZCB0byBjb3B5IGV4dHJhIHJlc291cmNlcyAoc2VlIGUuZy4gdGVzdF9idGZfZHVtcF9jYXNlKCkpLgomIzQzOy5QSE9OWTogZXh0cmFzCiYjNDM7ZXh0cmFzOiAkKGlmICQoUEVSTUlTU0lWRSksJCh3aWxkY2FyZCAkKEVYVFJBX0ZJTEVTKSksJChFWFRSQV9GSUxFUykpIHwgJChSRElSKQomIzQzO2lmbmVxICgkKEZMQVZPUik6JChPVVRQVVQpLDokKENVUkRJUikpCiYjNDM7aWZuZXEgKCQoc3RyaXAgJChFWFRSQV9GSUxFUykpLCkKJiM0MzsJJChjYWxsIG1zZyxFWFQtQ09QWSwkKEJJTkFSWSksJChub3RkaXIgJChFWFRSQV9GSUxFUykpKQomIzQzOwkkKFEpcnN5bmMgLWFxICQoaWYgJChQRVJNSVNTSVZFKSwtLWlnbm9yZS1taXNzaW5nLWFyZ3MpICQoRVhUUkFfRklMRVMpICQoUkRJUikvCiYjNDM7ZW5kaWYKJiM0MztlbmRpZgomIzQzOwomIzQzOyMgSW4gcGVybWlzc2l2ZSBtb2RlLCBsaW5rIHdoYXRldmVyIHRlc3Qgb2JqZWN0cyB3ZXJlIHN1Y2Nlc3NmdWxseSBidWlsdAomIzQzOyMgKHRoZWlyIGNvbXBpbGF0aW9uIG1heSBoYXZlIGJlZW4gc2tpcHBlZCk7IHRoZSB3aWxkY2FyZCBpbiB0aGUgcmVjaXBlCiYjNDM7IyBwaWNrcyB1cCB0aGUgc3Vydml2b3JzIGF0IGxpbmsgdGltZS4KJiM0MzsjIFByZXJlcXVpc2l0ZSBvcmRlciBpcyBhbHNvIGxpbmsgb3JkZXIgKHRlc3Qgb2JqZWN0cywgZXh0cmEgb2JqZWN0cywKJiM0MzsjIGxpYmJwZiwgbGliIG9iamVjdHMpLgomIzQzOyQoT1VUUFVUKS8kKEJJTkFSWSk6ICQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwsJChURVNUX09CSlMpKQkJXAomIzQzOwkJICAgICAkKEVYVFJBX09CSlMpICQoQlBGT0JKKSAkKExJQl9PQkpTKQkJXAomIzQzOwkJICAgICAkKFRSVU5ORVJfQlBGVE9PTCkgJChPVVRQVVQpL3ZlcmlzdGF0CQlcCiYjNDM7CQkgICAgIHwgZXh0cmFzICQoQlBGX09CSlMpCQkJCVwKJiM0MzsJCSAgICAgJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQoVEVTVF9PQkpTKSkKJiM0MzsJJChjYWxsIG1zZyxCSU5BUlksLCRAKQomIzQzOwkkKFEpJChDQykgJChDRkxBR1MpCQkJCQkJXAomIzQzOwkJJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKSkJXAomIzQzOwkJJChmaWx0ZXIgJS5hICUubywkXikJCQkJCVwKJiM0MzsJCSQoTERMSUJTKSAkKExMVk1fTERMSUJTKSAkKExERkxBR1MpICQoTExWTV9MREZMQUdTKSAtbyAkQAomIzQzOwkkKFEpbG4gLXNmICQoaWYgJChGTEFWT1IpLC4uLC4pL3Rvb2xzL2J1aWxkL2JwZnRvb2wvJChVU0VfQk9PVFNUUkFQKWJwZnRvb2wgXAomIzQzOwkJICAgJChSRElSKS9icGZ0b29sCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMC4uMGIyMzdmNjM5NjdkZDYKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoCkBAIC0wLDAgJiM0MzsxLDk3IEBACiYjNDM7IyEvYmluL2Jhc2gKJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7IwomIzQzOyMgTGluayBCUEYgb2JqZWN0IGZpbGUocykgd2l0aCAmIzM0O2JwZnRvb2wgZ2VuIG9iamVjdCYjMzQ7IGFuZCBnZW5lcmF0ZSBhCiYjNDM7IyBza2VsZXRvbiAob3IgbGlnaHQgc2tlbGV0b24pIGhlYWRlciBmcm9tIHRoZSByZXN1bHQuCiYjNDM7IwomIzQzOyMgVXNhZ2U6CiYjNDM7IyAgIEJQRlRPT0w9Jmx0O2JwZnRvb2wmZ3Q7IGdlbl9icGZfc2tlbC5zaCAtLW5hbWUgTkFNRSAtLXNrZWwgT1VUIFtvcHRpb25zXSBPQkouLi4KJiM0MzsjCiYjNDM7IyAgIC0tbmFtZSBOQU1FICAgICAgIHNrZWxldG9uIG9iamVjdCBuYW1lICgmIzM0O25hbWUgTkFNRSYjMzQ7IGZvciBicGZ0b29sKQomIzQzOyMgICAtLXNrZWwgT1VUICAgICAgICBvdXRwdXQgaGVhZGVyICgmIzM0O2Zvby5za2VsLmgmIzM0OyBvciAmIzM0O2Zvby5sc2tlbC5oJiMzNDspCiYjNDM7IyAgIC0tc3Vic2tlbCBPVVQgICAgIGFsc28gZ2VuZXJhdGUgYSBzdWJza2VsZXRvbiBoZWFkZXIgaW50byBPVVQKJiM0MzsjICAgLS1sc2tlbCAgICAgICAgICAgZ2VuZXJhdGUgYSBsaWdodCBza2VsZXRvbiAoYnBmdG9vbCBnZW4gc2tlbGV0b24gLUwpCiYjNDM7IyAgIC0tc2lnbiAmIzM5O0FSR1MmIzM5OyAgICAgZXh0cmEgJiMzNDtnZW4gc2tlbGV0b24mIzM0OyBhcmdzIGZvciBzaWduaW5nICgtUyAtayAuLiAtaSAuLikKJiM0MzsjICAgLS10YWcgVEFHICAgICAgICAgYnVpbGQtbG9nIHRhZywgZS5nLiAmIzM0O3Rlc3RfcHJvZ3Mtbm9fYWx1MzImIzM0OwomIzQzOyMgICAtLWluZml4IFNUUiAgICAgICBpbnRlcm1lZGlhdGUgZmlsZSBpbmZpeCAoZGVmYXVsdDogbGlua2VkKS4gQ2FsbGVycwomIzQzOyMgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW5nIGJvdGggYSAuc2tlbC5oIGFuZCBhIC5sc2tlbC5oIGZyb20gdGhlCiYjNDM7IyAgICAgICAgICAgICAgICAgICAgIHNhbWUgLmJwZi5vIE1VU1QgdXNlIGRpc3RpbmN0IGluZml4ZXMsIG9yIHBhcmFsbGVsCiYjNDM7IyAgICAgICAgICAgICAgICAgICAgIGJ1aWxkcyByYWNlIG9uIHRoZSBpbnRlcm1lZGlhdGUgZmlsZXMuCiYjNDM7IyAgIC0tbm8tZGV0ZXJtaW5pc20tY2hlY2sKJiM0MzsjICAgICAgICAgICAgICAgICAgICAgbGluayB0aGUgaW5wdXRzIG9uY2UgaW5zdGVhZCBvZiB0aHJlZSB0aW1lcy4KJiM0MzsjICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCB0aGUgb2JqZWN0IGlzIHJlLWxpbmtlZCB0d2ljZSBtb3JlIGFuZAomIzQzOyMgICAgICAgICAgICAgICAgICAgICB0aGUgMm5kIGFuZCAzcmQgcmVzdWx0cyBjb21wYXJlZCwgYXMgYSByZWdyZXNzaW9uCiYjNDM7IyAgICAgICAgICAgICAgICAgICAgIHRlc3QgZm9yIHRoZSBkZXRlcm1pbmlzbSBvZiAmIzM0O2JwZnRvb2wgZ2VuIG9iamVjdCYjMzQ7LgomIzQzOyMKJiM0MzsjIFRoZSBicGZ0b29sIGJpbmFyeSBpcyB0YWtlbiBmcm9tICRCUEZUT09MIChkZWZhdWx0OiBicGZ0b29sIGZyb20gUEFUSCkuCiYjNDM7IyBPbiBmYWlsdXJlIGFsbCBvdXRwdXRzIGFuZCBpbnRlcm1lZGlhdGVzIGFyZSByZW1vdmVkIGFuZCB0aGUgc2NyaXB0CiYjNDM7IyBleGl0cyBub24temVybzsgcGVybWlzc2l2ZS1tb2RlIHNraXBwaW5nIGlzIHRoZSBjYWxsZXImIzM5O3MgYnVzaW5lc3MKJiM0MzsjIChzZWUgc2tpcF9vbl9mYWlsIGluIE1ha2VmaWxlLmJ1aWxkdmFycykuCiYjNDM7CiYjNDM7c2V0IC11CiYjNDM7CiYjNDM7YnBmdG9vbD0ke0JQRlRPT0w6LWJwZnRvb2x9CiYjNDM7bmFtZT0mIzM5OyYjMzk7IHNrZWw9JiMzOTsmIzM5OyBzdWJza2VsPSYjMzk7JiMzOTsgdGFnPSYjMzk7JiMzOTsgc2lnbl9hcmdzPSYjMzk7JiMzOTsgaW5maXg9bGlua2VkCiYjNDM7bHNrZWw9MCBkZXRfY2hlY2s9MQomIzQzOwomIzQzO3doaWxlIFsgJCMgLWd0IDAgXTsgZG8KJiM0MzsJY2FzZSAmIzM0OyQxJiMzNDsgaW4KJiM0MzsJLS1uYW1lKQkJbmFtZT0kMjsgc2hpZnQgMiA7OwomIzQzOwktLXNrZWwpCQlza2VsPSQyOyBzaGlmdCAyIDs7CiYjNDM7CS0tc3Vic2tlbCkJc3Vic2tlbD0kMjsgc2hpZnQgMiA7OwomIzQzOwktLXRhZykJCXRhZz0kMjsgc2hpZnQgMiA7OwomIzQzOwktLWluZml4KQlpbmZpeD0kMjsgc2hpZnQgMiA7OwomIzQzOwktLXNpZ24pCQlzaWduX2FyZ3M9JDI7IHNoaWZ0IDIgOzsKJiM0MzsJLS1sc2tlbCkJbHNrZWw9MTsgc2hpZnQgOzsKJiM0MzsJLS1uby1kZXRlcm1pbmlzbS1jaGVjaykgZGV0X2NoZWNrPTA7IHNoaWZ0IDs7CiYjNDM7CS0tKQkJc2hpZnQ7IGJyZWFrIDs7CiYjNDM7CS0qKQkJZWNobyAmIzM0OyQwOiB1bmtub3duIG9wdGlvbjogJDEmIzM0OyAmZ3Q7JmFtcDsyOyBleGl0IDEgOzsKJiM0MzsJKikJCWJyZWFrIDs7CiYjNDM7CWVzYWMKJiM0Mztkb25lCiYjNDM7CiYjNDM7aWYgWyAteiAmIzM0OyRuYW1lJiMzNDsgXSB8fCBbIC16ICYjMzQ7JHNrZWwmIzM0OyBdIHx8IFsgJCMgLWVxIDAgXTsgdGhlbgomIzQzOwllY2hvICYjMzQ7dXNhZ2U6ICQwIC0tbmFtZSBOQU1FIC0tc2tlbCBPVVQgW29wdGlvbnNdIE9CSi4uLiYjMzQ7ICZndDsmYW1wOzIKJiM0MzsJZXhpdCAxCiYjNDM7ZmkKJiM0MzsKJiM0MztiYXNlPSR7c2tlbCUuc2tlbC5ofQomIzQzO2Jhc2U9JHtiYXNlJS5sc2tlbC5ofQomIzQzO3QxPSRiYXNlLiR7aW5maXh9MS5vCiYjNDM7dDI9JGJhc2UuJHtpbmZpeH0yLm8KJiM0Mzt0Mz0kYmFzZS4ke2luZml4fTMubwomIzQzOwomIzQzO2ZhaWwoKSB7CiYjNDM7CXJtIC1mICYjMzQ7JHNrZWwmIzM0OyAke3N1YnNrZWw6JiM0MzsmIzM0OyRzdWJza2VsJiMzNDt9ICYjMzQ7JHQxJiMzNDsgJiMzNDskdDImIzM0OyAmIzM0OyR0MyYjMzQ7CiYjNDM7CWV4aXQgMQomIzQzO30KJiM0MzsKJiM0MztpZiBbICQjIC1ndCAxIF07IHRoZW4KJiM0MzsJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtMSU5LLUJQRiYjMzk7ICYjMzQ7JHt0YWc6JiM0MztbJHRhZ10gfSQoYmFzZW5hbWUgJiMzNDskYmFzZSYjMzQ7KS5icGYubyYjMzQ7ICZndDsmYW1wOzIKJiM0MztmaQomIzQzO3ByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyAmIzM0OyR7dGFnOiYjNDM7WyR0YWddIH0kKGJhc2VuYW1lICYjMzQ7JHNrZWwmIzM0OykmIzM0OyAmZ3Q7JmFtcDsyCiYjNDM7CiYjNDM7JiMzNDskYnBmdG9vbCYjMzQ7IGdlbiBvYmplY3QgJiMzNDskdDEmIzM0OyAmIzM0OyRAJiMzNDsgfHwgZmFpbAomIzQzO2ZpbmFsPSR0MQomIzQzO2lmIFsgJiMzNDskZGV0X2NoZWNrJiMzNDsgLWVxIDEgXTsgdGhlbgomIzQzOwkmIzM0OyRicGZ0b29sJiMzNDsgZ2VuIG9iamVjdCAmIzM0OyR0MiYjMzQ7ICYjMzQ7JHQxJiMzNDsgfHwgZmFpbAomIzQzOwkmIzM0OyRicGZ0b29sJiMzNDsgZ2VuIG9iamVjdCAmIzM0OyR0MyYjMzQ7ICYjMzQ7JHQyJiMzNDsgfHwgZmFpbAomIzQzOwlpZiAhIGNtcCAtcyAmIzM0OyR0MiYjMzQ7ICYjMzQ7JHQzJiMzNDs7IHRoZW4KJiM0MzsJCWVjaG8gJiMzNDskMDogYnBmdG9vbCBnZW4gb2JqZWN0IGlzIG5vdCBkZXRlcm1pbmlzdGljIGZvciAkc2tlbCYjMzQ7ICZndDsmYW1wOzIKJiM0MzsJCWZhaWwKJiM0MzsJZmkKJiM0MzsJZmluYWw9JHQzCiYjNDM7ZmkKJiM0MzsKJiM0MztmbGFncz0KJiM0MztbICYjMzQ7JGxza2VsJiMzNDsgLWVxIDEgXSAmYW1wOyZhbXA7IGZsYWdzPS1MCiYjNDM7IyAkc2lnbl9hcmdzIGludGVudGlvbmFsbHkgdW5xdW90ZWQ6IGl0IGlzIGEgbGlzdCBvZiBicGZ0b29sIGFyZ3VtZW50cwomIzQzOyMgc2hlbGxjaGVjayBkaXNhYmxlPVNDMjA4NgomIzQzOyYjMzQ7JGJwZnRvb2wmIzM0OyBnZW4gc2tlbGV0b24gJHNpZ25fYXJncyAkZmxhZ3MgJiMzNDskZmluYWwmIzM0OyBuYW1lICYjMzQ7JG5hbWUmIzM0OyAmZ3Q7ICYjMzQ7JHNrZWwmIzM0OyB8fCBmYWlsCiYjNDM7CiYjNDM7aWYgWyAtbiAmIzM0OyRzdWJza2VsJiMzNDsgXTsgdGhlbgomIzQzOwkmIzM0OyRicGZ0b29sJiMzNDsgZ2VuIHN1YnNrZWxldG9uICYjMzQ7JGZpbmFsJiMzNDsgbmFtZSAmIzM0OyRuYW1lJiMzNDsgJmd0OyAmIzM0OyRzdWJza2VsJiMzNDsgfHwgZmFpbAomIzQzO2ZpCiYjNDM7CiYjNDM7cm0gLWYgJiMzNDskdDEmIzM0OyAmIzM0OyR0MiYjMzQ7ICYjMzQ7JHQzJiMzNDsKJiM0MztleGl0IDAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTM6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEzNjgKCQkJCQkJCW91dHB1dDogNjQKCQkJCQkJCXRob3VnaHRzOiAyNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBUaGlzIEJQRiBTZWxmdGVzdHMgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggaGVyZSwgYW5kIGl0JiMzOTtzIGFsbCBhYm91dCByZWZhY3RvcmluZyB0aGUgYnVpbGQgc3lzdGVtIGZvciB0aGUgQlBGIHNlbGZ0ZXN0cy4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBtZXNzaW5nIHdpdGggdGhlIGBNYWtlZmlsZWAgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBUaGV5JiMzOTtyZSBzcGxpdHRpbmcgaXQgdXAgaW50byBgTWFrZWZpbGUuYnVpbGR2YXJzYCwgYE1ha2VmaWxlLnJ1bm5lcmAsIGFuZCBhZGRpbmcgYGdlbl9icGZfc2tlbC5zaGAuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgYXBwcm9hY2ggZm9yIGNvbXBsZXggYnVpbGQgc3lzdGVtczsgaXQgbWFrZXMgdGhpbmdzIG1vcmUgb3JnYW5pemVkIGFuZCBwb3RlbnRpYWxseSBzcGVlZHMgdXAgcGFyYWxsZWwgYnVpbGRzLCB3aGljaCBJIGFwcHJlY2lhdGUuCgpJJiMzOTt2ZSB0YWtlbiBhIGNsb3NlIGxvb2ssIGFuZCBjb25maXJtZWQgdGhhdCB0aGUgY2hhbmdlcyBhcmUgaXNvbGF0ZWQgdG8gdGhpcyB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLiBJdCBkb2VzbiYjMzk7dCB0b3VjaCBhbnkgY29yZSBrZXJuZWwgY29kZSwgYW55IGRyaXZlcnMsIG9yIGFueXRoaW5nIGFyY2hpdGVjdHVyZS1zcGVjaWZpYy4gSXQmIzM5O3Mgc3RyaWN0bHkgYWJvdXQgaG93IHRoZSB0ZXN0cyB0aGVtc2VsdmVzIGFyZSBidWlsdCBhbmQgcnVuLgoKVGhlcmVmb3JlLCBnaXZlbiB0aGF0IGl0JiMzOTtzIGp1c3QgYnVpbGQgc3lzdGVtIGNoYW5nZXMgZm9yIHNlbGZ0ZXN0cywgSSYjMzk7bSBnb2luZyB0byBmbGFnIHRoaXMgYXMgbm90IGJlaW5nIHJlbGV2YW50IGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEzOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgYnVpbGQgc3lzdGVtIGZvciBCUEYgc2VsZnRlc3RzIChNYWtlZmlsZXMgYW5kIGEgc2hlbGwgc2NyaXB0KS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGJ1aWxkIHN5c3RlbSBmb3IgQlBGIHNlbGZ0ZXN0cyAoTWFrZWZpbGVzIGFuZCBhIHNoZWxsIHNjcmlwdCkuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjJUMTM6Mjk6MjMuNTQ3NDM3NDA5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ4MTgxMDI1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgYnVpbGQgc3lzdGVtIGZvciBCUEYgc2VsZnRlc3RzIChNYWtlZmlsZXMgYW5kIGEgc2hlbGwgc2NyaXB0KS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEzOjI5OjIzLjU0NzQ0Mzk0OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODEwNDcyMzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGUwY2E5MGJiN2ZhMzczZWM4ZjdlNGZmMTc2NGY4MWVhYmNjYTk2NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAyMiAxMzoyOToyMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcXG5pbmRleCBiNjQyZWU0ODllYTY0MC4uYTNhYjUyNWY3ZGZhYmIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXFxuQEAgLTEsOTYgKzEsNDQgQEBcXG4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjXFxuKyMgQlBGIHNlbGZ0ZXN0cyBidWlsZC5cXG4rI1xcbisjIFRoZSBidWlsZCBpcyBzcGxpdCBpbiB0d28gbGF5ZXJzOlxcbisjXFxuKyMgICBNYWtlZmlsZSAodGhpcyBmaWxlKVxcbisjICAgICAgIEV2ZXJ5dGhpbmcgdGhhdCBleGlzdHMgb25jZToga25vYnMgYW5kIHRvb2xjaGFpbiBzZXR1cCwgbGliYnBmIC9cXG4rIyAgICAgICBicGZ0b29sIC8gcmVzb2x2ZV9idGZpZHMgc3ViLWJ1aWxkcywgdm1saW51eC5oLCBzaWduaW5nIGtleXMsXFxuKyMgICAgICAgZ2VuZXJhdGVkIHRlc3RzLmggaGVhZGVycywgc2hhcmVkIGhlbHBlciBvYmplY3RzLCBzdGFuZGFsb25lIHRlc3RcXG4rIyAgICAgICBiaW5hcmllcyAoYmVuY2gsIHZlcmlzdGF0LCB0ZXN0X3ZlcmlmaWVyLCB4c2sqLCAuLi4pLCBrZXJuZWwgdGVzdFxcbisjICAgICAgIG1vZHVsZXMsIGRvY3MsIGFuZCB0aGUga3NlbGZ0ZXN0IGxpYi5tayBydW4vaW5zdGFsbC9jbGVhblxcbisjICAgICAgIGNvbnRyYWN0LlxcbisjXFxuKyMgICBNYWtlZmlsZS5ydW5uZXJcXG4rIyAgICAgICBPbmUgdGVzdC1ydW5uZXIgaW5zdGFuY2UgKHRlc3RfcHJvZ3MsIHRlc3RfcHJvZ3MtXFx1MDAzY2ZsYXZvclxcdTAwM2UsXFxuKyMgICAgICAgdGVzdF9tYXBzKTogQlBGIG9iamVjdHMsIHNrZWxldG9uIGhlYWRlcnMsIHRlc3Qgb2JqZWN0cyBhbmQgdGhlXFxuKyMgICAgICAgZmluYWwgcnVubmVyIGJpbmFyeS4gSW52b2tlZCBmcm9tIGhlcmUgb25jZSBwZXIgaW5zdGFuY2U7IGVhY2hcXG4rIyAgICAgICBpbnZvY2F0aW9uIGlzIGFuIGluZGVwZW5kZW50IHNpbmdsZS1mbGF2b3IgbmFtZXNwYWNlLCBzbyB0aGVcXG4rIyAgICAgICBydW5uZXIgaXMgcGxhaW4gbWFrZSB3aXRob3V0ICQkLWVzY2FwaW5nIG9yIGV2YWwuXFxuKyNcXG4rIyAgIGdlbl9icGZfc2tlbC5zaFxcbisjICAgICAgIExpbmtzIEJQRiBvYmplY3RzIHZpYSBicGZ0b29sIGFuZCBnZW5lcmF0ZXMgKGxpZ2h0KSBza2VsZXRvbnM7XFxuKyMgICAgICAgb25lIHNjcmlwdCBpbnN0ZWFkIG9mIGZvdXIgbmVhci1pZGVudGljYWwgbWFrZSByZWNpcGVzLlxcbisjXFxuKyMgU2hhcmVkIGRlZmluaXRpb25zIChwYXRocywgZmxhZ3MsIHBlcm1pc3NpdmUtbW9kZSBoZWxwZXJzKSBsaXZlIGluXFxuKyMgTWFrZWZpbGUuYnVpbGR2YXJzLCBpbmNsdWRlZCBieSBib3RoIGxheWVycy5cXG4rXFxuIGluY2x1ZGUgLi4vLi4vLi4vYnVpbGQvQnVpbGQuaW5jbHVkZVxcbiBpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuYXJjaFxcbiBpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZVxcbiBcXG4tQ1hYID89ICQoQ1JPU1NfQ09NUElMRSlnKytcXG4tT0JKQ09QWSA/PSAkKENST1NTX0NPTVBJTEUpb2JqY29weVxcbi1cXG4tQ1VSRElSIDo9ICQoYWJzcGF0aCAuKVxcbi1UT09MU0RJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4pXFxuLUxJQkRJUiA6PSAkKFRPT0xTRElSKS9saWJcXG4tQlBGRElSIDo9ICQoTElCRElSKS9icGZcXG4tVE9PTFNJTkNESVIgOj0gJChUT09MU0RJUikvaW5jbHVkZVxcbi1UT09MU0FSQ0hJTkNESVIgOj0gJChUT09MU0RJUikvYXJjaC8kKFNSQ0FSQ0gpL2luY2x1ZGVcXG4tQlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbFxcbi1BUElESVIgOj0gJChUT09MU0lOQ0RJUikvdWFwaVxcbi1pZm5lcSAoJChPKSwpXFxuLUdFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkXFxuLWVsc2VcXG4tR0VORElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLi8uLi9pbmNsdWRlL2dlbmVyYXRlZClcXG4tZW5kaWZcXG4tR0VOSERSIDo9ICQoR0VORElSKS9hdXRvY29uZi5oXFxuLVBLR19DT05GSUcgPz0gJChDUk9TU19DT01QSUxFKXBrZy1jb25maWdcXG4tXFxuLWlmbmVxICgkKHdpbGRjYXJkICQoR0VOSERSKSksKVxcbi0gIEdFTkZMQUdTIDo9IC1ESEFWRV9HRU5IRFJcXG4rIyBUaGVzZSBwcm9iZXMgZ2F0ZSB0aGUgZmxhdm9yIGxpc3QsIHdoaWNoIG11c3QgYmUgZmluYWwgYmVmb3JlIGxpYi5tayBpc1xcbisjIGluY2x1ZGVkOyBrZWVwIHZhbHVlcyBjb25zaXN0ZW50IHdpdGggTWFrZWZpbGUuYnVpbGR2YXJzLlxcbitpZmVxICgkKG9yaWdpbiBCUEZfR0NDKSx1bmRlZmluZWQpXFxuK0JQRl9HQ0MgOj0gJChzaGVsbCBjb21tYW5kIC12IGJwZi1nY2M7KVxcbiBlbmRpZlxcbi1cXG4tQlBGX0dDQ1xcdFxcdD89ICQoc2hlbGwgY29tbWFuZCAtdiBicGYtZ2NjOylcXG4taWZkZWYgQVNBTlxcbi1TQU5fQ0ZMQUdTIFxcdD89IC1mc2FuaXRpemU9YWRkcmVzcyAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclxcbi1lbHNlXFxuLVNBTl9DRkxBR1NcXHQ/PVxcbi1lbmRpZlxcbi1TQU5fTERGTEFHU1xcdD89ICQoU0FOX0NGTEFHUylcXG4tUkVMRUFTRVxcdFxcdD89XFxuLU9QVF9GTEFHU1xcdD89ICQoaWYgJChSRUxFQVNFKSwtTzIsLU8wKVxcbi1cXG4tTElCRUxGX0NGTEFHU1xcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1jZmxhZ3MgMlxcdTAwM2UvZGV2L251bGwpXFxuLUxJQkVMRl9MSUJTXFx0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWxpYnMgMlxcdTAwM2UvZGV2L251bGwgfHwgZWNobyAtbGVsZilcXG4tXFxuLVNLSVBfRE9DU1xcdD89XFxuLVNLSVBfTExWTVxcdD89XFxuLVNLSVBfTElCQkZEXFx0Pz1cXG4tU0tJUF9DUllQVE9cXHQ/PVxcbi1cXG4tIyBXaGVuIEJQRl9TVFJJQ1RfQlVJTEQgaXMgMSwgYW55IEJQRiBvYmplY3QsIHNrZWxldG9uLCB0ZXN0IG9iamVjdCwgb3JcXG4tIyBiZW5jaG1hcmsgY29tcGlsYXRpb24gZmFpbHVyZSBpcyBmYXRhbC4gU2V0IHRvIDAgdG8gdG9sZXJhdGUgZmFpbHVyZXNcXG4tIyBhbmQgY29udGludWUgYnVpbGRpbmcgdGhlIHJlbWFpbmluZyB0ZXN0cy5cXG4tQlBGX1NUUklDVF9CVUlMRCA/PSAxXFxuLVBFUk1JU1NJVkUgOj0gJChmaWx0ZXIgMCwkKEJQRl9TVFJJQ1RfQlVJTEQpKVxcbi1cXG4taWZlcSAoJChzcmN0cmVlKSwpXFxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoQ1VSRElSKSkpXFxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcXG4tc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpXFxuLWVuZGlmXFxuLVxcbi1DT01NT05fQ0ZMQUdTID0gLWcgJChPUFRfRkxBR1MpIC1yZHluYW1pYyAtc3RkPWdudTExXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHQgIC1XYWxsIC1XZXJyb3IgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAkKEdFTkZMQUdTKSAkKFNBTl9DRkxBR1MpICQoTElCRUxGX0NGTEFHUylcXHRcXHRcXHRcXFxcXFxuLVxcdCAgLUkkKENVUkRJUikgLUkkKElOQ0xVREVfRElSKSAtSSQoR0VORElSKSAtSSQoTElCRElSKVxcdFxcdFxcXFxcXG4tXFx0ICAtSSQoVE9PTFNJTkNESVIpIC1JJChUT09MU0FSQ0hJTkNESVIpIC1JJChBUElESVIpIC1JJChPVVRQVVQpXFx0XFxcXFxcbi1cXHQgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcXG4tTERGTEFHUyArPSAkKFNBTl9MREZMQUdTKVxcbi1MRExJQlMgKz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkXFxuLVxcbi1QQ0FQX0NGTEFHU1xcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJwY2FwIDJcXHUwMDNlL2Rldi9udWxsIFxcdTAwMjZcXHUwMDI2IGVjaG8gXFxcIi1EVFJBRkZJQ19NT05JVE9SPTFcXFwiKVxcbi1QQ0FQX0xJQlNcXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYnBjYXAgMlxcdTAwM2UvZGV2L251bGwpXFxuLUxETElCUyArPSAkKFBDQVBfTElCUylcXG4tQ0ZMQUdTICs9ICQoQ09NTU9OX0NGTEFHUykgJChQQ0FQX0NGTEFHUylcXG4tXFxuLSMgU29tZSB1dGlsaXR5IGZ1bmN0aW9ucyB1c2UgTExWTSBsaWJyYXJpZXNcXG4taml0X2Rpc2FzbV9oZWxwZXJzLmMtQ0ZMQUdTID0gJChMTFZNX0NGTEFHUylcXG4tXFxuLWlmbmVxICgkKExMVk0pLClcXG4tIyBTaWxlbmNlIHNvbWUgd2FybmluZ3Mgd2hlbiBjb21waWxlZCB3aXRoIGNsYW5nXFxuLUNGTEFHUyArPSAtV25vLXVudXNlZC1jb21tYW5kLWxpbmUtYXJndW1lbnRcXG4tZW5kaWZcXG4tXFxuLSMgQ2hlY2sgd2hldGhlciBicGYgY3B1PXY0IGlzIHN1cHBvcnRlZCBvciBub3QgYnkgY2xhbmdcXG4gaWZuZXEgKCQoc2hlbGwgJChDTEFORykgLS10YXJnZXQ9YnBmIC1tY3B1PWhlbHAgMlxcdTAwM2VcXHUwMDI2MSB8IGdyZXAgJ3Y0JyksKVxcbiBDTEFOR19DUFVWNCA6PSAxXFxuIGVuZGlmXFxuIFxcbi0jIENoZWNrIHdoZXRoZXIgY2xhbmcgc3VwcG9ydHMgQlBGIGFkZHJlc3Mgc2FuaXRpemVyIChyZXF1aXJlcyBMTFZNIDIyKylcXG4tQ0xBTkdfSEFTX0FSRU5BX0FTQU4gOj0gJChzaGVsbCBlY2hvICdpbnQgeDsnIHwgXFxcXFxcbi1cXHQkKENMQU5HKSAtLXRhcmdldD1icGYgLWZzYW5pdGl6ZT1rZXJuZWwtYWRkcmVzcyBcXFxcXFxuLVxcdC1tbGx2bSAtYXNhbi1zaGFkb3ctYWRkci1zcGFjZT0xIFxcXFxcXG4tXFx0LXggYyAtYyAtIC1vIC9kZXYvbnVsbCAyXFx1MDAzZS9kZXYvbnVsbCBcXHUwMDI2XFx1MDAyNiBlY2hvIDEpXFxuLVxcbiAjIE9yZGVyIGNvcnJlc3BvbmQgdG8gJ21ha2UgcnVuX3Rlc3RzJyBvcmRlclxcbiBURVNUX0dFTl9QUk9HUyA9IHRlc3RfdmVyaWZpZXIgdGVzdF90YWcgdGVzdF9tYXBzIHRlc3RfbHJ1X21hcCB0ZXN0X3Byb2dzIFxcXFxcXG4gXFx0dGVzdF9zb2NrbWFwIFxcXFxcXG5AQCAtMTAyLDE2ICs1MCw2IEBAIFRFU1RfSU5TVF9TVUJESVJTIDo9IG5vX2FsdTMyXFxuIGlmbmVxICgkKEJQRl9HQ0MpLClcXG4gVEVTVF9HRU5fUFJPR1MgKz0gdGVzdF9wcm9ncy1icGZfZ2NjXFxuIFRFU1RfSU5TVF9TVUJESVJTICs9IGJwZl9nY2NcXG4tXFxuLSMgVGhlIGZvbGxvd2luZyB0ZXN0cyBjb250YWluIEMgY29kZSB0aGF0LCBhbHRob3VnaCB0ZWNobmljYWxseSBsZWdhbCxcXG4tIyB0cmlnZ2VycyBHQ0Mgd2FybmluZ3MgdGhhdCBjYW5ub3QgYmUgZGlzYWJsZWQ6IGRlY2xhcmF0aW9uIG9mXFxuLSMgYW5vbnltb3VzIHN0cnVjdCB0eXBlcyBpbiBmdW5jdGlvbiBwYXJhbWV0ZXIgbGlzdHMuXFxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9uYW1lc3BhY2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhY2tpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2Vfc3ludGF4LmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbi1cXG4gZW5kaWZcXG4gXFxuIGlmbmVxICgkKENMQU5HX0NQVVY0KSwpXFxuQEAgLTEzMiwxMCArNzAsNiBAQCBURVNUX1BST0dTIDo9IHRlc3Rfa21vZC5zaCBcXFxcXFxuIFRFU1RfUFJPR1NfRVhURU5ERUQgOj0gXFxcXFxcbiBcXHRpbWFfc2V0dXAuc2ggdmVyaWZ5X3NpZ19zZXR1cC5zaFxcbiBcXG4tVEVTVF9LTU9EUyA6PSBicGZfdGVzdG1vZC5rbyBicGZfdGVzdF9ub19jZmkua28gYnBmX3Rlc3RfbW9kb3JkZXJfeC5rbyBcXFxcXFxuLVxcdGJwZl90ZXN0X21vZG9yZGVyX3kua28gYnBmX3Rlc3RfcnFzcGlubG9jay5rb1xcbi1URVNUX0tNT0RfVEFSR0VUUyA9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sJChURVNUX0tNT0RTKSlcXG4tXFxuICMgQ29tcGlsZSBidXQgbm90IHBhcnQgb2YgJ21ha2UgcnVuX3Rlc3RzJ1xcbiBURVNUX0dFTl9QUk9HU19FWFRFTkRFRCA9IFxcXFxcXG4gXFx0YmVuY2ggXFxcXFxcbkBAIC0xNDgsMTEgKzgyLDEwIEBAIFRFU1RfR0VOX1BST0dTX0VYVEVOREVEID0gXFxcXFxcbiBcXHR4ZHBfc3lucHJveHkgXFxcXFxcbiBcXHR4c2t4Y2VpdmVyXFxuIFxcbi1URVNUX0dFTl9GSUxFUyArPSAkKFRFU1RfS01PRFMpIGxpYnVyYW5kb21fcmVhZC5zbyB1cmFuZG9tX3JlYWQgc2lnbi1maWxlIHVwcm9iZV9tdWx0aVxcbitURVNUX0tNT0RTID89IGJwZl90ZXN0bW9kLmtvIGJwZl90ZXN0X25vX2NmaS5rbyBicGZfdGVzdF9tb2RvcmRlcl94LmtvIFxcXFxcXG4rXFx0YnBmX3Rlc3RfbW9kb3JkZXJfeS5rbyBicGZfdGVzdF9ycXNwaW5sb2NrLmtvXFxuIFxcbi1pZm5lcSAoJChWKSwxKVxcbi1zdWJtYWtlX2V4dHJhcyA6PSBmZWF0dXJlX2Rpc3BsYXk9MFxcbi1lbmRpZlxcbitURVNUX0dFTl9GSUxFUyArPSAkKFRFU1RfS01PRFMpIGxpYnVyYW5kb21fcmVhZC5zbyB1cmFuZG9tX3JlYWQgc2lnbi1maWxlIHVwcm9iZV9tdWx0aVxcbiBcXG4gIyBvdmVycmlkZSBsaWIubWsncyBkZWZhdWx0IHJ1bGVzXFxuIE9WRVJSSURFX1RBUkdFVFMgOj0gMVxcbkBAIC0xNzEsNyArMTA0LDcgQEAgZW5kZWZcXG4gaW5jbHVkZSAuLi9saWIubWtcXG4gXFxuIE5PTl9DSEVDS19GRUFUX1RBUkdFVFMgOj0gY2xlYW4gZG9jcy1jbGVhbiBlbWl0X3Rlc3RzXFxuLUNIRUNLX0ZFQVQgOj0gJChmaWx0ZXItb3V0ICQoTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyksJChvciAkKE1BS0VDTURHT0FMUyksIFxcXCJub25lXFxcIikpXFxuK0NIRUNLX0ZFQVQgOj0gJChmaWx0ZXItb3V0ICQoTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyksJChvciAkKE1BS0VDTURHT0FMUyksYWxsKSlcXG4gaWZuZXEgKCQoQ0hFQ0tfRkVBVCksKVxcbiBGRUFUVVJFX1VTRVIgOj0gLnNlbGZ0ZXN0c1xcbiBGRUFUVVJFX1RFU1RTIDo9IGxsdm1cXG5AQCAtMTg4LDYgKzEyMSw4IEBAIG92ZXJyaWRlIE9VVFBVVCA6PSAkKHBhdHN1YnN0ICUvLCUsJChPVVRQVVQpKVxcbiBlbmRpZlxcbiBlbmRpZlxcbiBcXG4raW5jbHVkZSBNYWtlZmlsZS5idWlsZHZhcnNcXG4rXFxuIGlmbmVxICgkKFNLSVBfTExWTSksMSlcXG4gaWZlcSAoJChmZWF0dXJlLWxsdm0pLDEpXFxuICAgTExWTV9DRkxBR1MgICs9IC1ESEFWRV9MTFZNX1NVUFBPUlRcXG5AQCAtMjEzLDM2ICsxNDgsMTEgQEAgaWZlcSAoJChmZWF0dXJlLWxsdm0pLDEpXFxuIGVuZGlmXFxuIGVuZGlmXFxuIFxcbi1TQ1JBVENIX0RJUiA6PSAkKE9VVFBVVCkvdG9vbHNcXG4tQlVJTERfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2J1aWxkXFxuLUlOQ0xVREVfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2luY2x1ZGVcXG4tQlBGT0JKIDo9ICQoQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcXG4taWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxcbi1IT1NUX0JVSUxEX0RJUlxcdFxcdDo9ICQoQlVJTERfRElSKS9ob3N0XFxuLUhPU1RfU0NSQVRDSF9ESVJcXHQ6PSAkKE9VVFBVVCkvaG9zdC10b29sc1xcbi1IT1NUX0lOQ0xVREVfRElSXFx0Oj0gJChIT1NUX1NDUkFUQ0hfRElSKS9pbmNsdWRlXFxuLWVsc2VcXG4tSE9TVF9CVUlMRF9ESVJcXHRcXHQ6PSAkKEJVSUxEX0RJUilcXG4tSE9TVF9TQ1JBVENIX0RJUlxcdDo9ICQoU0NSQVRDSF9ESVIpXFxuLUhPU1RfSU5DTFVERV9ESVJcXHQ6PSAkKElOQ0xVREVfRElSKVxcbi1lbmRpZlxcbi1IT1NUX0JQRk9CSiA6PSAkKEhPU1RfQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcXG4tUkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHNcXG4tVk1MSU5VWF9CVEZfUEFUSFMgPz0gJChpZiAkKE8pLCQoTykvdm1saW51eClcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgJChpZiAkKEtCVUlMRF9PVVRQVVQpLCQoS0JVSUxEX09VVFBVVCkvdm1saW51eClcXHRcXFxcXFxuLVxcdFxcdCAgICAgLi4vLi4vLi4vLi4vdm1saW51eFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAvc3lzL2tlcm5lbC9idGYvdm1saW51eFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAvYm9vdC92bWxpbnV4LSQoc2hlbGwgdW5hbWUgLXIpXFxuLVZNTElOVVhfQlRGID89ICQoYWJzcGF0aCAkKGZpcnN0d29yZCAkKHdpbGRjYXJkICQoVk1MSU5VWF9CVEZfUEFUSFMpKSkpXFxuLWlmZXEgKCQoVk1MSU5VWF9CVEYpLClcXG4tJChlcnJvciBDYW5ub3QgZmluZCBhIHZtbGludXggZm9yIFZNTElOVVhfQlRGIGF0IGFueSBvZiBcXFwiJChWTUxJTlVYX0JURl9QQVRIUylcXFwiKVxcbi1lbmRpZlxcbi1cXG4gIyBEZWZpbmUgc2ltcGxlIGFuZCBzaG9ydCBgbWFrZSB0ZXN0X3Byb2dzYCwgYG1ha2UgdGVzdF9tYXBzYCwgZXRjIHRhcmdldHNcXG4gIyB0byBidWlsZCBpbmRpdmlkdWFsIHRlc3RzLlxcbiAjIE5PVEU6IFNlbWljb2xvbiBhdCB0aGUgZW5kIGlzIGNyaXRpY2FsIHRvIG92ZXJyaWRlIGxpYi5taydzIGRlZmF1bHQgc3RhdGljXFxuICMgcnVsZSBmb3IgYmluYXJpZXMuXFxuLSQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EUylcXHRcXHRcXHRcXHRcXFxcXFxuKyQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EX1RBUkdFVFMpXFx0XFx0XFx0XFx0XFxcXFxcbiBcXHQgJChURVNUX0dFTl9QUk9HU19FWFRFTkRFRCkpOiAlOiAkKE9VVFBVVCkvJSA7XFxuIFxcbiAjIHNvcnQgcmVtb3ZlcyBsaWJicGYgZHVwbGljYXRlcyB3aGVuIG5vdCBjcm9zcy1idWlsZGluZ1xcbkBAIC0yNTYsMTEgKzE2NiwxNCBAQCAkKE1BS0VfRElSUyk6XFxuIFxcbiAkKE9VVFBVVCkvJS5vOiAlLmNcXG4gXFx0JChjYWxsIG1zZyxDQywsJEApXFxuLVxcdCQoUSkkKENDKSAkKENGTEFHUykgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEBcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkKGZpbHRlciAlLmMsJF4pIC1vICRAXFxuIFxcbisjIEhlYWRlcnMgbWF5IGFwcGVhciBhbW9uZyB0aGUgcHJlcmVxdWlzaXRlcyBmb3IgZGVwZW5kZW5jeSB0cmFja2luZztcXG4rIyB0aGV5IG11c3Qgbm90IHJlYWNoIHRoZSBjbGFuZy9nY2MgY29tbWFuZCBsaW5lIChjbGFuZyB0cmVhdHMgYSBiYXJlIC5oXFxuKyMgYXJndW1lbnQgYXMgYSBwcmVjb21waWxlZC1oZWFkZXIgam9iIGFuZCByZWZ1c2VzIC1vKS5cXG4gJChPVVRQVVQpLyU6JS5jXFxuIFxcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcXG4tXFx0JChRKSQoTElOSy5jKSAkXiAkKExETElCUykgLW8gJEBcXG4rXFx0JChRKSQoTElOSy5jKSAkKGZpbHRlci1vdXQgJS5oLCReKSAkKExETElCUykgLW8gJEBcXG4gXFxuICMgTExWTSdzIGxkLmxsZCBkb2Vzbid0IHN1cHBvcnQgYWxsIHRoZSBhcmNoaXRlY3R1cmVzLCBzbyB1c2UgaXQgb25seSBvbiB4ODZcXG4gaWZlcSAoJChTUkNBUkNIKSwkKGZpbHRlciAkKFNSQ0FSQ0gpLHg4NiByaXNjdikpXFxuQEAgLTI5Nyw2ICsyMTAsMTMgQEAgJChPVVRQVVQpL3NpZ24tZmlsZTogLi4vLi4vLi4vLi4vc2NyaXB0cy9zaWduLWZpbGUuY1xcbiBcXHRcXHQgICRcXHUwMDNjIC1vICRAIFxcXFxcXG4gXFx0XFx0ICAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYmNyeXB0byAyXFx1MDAzZSAvZGV2L251bGwgfHwgZWNobyAtbGNyeXB0bylcXG4gXFxuKyMgTGlua2luZyB1cHJvYmVfbXVsdGkgY2FuIGZhaWwgZHVlIHRvIHJlbG9jYXRpb24gb3ZlcmZsb3dzIG9uIG1pcHMuXFxuKyQoT1VUUFVUKS91cHJvYmVfbXVsdGk6IENGTEFHUyArPSAkKGlmICQoZmlsdGVyIG1pcHMsICQoQVJDSCkpLC1teGdvdClcXG4rJChPVVRQVVQpL3Vwcm9iZV9tdWx0aTogdXByb2JlX211bHRpLmMgdXByb2JlX211bHRpLmxkXFxuK1xcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtV2wsLVQsdXByb2JlX211bHRpLmxkIC1PMCAkKExERkxBR1MpIFxcdFxcXFxcXG4rXFx0XFx0JChmaWx0ZXItb3V0ICUubGQsJF4pICQoTERMSUJTKSAtbyAkQFxcbitcXG4gIyBUaGlzIHNob3VsZCByZWFsbHkgYmUgYSBncm91cGVkIHRhcmdldCwgYnV0IG1ha2UgdmVyc2lvbnMgYmVmb3JlIDQuMyBkb24ndFxcbiAjIHN1cHBvcnQgdGhhdCBmb3IgcmVndWxhciBydWxlcy4gSG93ZXZlciwgcGF0dGVybiBtYXRjaGluZyBydWxlcyBhcmUgaW1wbGljaXRseVxcbiAjIHRyZWF0ZWQgYXMgZ3JvdXBlZCBldmVuIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgbWFrZSwgc28gYXMgYSB3b3JrYXJvdW5kLCB0aGVcXG5AQCAtMzEzLDQwICsyMzMsMTggQEAgJChURVNUX0tNT0RfVEFSR0VUUyk6ICQoYWRkcHJlZml4IHRlc3Rfa21vZHMvLCQoVEVTVF9LTU9EUykpXFxuIFxcdCQoY2FsbCBtc2csTU9ELCwkQClcXG4gXFx0JChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbIC1mIHRlc3Rfa21vZHMvJChARikgXTsgdGhlbiApY3AgdGVzdF9rbW9kcy8kKEBGKSAkQCQoaWYgJChQRVJNSVNTSVZFKSw7IGZpKVxcbiBcXG4tXFxuLURFRkFVTFRfQlBGVE9PTCA6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxcbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXFxuLUNST1NTX0JQRlRPT0wgOj0gJChTQ1JBVENIX0RJUikvc2Jpbi9icGZ0b29sXFxuLVRSVU5ORVJfQlBGVE9PTCA6PSAkKENST1NTX0JQRlRPT0wpXFxuLVVTRV9CT09UU1RSQVAgOj0gXFxcIlxcXCJcXG4tZWxzZVxcbi1UUlVOTkVSX0JQRlRPT0wgOj0gJChERUZBVUxUX0JQRlRPT0wpXFxuLVVTRV9CT09UU1RSQVAgOj0gXFxcImJvb3RzdHJhcC9cXFwiXFxuLWVuZGlmXFxuLVxcbiBURVNUX0dFTl9QUk9HU19FWFRFTkRFRCArPSAkKFRSVU5ORVJfQlBGVE9PTClcXG4gXFxuICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQpOiAkKEJQRk9CSilcXG4gXFxuLVRFU1RJTkdfSEVMUEVSU1xcdDo9ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xcbi1DR1JPVVBfSEVMUEVSU1xcdDo9ICQoT1VUUFVUKS9jZ3JvdXBfaGVscGVycy5vXFxuLVVOUFJJVl9IRUxQRVJTICA6PSAkKE9VVFBVVCkvdW5wcml2X2hlbHBlcnMub1xcbi1UUkFDRV9IRUxQRVJTXFx0Oj0gJChPVVRQVVQpL3RyYWNlX2hlbHBlcnMub1xcbi1KU09OX1dSSVRFUlxcdFxcdDo9ICQoT1VUUFVUKS9qc29uX3dyaXRlci5vXFxuLUNBUF9IRUxQRVJTXFx0Oj0gJChPVVRQVVQpL2NhcF9oZWxwZXJzLm9cXG4tTkVUV09SS19IRUxQRVJTIDo9ICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMub1xcbi1cXG4tJChPVVRQVVQpL3Rlc3Rfc29ja21hcDogJChDR1JPVVBfSEVMUEVSUykgJChURVNUSU5HX0hFTFBFUlMpXFxuLSQoT1VUUFVUKS90ZXN0X3RjcG5vdGlmeV91c2VyOiAkKENHUk9VUF9IRUxQRVJTKSAkKFRFU1RJTkdfSEVMUEVSUykgJChUUkFDRV9IRUxQRVJTKVxcbi0kKE9VVFBVVCkvdGVzdF9zb2NrX2ZpZWxkczogJChDR1JPVVBfSEVMUEVSUykgJChURVNUSU5HX0hFTFBFUlMpXFxuLSQoT1VUUFVUKS90ZXN0X3RhZzogJChURVNUSU5HX0hFTFBFUlMpXFxuLSQoT1VUUFVUKS90ZXN0X2xpcmNfbW9kZTJfdXNlcjogJChURVNUSU5HX0hFTFBFUlMpXFxuLSQoT1VUUFVUKS9mbG93X2Rpc3NlY3Rvcl9sb2FkOiAkKFRFU1RJTkdfSEVMUEVSUylcXG4tJChPVVRQVVQpL3Rlc3RfbWFwczogJChURVNUSU5HX0hFTFBFUlMpXFxuLSQoT1VUUFVUKS90ZXN0X3ZlcmlmaWVyOiAkKFRFU1RJTkdfSEVMUEVSUykgJChDQVBfSEVMUEVSUykgJChVTlBSSVZfSEVMUEVSUylcXG4tJChPVVRQVVQpL3hzay5vOiAkKEJQRk9CSilcXG4tXFxuLUJQRlRPT0wgPz0gJChERUZBVUxUX0JQRlRPT0wpXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgVG9vbCBzdWItYnVpbGRzOiBicGZ0b29sIGFuZCBsaWJicGYgKGhvc3QgYW5kLCB3aGVuIGNyb3NzLWNvbXBpbGluZyxcXG4rIyB0YXJnZXQgdmFyaWFudHMpIGFuZCByZXNvbHZlX2J0Zmlkcy5cXG4rI1xcbisjIE5vdGUgdGhlIGRlbGliZXJhdGUgYXN5bW1ldHJ5OiB0aGUgaG9zdCBsaWJicGYgYnVpbGRzIHdpdGhvdXRcXG4rIyBzYW5pdGl6ZXJzIGFuZCB3aXRoIHRoZSBob3N0IHRvb2xjaGFpbi5cXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rXFxuICQoREVGQVVMVF9CUEZUT09MKTogJCh3aWxkY2FyZCAkKEJQRlRPT0xESVIpLyouW2NoXSAkKEJQRlRPT0xESVIpL01ha2VmaWxlKSAgICBcXFxcXFxuIFxcdFxcdCAgICAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL2JwZnRvb2xcXG4gXFx0JChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcykgIC1DICQoQlBGVE9PTERJUilcXHRcXHRcXHQgICAgICAgXFxcXFxcbkBAIC0zNzcsMjAgKzI3NSw2IEBAICQoQ1JPU1NfQlBGVE9PTCk6ICQod2lsZGNhcmQgJChCUEZUT09MRElSKS8qLltjaF0gJChCUEZUT09MRElSKS9NYWtlZmlsZSlcXHRcXFxcXFxuIFxcdFxcdCAgICBwcmVmaXg9IERFU1RESVI9JChTQ1JBVENIX0RJUikvIGluc3RhbGwtYmluXFxuIGVuZGlmXFxuIFxcbi1pZm5lcSAoJChTS0lQX0RPQ1MpLDEpXFxuLWFsbDogZG9jc1xcbi1lbmRpZlxcbi1cXG4tZG9jczpcXG4tXFx0JChRKVJTVDJNQU5fT1BUUz1cXFwiLS1leGl0LXN0YXR1cz0xXFxcIiAkKE1BS0UpICQoc3VibWFrZV9leHRyYXMpXFx0XFxcXFxcbi1cXHQgICAgICAgICAgICAtZiBNYWtlZmlsZS5kb2NzXFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHQgICAgICAgICAgICBwcmVmaXg9IE9VVFBVVD0kKE9VVFBVVCkvIERFU1RESVI9JChPVVRQVVQpLyAkQFxcbi1cXG4tZG9jcy1jbGVhbjpcXG4tXFx0JChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcylcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgICAgICAgIC1mIE1ha2VmaWxlLmRvY3NcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgICAgICAgIHByZWZpeD0gT1VUUFVUPSQoT1VUUFVUKS8gREVTVERJUj0kKE9VVFBVVCkvICRAXFxuLVxcbiAkKEJQRk9CSik6ICQod2lsZGNhcmQgJChCUEZESVIpLyouW2NoXSAkKEJQRkRJUikvTWFrZWZpbGUpXFx0XFx0ICAgICAgIFxcXFxcXG4gXFx0ICAgJChBUElESVIpL2xpbnV4L2JwZi5oXFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXFxcXG4gXFx0ICAgfCAkKEJVSUxEX0RJUikvbGliYnBmXFxuQEAgLTQxMiwxOSArMjk2LDYgQEAgJChIT1NUX0JQRk9CSik6ICQod2lsZGNhcmQgJChCUEZESVIpLyouW2NoXSAkKEJQRkRJUikvTWFrZWZpbGUpXFx0XFx0ICAgICAgIFxcXFxcXG4gXFx0XFx0ICAgIERFU1RESVI9JChIT1NUX1NDUkFUQ0hfRElSKS8gcHJlZml4PSBhbGwgaW5zdGFsbF9oZWFkZXJzXFxuIGVuZGlmXFxuIFxcbi0jIHZtbGludXguaCBpcyBmaXJzdCBkdW1wZWQgdG8gYSB0ZW1wb3JhcnkgZmlsZSBhbmQgdGhlbiBjb21wYXJlZCB0b1xcbi0jIHRoZSBwcmV2aW91cyB2ZXJzaW9uLiBUaGlzIGhlbHBzIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHJlLWJ1aWxkcyBvZlxcbi0jICQoVFJVTk5FUl9CUEZfT0JKUylcXG4tJChJTkNMVURFX0RJUikvdm1saW51eC5oOiAkKFZNTElOVVhfQlRGKSAkKEJQRlRPT0wpIHwgJChJTkNMVURFX0RJUilcXG4taWZlcSAoJChWTUxJTlVYX0gpLClcXG4tXFx0JChjYWxsIG1zZyxHRU4sLCRAKVxcbi1cXHQkKFEpJChCUEZUT09MKSBidGYgZHVtcCBmaWxlICQoVk1MSU5VWF9CVEYpIGZvcm1hdCBjIFxcdTAwM2UgJChJTkNMVURFX0RJUikvLnZtbGludXguaC50bXBcXG4tXFx0JChRKWNtcCAtcyAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcCAkQCB8fCBtdiAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcCAkQFxcbi1lbHNlXFxuLVxcdCQoY2FsbCBtc2csQ1AsLCRAKVxcbi1cXHQkKFEpY3AgXFxcIiQoVk1MSU5VWF9IKVxcXCIgJEBcXG4tZW5kaWZcXG4tXFxuICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzXFx0XFxcXFxcbiBcXHRcXHQgICAgICAgJChUT09MU0RJUikvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uY1xcdFxcXFxcXG4gXFx0XFx0ICAgICAgICQoVE9PTFNESVIpL2xpYi9yYnRyZWUuY1xcdFxcdFxcdFxcXFxcXG5AQCAtNDM5LDM3NCArMzEwLDM4IEBAICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzXFx0XFxcXFxcbiBcXHRcXHRIT1NUUEtHX0NPTkZJRz0nJChQS0dfQ09ORklHKScgXFxcXFxcbiBcXHRcXHRPVVRQVVQ9JChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvIEJQRk9CSj0kKEhPU1RfQlBGT0JKKVxcbiBcXG4tIyBHZXQgQ2xhbmcncyBkZWZhdWx0IGluY2x1ZGVzIG9uIHRoaXMgc3lzdGVtLCBhcyBvcHBvc2VkIHRvIHRob3NlIHNlZW4gYnlcXG4tIyAnLS10YXJnZXQ9YnBmJy4gVGhpcyBmaXhlcyBcXFwibWlzc2luZ1xcXCIgZmlsZXMgb24gc29tZSBhcmNoaXRlY3R1cmVzL2Rpc3Ryb3MsXFxuLSMgc3VjaCBhcyBhc20vYnl0ZW9yZGVyLmgsIGFzbS9zb2NrZXQuaCwgYXNtL3NvY2tpb3MuaCwgc3lzL2NkZWZzLmggZXRjLlxcbi0jXFxuLSMgVXNlICctaWRpcmFmdGVyJzogRG9uJ3QgaW50ZXJmZXJlIHdpdGggaW5jbHVkZSBtZWNoYW5pY3MgZXhjZXB0IHdoZXJlIHRoZVxcbi0jIGJ1aWxkIHdvdWxkIGhhdmUgZmFpbGVkIGFueXdheXMuXFxuLWRlZmluZSBnZXRfc3lzX2luY2x1ZGVzXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC12IC1FIC0gXFx1MDAzYy9kZXYvbnVsbCAyXFx1MDAzZVxcdTAwMjYxIFxcXFxcXG4tXFx0fCBzZWQgLW4gJy9cXHUwMDNjLi4uXFx1MDAzZSBzZWFyY2ggc3RhcnRzIGhlcmU6LywvRW5kIG9mIHNlYXJjaCBsaXN0Li97IHN8IFxcXFwoLy4qXFxcXCl8LWlkaXJhZnRlciBcXFxcMXxwIH0nKSBcXFxcXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFxcdTAwM2MvZGV2L251bGwgfCBncmVwICdfX3Jpc2N2X3hsZW4gJyB8IGF3ayAne3ByaW50ZihcXFwiLURfX3Jpc2N2X3hsZW49JWQgLURfX0JJVFNfUEVSX0xPTkc9JWRcXFwiLCAkJDMsICQkMyl9JykgXFxcXFxcbi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19sb29uZ2FyY2hfZ3JsZW4gJyB8IGF3ayAne3ByaW50ZihcXFwiLURfX0JJVFNfUEVSX0xPTkc9JWRcXFwiLCAkJDMpfScpIFxcXFxcXG4tJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgLUUgJ01JUFMoRUx8RUIpfF9NSVBTX1NaKFBUUnxMT05HKSB8X01JUFNfU0lNIHxfQUJJKE8zMnxOMzJ8NjQpICcgfCBhd2sgJ3twcmludGYoXFxcIi1EJXM9JXMgXFxcIiwgJCQyLCAkJDMpfScpXFxuLWVuZGVmXFxuLVxcbi0jIERldGVybWluZSB0YXJnZXQgZW5kaWFubmVzcy5cXG4tSVNfTElUVExFX0VORElBTiA6PSAkKHNoZWxsICQoQ0MpIC1kTSAtRSAtIFxcdTAwM2MvZGV2L251bGwgfCBcXFxcXFxuLVxcdFxcdFxcdGdyZXAgJ2RlZmluZSBfX0JZVEVfT1JERVJfXyBfX09SREVSX0xJVFRMRV9FTkRJQU5fXycpXFxuLU1FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKVxcbi1CUEZfVEFSR0VUX0VORElBTjo9JChpZiAkKElTX0xJVFRMRV9FTkRJQU4pLC0tdGFyZ2V0PWJwZmVsLC0tdGFyZ2V0PWJwZmViKVxcbi1cXG4taWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxcbi1DTEFOR19UQVJHRVRfQVJDSCA9IC0tdGFyZ2V0PSQobm90ZGlyICQoQ1JPU1NfQ09NUElMRTolLT0lKSlcXG4tZW5kaWZcXG4tXFxuLUNMQU5HX1NZU19JTkNMVURFUyA9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLCQoQ0xBTkcpLCQoQ0xBTkdfVEFSR0VUX0FSQ0gpKVxcbi1CUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXFx0XFxcXFxcbi1cXHQgICAgIC1JJChJTkNMVURFX0RJUikgLUkkKENVUkRJUikgLUkkKEFQSURJUilcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAgICAtSSQoYWJzcGF0aCAkKE9VVFBVVCkvLi4vdXNyL2luY2x1ZGUpXFx0XFx0XFx0XFxcXFxcbi1cXHQgICAgIC1zdGQ9Z251MTFcXHRcXHQgXFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHQgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAgICAtV25vLW1pY3Jvc29mdC1hbm9uLXRhZ1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAgICAtZm1zLWV4dGVuc2lvbnNcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgLVduby1jb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXNcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXNcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgI1xcbi0jIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZVxcbi1cXG4tQ0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXFxuLVxcbi0kKE9VVFBVVCkvdGVzdF9sNGxiX25vaW5saW5lLm86IEJQRl9DRkxBR1MgKz0gLWZuby1pbmxpbmVcXG4tJChPVVRQVVQpL3Rlc3RfeGRwX25vaW5saW5lLm86IEJQRl9DRkxBR1MgKz0gLWZuby1pbmxpbmVcXG4tXFxuLSQoT1VUUFVUKS9mbG93X2Rpc3NlY3Rvcl9sb2FkLm86IGZsb3dfZGlzc2VjdG9yX2xvYWQuaFxcbi0kKE9VVFBVVCkvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MubzogY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFxcbi1cXG4tIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIENsYW5nXFxuLSMgJDEgLSBpbnB1dCAuYyBmaWxlXFxuLSMgJDIgLSBvdXRwdXQgLm8gZmlsZVxcbi0jICQzIC0gQ0ZMQUdTXFxuLSMgJDQgLSBiaW5hcnkgbmFtZVxcbi1kZWZpbmUgQ0xBTkdfQlBGX0JVSUxEX1JVTEVcXG4tXFx0JChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMilcXG4tXFx0JChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12MyAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcXFxcbi1cXHRcXHQoJChSTSkgJDI7IHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1CUEYnICckKG5vdGRpciAkMiknIDFcXHUwMDNlXFx1MDAyNjIpKVxcbi1lbmRlZlxcbi0jIFNpbWlsYXIgdG8gQ0xBTkdfQlBGX0JVSUxEX1JVTEUsIGJ1dCB3aXRoIGRpc2FibGVkIGFsdTMyXFxuLWRlZmluZSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFXFxuLVxcdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXFxuLVxcdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djIgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXFxcXG4tXFx0XFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4tZW5kZWZcXG4tIyBTaW1pbGFyIHRvIENMQU5HX0JQRl9CVUlMRF9SVUxFLCBidXQgd2l0aCBjcHUtdjRcXG4tZGVmaW5lIENMQU5HX0NQVVY0X0JQRl9CVUlMRF9SVUxFXFxuLVxcdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXFxuLVxcdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djQgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXFxcXG4tXFx0XFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4tZW5kZWZcXG4tIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIEdDQ1xcbi1kZWZpbmUgR0NDX0JQRl9CVUlMRF9SVUxFXFxuLVxcdCQoY2FsbCBtc2csR0NDLUJQRiwkNCwkMilcXG4tXFx0JChRKSQoQlBGX0dDQykgJDMgLURCUEZfTk9fUFJFU0VSVkVfQUNDRVNTX0lOREVYIC1Xbm8tYXR0cmlidXRlcyAtTzIgLWMgJDEgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXFxcXG4tXFx0XFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4tZW5kZWZcXG4tXFxuLVNLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmNcXG4tXFxuLUxJTktFRF9TS0VMUyA6PSB0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oIGxpbmtlZF9mdW5jcy5za2VsLmhcXHRcXHRcXFxcXFxuLVxcdFxcdGxpbmtlZF92YXJzLnNrZWwuaCBsaW5rZWRfbWFwcy5za2VsLmggXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHR0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmhcXHRcXFxcXFxuLVxcdFxcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdHRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHR0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oXFxuLVxcbi1MU0tFTFMgOj0gZmV4aXRfc2xlZXAuYyB0cmFjZV9wcmludGsuYyB0cmFjZV92cHJpbnRrLmMgbWFwX3B0cl9rZXJuLmMgXFx0XFxcXFxcbi1cXHRjb3JlX2tlcm4uYyBjb3JlX2tlcm5fb3ZlcmZsb3cuYyB0ZXN0X3JpbmdidWYuY1xcdFxcdFxcdFxcXFxcXG4tXFx0dGVzdF9yaW5nYnVmX24uYyB0ZXN0X3JpbmdidWZfbWFwX2tleS5jIHRlc3RfcmluZ2J1Zl93cml0ZS5jICAgIFxcXFxcXG4tXFx0dGVzdF9yaW5nYnVmX292ZXJ3cml0ZS5jXFxuLVxcbi1MU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0LmMgZmV4aXRfdGVzdC5jIGF0b21pY3MuY1xcbi1cXG4tIyBHZW5lcmF0ZSBib3RoIGxpZ2h0IHNrZWxldG9uIGFuZCBsaWJicGYgc2tlbGV0b24gZm9yIHRoZXNlXFxuLUxTS0VMU19FWFRSQSA6PSB0ZXN0X2tzeW1zX21vZHVsZS5jIHRlc3Rfa3N5bXNfd2Vhay5jIGtmdW5jX2NhbGxfdGVzdC5jIFxcXFxcXG4tXFx0a2Z1bmNfY2FsbF90ZXN0X3N1YnByb2cuY1xcbi1TS0VMX0JMQUNLTElTVCArPSAkJChMU0tFTFMpICQkKExTS0VMU19TSUdORUQpXFxuLVxcbi10ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vXFxuLWxpbmtlZF9mdW5jcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfZnVuY3MxLmJwZi5vIGxpbmtlZF9mdW5jczIuYnBmLm9cXG4tbGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYub1xcbi1saW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vXFxuLSMgSW4gdGhlIHN1YnNrZWxldG9uIGNhc2UsIHdlIHdhbnQgdGhlIHRlc3Rfc3Vic2tlbGV0b25fbGliLnN1YnNrZWwuaCBmaWxlXFxuLSMgYnV0IHRoYXQncyBjcmVhdGVkIGFzIGEgc2lkZS1lZmZlY3Qgb2YgdGhlIHNrZWwuaCBnZW5lcmF0aW9uLlxcbi10ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXFxuLXRlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYub1xcbi10ZXN0X3VzZHQuc2tlbC5oLWRlcHMgOj0gdGVzdF91c2R0LmJwZi5vIHRlc3RfdXNkdF9tdWx0aXNwZWMuYnBmLm9cXG4teHNrX3hkcF9wcm9ncy5za2VsLmgtZGVwcyA6PSB4c2tfeGRwX3Byb2dzLmJwZi5vXFxuLXhkcF9od19tZXRhZGF0YS5za2VsLmgtZGVwcyA6PSB4ZHBfaHdfbWV0YWRhdGEuYnBmLm9cXG4teGRwX2ZlYXR1cmVzLnNrZWwuaC1kZXBzIDo9IHhkcF9mZWF0dXJlcy5icGYub1xcbi10cmFjaW5nX211bHRpLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cXG4tdHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2hfbW9kdWxlLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cXG4tdHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cXG4tdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfc2Vzc2lvbl9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xcbi1cXG4tTElOS0VEX0JQRl9PQkpTIDo9ICQoZm9yZWFjaCBza2VsLCQoTElOS0VEX1NLRUxTKSwkKCQoc2tlbCktZGVwcykpXFxuLUxJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoTElOS0VEX0JQRl9PQkpTKSlcXG4tXFxuLUhFQURFUlNfRk9SX0JQRl9PQkpTIDo9ICQod2lsZGNhcmQgJChCUEZESVIpLyouYnBmLmgpXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQkKHdpbGRjYXJkICQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlLyouW2NoXSlcXHRcXFxcXFxuLVxcdFxcdFxcdCQoYWRkcHJlZml4ICQoQlBGRElSKS8sXFx0YnBmX2NvcmVfcmVhZC5oXFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgICAgICAgICAgICAgICAgICAgICBicGZfZW5kaWFuLmhcXHRcXFxcXFxuLVxcdFxcdFxcdFxcdFxcdFxcdGJwZl9oZWxwZXJzLmhcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl90cmFjaW5nLmgpXFxuLVxcbi0jIFNldCB1cCBleHRyYSBUUlVOTkVSX1hYWCBcXFwidGVtcG9yYXJ5XFxcIiB2YXJpYWJsZXMgaW4gdGhlIGVudmlyb25tZW50IChyZWxpZXMgb25cXG4tIyAkZXZhbCgpKSBhbmQgcGFzcyBjb250cm9sIHRvIERFRklORV9URVNUX1JVTk5FUl9SVUxFUy5cXG4tIyBQYXJhbWV0ZXJzOlxcbi0jICQxIC0gdGVzdCBydW5uZXIgYmFzZSBiaW5hcnkgbmFtZSAoZS5nLiwgdGVzdF9wcm9ncylcXG4tIyAkMiAtIHRlc3QgcnVubmVyIGV4dHJhIFxcXCJmbGF2b3JcXFwiIChlLmcuLCBub19hbHUzMiwgY3B1djQsIGJwZl9nY2MsIGV0YylcXG4tZGVmaW5lIERFRklORV9URVNUX1JVTk5FUlxcbi1cXG4tTFNLRUxfU0lHTiA6PSAtUyAtayAkKFBSSVZBVEVfS0VZKSAtaSAkKFZFUklGSUNBVElPTl9DRVJUKVxcbi1UUlVOTkVSX09VVFBVVCA6PSAkKE9VVFBVVCkkKGlmICQyLC8pJDJcXG4tVFJVTk5FUl9CSU5BUlkgOj0gJDEkKGlmICQyLC0pJDJcXG4tVFJVTk5FUl9URVNUX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QubyxcXHRcXFxcXFxuLVxcdFxcdFxcdFxcdCAkJChub3RkaXIgJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jKSkpXFxuLVRSVU5ORVJfRVhUUkFfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubyxcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdFxcdCAkJChmaWx0ZXIgJS5jLCQoVFJVTk5FUl9FWFRSQV9TT1VSQ0VTKSkpXFxuLVRSVU5ORVJfTElCX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLm8sXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHRcXHQgJCQoZmlsdGVyICUuYywkKFRSVU5ORVJfTElCX1NPVVJDRVMpKSlcXG4tVFJVTk5FUl9FWFRSQV9IRFJTIDo9ICQkKGZpbHRlciAlLmgsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKVxcbi1UUlVOTkVSX1RFU1RTX0hEUiA6PSAkKFRSVU5ORVJfVEVTVFNfRElSKS90ZXN0cy5oXFxuLVRSVU5ORVJfQlBGX1NSQ1MgOj0gJCQobm90ZGlyICQkKHdpbGRjYXJkICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8qLmMpKVxcbi1UUlVOTkVSX0JQRl9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5icGYubywgJCQoVFJVTk5FUl9CUEZfU1JDUykpXFxuLVRSVU5ORVJfQlBGX1NLRUxTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5za2VsLmgsXFx0XFxcXFxcbi1cXHRcXHRcXHRcXHQgJCQoZmlsdGVyLW91dCAkKFNLRUxfQkxBQ0tMSVNUKSAkKExJTktFRF9CUEZfU1JDUyksXFxcXFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgICAgJCQoVFJVTk5FUl9CUEZfU1JDUykpKVxcbi1UUlVOTkVSX0JQRl9MU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmxza2VsLmgsICQkKExTS0VMUykgJCQoTFNLRUxTX0VYVFJBKSlcXG4tVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEIDo9ICQkKGFkZHByZWZpeCAkJChUUlVOTkVSX09VVFBVVCkvLCQoTElOS0VEX1NLRUxTKSlcXG4tVFJVTk5FUl9CUEZfTFNLRUxTX1NJR05FRCA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubHNrZWwuaCwgJCQoTFNLRUxTX1NJR05FRCkpXFxuLVRFU1RfR0VOX0ZJTEVTICs9ICQkKFRSVU5ORVJfQlBGX09CSlMpXFxuLVxcbi0jIEV2YWx1YXRlIHJ1bGVzIG5vdyB3aXRoIGV4dHJhIFRSVU5ORVJfWFhYIHZhcmlhYmxlcyBhYm92ZSBhbHJlYWR5IGRlZmluZWRcXG4tJCQoZXZhbCAkJChjYWxsIERFRklORV9URVNUX1JVTk5FUl9SVUxFUywkMSwkMikpXFxuLVxcbi1lbmRlZlxcbi1cXG4tIyBVc2luZyBUUlVOTkVSX1hYWCB2YXJpYWJsZXMsIHByb3ZpZGVkIGJ5IGNhbGxlcnMgb2YgREVGSU5FX1RFU1RfUlVOTkVSIGFuZFxcbi0jIHNldCB1cCBieSBERUZJTkVfVEVTVF9SVU5ORVIgaXRzZWxmLCBjcmVhdGUgdGVzdCBydW5uZXIgYnVpbGQgcnVsZXMgd2l0aDpcXG4tIyAkMSAtIHRlc3QgcnVubmVyIGJhc2UgYmluYXJ5IG5hbWUgKGUuZy4sIHRlc3RfcHJvZ3MpXFxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcXFwiZmxhdm9yXFxcIiAoZS5nLiwgbm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjLCBldGMpXFxuLWRlZmluZSBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVNcXG4tXFxuLSMgUGVybWlzc2l2ZSBidWlsZCBiZWhhdmlvdXIgKHNraXAtb24tZmFpbHVyZSBjb21waWxlLCBwYXJ0aWFsLWxpbmspIG9ubHlcXG4tIyBhcHBsaWVzIHRvIHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzOyBydW5uZXJzIHRoYXQgdXNlIHN0cm9uZyBjcm9zcy1vYmplY3RcXG4tIyByZWZlcmVuY2VzIChlLmcuIHRlc3RfbWFwcykga2VlcCBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBwZXJtaXNzaXZlLlxcbi0jIFRoZSBjaGVjayBpcyBpbmxpbmVkIHBlci1ydW5uZXIgc28gJDEgaXMgc3Vic3RpdHV0ZWQgYXQgJChjYWxsKSB0aW1lIGFuZFxcbi0jIHRoZSByZXN1bHQgaXMgYmFrZWQgaW50byBlYWNoIHJ1bGUncyByZWNpcGUuXFxuLVxcbi1pZmVxICgkKCQoVFJVTk5FUl9PVVRQVVQpLWRpciksKVxcbi0kKFRSVU5ORVJfT1VUUFVUKS1kaXIgOj0geVxcbi0kKFRSVU5ORVJfT1VUUFVUKTpcXG4tXFx0JCQoY2FsbCBtc2csTUtESVIsLCQkQClcXG4tXFx0JChRKW1rZGlyIC1wICQkQFxcbi1lbmRpZlxcbi1cXG4tIyBlbnN1cmUgd2Ugc2V0IHVwIEJQRiBvYmplY3RzIGdlbmVyYXRpb24gcnVsZSBqdXN0IG9uY2UgZm9yIGEgZ2l2ZW5cXG4tIyBpbnB1dC9vdXRwdXQgZGlyZWN0b3J5IGNvbWJpbmF0aW9uXFxuLWlmZXEgKCQoJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMpLClcXG4tJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMgOj0geVxcbi0kKFRSVU5ORVJfQlBGX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLmJwZi5vOlxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAkKFRSVU5ORVJfQlBGX1BST0dTX0RJUikvJS5jXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8qLmhcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgJCQoSU5DTFVERV9ESVIpL3ZtbGludXguaFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpICQkKEJQRk9CSilcXG4tXFx0JCQoY2FsbCAkKFRSVU5ORVJfQlBGX0JVSUxEX1JVTEUpLCQkXFx1MDAzYywkJEAsXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHRcXHRcXHQgICQoVFJVTk5FUl9CUEZfQ0ZMQUdTKSAgICAgICAgIFxcXFxcXG4tXFx0XFx0XFx0XFx0XFx0ICAkJCgkJFxcdTAwM2MtQ0ZMQUdTKVxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0XFx0XFx0ICAkJCgkJFxcdTAwM2MtJDItQ0ZMQUdTKSwkKFRSVU5ORVJfQklOQVJZKSlcXG4tXFxuLSQoVFJVTk5FUl9CUEZfU0tFTFMpOiAlLnNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVClcXG4tXFx0JChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbICEgLWYgJCRcXHUwMDNjIF07IHRoZW5cXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1xcdFxcdFxcdFxcXFxcXG4tXFx0XFx0cHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVxcdTAwM2VcXHUwMDI2MjsgXFxcXFxcbi1cXHRcXHRleGl0IDA7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRmaTspXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ0dFTi1TS0VMJyAnWyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKScgMVxcdTAwM2VcXHUwMDI2MjsgXFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFxcdTAwM2M6Lm89LmxpbmtlZDEubykgJCRcXHUwMDNjIFxcdTAwMjZcXHUwMDI2XFx0XFx0XFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFxcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGlua2VkMS5vKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXFx1MDAzYzoubz0ubGlua2VkMy5vKSAkJChcXHUwMDNjOi5vPS5saW5rZWQyLm8pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0ZGlmZiAkJChcXHUwMDNjOi5vPS5saW5rZWQyLm8pICQkKFxcdTAwM2M6Lm89LmxpbmtlZDMubykgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkJChcXHUwMDNjOi5vPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFxcdTAwM2M6LmJwZi5vPSkpIFxcdTAwM2UgJCRAIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIHN1YnNrZWxldG9uICQkKFxcdTAwM2M6Lm89LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXFx1MDAzYzouYnBmLm89KSkgXFx1MDAzZSAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCkgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXFxcXFxcbi1cXHRcXHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTsgXFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdH0pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0cm0gLWYgJCQoXFx1MDAzYzoubz0ubGlua2VkMS5vKSAkJChcXHUwMDNjOi5vPS5saW5rZWQyLm8pICQkKFxcdTAwM2M6Lm89LmxpbmtlZDMubylcXG4tXFxuLSQoVFJVTk5FUl9CUEZfTFNLRUxTKTogJS5sc2tlbC5oOiAlLmJwZi5vICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1cXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFxcdTAwM2MgXTsgdGhlblxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0JCQoUk0pICQkQDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0XFx0ZXhpdCAwO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0Zmk7KVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0cHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJFxcdTAwM2MgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDEubykgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQzLm8pICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQyLm8pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0ZGlmZiAkJChcXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcXHUwMDNjOi5vPS5sbGlua2VkMy5vKSBcXHUwMDI2XFx1MDAyNlxcdFxcdFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uIC1MICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFxcdTAwM2M6LmJwZi5vPV9sc2tlbCkpIFxcdTAwM2UgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXFxcXG4tXFx0XFx0JCQoUk0pICQkQDsgXFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdH0pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0cm0gLWYgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDEubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDMubylcXG4tXFxuLSQoVFJVTk5FUl9CUEZfTFNLRUxTX1NJR05FRCk6ICUubHNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVClcXG4tXFx0JChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbICEgLWYgJCRcXHUwMDNjIF07IHRoZW5cXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCQkKFJNKSAkJEA7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdFxcdGV4aXQgMDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdGZpOylcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnR0VOLVNLRUwnICdbJChUUlVOTkVSX0JJTkFSWSkgKHNpZ25lZCldICQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDEubykgJCRcXHUwMDNjIFxcdTAwMjZcXHUwMDI2XFx0XFx0XFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQxLm8pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcXHUwMDNjOi5vPS5sbGlua2VkMy5vKSAkJChcXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdGRpZmYgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDMubykgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkKExTS0VMX1NJR04pICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFxcdTAwM2M6LmJwZi5vPV9sc2tlbCkpIFxcdTAwM2UgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXFxcXG4tXFx0XFx0JCQoUk0pICQkQDsgXFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdH0pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0cm0gLWYgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDEubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDMubylcXG4tXFxuLSQoTElOS0VEX0JQRl9PQkpTKTogJTogJChUUlVOTkVSX09VVFBVVCkvJVxcbi1cXG4tIyAuU0VDT05ERVhQQU5TSU9OIGhlcmUgYWxsb3dzIHRvIGNvcnJlY3RseSBleHBhbmQgJS1kZXBzIHZhcmlhYmxlcyBhcyBwcmVyZXF1aXNpdGVzXFxuLS5TRUNPTkRFWFBBTlNJT046XFxuLSQoVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEKTogJChUUlVOTkVSX09VVFBVVCkvJTogJCQkJCglLWRlcHMpICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1cXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGZvciBmIGluICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKTsgZG8gXFxcXFxcbi1cXHRcXHRpZiBbICEgLWYgJCQkJGYgXTsgdGhlblxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0JCQoUk0pICQkQCAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCk7XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdFxcdFxcdGV4aXQgMDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdGZpO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ZG9uZTspXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ0xJTkstQlBGJyAnWyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCQoQDouc2tlbC5oPS5icGYubykpJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoQDouc2tlbC5oPS5saW5rZWQxLm8pICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdGRpZmYgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSBcXHUwMDI2XFx1MDAyNlxcdFxcXFxcXG4tXFx0cHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjIgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKEA6LnNrZWwuaD0pKSBcXHUwMDNlICQkQCBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBzdWJza2VsZXRvbiAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoQDouc2tlbC5oPSkpIFxcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXFxcXG4tXFx0XFx0JCQoUk0pICQkQCAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCk7XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdH0pIFxcdTAwMjZcXHUwMDI2XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRybSAtZiAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKVxcbi1cXG4tIyBXaGVuIHRoZSBjb21waWxlciBnZW5lcmF0ZXMgYSAlLmQgZmlsZSwgb25seSBza2VsIGJhc2VuYW1lcyAobm90XFxuLSMgZnVsbCBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciBjb3JyZXNwb25kaW5nICUub1xcbi0jIGZpbGUuIHZwYXRoIGRpcmVjdGl2ZXMgYmVsb3cgaW5zdHJ1Y3QgbWFrZSB0byBzZWFyY2ggZm9yIHNrZWwgZmlsZXNcXG4tIyBpbiBUUlVOTkVSX09VVFBVVCwgaWYgdGhleSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5Llxcbi12cGF0aCAlLnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxcbi12cGF0aCAlLmxza2VsLmggJChUUlVOTkVSX09VVFBVVClcXG4tdnBhdGggJS5zdWJza2VsLmggJChUUlVOTkVSX09VVFBVVClcXG4tXFxuK2lmbmVxICgkKFNLSVBfRE9DUyksMSlcXG4rYWxsOiBkb2NzXFxuIGVuZGlmXFxuIFxcbi0jIGVuc3VyZSB3ZSBzZXQgdXAgdGVzdHMuaCBoZWFkZXIgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZVxcbi1pZmVxICgkKCQoVFJVTk5FUl9URVNUU19ESVIpLXRlc3RzLWhkciksKVxcbi0kKFRSVU5ORVJfVEVTVFNfRElSKS10ZXN0cy1oZHIgOj0geVxcbi0kKFRSVU5ORVJfVEVTVFNfSERSKTogJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jXFxuLVxcdCQkKGNhbGwgbXNnLFRFU1QtSERSLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcXG4tXFx0JCQoc2hlbGwgKGVjaG8gJy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJztcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgc2VkIC1uIC1FICdzL152b2lkIChzZXJpYWxfKT90ZXN0XyhbYS16QS1aMC05X10rKVxcXFwoKHZvaWQpP1xcXFwpLiovREVGSU5FX1RFU1QoXFxcXDIpL3AnXFx0XFxcXFxcbi1cXHRcXHRcXHQkKFRSVU5ORVJfVEVTVFNfRElSKS8qLmMgfCBzb3J0IDtcXHRcXFxcXFxuLVxcdFxcdCApIFxcdTAwM2UgJCRAKVxcbi1lbmRpZlxcbitkb2NzOlxcbitcXHQkKFEpUlNUMk1BTl9PUFRTPVxcXCItLWV4aXQtc3RhdHVzPTFcXFwiICQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcylcXHRcXFxcXFxuK1xcdCAgICAgICAgICAgIC1mIE1ha2VmaWxlLmRvY3NcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgICAgICAgIHByZWZpeD0gT1VUUFVUPSQoT1VUUFVUKS8gREVTVERJUj0kKE9VVFBVVCkvICRAXFxuIFxcbi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86ICQoUkVTT0xWRV9CVEZJRFMpICQoVFJVTk5FUl9PVVRQVVQpL2J0Zl9kYXRhLmJwZi5vXFxuLSQoVFJVTk5FUl9PVVRQVVQpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogcHJpdmF0ZSBURVNUX05FRURTX0JURklEUyA9IDFcXG4tXFxuLSMgY29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXNcXG4tIyBOb3RlOiB3ZSBjZCBpbnRvIG91dHB1dCBkaXJlY3RvcnkgdG8gZW5zdXJlIGVtYmVkZGVkIEJQRiBvYmplY3QgaXMgZm91bmRcXG4tJChUUlVOTkVSX1RFU1RfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5vOlxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kXFxuLVxcdCQkKGNhbGwgbXNnLFRFU1QtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcXG4tXFx0JChRKShjZCAkJChARCkgXFx1MDAyNlxcdTAwMjYgJCQoQ0MpIC1JLiAkJChDRkxBR1MpIC1NTUQgLU1UICQkQCAtYyAkKENVUkRJUikvJCRcXHUwMDNjICQkKExETElCUykgLW8gJCQoQEYpKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcXFxcbi1cXHRcXHQoJChSTSkgJCRAOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtVEVTVCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyKSkpXFxuLVxcdCQkKGlmICQkKFRFU1RfTkVFRFNfQlRGSURTKSxcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCQoUSlpZiBbIC1mICQkQCBdOyB0aGVuXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQkKGlmICQoZmlsdGVyIDEsJChWKSksdHJ1ZSxwcmludGYgJyAgJS04cyVzICVzXFxcXG4nIFxcXCJCVEZJRFNcXFwiIFxcXCIgWyQoVFJVTk5FUl9CSU5BUlkpXVxcXCIgXFxcIiQkKG5vdGRpciAkJEApXFxcIik7IFxcXFxcXG4tXFx0XFx0JChSRVNPTFZFX0JURklEUykgLS1idGYgJChUUlVOTkVSX09VVFBVVCkvYnRmX2RhdGEuYnBmLm8gJCRAO1xcdFxcXFxcXG4tXFx0XFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJCRALkJURl9pZHMgJCRAO1xcdFxcdFxcXFxcXG4tXFx0XFx0ZmkpXFxuLVxcbi0kKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKTogJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0LmQ6XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJChUUlVOTkVSX0JQRl9TS0VMUylcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAkKFRSVU5ORVJfQlBGX0xTS0VMUylcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAkKFRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQpXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpXFxuLVxcbi1pZmVxICgkKGZpbHRlciBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHMsJChNQUtFQ01ER09BTFMpKSwpXFxuLWluY2x1ZGUgJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKSlcXG4tZW5kaWZcXG4rZG9jcy1jbGVhbjpcXG4rXFx0JChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcylcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgICAgICAgIC1mIE1ha2VmaWxlLmRvY3NcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgICAgICAgIHByZWZpeD0gT1VUUFVUPSQoT1VUUFVUKS8gREVTVERJUj0kKE9VVFBVVCkvICRAXFxuIFxcbi0jIGFkZCBwZXIgZXh0cmEgb2JqIENGR0xBR1MgZGVmaW5pdGlvbnNcXG4tJChmb3JlYWNoIE4sJChwYXRzdWJzdCAkKFRSVU5ORVJfT1VUUFVUKS8lLm8sJSwkKFRSVU5ORVJfRVhUUkFfT0JKUykpLFxcdFxcXFxcXG4tXFx0JChldmFsICQoVFJVTk5FUl9PVVRQVVQpLyQoTikubzogQ0ZMQUdTICs9ICQoJChOKS5jLUNGTEFHUykpKVxcbi1cXG4tJChUUlVOTkVSX0VYVFJBX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLm86XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJS5jXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJChWRVJJRllfU0lHX0hEUilcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKFRSVU5ORVJfVEVTVFNfSERSKVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1cXHQkJChjYWxsIG1zZyxFWFQtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcXG4tXFx0JChRKSQkKENDKSAkJChDRkxBR1MpIC1jICQkXFx1MDAzYyAkJChMRExJQlMpIC1vICQkQFxcbi1cXG4tJChUUlVOTkVSX0xJQl9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5vOiQoVE9PTFNESVIpL2xpYi8lLmNcXG4tXFx0JCQoY2FsbCBtc2csTElCLU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXFxuLVxcdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAtYyAkJFxcdTAwM2MgJCQoTERMSUJTKSAtbyAkJEBcXG4tXFxuLSMgbm9uLWZsYXZvcmVkIGluLXNyY3RyZWUgYnVpbGRzIHJlY2VpdmUgc3BlY2lhbCB0cmVhdG1lbnQsIGluIHBhcnRpY3VsYXIsIHdlXFxuLSMgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKVxcbi0kKFRSVU5ORVJfQklOQVJZKS1leHRyYXM6ICQoVFJVTk5FUl9FWFRSQV9GSUxFUykgfCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1pZm5lcSAoJDI6JChPVVRQVVQpLDokKHNoZWxsIHB3ZCkpXFxuLVxcdCQkKGNhbGwgbXNnLEVYVC1DT1BZLCQoVFJVTk5FUl9CSU5BUlkpLCQoVFJVTk5FUl9FWFRSQV9GSUxFUykpXFxuLVxcdCQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJCReICQoVFJVTk5FUl9PVVRQVVQpL1xcbisjIHZtbGludXguaCBpcyBmaXJzdCBkdW1wZWQgdG8gYSB0ZW1wb3JhcnkgZmlsZSBhbmQgdGhlbiBjb21wYXJlZCB0b1xcbisjIHRoZSBwcmV2aW91cyB2ZXJzaW9uLiBUaGlzIGhlbHBzIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHJlLWJ1aWxkcyBvZlxcbisjIEJQRiBvYmplY3RzLlxcbiskKElOQ0xVREVfRElSKS92bWxpbnV4Lmg6ICQoVk1MSU5VWF9CVEYpICQoQlBGVE9PTCkgfCAkKElOQ0xVREVfRElSKVxcbitpZmVxICgkKFZNTElOVVhfSCksKVxcbitcXHQkKGNhbGwgbXNnLEdFTiwsJEApXFxuK1xcdCQoUSkkKEJQRlRPT0wpIGJ0ZiBkdW1wIGZpbGUgJChWTUxJTlVYX0JURikgZm9ybWF0IGMgXFx1MDAzZSAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcFxcbitcXHQkKFEpY21wIC1zICQoSU5DTFVERV9ESVIpLy52bWxpbnV4LmgudG1wICRAIHx8IG12ICQoSU5DTFVERV9ESVIpLy52bWxpbnV4LmgudG1wICRAXFxuK2Vsc2VcXG4rXFx0JChjYWxsIG1zZyxDUCwsJEApXFxuK1xcdCQoUSljcCBcXFwiJChWTUxJTlVYX0gpXFxcIiAkQFxcbiBlbmRpZlxcbiBcXG4tIyBzb21lIFgudGVzdC5vIGZpbGVzIGhhdmUgcnVudGltZSBkZXBlbmRlbmNpZXMgb24gWS5icGYubyBmaWxlc1xcbi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6IHwgJChUUlVOTkVSX0JQRl9PQkpTKVxcbi1cXG4tJChPVVRQVVQpLyQoVFJVTk5FUl9CSU5BUlkpOiAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSlcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgJChUUlVOTkVSX0VYVFJBX09CSlMpICQkKEJQRk9CSilcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgJChUUlVOTkVSX0xJQl9PQkpTKVxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICAkKFRSVU5ORVJfQlBGVE9PTClcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgJChPVVRQVVQpL3ZlcmlzdGF0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgIHwgJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSkpXFxuLVxcdCQkKGNhbGwgbXNnLEJJTkFSWSwsJCRAKVxcbi1cXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLCQkKGZpbHRlciAlLmEgJS5vLCQkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUX09CSlMpKSAkJChmaWx0ZXItb3V0ICQoVFJVTk5FUl9URVNUX09CSlMpLCQkXikpLCQkKGZpbHRlciAlLmEgJS5vLCQkXikpLCQkKGZpbHRlciAlLmEgJS5vLCQkXikpICQkKExETElCUykgJCQoTExWTV9MRExJQlMpICQkKExERkxBR1MpICQkKExMVk1fTERGTEFHUykgLW8gJCRAXFxuLVxcdCQoUSlsbiAtc2YgJChpZiAkMiwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFxcXFxcXG4tXFx0XFx0ICAgJChPVVRQVVQpLyQoaWYgJDIsJDIvKWJwZnRvb2xcXG4tXFxuLWVuZGVmXFxuLVxcbi1WRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXFxuLVZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0LmhcXG4tVkVSSUZJQ0FUSU9OX0NFUlQgICA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkuZGVyXFxuLVBSSVZBVEVfS0VZIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5wZW1cXG4tXFxuLSQoVkVSSUZJQ0FUSU9OX0NFUlQpICQoUFJJVkFURV9LRVkpOiAkKFZFUklGWV9TSUdfU0VUVVApXFxuKyMgT25lIGdlbmtleSBydW4gcHJvZHVjZXMgYm90aCBmaWxlcy4gQSBwbGFpbiB0d28tdGFyZ2V0IHJ1bGUgaXMgbm90XFxuKyMgZ3JvdXBlZCAtIHVuZGVyIC1qIG1ha2Ugd291bGQgcnVuIGdlbmtleSB0d2ljZSBjb25jdXJyZW50bHkgYW5kIHRoZVxcbisjIG9wZW5zc2wgaW52b2NhdGlvbnMgcmFjZTsgdGhlIHBhdHRlcm4gZm9ybSBpcyBpbXBsaWNpdGx5IGdyb3VwZWQgZXZlblxcbisjIHdpdGggbWFrZSBcXHUwMDNjIDQuMyAoc2FtZSB3b3JrYXJvdW5kIGFzIHRoZSB0ZXN0X2ttb2RzIHJ1bGUpLlxcbiskKEJVSUxEX0RJUikvJS5wZW0gJChCVUlMRF9ESVIpLyUuZGVyOiAkKFZFUklGWV9TSUdfU0VUVVApXFxuIFxcdCQoUSlta2RpciAtcCAkKEJVSUxEX0RJUilcXG4gXFx0JChRKSQoVkVSSUZZX1NJR19TRVRVUCkgZ2Vua2V5ICQoQlVJTERfRElSKVxcbiBcXG5AQCAtODM1LDExNiArMzcwLDE4MyBAQCBMSUJBUkVOQV9CUEZfREVQUyA6PSAkKHdpbGRjYXJkIGxpYmFyZW5hL01ha2VmaWxlXFx0XFx0XFxcXFxcbiBcXHRcXHRcXHRcXHQgbGliYXJlbmEvc2VsZnRlc3RzLypcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdCBsaWJhcmVuYS8qLmJwZi5vKVxcbiBcXG4tTElCQVJFTkFfU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYS5za2VsLmhcXG4tXFxuICQoTElCQVJFTkFfU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CUEZfREVQUylcXG4gXFx0KyQoTUFLRSkgLUMgbGliYXJlbmEgbGliYXJlbmEuc2tlbC5oICQoTElCQVJFTkFfTUFLRV9BUkdTKVxcbiBcXG4taWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcXG4tTElCQVJFTkFfQVNBTl9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hX2FzYW4uc2tlbC5oXFxuLUNGTEFHUyArPSAtREhBU19CUEZfQVJFTkFfQVNBTlxcbitsaWJhcmVuYTogJChMSUJBUkVOQV9TS0VMKVxcbiBcXG4raWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcXG4gJChMSUJBUkVOQV9BU0FOX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQlBGX0RFUFMpXFxuIFxcdCskKE1BS0UpIC1DIGxpYmFyZW5hIGxpYmFyZW5hX2FzYW4uc2tlbC5oICQoTElCQVJFTkFfTUFLRV9BUkdTKVxcbitcXG4rbGliYXJlbmFfYXNhbjogJChMSUJBUkVOQV9BU0FOX1NLRUwpXFxuIGVuZGlmXFxuIFxcbi0jIERlZmluZSB0ZXN0X3Byb2dzIHRlc3QgcnVubmVyLlxcbi1UUlVOTkVSX1RFU1RTX0RJUiA6PSBwcm9nX3Rlc3RzXFxuLVRSVU5ORVJfQlBGX1BST0dTX0RJUiA6PSBwcm9nc1xcbi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9wcm9ncy5jXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgY2dyb3VwX2hlbHBlcnMuY1xcdFxcXFxcXG4tXFx0XFx0XFx0IHRyYWNlX2hlbHBlcnMuY1xcdFxcXFxcXG4tXFx0XFx0XFx0IG5ldHdvcmtfaGVscGVycy5jXFx0XFxcXFxcbi1cXHRcXHRcXHQgdGVzdGluZ19oZWxwZXJzLmNcXHRcXFxcXFxuLVxcdFxcdFxcdCBidGZfaGVscGVycy5jXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgY2FwX2hlbHBlcnMuY1xcdFxcdFxcXFxcXG4tXFx0XFx0XFx0IHVucHJpdl9oZWxwZXJzLmMgXFx0XFxcXFxcbi1cXHRcXHRcXHQgc3lzY3RsX2hlbHBlcnMuY1xcdFxcXFxcXG4tXFx0XFx0XFx0IG5ldGxpbmtfaGVscGVycy5jXFx0XFxcXFxcbi1cXHRcXHRcXHQgaml0X2Rpc2FzbV9oZWxwZXJzLmNcXHRcXFxcXFxuLVxcdFxcdFxcdCBpb19oZWxwZXJzLmNcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCB0ZXN0X2xvYWRlci5jXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgeHNrLmNcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCBkaXNhc20uY1xcdFxcdFxcXFxcXG4tXFx0XFx0XFx0IGRpc2FzbV9oZWxwZXJzLmNcXHRcXFxcXFxuLVxcdFxcdFxcdCBqc29uX3dyaXRlci5jIFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICQoVkVSSUZZX1NJR19IRFIpXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgZmxvd19kaXNzZWN0b3JfbG9hZC5oXFx0XFxcXFxcbi1cXHRcXHRcXHQgaXBfY2hlY2tfZGVmcmFnX2ZyYWdzLmhcXHRcXFxcXFxuLVxcdFxcdFxcdCBicGZ0b29sX2hlbHBlcnMuY1xcdFxcXFxcXG4tXFx0XFx0XFx0IHVzZHRfMS5jIHVzZHRfMi5jXFx0XFxcXFxcbi1cXHRcXHRcXHQgJChMSUJBUkVOQV9TS0VMKVxcdFxcXFxcXG4tXFx0XFx0XFx0ICQoTElCQVJFTkFfQVNBTl9TS0VMKVxcbi1UUlVOTkVSX0xJQl9TT1VSQ0VTIDo9IGZpbmRfYml0LmNcXG4tVFJVTk5FUl9FWFRSQV9GSUxFUyA6PSAkKE9VVFBVVCkvdXJhbmRvbV9yZWFkXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJChPVVRQVVQpL2xpYnVyYW5kb21fcmVhZC5zb1xcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQoT1VUUFVUKS94ZHBfc3lucHJveHlcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKE9VVFBVVCkvc2lnbi1maWxlXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJChPVVRQVVQpL3Vwcm9iZV9tdWx0aVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQoVEVTVF9LTU9EX1RBUkdFVFMpXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgaW1hX3NldHVwLnNoIFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQoVkVSSUZZX1NJR19TRVRVUClcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKHdpbGRjYXJkIHByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV8qLmMpXFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy8qLmJwZi5vKVxcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX0JQRl9CVUlMRF9SVUxFXFxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKSAtREVOQUJMRV9BVE9NSUNTX1RFU1RTXFxuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MpKVxcbi1cXG4tIyBEZWZpbmUgdGVzdF9wcm9ncy1ub19hbHUzMiB0ZXN0IHJ1bm5lci5cXG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFXFxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKVxcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzLG5vX2FsdTMyKSlcXG4tXFxuLSMgRGVmaW5lIHRlc3RfcHJvZ3MtY3B1djQgdGVzdCBydW5uZXIuXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgR2VuZXJhdGVkIHRlc3QgbGlzdCBoZWFkZXJzXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK1xcbitkZWZpbmUgZ2VuX3Rlc3RzX2hkclxcbitcXHQkKGNhbGwgbXNnLFRFU1QtSERSLCwkQClcXG4rXFx0JChRKShlY2hvICcvKiBHZW5lcmF0ZWQgaGVhZGVyLCBkbyBub3QgZWRpdCAqLyc7XFx0XFx0XFxcXFxcbitcXHQgICAgIHNlZCAtbiAtRSAncy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dKylcXFxcKCh2b2lkKT9cXFxcKS4qL0RFRklORV9URVNUKFxcXFwyKS9wJyBcXFxcXFxuK1xcdFxcdCQoQEQpLyouYyB8IHNvcnQpIFxcdTAwM2UgJEBcXG4rZW5kZWZcXG4rXFxuK3Byb2dfdGVzdHMvdGVzdHMuaDogJCh3aWxkY2FyZCBwcm9nX3Rlc3RzLyouYylcXG4rXFx0JChnZW5fdGVzdHNfaGRyKVxcbitcXG4rbWFwX3Rlc3RzL3Rlc3RzLmg6ICQod2lsZGNhcmQgbWFwX3Rlc3RzLyouYylcXG4rXFx0JChnZW5fdGVzdHNfaGRyKVxcbitcXG4rdmVyaWZpZXIvdGVzdHMuaDogdmVyaWZpZXIvKi5jXFxuK1xcdCQoUSkoIGNkIHZlcmlmaWVyLzsgXFxcXFxcbitcXHQgICAgICBlY2hvICcvKiBHZW5lcmF0ZWQgaGVhZGVyLCBkbyBub3QgZWRpdCAqLyc7IFxcXFxcXG4rXFx0ICAgICAgZWNobyAnI2lmZGVmIEZJTExfQVJSQVknOyBcXFxcXFxuK1xcdCAgICAgIGxzICouYyAyXFx1MDAzZSAvZGV2L251bGwgfCBzZWQgLWUgJ3NAXFxcXCguKlxcXFwpQCNpbmNsdWRlIFxcXFxcXFwiXFxcXDFcXFxcXFxcIkAnOyBcXFxcXFxuK1xcdCAgICAgIGVjaG8gJyNlbmRpZicgXFxcXFxcbitcXHQgICAgKSBcXHUwMDNlIHZlcmlmaWVyL3Rlc3RzLmhcXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgU2hhcmVkIGhlbHBlciBvYmplY3RzLCB1c2VkIGJ5IHRoZSBzdGFuZGFsb25lIGJpbmFyaWVzIGJlbG93IGFuZCAoYXNcXG4rIyBwcmVidWlsdCBpbnB1dHMpIGJ5IHRoZSB1bmZsYXZvcmVkIHRlc3RfcHJvZ3MgcnVubmVyLlxcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbitcXG4rIyBTb21lIHV0aWxpdHkgZnVuY3Rpb25zIHVzZSBMTFZNIGxpYnJhcmllc1xcbiskKE9VVFBVVCkvaml0X2Rpc2FzbV9oZWxwZXJzLm86IENGTEFHUyArPSAkKExMVk1fQ0ZMQUdTKVxcbitcXG4rSEVMUEVSX09CSlMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyx0ZXN0aW5nX2hlbHBlcnMubyBjZ3JvdXBfaGVscGVycy5vIFxcXFxcXG4rXFx0ICAgICAgIHRyYWNlX2hlbHBlcnMubyBuZXR3b3JrX2hlbHBlcnMubyBqc29uX3dyaXRlci5vXFx0XFx0XFxcXFxcbitcXHQgICAgICAgY2FwX2hlbHBlcnMubyB1bnByaXZfaGVscGVycy5vIHVzZHRfMS5vIHVzZHRfMi5vIHhzay5vKVxcbitcXG4rIyAkKEJQRlRPT0wpIGlzIGEgcHJlcmVxdWlzaXRlIGJlY2F1c2UgaXRzIHN1Yi1tYWtlIGlzIHdoYXQgaW5zdGFsbHNcXG4rIyBsaWJicGYncyBpbnRlcm5hbCBoZWFkZXJzIChicGYvaGFzaG1hcC5oLCBicGYvbGliYnBmX2ludGVybmFsLmgpIGludG9cXG4rIyAkKElOQ0xVREVfRElSKTsgd2l0aG91dCBpdCwgaGVscGVycyBpbmNsdWRpbmcgdGhvc2UgaGVhZGVycyByYWNlIHRoZVxcbisjIGluc3RhbGwgYW5kIGNhbiBzaWxlbnRseSBwaWNrIHVwIHRoZSBzb3VyY2UtdHJlZSBjb3BpZXMgaW5zdGVhZC5cXG4rJChIRUxQRVJfT0JKUyk6IGZsb3dfZGlzc2VjdG9yX2xvYWQuaCBpcF9jaGVja19kZWZyYWdfZnJhZ3MuaFxcdFxcdFxcXFxcXG4rXFx0XFx0JChWRVJJRllfU0lHX0hEUikgcHJvZ190ZXN0cy90ZXN0cy5oICQoQlBGT0JKKSAkKEJQRlRPT0wpXFxuK1xcbiskKE9VVFBVVCkvdGVzdF9zb2NrbWFwOiAkKE9VVFBVVCkvY2dyb3VwX2hlbHBlcnMubyAkKE9VVFBVVCkvdGVzdGluZ19oZWxwZXJzLm9cXG4rJChPVVRQVVQpL3Rlc3RfdGNwbm90aWZ5X3VzZXI6ICQoT1VUUFVUKS9jZ3JvdXBfaGVscGVycy5vXFx0XFx0XFxcXFxcbitcXHRcXHRcXHQgICAgICAgJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vXFx0XFx0XFxcXFxcbitcXHRcXHRcXHQgICAgICAgJChPVVRQVVQpL3RyYWNlX2hlbHBlcnMub1xcbiskKE9VVFBVVCkvdGVzdF90YWc6ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xcbiskKE9VVFBVVCkvdGVzdF9saXJjX21vZGUyX3VzZXI6ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xcbiskKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZDogZmxvd19kaXNzZWN0b3JfbG9hZC5oICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xcbitcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rIyBUZXN0IHJ1bm5lciBpbnN0YW5jZXMsIG9uZSBzdWItbWFrZSBlYWNoIChzZWUgTWFrZWZpbGUucnVubmVyKS5cXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rXFxuKyMgVGhlIExMVk0gZmVhdHVyZS1wcm9iZSByZXN1bHRzIGFyZSBleHBvcnRlZCB0byB0aGUgcnVubmVyIHN1Yi1tYWtlcy5cXG4rIyBDQyBpcyBwYXNzZWQgZXhwbGljaXRseSBpbnN0ZWFkOiBleHBvcnRpbmcgaXQgd291bGQgYWxzbyBsZWFrIGxpYi5taydzXFxuKyMgQ0MgaW50byB0aGUgbGliYnBmL2JwZnRvb2wvcmVzb2x2ZV9idGZpZHMgc3ViLWJ1aWxkcywgd2hpY2ggY29tcHV0ZVxcbisjIHRoZWlyIG93bi5cXG4rZXhwb3J0IExMVk1fQ0ZMQUdTIExMVk1fTERMSUJTIExMVk1fTERGTEFHU1xcbitcXG4rUlVOTkVSX01BS0UgOj0gJChNQUtFKSAtZiBNYWtlZmlsZS5ydW5uZXIgT1VUUFVUPSQoT1VUUFVUKSBDQz0nJChDQyknXFxuK1xcbisjIEV2ZXJ5dGhpbmcgYSBydW5uZXIgaW5zdGFuY2UgcmVmZXJlbmNlcyBidXQgZG9lcyBub3Qga25vdyBob3cgdG8gYnVpbGQuXFxuK1JVTk5FUl9QUkVSRVFTIDo9ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChCUEZUT09MKVxcdFxcdFxcXFxcXG4rXFx0XFx0ICAkKFRSVU5ORVJfQlBGVE9PTCkgJChSRVNPTFZFX0JURklEUylcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgJChPVVRQVVQpL3ZlcmlzdGF0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICQoVkVSSUZZX1NJR19IRFIpICQoUFJJVkFURV9LRVkpICQoVkVSSUZJQ0FUSU9OX0NFUlQpXFx0XFxcXFxcbitcXHRcXHQgICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXFx0XFx0XFxcXFxcbitcXHRcXHQgIHByb2dfdGVzdHMvdGVzdHMuaFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAkKEhFTFBFUl9PQkpTKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAkKE9VVFBVVCkvdXJhbmRvbV9yZWFkICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc29cXHRcXFxcXFxuK1xcdFxcdCAgJChPVVRQVVQpL3hkcF9zeW5wcm94eSAkKE9VVFBVVCkvc2lnbi1maWxlXFx0XFx0XFxcXFxcbitcXHRcXHQgICQoT1VUUFVUKS91cHJvYmVfbXVsdGkgJChURVNUX0tNT0RfVEFSR0VUUylcXG4rXFxuK0ZPUkNFOlxcbitcXG4rIyBUaGUgZGVmYXVsdCBmbGF2b3IncyBza2VsZXRvbnMgYXJlIGFsc28gaW5wdXRzIG9mIGJlbmNoLCB0ZXN0X21hcHMsXFxuKyMgeHNreGNlaXZlciwgeGRwXyogYW5kIHRlc3RfY3BwOyBcXFwiZGVmYXVsdC1za2Vsc1xcXCIgYnVpbGRzIGp1c3QgdGhvc2VcXG4rIyB3aXRob3V0IHRoZSB0ZXN0X3Byb2dzIHRlc3Qgb2JqZWN0cyBhbmQgYmluYXJ5LlxcbisuUEhPTlk6IGRlZmF1bHQtc2tlbHNcXG4rZGVmYXVsdC1za2VsczogJChSVU5ORVJfUFJFUkVRUylcXG4rXFx0KyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9IFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXFxcXG4rXFx0XFx0QlBGX0JVSUxEPWNsYW5nIEJQRl9NQ1BVPXYzIEJQRl9ERUZJTkVTPS1ERU5BQkxFX0FUT01JQ1NfVEVTVFMgc2tlbHNcXG4rXFxuKyQoT1VUUFVUKS90ZXN0X3Byb2dzOiAkKFJVTk5FUl9QUkVSRVFTKSBkZWZhdWx0LXNrZWxzIEZPUkNFXFxuK1xcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPSBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxcXFxuK1xcdFxcdEJQRl9CVUlMRD1jbGFuZyBCUEZfTUNQVT12MyBCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTXFxuK1xcbiskKE9VVFBVVCkvdGVzdF9wcm9ncy1ub19hbHUzMjogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0VcXG4rXFx0KyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9bm9fYWx1MzIgVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcXFxcbitcXHRcXHRCUEZfQlVJTEQ9Y2xhbmcgQlBGX01DUFU9djJcXG4rXFxuIGlmbmVxICgkKENMQU5HX0NQVVY0KSwpXFxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfQ1BVVjRfQlBGX0JVSUxEX1JVTEVcXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxjcHV2NCkpXFxuKyQoT1VUUFVUKS90ZXN0X3Byb2dzLWNwdXY0OiAkKFJVTk5FUl9QUkVSRVFTKSBGT1JDRVxcbitcXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1jcHV2NCBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxcXFxuK1xcdFxcdEJQRl9CVUlMRD1jbGFuZyBCUEZfTUNQVT12NCBCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTXFxuIGVuZGlmXFxuIFxcbi0jIERlZmluZSB0ZXN0X3Byb2dzIEJQRi1HQ0MtZmxhdm9yZWQgdGVzdCBydW5uZXIuXFxuIGlmbmVxICgkKEJQRl9HQ0MpLClcXG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBHQ0NfQlBGX0JVSUxEX1JVTEVcXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsZ2NjLClcXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxicGZfZ2NjKSlcXG4tZW5kaWZcXG4tXFxuLSMgRGVmaW5lIHRlc3RfbWFwcyB0ZXN0IHJ1bm5lci5cXG4tVFJVTk5FUl9URVNUU19ESVIgOj0gbWFwX3Rlc3RzXFxuLVRSVU5ORVJfQlBGX1BST0dTX0RJUiA6PSBwcm9nc1xcbi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9tYXBzLmNcXG4tVFJVTk5FUl9MSUJfU09VUkNFUyA6PVxcbi1UUlVOTkVSX0VYVFJBX0ZJTEVTIDo9XFxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gJCQoZXJyb3Igbm8gQlBGIG9iamVjdHMgc2hvdWxkIGJlIGJ1aWx0KVxcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj1cXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9tYXBzKSlcXG4tXFxuLSMgRGVmaW5lIHRlc3RfdmVyaWZpZXIgdGVzdCBydW5uZXIuXFxuLSMgSXQgaXMgbXVjaCBzaW1wbGVyIHRoYW4gdGVzdF9tYXBzL3Rlc3RfcHJvZ3MgYW5kIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgZnJvbVxcbi0jIHRoZW0gKGUuZy4sIHRlc3QuaCBpcyB1c2luZyBjb21wbGV0ZWx5IHBhdHRlcm4pLCB0aGF0IGl0J3Mgd29ydGgganVzdFxcbi0jIGV4cGxpY2l0bHkgZGVmaW5pbmcgYWxsIHRoZSBydWxlcyBleHBsaWNpdGx5Llxcbi12ZXJpZmllci90ZXN0cy5oOiB2ZXJpZmllci8qLmNcXG4tXFx0JChzaGVsbCAoIGNkIHZlcmlmaWVyLzsgXFxcXFxcbi1cXHRcXHQgIGVjaG8gJy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJzsgXFxcXFxcbi1cXHRcXHQgIGVjaG8gJyNpZmRlZiBGSUxMX0FSUkFZJzsgXFxcXFxcbi1cXHRcXHQgIGxzICouYyAyXFx1MDAzZSAvZGV2L251bGwgfCBzZWQgLWUgJ3NAXFxcXCguKlxcXFwpQCNpbmNsdWRlIFxcXFxcXFwiXFxcXDFcXFxcXFxcIkAnOyBcXFxcXFxuLVxcdFxcdCAgZWNobyAnI2VuZGlmJyBcXFxcXFxuLVxcdFxcdCkgXFx1MDAzZSB2ZXJpZmllci90ZXN0cy5oKVxcbi0kKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogdGVzdF92ZXJpZmllci5jIHZlcmlmaWVyL3Rlc3RzLmggJChCUEZPQkopIHwgJChPVVRQVVQpXFxuKyQoT1VUUFVUKS90ZXN0X3Byb2dzLWJwZl9nY2M6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXFxuK1xcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPWJwZl9nY2MgVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcXFxcbitcXHRcXHRCUEZfQlVJTEQ9Z2NjXFxuK2VuZGlmXFxuK1xcbisjIHRlc3RfbWFwcyBjb21waWxlcyBtYXBfdGVzdHMvKi5jIGFnYWluc3QgdGhlIGRlZmF1bHQgZmxhdm9yJ3Mgc2tlbGV0b25zXFxuKyQoT1VUUFVUKS90ZXN0X21hcHM6ICQoUlVOTkVSX1BSRVJFUVMpIG1hcF90ZXN0cy90ZXN0cy5oIGRlZmF1bHQtc2tlbHMgRk9SQ0VcXG4rXFx0KyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9tYXBzIEZMQVZPUj0gVEVTVFNfRElSPW1hcF90ZXN0cyBcXFxcXFxuK1xcdFxcdEJQRl9CVUlMRD1ub25lXFxuK1xcbisjIERlZmF1bHQtZmxhdm9yIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnMgY29uc3VtZWQgYnkgdGFyZ2V0cyBpbiB0aGlzXFxuKyMgTWFrZWZpbGUgKGFuZCBieSBsaWIubWsncyBpbnN0YWxsIHJ1bGUpIGFyZSBwcm9kdWNlZCBieSB0aGUgcnVubmVyXFxuKyMgc3ViLW1ha2UgYWJvdmU7IHRoZSBlbXB0eSByZWNpcGUgcGx1cyB0aGUgb3JkZXItb25seSBwcmVyZXF1aXNpdGVcXG4rIyBtYWtlcyB0aGVtIGF2YWlsYWJsZSBoZXJlIHdpdGhvdXQgZHVwbGljYXRpbmcgdGhlIHJ1bm5lcidzIHJ1bGVzLlxcbitERUZBVUxUX0JQRl9PQkpTIDo9ICQocGF0c3Vic3QgcHJvZ3MvJS5jLCQoT1VUUFVUKS8lLmJwZi5vLCQod2lsZGNhcmQgcHJvZ3MvKi5jKSlcXG4rVEVTVF9HRU5fRklMRVMgKz0gJChERUZBVUxUX0JQRl9PQkpTKVxcbitcXG4rQkVOQ0hfU0tFTFMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyxcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgICB0ZXN0X292ZXJoZWFkLnNrZWwuaCB0cmlnZ2VyX2JlbmNoLnNrZWwuaFxcdFxcdFxcXFxcXG4rXFx0ICAgICAgIHJpbmdidWZfYmVuY2guc2tlbC5oIHBlcmZidWZfYmVuY2guc2tlbC5oXFx0XFx0XFxcXFxcbitcXHQgICAgICAgYmxvb21fZmlsdGVyX2JlbmNoLnNrZWwuaCBicGZfbG9vcF9iZW5jaC5za2VsLmhcXHRcXHRcXFxcXFxuK1xcdCAgICAgICBzdHJuY21wX2JlbmNoLnNrZWwuaCBicGZfaGFzaG1hcF9mdWxsX3VwZGF0ZV9iZW5jaC5za2VsLmhcXFxcXFxuK1xcdCAgICAgICBsb2NhbF9zdG9yYWdlX2JlbmNoLnNrZWwuaFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAgIGxvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlX2JlbmNoLnNrZWwuaFxcdFxcdFxcXFxcXG4rXFx0ICAgICAgIGJlbmNoX2xvY2FsX3N0b3JhZ2VfY3JlYXRlLnNrZWwuaFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAgIGJwZl9oYXNobWFwX2xvb2t1cC5za2VsLmggaHRhYl9tZW1fYmVuY2guc2tlbC5oXFx0XFx0XFxcXFxcbitcXHQgICAgICAgY3J5cHRvX2JlbmNoLnNrZWwuaCBiZW5jaF9zb2NrbWFwX3Byb2cuc2tlbC5oXFx0XFx0XFxcXFxcbitcXHQgICAgICAgbHBtX3RyaWVfYmVuY2guc2tlbC5oIGxwbV90cmllX21hcC5za2VsLmhcXHRcXHRcXFxcXFxuK1xcdCAgICAgICBicGZfbm9wX2JlbmNoLnNrZWwuaCB4ZHBfbGJfYmVuY2guc2tlbC5oKVxcbitUT1BfU0tFTFMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyx4c2tfeGRwX3Byb2dzLnNrZWwuaFxcdFxcdFxcXFxcXG4rXFx0ICAgICB4ZHBfaHdfbWV0YWRhdGEuc2tlbC5oIHhkcF9mZWF0dXJlcy5za2VsLmhcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgdGVzdF9jb3JlX2V4dGVybi5za2VsLmgpICQoQkVOQ0hfU0tFTFMpXFxuK1xcbisjIEVtcHR5LXJlY2lwZSBkZWxlZ2F0aW9uOiBcXFwiZGVmYXVsdC1za2Vsc1xcXCIgKHJlKWJ1aWxkcyB0aGUgZmlsZSB2aWEgdGhlXFxuKyMgcnVubmVyIHN1Yi1tYWtlLCBhZnRlciB3aGljaCBtYWtlIHJlLXN0YXRzIHRoZSB0YXJnZXQsIHNvIGRlcGVuZGVudHNcXG4rIyBzZWUgZnJlc2ggdGltZXN0YW1wcyB3aXRoaW4gdGhlIHNhbWUgaW52b2NhdGlvbi4gRGVwZW5kZW50cyBzdGlsbFxcbisjIHJlYnVpbGQgb24gbXRpbWUgb25seSAtIHRoZSBwaG9ueSBwcmVyZXF1aXNpdGUgZG9lcyBub3QgY2FzY2FkZS5cXG4rJChERUZBVUxUX0JQRl9PQkpTKSAkKFRPUF9TS0VMUyk6IGRlZmF1bHQtc2tlbHMgO1xcbitcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rIyBTdGFuZGFsb25lIHRlc3QgYmluYXJpZXNcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rXFxuKyMgdGVzdF92ZXJpZmllciBpcyBtdWNoIHNpbXBsZXIgdGhhbiB0ZXN0X21hcHMvdGVzdF9wcm9ncyBhbmRcXG4rIyBzdWZmaWNpZW50bHkgZGlmZmVyZW50IGZyb20gdGhlbSAoZS5nLiwgaXRzIHRlc3RzLmggdXNlcyBhIGNvbXBsZXRlbHlcXG4rIyBkaWZmZXJlbnQgcGF0dGVybiksIHRoYXQgaXQncyB3b3J0aCBqdXN0IGRlZmluaW5nIGl0cyBydWxlcyBleHBsaWNpdGx5LlxcbiskKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogdGVzdF92ZXJpZmllci5jIHZlcmlmaWVyL3Rlc3RzLmggJChCUEZPQkopXFx0XFxcXFxcbitcXHRcXHRcXHQgJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vXFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHQgJChPVVRQVVQpL2NhcF9oZWxwZXJzLm9cXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdCAkKE9VVFBVVCkvdW5wcml2X2hlbHBlcnMub1xcbiBcXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXFxuIFxcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxcbiBcXG4gIyBJbmNsdWRlIGZpbmRfYml0LmMgdG8gY29tcGlsZSB4c2t4Y2VpdmVyLlxcbiBFWFRSQV9TUkMgOj0gJChUT09MU0RJUikvbGliL2ZpbmRfYml0LmMgcHJvZ190ZXN0cy90ZXN0X3hzay5jIHByb2dfdGVzdHMvdGVzdF94c2suaFxcbi0kKE9VVFBVVCkveHNreGNlaXZlcjogJChFWFRSQV9TUkMpIHhza3hjZWl2ZXIuYyB4c2t4Y2VpdmVyLmggJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveHNrX3hkcF9wcm9ncy5za2VsLmggJChCUEZPQkopIHwgJChPVVRQVVQpXFxuKyQoT1VUUFVUKS94c2t4Y2VpdmVyOiAkKEVYVFJBX1NSQykgeHNreGNlaXZlci5jIHhza3hjZWl2ZXIuaCAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hzay5vICQoT1VUUFVUKS94c2tfeGRwX3Byb2dzLnNrZWwuaCAkKEJQRk9CSilcXG4gXFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxcbiBcXHQkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEBcXG4gXFxuLSQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGE6IHhkcF9od19tZXRhZGF0YS5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YS5za2VsLmggfCAkKE9VVFBVVClcXG4rJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YTogeGRwX2h3X21ldGFkYXRhLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveGRwX2h3X21ldGFkYXRhLnNrZWwuaFxcbiBcXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXFxuIFxcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxcbiBcXG4tJChPVVRQVVQpL3hkcF9mZWF0dXJlczogeGRwX2ZlYXR1cmVzLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94ZHBfZmVhdHVyZXMuc2tlbC5oIHwgJChPVVRQVVQpXFxuKyQoT1VUUFVUKS94ZHBfZmVhdHVyZXM6IHhkcF9mZWF0dXJlcy5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveGRwX2ZlYXR1cmVzLnNrZWwuaFxcbiBcXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXFxuIFxcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxcbiBcXG5AQCAtOTU2LDExICs1NTgsMTggQEAgJChPVVRQVVQpL3Rlc3RfY3BwOiB0ZXN0X2NwcC5jcHAgJChPVVRQVVQpL3Rlc3RfY29yZV9leHRlcm4uc2tlbC5oICQoQlBGT0JKKVxcbiBcXHQkKGNhbGwgbXNnLENYWCwsJEApXFxuIFxcdCQoUSkkKENYWCkgJChDWFhGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmNwcCwkXikgJChMRExJQlMpIC1vICRAXFxuIFxcbi0jIEJlbmNobWFyayBydW5uZXJcXG4tJChPVVRQVVQpL2JlbmNoXyUubzogYmVuY2hzL2JlbmNoXyUuYyBiZW5jaC5oICQoQlBGT0JKKVxcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbisjIEJlbmNobWFyayBydW5uZXIuIFRoZSBiZW5jaG1hcmsgbGlzdCBpcyBkZWZpbmVkIGJ5IHRoZSBmaWxlcyBpblxcbisjIGJlbmNocy86IGV2ZXJ5IGJlbmNocy9iZW5jaF8qLmMgaXMgY29tcGlsZWQgYW5kIGxpbmtlZCBpbi5cXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rXFxuK0JFTkNIX09CSlMgOj0gJChzb3J0ICQocGF0c3Vic3QgYmVuY2hzLyUuYywkKE9VVFBVVCkvJS5vLCQod2lsZGNhcmQgYmVuY2hzL2JlbmNoXyouYykpKVxcbitcXG4rJChPVVRQVVQpL2JlbmNoXyUubzogYmVuY2hzL2JlbmNoXyUuYyBiZW5jaC5oICQoQlBGT0JKKSB8IGRlZmF1bHQtc2tlbHNcXG4gXFx0JChjYWxsIG1zZyxDQywsJEApXFxuLVxcdCQoUSkkKENDKSAkKENGTEFHUykgLU8yIC1jICQoZmlsdGVyICUuYywkXikgJChMRExJQlMpIC1vICRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxcXFxuLVxcdFxcdCgkKFJNKSAkQDsgcHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdTS0lQLUJFTkNIJyAnJChub3RkaXIgJEApJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAtbyAkQCAkKGNhbGwgc2tpcF9vbl9mYWlsLEJFTkNIKVxcbitcXG4rIyBiZW5jaG1hcmstc3BlY2lmaWMgZ2VuZXJhdGVkLXNrZWxldG9uIGRlcGVuZGVuY2llc1xcbiAkKE9VVFBVVCkvYmVuY2hfcmVuYW1lLm86ICQoT1VUUFVUKS90ZXN0X292ZXJoZWFkLnNrZWwuaFxcbiAkKE9VVFBVVCkvYmVuY2hfdHJpZ2dlci5vOiAkKE9VVFBVVCkvdHJpZ2dlcl9iZW5jaC5za2VsLmhcXG4gJChPVVRQVVQpL2JlbmNoX3JpbmdidWZzLm86ICQoT1VUUFVUKS9yaW5nYnVmX2JlbmNoLnNrZWwuaCBcXFxcXFxuQEAgLTk4MCwzNyArNTg5LDE5IEBAICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubzogJChPVVRQVVQpL2xwbV90cmllX2JlbmNoLnNrZWwuaCAkKE9VVFBVVCkvbHBtX3RyXFxuICQoT1VUUFVUKS9iZW5jaF9icGZfbm9wLm86ICQoT1VUUFVUKS9icGZfbm9wX2JlbmNoLnNrZWwuaCBiZW5jaF9icGZfdGltaW5nLmhcXG4gJChPVVRQVVQpL2JlbmNoX3hkcF9sYi5vOiAkKE9VVFBVVCkveGRwX2xiX2JlbmNoLnNrZWwuaCBiZW5jaF9icGZfdGltaW5nLmhcXG4gJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubzogYmVuY2hfYnBmX3RpbWluZy5oXFxuK1xcbiAkKE9VVFBVVCkvYmVuY2gubzogYmVuY2guaCB0ZXN0aW5nX2hlbHBlcnMuaCAkKEJQRk9CSilcXG4gJChPVVRQVVQpL2JlbmNoOiBMRExJQlMgKz0gLWxtXFxuLSQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXFxcXFxcbi1cXHRcXHQgJChURVNUSU5HX0hFTFBFUlMpIFxcXFxcXG4tXFx0XFx0ICQoVFJBQ0VfSEVMUEVSUykgXFxcXFxcbi1cXHRcXHQgJChDR1JPVVBfSEVMUEVSUykgXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2NvdW50Lm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX3JlbmFtZS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF90cmlnZ2VyLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX3JpbmdidWZzLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2Jsb29tX2ZpbHRlcl9tYXAubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2xvb3AubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX2NyZWF0ZS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9odGFiX21lbS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfY3J5cHRvLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX3NvY2ttYXAubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfbHBtX3RyaWVfbWFwLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX25vcC5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF94ZHBfbGIubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvdXNkdF8xLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL3VzZHRfMi5vIFxcXFxcXG4tXFx0XFx0ICNcXG4rJChPVVRQVVQpL2JlbmNoOiAkKE9VVFBVVCkvYmVuY2gub1xcdFxcdFxcXFxcXG4rXFx0XFx0ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xcdFxcXFxcXG4rXFx0XFx0ICQoT1VUUFVUKS90cmFjZV9oZWxwZXJzLm9cXHRcXFxcXFxuK1xcdFxcdCAkKE9VVFBVVCkvY2dyb3VwX2hlbHBlcnMub1xcdFxcXFxcXG4rXFx0XFx0ICQoT1VUUFVUKS91c2R0XzEub1xcdFxcdFxcXFxcXG4rXFx0XFx0ICQoT1VUUFVUKS91c2R0XzIub1xcdFxcdFxcXFxcXG4rXFx0XFx0ICQoQkVOQ0hfT0JKUylcXG4gXFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxcbi1cXHQkKFEpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChmaWx0ZXIgJS5hICUubywkXikgJChMRExJQlMpIC1vICRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxcXFxuLVxcdFxcdCgkKFJNKSAkQDsgcHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdTS0lQLUxJTksnICckKG5vdGRpciAkQCkgKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQCBcXFxcXFxuK1xcdFxcdCQoY2FsbCBza2lwX29uX2ZhaWwsTElOSywsKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpKVxcbiBcXG4gIyBUaGlzIHdvcmtzIGFyb3VuZCBHQ0Mgd2FybmluZyBhYm91dCBzbnByaW50ZiB0cnVuY2F0aW5nIHN0cmluZ3MgbGlrZTpcXG4gI1xcbkBAIC0xMDIyLDEzICs2MTMsNiBAQCAkKE9VVFBVVCkvdmVyaXN0YXQ6ICQoT1VUUFVUKS92ZXJpc3RhdC5vXFxuIFxcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcXG4gXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQFxcbiBcXG4tIyBMaW5raW5nIHVwcm9iZV9tdWx0aSBjYW4gZmFpbCBkdWUgdG8gcmVsb2NhdGlvbiBvdmVyZmxvd3Mgb24gbWlwcy5cXG4tJChPVVRQVVQpL3Vwcm9iZV9tdWx0aTogQ0ZMQUdTICs9ICQoaWYgJChmaWx0ZXIgbWlwcywgJChBUkNIKSksLW14Z290KVxcbi0kKE9VVFBVVCkvdXByb2JlX211bHRpOiB1cHJvYmVfbXVsdGkuYyB1cHJvYmVfbXVsdGkubGRcXG4tXFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxcbi1cXHQkKFEpJChDQykgJChDRkxBR1MpIC1XbCwtVCx1cHJvYmVfbXVsdGkubGQgLU8wICQoTERGTEFHUykgXFx0XFxcXFxcbi1cXHRcXHQkKGZpbHRlci1vdXQgJS5sZCwkXikgJChMRExJQlMpIC1vICRAXFxuLVxcbiBFWFRSQV9DTEVBTiA6PSAkKFNDUkFUQ0hfRElSKSAkKEhPU1RfU0NSQVRDSF9ESVIpXFx0XFx0XFx0XFxcXFxcbiBcXHRwcm9nX3Rlc3RzL3Rlc3RzLmggbWFwX3Rlc3RzL3Rlc3RzLmggdmVyaWZpZXIvdGVzdHMuaFxcdFxcdFxcXFxcXG4gXFx0ZmVhdHVyZSBicGZ0b29sICQoVEVTVF9LTU9EX1RBUkdFVFMpXFx0XFx0XFx0XFx0XFxcXFxcbkBAIC0xMDM4LDcgKzYyMiw3IEBAIEVYVFJBX0NMRUFOIDo9ICQoU0NSQVRDSF9ESVIpICQoSE9TVF9TQ1JBVENIX0RJUilcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdCAgICAgICBsaWJ1cmFuZG9tX3JlYWQuc28pXFx0XFx0XFx0XFxcXFxcbiBcXHQkKE9VVFBVVCkvRkVBVFVSRS1EVU1QLnNlbGZ0ZXN0c1xcbiBcXG4tLlBIT05ZOiBkb2NzIGRvY3MtY2xlYW5cXG4rLlBIT05ZOiBkb2NzIGRvY3MtY2xlYW4gbGliYXJlbmEgbGliYXJlbmFfYXNhblxcbiBcXG4gIyBEZWxldGUgcGFydGlhbGx5IHVwZGF0ZWQgKGNvcnJ1cHRlZCkgZmlsZXMgb24gZXJyb3JcXG4gLkRFTEVURV9PTl9FUlJPUjpcXG5AQCAtMTA2Miw5ICs2NDYsMyBAQCBvdmVycmlkZSBkZWZpbmUgSU5TVEFMTF9SVUxFXFxuIFxcdFxcdFxcdCQoSU5TVEFMTF9QQVRIKS8kJERJUjtcXHRcXHRcXHRcXHQgIFxcXFxcXG4gXFx0ZG9uZVxcbiBlbmRlZlxcbi1cXG4tbGliYXJlbmE6ICQoTElCQVJFTkFfU0tFTClcXG4tXFxuLWlmbmVxICgkKENMQU5HX0hBU19BUkVOQV9BU0FOKSwpXFxuLWxpYmFyZW5hX2FzYW46ICQoTElCQVJFTkFfQVNBTl9TS0VMKVxcbi1lbmRpZlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFyc1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmVhOTc1ZmVlZjAxMzZmXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnNcXG5AQCAtMCwwICsxLDIwNCBAQFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNcXG4rIyBTaGFyZWQgdG9vbGNoYWluLCBwYXRoIGFuZCBmbGFnIGRlZmluaXRpb25zIGZvciB0aGUgQlBGIHNlbGZ0ZXN0cyBidWlsZC5cXG4rIyBJbmNsdWRlZCBieSBib3RoIE1ha2VmaWxlICh0aGUgdG9wIGxldmVsKSBhbmQgTWFrZWZpbGUucnVubmVyIChvbmVcXG4rIyB0ZXN0LXJ1bm5lciBpbnN0YW5jZSkuXFxuKyNcXG4rIyBSZXF1aXJlbWVudHMgYXQgaW5jbHVkZSB0aW1lOlxcbisjICAgLSAkKE9VVFBVVCkgaXMgc2V0IHRvIGFuIGFic29sdXRlIHBhdGhcXG4rIyAgIC0gdG9vbHMvYnVpbGQvQnVpbGQuaW5jbHVkZSwgdG9vbHMvc2NyaXB0cy9NYWtlZmlsZS5hcmNoIGFuZFxcbisjICAgICB0b29scy9zY3JpcHRzL01ha2VmaWxlLmluY2x1ZGUgaGF2ZSBiZWVuIGluY2x1ZGVkIChmb3IgU1JDQVJDSCBldGMuKVxcbitcXG4rQ1hYID89ICQoQ1JPU1NfQ09NUElMRSlnKytcXG4rUEtHX0NPTkZJRyA/PSAkKENST1NTX0NPTVBJTEUpcGtnLWNvbmZpZ1xcbitcXG4rVE9PTFNESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uKVxcbitMSUJESVIgOj0gJChUT09MU0RJUikvbGliXFxuK0JQRkRJUiA6PSAkKExJQkRJUikvYnBmXFxuK1RPT0xTSU5DRElSIDo9ICQoVE9PTFNESVIpL2luY2x1ZGVcXG4rVE9PTFNBUkNISU5DRElSIDo9ICQoVE9PTFNESVIpL2FyY2gvJChTUkNBUkNIKS9pbmNsdWRlXFxuK0JQRlRPT0xESVIgOj0gJChUT09MU0RJUikvYnBmL2JwZnRvb2xcXG4rQVBJRElSIDo9ICQoVE9PTFNJTkNESVIpL3VhcGlcXG4raWZuZXEgKCQoTyksKVxcbitHRU5ESVIgOj0gJChPKS9pbmNsdWRlL2dlbmVyYXRlZFxcbitlbHNlXFxuK0dFTkRJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4vaW5jbHVkZS9nZW5lcmF0ZWQpXFxuK2VuZGlmXFxuK0dFTkhEUiA6PSAkKEdFTkRJUikvYXV0b2NvbmYuaFxcbitcXG4raWZuZXEgKCQod2lsZGNhcmQgJChHRU5IRFIpKSwpXFxuKyAgR0VORkxBR1MgOj0gLURIQVZFX0dFTkhEUlxcbitlbmRpZlxcbitcXG4raWZlcSAoJChzcmN0cmVlKSwpXFxuK3NyY3RyZWUgOj0gJChhYnNwYXRoIC4uLy4uLy4uLy4uKVxcbitlbmRpZlxcbitcXG4rIyBJbW1lZGlhdGUgKHdpdGggYW4gb3ZlcnJpZGUtcHJlc2VydmluZyBndWFyZCk6IGEgcGxhaW4gPz0gc3RheXNcXG4rIyByZWN1cnNpdmVseSBleHBhbmRlZCBhbmQgd291bGQgcmUtcnVuICdjb21tYW5kIC12JyBvbiBldmVyeSBleHBhbnNpb24uXFxuK2lmZXEgKCQob3JpZ2luIEJQRl9HQ0MpLHVuZGVmaW5lZClcXG4rQlBGX0dDQ1xcdFxcdDo9ICQoc2hlbGwgY29tbWFuZCAtdiBicGYtZ2NjOylcXG4rZW5kaWZcXG4raWZkZWYgQVNBTlxcbitTQU5fQ0ZMQUdTXFx0Pz0gLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXFxuK2Vsc2VcXG4rU0FOX0NGTEFHU1xcdD89XFxuK2VuZGlmXFxuK1NBTl9MREZMQUdTXFx0Pz0gJChTQU5fQ0ZMQUdTKVxcbitSRUxFQVNFXFx0XFx0Pz1cXG4rT1BUX0ZMQUdTXFx0Pz0gJChpZiAkKFJFTEVBU0UpLC1PMiwtTzApXFxuK1xcbitMSUJFTEZfQ0ZMQUdTXFx0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWNmbGFncyAyXFx1MDAzZS9kZXYvbnVsbClcXG4rTElCRUxGX0xJQlNcXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyXFx1MDAzZS9kZXYvbnVsbCB8fCBlY2hvIC1sZWxmKVxcbitcXG4rU0tJUF9ET0NTXFx0Pz1cXG4rU0tJUF9MTFZNXFx0Pz1cXG4rU0tJUF9MSUJCRkRcXHQ/PVxcbitTS0lQX0NSWVBUT1xcdD89XFxuK1xcbisjIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxcbisjIGJlbmNobWFyayBjb21waWxhdGlvbiBmYWlsdXJlIGlzIGZhdGFsLiBTZXQgdG8gMCB0byB0b2xlcmF0ZSBmYWlsdXJlc1xcbisjIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLlxcbitCUEZfU1RSSUNUX0JVSUxEID89IDFcXG4rUEVSTUlTU0lWRSA6PSAkKGZpbHRlciAwLCQoQlBGX1NUUklDVF9CVUlMRCkpXFxuK1xcbisjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgc3VmZml4OiBvbiBmYWlsdXJlLCByZW1vdmUgdGhlIHRhcmdldCwgZW1pdCBhXFxuKyMgU0tJUCBtYXJrZXIgYW5kIHJlcG9ydCBzdWNjZXNzIHNvIHRoZSByZXN0IG9mIHRoZSBidWlsZCBjb250aW51ZXMuXFxuKyMgJCgxKSAtIFNLSVAgdGFnIChCUEYsIFRFU1QsIEJFTkNILCBTS0VMLCBMSU5LLCAuLi4pXFxuKyMgJCgyKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldFxcbisjICQoMykgLSBvcHRpb25hbCBub3RlIGFwcGVuZGVkIHRvIHRoZSBTS0lQIG1lc3NhZ2VcXG4rc2tpcF9vbl9mYWlsID0gJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgJChSTSkgJEAgJCgyKTsgXFxcXFxcbitcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtJCgxKScgJyQobm90ZGlyICRAKSQoaWYgJCgzKSwgJCgzKSknIDFcXHUwMDNlXFx1MDAyNjI7IH0pXFxuK1xcbisjIEtlcm5lbCB0ZXN0IG1vZHVsZXM7IFRFU1RfS01PRFM9IG9uIHRoZSBjb21tYW5kIGxpbmUgZGlzYWJsZXMgdGhlbS5cXG4rVEVTVF9LTU9EUyA/PSBicGZfdGVzdG1vZC5rbyBicGZfdGVzdF9ub19jZmkua28gYnBmX3Rlc3RfbW9kb3JkZXJfeC5rbyBcXFxcXFxuK1xcdGJwZl90ZXN0X21vZG9yZGVyX3kua28gYnBmX3Rlc3RfcnFzcGlubG9jay5rb1xcbitURVNUX0tNT0RfVEFSR0VUUyA9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sJChURVNUX0tNT0RTKSlcXG4rXFxuKyMgT3V0cHV0LXRyZWUgbGF5b3V0LiBEZWZpbmVkIGJlZm9yZSBDT01NT05fQ0ZMQUdTIG9uIHB1cnBvc2U6IENGTEFHU1xcbisjIGJlbG93IGlzIGV4cGFuZGVkIGltbWVkaWF0ZWx5IGFuZCByZWZlcmVuY2VzICQoSU5DTFVERV9ESVIpLlxcbitTQ1JBVENIX0RJUiA6PSAkKE9VVFBVVCkvdG9vbHNcXG4rQlVJTERfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2J1aWxkXFxuK0lOQ0xVREVfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2luY2x1ZGVcXG4rQlBGT0JKIDo9ICQoQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcXG4raWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxcbitIT1NUX0JVSUxEX0RJUlxcdFxcdDo9ICQoQlVJTERfRElSKS9ob3N0XFxuK0hPU1RfU0NSQVRDSF9ESVJcXHQ6PSAkKE9VVFBVVCkvaG9zdC10b29sc1xcbitIT1NUX0lOQ0xVREVfRElSXFx0Oj0gJChIT1NUX1NDUkFUQ0hfRElSKS9pbmNsdWRlXFxuK2Vsc2VcXG4rSE9TVF9CVUlMRF9ESVJcXHRcXHQ6PSAkKEJVSUxEX0RJUilcXG4rSE9TVF9TQ1JBVENIX0RJUlxcdDo9ICQoU0NSQVRDSF9ESVIpXFxuK0hPU1RfSU5DTFVERV9ESVJcXHQ6PSAkKElOQ0xVREVfRElSKVxcbitlbmRpZlxcbitIT1NUX0JQRk9CSiA6PSAkKEhPU1RfQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcXG4rUkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHNcXG4rXFxuK0RFRkFVTFRfQlBGVE9PTCA6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxcbitpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXFxuK0NST1NTX0JQRlRPT0wgOj0gJChTQ1JBVENIX0RJUikvc2Jpbi9icGZ0b29sXFxuK1RSVU5ORVJfQlBGVE9PTCA6PSAkKENST1NTX0JQRlRPT0wpXFxuK1VTRV9CT09UU1RSQVAgOj1cXG4rZWxzZVxcbitUUlVOTkVSX0JQRlRPT0wgOj0gJChERUZBVUxUX0JQRlRPT0wpXFxuK1VTRV9CT09UU1RSQVAgOj0gYm9vdHN0cmFwL1xcbitlbmRpZlxcbitCUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKVxcbitcXG4rQ09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMVxcdFxcdFxcdFxcXFxcXG4rXFx0ICAtV2FsbCAtV2Vycm9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGVcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgJChHRU5GTEFHUykgJChTQU5fQ0ZMQUdTKSAkKExJQkVMRl9DRkxBR1MpXFx0XFx0XFx0XFxcXFxcbitcXHQgIC1JJChDVVJESVIpIC1JJChJTkNMVURFX0RJUikgLUkkKEdFTkRJUikgLUkkKExJQkRJUilcXHRcXHRcXFxcXFxuK1xcdCAgLUkkKFRPT0xTSU5DRElSKSAtSSQoVE9PTFNBUkNISU5DRElSKSAtSSQoQVBJRElSKSAtSSQoT1VUUFVUKVxcdFxcXFxcXG4rXFx0ICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXFxuK0xERkxBR1MgKz0gJChTQU5fTERGTEFHUylcXG4rTERMSUJTICs9ICQoTElCRUxGX0xJQlMpIC1seiAtbHJ0IC1scHRocmVhZFxcbitcXG4rUENBUF9DRkxBR1NcXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlicGNhcCAyXFx1MDAzZS9kZXYvbnVsbCBcXHUwMDI2XFx1MDAyNiBlY2hvIFxcXCItRFRSQUZGSUNfTU9OSVRPUj0xXFxcIilcXG4rUENBUF9MSUJTXFx0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBsaWJwY2FwIDJcXHUwMDNlL2Rldi9udWxsKVxcbitMRExJQlMgKz0gJChQQ0FQX0xJQlMpXFxuKyMgUHJlcGVuZCByYXRoZXIgdGhhbiBhcHBlbmQ6IHRoZSBpbmNsdWRlLXNlYXJjaCBvcmRlciBtdXN0IHN0YXlcXG4rIyBcXFwiJChDT01NT05fQ0ZMQUdTKSBmaXJzdCwgbGliLm1rIGFkZGl0aW9ucyBhZnRlclxcXCIgcmVnYXJkbGVzcyBvZiB3aGV0aGVyXFxuKyMgbGliLm1rIHdhcyBpbmNsdWRlZCBiZWZvcmUgdGhpcyBmaWxlICh0b3AgbGV2ZWwpIG9yIG5vdCBhdCBhbGwgKHJ1bm5lcikuXFxuK0NGTEFHUyA6PSAkKENPTU1PTl9DRkxBR1MpICQoUENBUF9DRkxBR1MpICQoQ0ZMQUdTKVxcbitcXG4raWZuZXEgKCQoTExWTSksKVxcbisjIFNpbGVuY2Ugc29tZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHdpdGggY2xhbmdcXG4rQ0ZMQUdTICs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudFxcbitlbmRpZlxcbitcXG4rIyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMispXFxuK0NMQU5HX0hBU19BUkVOQV9BU0FOIDo9ICQoc2hlbGwgZWNobyAnaW50IHg7JyB8IFxcXFxcXG4rXFx0JChDTEFORykgLS10YXJnZXQ9YnBmIC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MgXFxcXFxcbitcXHQtbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcXFxcXFxuK1xcdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlxcdTAwM2UvZGV2L251bGwgXFx1MDAyNlxcdTAwMjYgZWNobyAxKVxcbitpZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKVxcbitDRkxBR1MgKz0gLURIQVNfQlBGX0FSRU5BX0FTQU5cXG4rZW5kaWZcXG4rXFxuK1ZNTElOVVhfQlRGX1BBVEhTID89ICQoaWYgJChPKSwkKE8pL3ZtbGludXgpXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICAgICQoaWYgJChLQlVJTERfT1VUUFVUKSwkKEtCVUlMRF9PVVRQVVQpL3ZtbGludXgpXFx0XFxcXFxcbitcXHRcXHQgICAgIC4uLy4uLy4uLy4uL3ZtbGludXhcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgL3N5cy9rZXJuZWwvYnRmL3ZtbGludXhcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgL2Jvb3Qvdm1saW51eC0kKHNoZWxsIHVuYW1lIC1yKVxcbitWTUxJTlVYX0JURiA/PSAkKGFic3BhdGggJChmaXJzdHdvcmQgJCh3aWxkY2FyZCAkKFZNTElOVVhfQlRGX1BBVEhTKSkpKVxcbitpZmVxICgkKFZNTElOVVhfQlRGKSwpXFxuKyQoZXJyb3IgQ2Fubm90IGZpbmQgYSB2bWxpbnV4IGZvciBWTUxJTlVYX0JURiBhdCBhbnkgb2YgXFxcIiQoVk1MSU5VWF9CVEZfUEFUSFMpXFxcIilcXG4rZW5kaWZcXG4rXFxuKyMgR2V0IENsYW5nJ3MgZGVmYXVsdCBpbmNsdWRlcyBvbiB0aGlzIHN5c3RlbSwgYXMgb3Bwb3NlZCB0byB0aG9zZSBzZWVuIGJ5XFxuKyMgJy0tdGFyZ2V0PWJwZicuIFRoaXMgZml4ZXMgXFxcIm1pc3NpbmdcXFwiIGZpbGVzIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcy9kaXN0cm9zLFxcbisjIHN1Y2ggYXMgYXNtL2J5dGVvcmRlci5oLCBhc20vc29ja2V0LmgsIGFzbS9zb2NraW9zLmgsIHN5cy9jZGVmcy5oIGV0Yy5cXG4rI1xcbisjIFVzZSAnLWlkaXJhZnRlcic6IERvbid0IGludGVyZmVyZSB3aXRoIGluY2x1ZGUgbWVjaGFuaWNzIGV4Y2VwdCB3aGVyZSB0aGVcXG4rIyBidWlsZCB3b3VsZCBoYXZlIGZhaWxlZCBhbnl3YXlzLlxcbitkZWZpbmUgZ2V0X3N5c19pbmNsdWRlc1xcbiskKHNoZWxsICQoMSkgJCgyKSAtdiAtRSAtIFxcdTAwM2MvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MSBcXFxcXFxuK1xcdHwgc2VkIC1uICcvXFx1MDAzYy4uLlxcdTAwM2Ugc2VhcmNoIHN0YXJ0cyBoZXJlOi8sL0VuZCBvZiBzZWFyY2ggbGlzdC4veyBzfCBcXFxcKC8uKlxcXFwpfC1pZGlyYWZ0ZXIgXFxcXDF8cCB9JykgXFxcXFxcbiskKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19yaXNjdl94bGVuICcgfCBhd2sgJ3twcmludGYoXFxcIi1EX19yaXNjdl94bGVuPSVkIC1EX19CSVRTX1BFUl9MT05HPSVkXFxcIiwgJCQzLCAkJDMpfScpIFxcXFxcXG4rJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJ19fbG9vbmdhcmNoX2dybGVuICcgfCBhd2sgJ3twcmludGYoXFxcIi1EX19CSVRTX1BFUl9MT05HPSVkXFxcIiwgJCQzKX0nKSBcXFxcXFxuKyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFxcdTAwM2MvZGV2L251bGwgfCBncmVwIC1FICdNSVBTKEVMfEVCKXxfTUlQU19TWihQVFJ8TE9ORykgfF9NSVBTX1NJTSB8X0FCSShPMzJ8TjMyfDY0KSAnIHwgYXdrICd7cHJpbnRmKFxcXCItRCVzPSVzIFxcXCIsICQkMiwgJCQzKX0nKVxcbitlbmRlZlxcbitcXG4rIyBEZXRlcm1pbmUgdGFyZ2V0IGVuZGlhbm5lc3MuXFxuK0lTX0xJVFRMRV9FTkRJQU4gOj0gJChzaGVsbCAkKENDKSAtZE0gLUUgLSBcXHUwMDNjL2Rldi9udWxsIHwgXFxcXFxcbitcXHRcXHRcXHRncmVwICdkZWZpbmUgX19CWVRFX09SREVSX18gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18nKVxcbitNRU5ESUFOIDo9ICQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKVxcbitCUEZfVEFSR0VUX0VORElBTiA6PSAkKGlmICQoSVNfTElUVExFX0VORElBTiksLS10YXJnZXQ9YnBmZWwsLS10YXJnZXQ9YnBmZWIpXFxuK1xcbitpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXFxuK0NMQU5HX1RBUkdFVF9BUkNIID0gLS10YXJnZXQ9JChub3RkaXIgJChDUk9TU19DT01QSUxFOiUtPSUpKVxcbitlbmRpZlxcbitcXG4rQ0xBTkdfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLCQoQ0xBTkcpLCQoQ0xBTkdfVEFSR0VUX0FSQ0gpKVxcbitCUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXFx0XFxcXFxcbitcXHQgICAgIC1JJChJTkNMVURFX0RJUikgLUkkKENVUkRJUikgLUkkKEFQSURJUilcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAtSSQoYWJzcGF0aCAkKE9VVFBVVCkvLi4vdXNyL2luY2x1ZGUpXFx0XFx0XFx0XFxcXFxcbitcXHQgICAgIC1zdGQ9Z251MTFcXHRcXHQgXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAtV25vLW1pY3Jvc29mdC1hbm9uLXRhZ1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAtZm1zLWV4dGVuc2lvbnNcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgLVduby1jb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXNcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXNcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgI1xcbisjIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZVxcbitcXG4rQ0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXFxuK1xcbisjIFNpZ25pbmcga2V5L2NlcnQgc2hhcmVkIGJ5IHRoZSBzaWduZWQgbGlnaHQgc2tlbGV0b25zIGFuZCB0ZXN0X3Byb2dzLlxcbitWRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXFxuK1ZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0LmhcXG4rVkVSSUZJQ0FUSU9OX0NFUlQgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LmRlclxcbitQUklWQVRFX0tFWSA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkucGVtXFxuK1xcbisjIGxpYmFyZW5hIHNrZWxldG9ucywgYnVpbHQgYnkgdGhlIGxpYmFyZW5hLyBzdWItbWFrZSAoZHJpdmVuIGJ5IHRoZSB0b3BcXG4rIyBsZXZlbCBNYWtlZmlsZSk7IHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzIGRlcGVuZCBvbiB0aGUgaGVhZGVycy5cXG4rTElCQVJFTkFfU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYS5za2VsLmhcXG4raWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcXG4rTElCQVJFTkFfQVNBTl9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hX2FzYW4uc2tlbC5oXFxuK2VuZGlmXFxuK1xcbitpZm5lcSAoJChWKSwxKVxcbitzdWJtYWtlX2V4dHJhcyA6PSBmZWF0dXJlX2Rpc3BsYXk9MFxcbitlbmRpZlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnJ1bm5lclxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjRjNThjYzUxZjI1MTRlXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXJcXG5AQCAtMCwwICsxLDMxMyBAQFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNcXG4rIyBCdWlsZCBvbmUgQlBGIHRlc3QtcnVubmVyIGluc3RhbmNlOiB0ZXN0X3Byb2dzLCBvbmUgb2YgaXRzIGZsYXZvcnNcXG4rIyAobm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjKSwgb3IgdGVzdF9tYXBzLlxcbisjXFxuKyMgRWFjaCBpbnN0YW5jZSBpcyBhbiBpbmRlcGVuZGVudCBzdWItbWFrZSB3aXRoIGl0cyBvd24gb3V0cHV0IGRpcmVjdG9yeSxcXG4rIyBzbyBldmVyeXRoaW5nIGhlcmUgaXMgd3JpdHRlbiBpbiBwbGFpbiBtYWtlIC0gbm8gJCQtZXNjYXBpbmcsIG5vIGV2YWwsXFxuKyMgbm8gcGVyLWZsYXZvciBndWFyZHMuIFRoaXMgZmlsZSBpcyBhbHdheXMgaW52b2tlZCBieSB0aGUgbWFpbiBNYWtlZmlsZSxcXG4rIyBuZXZlciBkaXJlY3RseTogYWxsIHNoYXJlZCBwcmVyZXF1aXNpdGVzIChsaWJicGYsIGJwZnRvb2wsIHZtbGludXguaCxcXG4rIyB2ZXJpc3RhdCwgaGVscGVyIG9iamVjdHMsIHNpZ25pbmcga2V5LCBnZW5lcmF0ZWQgdGVzdHMuaCwgZXh0cmFcXG4rIyBiaW5hcmllcykgYXJlIGJ1aWx0IGJ5IHRoZSBtYWluIE1ha2VmaWxlICpiZWZvcmUqIHRoaXMgb25lIHJ1bnMgYW5kIGFyZVxcbisjIHJlZmVyZW5jZWQgYmVsb3cgYXMgcGxhaW4gZmlsZXMuXFxuKyNcXG4rIyBQYXJhbWV0ZXJzIChhbGwgcGFzc2VkIG9uIHRoZSBzdWItbWFrZSBjb21tYW5kIGxpbmUpOlxcbisjICAgT1VUUFVUICAgICAgYWJzb2x1dGUgcGF0aCBvZiB0aGUgc2VsZnRlc3RzIG91dHB1dCBkaXJlY3RvcnlcXG4rIyAgIFJVTk5FUiAgICAgIGJhc2UgYmluYXJ5IG5hbWU6IHRlc3RfcHJvZ3MgfCB0ZXN0X21hcHNcXG4rIyAgIEZMQVZPUiAgICAgIGZsYXZvciBzdWZmaXg6IGVtcHR5IHwgbm9fYWx1MzIgfCBjcHV2NCB8IGJwZl9nY2NcXG4rIyAgIFRFU1RTX0RJUiAgIGRpcmVjdG9yeSB3aXRoIHRoZSB0ZXN0IHNvdXJjZXM6IHByb2dfdGVzdHMgfCBtYXBfdGVzdHNcXG4rIyAgIEJQRl9CVUlMRCAgIGhvdyB0byBidWlsZCBwcm9ncy8qLmMgQlBGIG9iamVjdHM6IGNsYW5nIHwgZ2NjIHwgbm9uZVxcbisjICAgQlBGX01DUFUgICAgY2xhbmcgLW1jcHU9IHZhbHVlOiB2MiB8IHYzIHwgdjRcXG4rIyAgIEJQRl9ERUZJTkVTIGV4dHJhIGRlZmluZXMgZm9yIEJQRiBvYmplY3RzIChlLmcuIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFMpXFxuKyMgICBDQyAgICAgICAgICBDIGNvbXBpbGVyIChhcyByZXNvbHZlZCBieSBsaWIubWsgaW4gdGhlIG1haW4gTWFrZWZpbGUpXFxuKyMgICBMTFZNX0NGTEFHUy9MTFZNX0xETElCUy9MTFZNX0xERkxBR1NcXG4rIyAgICAgICAgICAgICAgIHJlc3VsdHMgb2YgdGhlIHRvcC1sZXZlbCBMTFZNIGZlYXR1cmUgcHJvYmVcXG4rXFxuK2luY2x1ZGUgLi4vLi4vLi4vYnVpbGQvQnVpbGQuaW5jbHVkZVxcbitpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuYXJjaFxcbitpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZVxcbitcXG4rIyBTYW1lIG1lc3NhZ2UgaGVscGVycyBhcyAuLi9saWIubWssIHdoaWNoIG9ubHkgdGhlIHRvcCBsZXZlbCBpbmNsdWRlcy5cXG4raWZlcSAoJChWKSwxKVxcbitRID1cXG4rbXNnID1cXG4rZWxzZVxcbitRID0gQFxcbittc2cgPSBAcHJpbnRmICcgICUtOHMlcyAlcyVzXFxcXG4nIFxcXCIkKDEpXFxcIiBcXFwiJChpZiAkKDIpLCBbJCgyKV0pXFxcIiBcXFwiJChub3RkaXIgJCgzKSlcXFwiIFxcXCIkKGlmICQoNCksICQoNCkpXFxcIjtcXG4rTUFLRUZMQUdTICs9IC0tbm8tcHJpbnQtZGlyZWN0b3J5XFxuK2VuZGlmXFxuK1xcbitpbmNsdWRlIE1ha2VmaWxlLmJ1aWxkdmFyc1xcbitcXG4rIyBLZWVwIGluIHN5bmMgd2l0aCB0aGUgQ0ZMQUdTL0xERkxBR1MgYWRkaXRpb25zIGluIC4uL2xpYi5tay5cXG4rQ0ZMQUdTICs9IC1EX0dOVV9TT1VSQ0U9XFxuK0NGTEFHUyArPSAtSSQoc3JjdHJlZSkvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHNcXG4rQ0ZMQUdTICs9ICQoVVNFUkNGTEFHUylcXG4rTERGTEFHUyArPSAkKFVTRVJMREZMQUdTKVxcbitpZm5lcSAoJChMTFZNKSwpXFxuK0NGTEFHUyArPSAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlclxcbitDRkxBR1MgKz0gLVduby1nbnUtdmFyaWFibGUtc2l6ZWQtdHlwZS1ub3QtYXQtZW5kXFxuK2VuZGlmXFxuK1xcbitCSU5BUlkgOj0gJChSVU5ORVIpJChpZiAkKEZMQVZPUiksLSQoRkxBVk9SKSlcXG4rUkRJUiAgIDo9ICQoT1VUUFVUKSQoaWYgJChGTEFWT1IpLC8kKEZMQVZPUikpXFxuK1xcbithbGw6ICQoT1VUUFVUKS8kKEJJTkFSWSlcXG4rLlBIT05ZOiBhbGxcXG4rXFxuKyMgRGVsZXRlIHBhcnRpYWxseSB1cGRhdGVkIChjb3JydXB0ZWQpIGZpbGVzIG9uIGVycm9yXFxuKy5ERUxFVEVfT05fRVJST1I6XFxuK1xcbisjIFBlcm1pc3NpdmUgc2tpcC1vbi1mYWlsdXJlIG9mIGluZGl2aWR1YWwgdGVzdHMgYXBwbGllcyB0byB0ZXN0X3Byb2dzIGFuZFxcbisjIGl0cyBmbGF2b3JzIG9ubHk7IHRlc3RfbWFwcyB1c2VzIHN0cm9uZyBjcm9zcy1vYmplY3QgcmVmZXJlbmNlcyBhbmQga2VlcHNcXG4rIyBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBCUEZfU1RSSUNUX0JVSUxEPTAuXFxuK1BFUk1JU1NJVkVfVEVTVFMgOj0gJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzLCQoUlVOTkVSKSksJChQRVJNSVNTSVZFKSlcXG4rXFxuKyQoUkRJUik6XFxuK1xcdCQoY2FsbCBtc2csTUtESVIsLCRAKVxcbitcXHQkKFEpbWtkaXIgLXAgJEBcXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgUGVyLXJ1bm5lciBzb3VyY2VzXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK1xcbitpZmVxICgkKFJVTk5FUiksdGVzdF9wcm9ncylcXG4rRVhUUkFfU09VUkNFUyA6PSB0ZXN0X3Byb2dzLmMgY2dyb3VwX2hlbHBlcnMuYyB0cmFjZV9oZWxwZXJzLmNcXHRcXHRcXFxcXFxuK1xcdFxcdCBuZXR3b3JrX2hlbHBlcnMuYyB0ZXN0aW5nX2hlbHBlcnMuYyBidGZfaGVscGVycy5jXFx0XFxcXFxcbitcXHRcXHQgY2FwX2hlbHBlcnMuYyB1bnByaXZfaGVscGVycy5jIHN5c2N0bF9oZWxwZXJzLmNcXHRcXFxcXFxuK1xcdFxcdCBuZXRsaW5rX2hlbHBlcnMuYyBqaXRfZGlzYXNtX2hlbHBlcnMuYyBpb19oZWxwZXJzLmNcXHRcXFxcXFxuK1xcdFxcdCB0ZXN0X2xvYWRlci5jIHhzay5jIGRpc2FzbS5jIGRpc2FzbV9oZWxwZXJzLmNcXHRcXHRcXFxcXFxuK1xcdFxcdCBqc29uX3dyaXRlci5jIGJwZnRvb2xfaGVscGVycy5jIHVzZHRfMS5jIHVzZHRfMi5jXFxuK0xJQl9TT1VSQ0VTIDo9IGZpbmRfYml0LmNcXG4rRVhUUkFfSERSUyA6PSBmbG93X2Rpc3NlY3Rvcl9sb2FkLmggaXBfY2hlY2tfZGVmcmFnX2ZyYWdzLmhcXHRcXHRcXFxcXFxuK1xcdCAgICAgICQoVkVSSUZZX1NJR19IRFIpICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXFxuK0VYVFJBX0ZJTEVTIDo9ICQoT1VUUFVUKS91cmFuZG9tX3JlYWQgJChPVVRQVVQpL2xpYnVyYW5kb21fcmVhZC5zb1xcdFxcXFxcXG4rXFx0ICAgICAgICQoT1VUUFVUKS94ZHBfc3lucHJveHkgJChPVVRQVVQpL3NpZ24tZmlsZVxcdFxcdFxcXFxcXG4rXFx0ICAgICAgICQoT1VUUFVUKS91cHJvYmVfbXVsdGlcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgICAkKFRFU1RfS01PRF9UQVJHRVRTKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAgIGltYV9zZXR1cC5zaCAkKFZFUklGWV9TSUdfU0VUVVApXFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKVxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubylcXG4rZW5kaWZcXG4rXFxuK2lmZXEgKCQoUlVOTkVSKSx0ZXN0X21hcHMpXFxuK0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9tYXBzLmMgdGVzdGluZ19oZWxwZXJzLmNcXG4rZW5kaWZcXG4rXFxuKyMgTm90ZSBvbiB0aGUgdW5mbGF2b3JlZCBydW5uZXJzLCB3aGljaCBzaGFyZSAkKE9VVFBVVCkgd2l0aCB0aGUgbWFpblxcbisjIE1ha2VmaWxlOiBoZWxwZXIgb2JqZWN0cyB0aGUgbWFpbiBNYWtlZmlsZSBhbHNvIHVzZXMgKGFuZCBsaXN0cyBpbiB0aGVcXG4rIyBydW5uZXIgcHJlcmVxdWlzaXRlcykgYXJlIGFscmVhZHkgYnVpbHQgYW5kIGZyZXNoIHdoZW4gYSBydW5uZXIgc3RhcnRzLFxcbisjIHNvIHRoZSBydWxlcyBiZWxvdyBmaW5kIHRoZW0gdXAgdG8gZGF0ZSBhbmQgbmV2ZXIgd3JpdGUgdGhlbS5cXG4rXFxuK1RFU1RTX0hEUiA6PSAkKFRFU1RTX0RJUikvdGVzdHMuaFxcbitcXG4rVEVTVF9TUkNTICA6PSAkKG5vdGRpciAkKHdpbGRjYXJkICQoVEVTVFNfRElSKS8qLmMpKVxcbitURVNUX09CSlMgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS50ZXN0Lm8sJChURVNUX1NSQ1MpKVxcbitURVNUX0RFUFMgIDo9ICQoVEVTVF9PQkpTOi5vPS5kKVxcbitFWFRSQV9PQkpTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5vLCQoZmlsdGVyICUuYywkKEVYVFJBX1NPVVJDRVMpKSlcXG4rTElCX09CSlMgICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubywkKExJQl9TT1VSQ0VTKSlcXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9uc1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbitcXG4raWZuZXEgKCQoQlBGX0JVSUxEKSxub25lKVxcbitcXG4rQlBGX1NSQ1MgOj0gJChub3RkaXIgJCh3aWxkY2FyZCBwcm9ncy8qLmMpKVxcbitCUEZfT0JKUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUuYnBmLm8sJChCUEZfU1JDUykpXFxuK1xcbisjIFdoaWNoIHRlc3RzIHdhbnQgYSBsaWdodCBza2VsZXRvbiBpcyBkZXJpdmVkIGZyb20gdGhlIHRlc3Qgc291cmNlc1xcbisjIHRoZW1zZWx2ZXM6IGFuICcjaW5jbHVkZSBcXFwiZm9vLmxza2VsLmhcXFwiJyBsaW5lIGlzIHRoZSBzaW5nbGUgc291cmNlIG9mXFxuKyMgdHJ1dGguIFRlc3RzIHRoYXQgaW5jbHVkZSBib3RoIGZvby5za2VsLmggYW5kIGZvby5sc2tlbC5oIGdldCBib3RoLlxcbitza2VsX2luY2x1ZGVzID0gJChzaGVsbCBncmVwIC1yaG9FICdcXFwiW2EtekEtWjAtOV9dK1xcXFwuJCgxKVxcXCInIHByb2dfdGVzdHMgYmVuY2hzIG1hcF90ZXN0cyAqLmMgKi5jcHAgMlxcdTAwM2UvZGV2L251bGwpXFxuK0xTS0VMX0JBU0VTIDo9ICQoc29ydCAkKHBhdHN1YnN0IFxcXCIlLmxza2VsLmhcXFwiLCUsJChjYWxsIHNrZWxfaW5jbHVkZXMsbHNrZWwuaCkpKVxcbitTS0VMX0RFTUFOREVEIDo9ICQoc29ydCAkKHBhdHN1YnN0IFxcXCIlLnNrZWwuaFxcXCIsJSwkKGNhbGwgc2tlbF9pbmNsdWRlcyxza2VsLmgpKSlcXG4rXFxuKyMgU2lnbmluZyBpcyBub3QgZXhwcmVzc2VkIGluIHRoZSBpbmNsdWRlLCBzbyB0aGUgc2lnbmVkIHN1YnNldCBzdGF5c1xcbisjIGV4cGxpY2l0LlxcbitMU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0IGZleGl0X3Rlc3QgYXRvbWljc1xcbitcXG4rIyBCUEYgb2JqZWN0cyB0aGF0IGNhbm5vdCBoYXZlIGEgcmVndWxhciBza2VsZXRvbiwgcGx1cyBsc2tlbC1vbmx5IHRlc3RzXFxuKyMgKGxpZ2h0LXNrZWxldG9uIHVzZXJzIHdob3NlIHNvdXJjZXMgbmV2ZXIgaW5jbHVkZSB0aGUgLnNrZWwuaCBmb3JtKS5cXG4rU0tFTF9CTEFDS0xJU1QgOj0gYnRmX18lIHRlc3RfcGlubmluZ19pbnZhbGlkLmMgdGVzdF9za19hc3NpZ24uYyBcXFxcXFxuK1xcdFxcdCAgJChhZGRzdWZmaXggLmMsJChmaWx0ZXItb3V0ICQoU0tFTF9ERU1BTkRFRCksJChMU0tFTF9CQVNFUykpKVxcbitcXG4rIyBTa2VsZXRvbnMgbWFkZSBieSBsaW5raW5nIG11bHRpcGxlIEJQRiBvYmplY3RzIHRvZ2V0aGVyLiBUaGUgJS1kZXBzXFxuKyMgbWFwcGluZyBpcyB0aGUgb25seSBoYW5kLW1haW50YWluZWQgbWV0YWRhdGE6IGl0IGNhbm5vdCBiZSBkZXJpdmVkIGZyb21cXG4rIyB0aGUgc291cmNlcy5cXG4rdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3RhdGljX2xpbmtlZDEuYnBmLm8gdGVzdF9zdGF0aWNfbGlua2VkMi5icGYub1xcbitsaW5rZWRfZnVuY3Muc2tlbC5oLWRlcHMgOj0gbGlua2VkX2Z1bmNzMS5icGYubyBsaW5rZWRfZnVuY3MyLmJwZi5vXFxuK2xpbmtlZF92YXJzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF92YXJzMS5icGYubyBsaW5rZWRfdmFyczIuYnBmLm9cXG4rbGlua2VkX21hcHMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX21hcHMxLmJwZi5vIGxpbmtlZF9tYXBzMi5icGYub1xcbisjIEluIHRoZSBzdWJza2VsZXRvbiBjYXNlLCB3ZSB3YW50IHRoZSB0ZXN0X3N1YnNrZWxldG9uX2xpYi5zdWJza2VsLmggZmlsZVxcbisjIGJ1dCB0aGF0J3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi5cXG4rdGVzdF9zdWJza2VsZXRvbi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbi5icGYub1xcbit0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm9cXG4rdGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vXFxuK3RyYWNpbmdfbXVsdGkuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xcbit0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaF9tb2R1bGUuYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xcbit0cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xcbit0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9zZXNzaW9uX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXFxuK1xcbitMSU5LRURfU0tFTFMgOj0gdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaCBsaW5rZWRfZnVuY3Muc2tlbC5oXFx0XFx0XFxcXFxcbitcXHRcXHRsaW5rZWRfdmFycy5za2VsLmggbGlua2VkX21hcHMuc2tlbC5oXFx0XFx0XFx0XFxcXFxcbitcXHRcXHR0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmhcXHRcXFxcXFxuK1xcdFxcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHR0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oXFxuK0xJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoZm9yZWFjaCBza2VsLCQoTElOS0VEX1NLRUxTKSwkKCQoc2tlbCktZGVwcykpKVxcbitcXG4rU0tFTFMgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLnNrZWwuaCxcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICQoZmlsdGVyLW91dCAkKFNLRUxfQkxBQ0tMSVNUKSAkKExJTktFRF9CUEZfU1JDUyksJChCUEZfU1JDUykpKVxcbitMU0tFTFNfSCAgICAgICAgOj0gJChwYXRzdWJzdCAlLCQoUkRJUikvJS5sc2tlbC5oLCQoZmlsdGVyLW91dCAkKExTS0VMU19TSUdORUQpLCQoTFNLRUxfQkFTRVMpKSlcXG4rTFNLRUxTX1NJR05FRF9IIDo9ICQocGF0c3Vic3QgJSwkKFJESVIpLyUubHNrZWwuaCwkKExTS0VMU19TSUdORUQpKVxcbitMSU5LRURfU0tFTFNfSCAgOj0gJChhZGRwcmVmaXggJChSRElSKS8sJChMSU5LRURfU0tFTFMpKVxcbitBTExfU0tFTFMgOj0gJChTS0VMUykgJChMU0tFTFNfSCkgJChMU0tFTFNfU0lHTkVEX0gpICQoTElOS0VEX1NLRUxTX0gpXFxuK1xcbitIRUFERVJTX0ZPUl9CUEZfT0JKUyA6PSAkKHdpbGRjYXJkICQoQlBGRElSKS8qLmJwZi5oKVxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0JCh3aWxkY2FyZCAkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZS8qLltjaF0pXFx0XFxcXFxcbitcXHRcXHRcXHQkKGFkZHByZWZpeCAkKEJQRkRJUikvLFxcdGJwZl9jb3JlX3JlYWQuaFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0YnBmX2VuZGlhbi5oXFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRicGZfaGVscGVycy5oXFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRicGZfdHJhY2luZy5oKVxcbitcXG4rIyBQZXItc291cmNlIEJQRiBjb21waWxhdGlvbiBmbGFnIG92ZXJyaWRlcyAoJFxcdTAwM2MtQ0ZMQUdTIC8gJFxcdTAwM2MtJChGTEFWT1IpLUNGTEFHUykuXFxuKyMgR0NDIGNhbm5vdCBkaXNhYmxlIFxcXCJkZWNsYXJhdGlvbiBvZiBhbm9ueW1vdXMgc3RydWN0IGluIHBhcmFtZXRlciBsaXN0XFxcIlxcbisjIHdhcm5pbmdzIHRyaWdnZXJlZCBieSB0aGVzZSAodGVjaG5pY2FsbHkgbGVnYWwpIHRlc3QgcHJvZ3JhbXMuXFxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9uYW1lc3BhY2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcXG4rcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhY2tpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbitwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2Vfc3ludGF4LmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbitcXG4raWZlcSAoJChCUEZfQlVJTEQpLGdjYylcXG4rQlBGX0NDX01TRyA6PSBHQ0MtQlBGXFxuKyMgTm90ZTogc3lzIGluY2x1ZGVzIGNvbWUgZnJvbSB0aGUgKmhvc3QqIGdjYywgbm90ICQoQlBGX0dDQykgLSBicGYtZ2NjJ3NcXG4rIyBvd24gc2VhcmNoIHBhdGggbGFja3MgdGhlIGhvc3QncyBhc20tZ2VuZXJpYy8gaGVhZGVycy4gQ29tcHV0ZWQgb25jZVxcbisjIGhlcmU6IGJwZl9jYyBiZWxvdyBpcyBkZWZlcnJlZCBhbmQgZXhwYW5kcyBwZXIgY29tcGlsZWQgb2JqZWN0LlxcbitHQ0NfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLGdjYywpXFxuK2JwZl9jYyA9ICQoQlBGX0dDQykgJChCUEZfQ0ZMQUdTKSAkKEdDQ19TWVNfSU5DTFVERVMpXFx0XFx0XFx0XFxcXFxcbitcXHQgJChCUEZfREVGSU5FUykgJCgkXFx1MDAzYy1DRkxBR1MpICQoJFxcdTAwM2MtJChGTEFWT1IpLUNGTEFHUylcXHRcXHRcXFxcXFxuK1xcdCAtREJQRl9OT19QUkVTRVJWRV9BQ0NFU1NfSU5ERVggLVduby1hdHRyaWJ1dGVzIC1PMiAtYyAkXFx1MDAzYyAtbyAkQFxcbitlbHNlXFxuK0JQRl9DQ19NU0cgOj0gQ0xORy1CUEZcXG4rYnBmX2NjID0gJChDTEFORykgJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykgJChCUEZfREVGSU5FUylcXHRcXHRcXFxcXFxuK1xcdCAkKCRcXHUwMDNjLUNGTEFHUykgJCgkXFx1MDAzYy0kKEZMQVZPUiktQ0ZMQUdTKVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0IC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkXFx1MDAzYyAtbWNwdT0kKEJQRl9NQ1BVKSAtbyAkQFxcbitlbmRpZlxcbitcXG4rJChCUEZfT0JKUyk6ICQoUkRJUikvJS5icGYubzogcHJvZ3MvJS5jIHByb2dzLyouaFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChIRUFERVJTX0ZPUl9CUEZfT0JKUylcXHRcXHRcXFxcXFxuK1xcdCAgICAgfCAkKFJESVIpICQoQlBGT0JKKVxcbitcXHQkKGNhbGwgbXNnLCQoQlBGX0NDX01TRyksJChCSU5BUlkpLCRAKVxcbitcXHQkKFEpJChicGZfY2MpICQoY2FsbCBza2lwX29uX2ZhaWwsQlBGKVxcbitcXG4rIyBnZW5fYnBmX3NrZWwuc2ggcGlja3MgdGhlIGJwZnRvb2wgYmluYXJ5IHVwIGZyb20gdGhlIGVudmlyb25tZW50LlxcbitleHBvcnQgQlBGVE9PTFxcbitHRU5fU0tFTCA6PSAuL2dlbl9icGZfc2tlbC5zaFxcbitcXG4rJChTS0VMUyk6ICQoUkRJUikvJS5za2VsLmg6ICQoUkRJUikvJS5icGYubyAkKEJQRlRPT0wpIHwgJChSRElSKVxcbitcXHQkKFEpJChHRU5fU0tFTCkgLS10YWcgJyQoQklOQVJZKScgLS1uYW1lICQqIC0taW5maXggbGlua2VkXFx0XFxcXFxcbitcXHRcXHQtLXNrZWwgJEAgLS1zdWJza2VsICQoQDouc2tlbC5oPS5zdWJza2VsLmgpICRcXHUwMDNjXFx0XFx0XFxcXFxcbitcXHRcXHQkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpXFxuK1xcbiskKExTS0VMU19IKTogJChSRElSKS8lLmxza2VsLmg6ICQoUkRJUikvJS5icGYubyAkKEJQRlRPT0wpIHwgJChSRElSKVxcbitcXHQkKFEpJChHRU5fU0tFTCkgLS10YWcgJyQoQklOQVJZKScgLS1uYW1lICQqX2xza2VsIC0taW5maXggbGxpbmtlZCBcXFxcXFxuK1xcdFxcdC0tbHNrZWwgLS1za2VsICRAICRcXHUwMDNjICQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTClcXG4rXFxuKyQoTFNLRUxTX1NJR05FRF9IKTogJChSRElSKS8lLmxza2VsLmg6ICQoUkRJUikvJS5icGYubyAkKEJQRlRPT0wpXFx0XFxcXFxcbitcXHRcXHQgICAgJChQUklWQVRFX0tFWSkgJChWRVJJRklDQVRJT05fQ0VSVCkgfCAkKFJESVIpXFxuK1xcdCQoUSkkKEdFTl9TS0VMKSAtLXRhZyAnJChCSU5BUlkpIChzaWduZWQpJyAtLW5hbWUgJCpfbHNrZWxcXHRcXFxcXFxuK1xcdFxcdC0taW5maXggbGxpbmtlZFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0LS1zaWduICctUyAtayAkKFBSSVZBVEVfS0VZKSAtaSAkKFZFUklGSUNBVElPTl9DRVJUKSdcXHRcXFxcXFxuK1xcdFxcdC0tc2tlbCAkQCAkXFx1MDAzYyAkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwpXFxuK1xcbisuU0VDT05ERVhQQU5TSU9OOlxcbiskKExJTktFRF9TS0VMU19IKTogJChSRElSKS8lLnNrZWwuaDogJCQoYWRkcHJlZml4ICQoUkRJUikvLCQkKCQkKi5za2VsLmgtZGVwcykpIFxcXFxcXG4rXFx0XFx0ICAgJChCUEZUT09MKSB8ICQoUkRJUilcXG4rXFx0JChRKSQoR0VOX1NLRUwpIC0tdGFnICckKEJJTkFSWSknIC0tbmFtZSAkKiAtLWluZml4IGxpbmtlZFxcdFxcXFxcXG4rXFx0XFx0LS1za2VsICRAIC0tc3Vic2tlbCAkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKVxcdFxcdFxcXFxcXG4rXFx0XFx0JChhZGRwcmVmaXggJChSRElSKS8sJCgkKi5za2VsLmgtZGVwcykpXFx0XFx0XFx0XFxcXFxcbitcXHRcXHQkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpXFxuK1xcbitlbmRpZiAjIEJQRl9CVUlMRCAhPSBub25lXFxuK1xcbisuUEhPTlk6IHNrZWxzXFxuK3NrZWxzOiAkKEFMTF9TS0VMUylcXG4rXFxuKyMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdCBmdWxsXFxuKyMgcGF0aHMpIGFyZSBzcGVjaWZpZWQgYXMgcHJlcmVxdWlzaXRlcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgJS5vIGZpbGUuXFxuKyMgVGhlIHZwYXRoIGRpcmVjdGl2ZXMgaW5zdHJ1Y3QgbWFrZSB0byBhbHNvIHNlYXJjaCBmb3Igc2tlbCBmaWxlcyBpblxcbisjICQoUkRJUikgaWYgdGhleSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5Llxcbit2cGF0aCAlLnNrZWwuaCAkKFJESVIpXFxuK3ZwYXRoICUubHNrZWwuaCAkKFJESVIpXFxuK3ZwYXRoICUuc3Vic2tlbC5oICQoUkRJUilcXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgVGVzdCBvYmplY3RzIGFuZCBydW5uZXIgYmluYXJ5XFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK1xcbiskKFJESVIpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogJChSRVNPTFZFX0JURklEUykgJChSRElSKS9idGZfZGF0YS5icGYub1xcbiskKFJESVIpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogcHJpdmF0ZSBURVNUX05FRURTX0JURklEUyA9IDFcXG4rXFxuKyMgQ29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXMuXFxuKyMgTm90ZTogd2UgY2QgaW50byB0aGUgb3V0cHV0IGRpcmVjdG9yeSB0byBlbnN1cmUgZW1iZWRkZWQgQlBGIG9iamVjdHNcXG4rIyBhcmUgZm91bmQuIFRoZSAlLnRlc3QuZCBkZXBlbmRlbmN5IGZpbGVzIGFyZSBhIHNpZGUgZWZmZWN0IG9mIHRoZSAtTU1EXFxuKyMgYmVsb3c7IHRoZSBzZXBhcmF0ZSBuby1yZWNpcGUgcnVsZSBmb3IgdGhlbSBvcmRlcnMgdGhlIGZpcnN0XFxuKyMgY29tcGlsYXRpb24gYWZ0ZXIgc2tlbGV0b24gZ2VuZXJhdGlvbiBhbmQgcmUtb3JkZXJzIHRlc3Qgb2JqZWN0XFxuKyMgY29tcGlsYXRpb24gd2hlbiBoZWFkZXJzIGNoYW5nZS5cXG4rJChURVNUX09CSlMpOiAkKFJESVIpLyUudGVzdC5vOiAkKFRFU1RTX0RJUikvJS5jIHwgJChSRElSKS8lLnRlc3QuZFxcbitcXHQkKGNhbGwgbXNnLFRFU1QtT0JKLCQoQklOQVJZKSwkQClcXG4rXFx0JChRKShjZCAkKEBEKSBcXHUwMDI2XFx1MDAyNiAkKENDKSAtSS4gJChDRkxBR1MpIC1NTUQgLU1UICRAIC1jICQoQ1VSRElSKS8kXFx1MDAzYyAtbyAkKEBGKSkgXFxcXFxcbitcXHRcXHQkKGlmICQoUEVSTUlTU0lWRV9URVNUUyksJChjYWxsIHNraXBfb25fZmFpbCxURVNUKSlcXG4rXFx0JChpZiAkKFRFU1RfTkVFRFNfQlRGSURTKSxcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCQoUSlpZiBbIC1mICRAIF07IHRoZW5cXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCQoaWYgJChmaWx0ZXIgMSwkKFYpKSx0cnVlLHByaW50ZiAnICAlLThzJXMgJXNcXFxcbicgXFxcIkJURklEU1xcXCIgXFxcIiBbJChCSU5BUlkpXVxcXCIgXFxcIiQobm90ZGlyICRAKVxcXCIpOyBcXFxcXFxuK1xcdFxcdCQoUkVTT0xWRV9CVEZJRFMpIC0tYnRmICQoUkRJUikvYnRmX2RhdGEuYnBmLm8gJEA7XFx0XFxcXFxcbitcXHRcXHQkKFJFU09MVkVfQlRGSURTKSAtLXBhdGNoX2J0ZmlkcyAkQC5CVEZfaWRzICRAO1xcdFxcdFxcXFxcXG4rXFx0XFx0ZmkpXFxuK1xcbiskKFRFU1RfREVQUyk6ICQoUkRJUikvJS50ZXN0LmQ6ICQoVEVTVFNfRElSKS8lLmMgJChFWFRSQV9IRFJTKSAkKEJQRk9CSikgXFxcXFxcbitcXHQgICAgICB8ICQoUkRJUikgJChBTExfU0tFTFMpXFxuK1xcbitpbmNsdWRlICQod2lsZGNhcmQgJChURVNUX0RFUFMpKVxcbitcXG4rJChSRElSKS9qaXRfZGlzYXNtX2hlbHBlcnMubzogQ0ZMQUdTICs9ICQoTExWTV9DRkxBR1MpXFxuK1xcbiskKEVYVFJBX09CSlMpOiAkKFJESVIpLyUubzogJS5jICQoRVhUUkFfSERSUykgJChURVNUU19IRFIpICQoQlBGT0JKKSB8ICQoUkRJUilcXG4rXFx0JChjYWxsIG1zZyxFWFQtT0JKLCQoQklOQVJZKSwkQClcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkXFx1MDAzYyAtbyAkQFxcbitcXG4rJChMSUJfT0JKUyk6ICQoUkRJUikvJS5vOiAkKFRPT0xTRElSKS9saWIvJS5jIHwgJChSRElSKVxcbitcXHQkKGNhbGwgbXNnLExJQi1PQkosJChCSU5BUlkpLCRAKVxcbitcXHQkKFEpJChDQykgJChDRkxBR1MpIC1jICRcXHUwMDNjIC1vICRAXFxuK1xcbisjIE5vbi1mbGF2b3JlZCBpbi1zcmN0cmVlIGJ1aWxkcyByZWNlaXZlIHNwZWNpYWwgdHJlYXRtZW50LCBpbiBwYXJ0aWN1bGFyXFxuKyMgd2UgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKS5cXG4rLlBIT05ZOiBleHRyYXNcXG4rZXh0cmFzOiAkKGlmICQoUEVSTUlTU0lWRSksJCh3aWxkY2FyZCAkKEVYVFJBX0ZJTEVTKSksJChFWFRSQV9GSUxFUykpIHwgJChSRElSKVxcbitpZm5lcSAoJChGTEFWT1IpOiQoT1VUUFVUKSw6JChDVVJESVIpKVxcbitpZm5lcSAoJChzdHJpcCAkKEVYVFJBX0ZJTEVTKSksKVxcbitcXHQkKGNhbGwgbXNnLEVYVC1DT1BZLCQoQklOQVJZKSwkKG5vdGRpciAkKEVYVFJBX0ZJTEVTKSkpXFxuK1xcdCQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJChFWFRSQV9GSUxFUykgJChSRElSKS9cXG4rZW5kaWZcXG4rZW5kaWZcXG4rXFxuKyMgSW4gcGVybWlzc2l2ZSBtb2RlLCBsaW5rIHdoYXRldmVyIHRlc3Qgb2JqZWN0cyB3ZXJlIHN1Y2Nlc3NmdWxseSBidWlsdFxcbisjICh0aGVpciBjb21waWxhdGlvbiBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpOyB0aGUgd2lsZGNhcmQgaW4gdGhlIHJlY2lwZVxcbisjIHBpY2tzIHVwIHRoZSBzdXJ2aXZvcnMgYXQgbGluayB0aW1lLlxcbisjIFByZXJlcXVpc2l0ZSBvcmRlciBpcyBhbHNvIGxpbmsgb3JkZXIgKHRlc3Qgb2JqZWN0cywgZXh0cmEgb2JqZWN0cyxcXG4rIyBsaWJicGYsIGxpYiBvYmplY3RzKS5cXG4rJChPVVRQVVQpLyQoQklOQVJZKTogJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCwkKFRFU1RfT0JKUykpXFx0XFx0XFxcXFxcbitcXHRcXHQgICAgICQoRVhUUkFfT0JKUykgJChCUEZPQkopICQoTElCX09CSlMpXFx0XFx0XFxcXFxcbitcXHRcXHQgICAgICQoVFJVTk5FUl9CUEZUT09MKSAkKE9VVFBVVCkvdmVyaXN0YXRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgfCBleHRyYXMgJChCUEZfT0JKUylcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQoVEVTVF9PQkpTKSlcXG4rXFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxcbitcXHQkKFEpJChDQykgJChDRkxBR1MpXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQkKGlmICQoUEVSTUlTU0lWRV9URVNUUyksJCh3aWxkY2FyZCAkKFRFU1RfT0JKUykpKVxcdFxcXFxcXG4rXFx0XFx0JChmaWx0ZXIgJS5hICUubywkXilcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCQoTERMSUJTKSAkKExMVk1fTERMSUJTKSAkKExERkxBR1MpICQoTExWTV9MREZMQUdTKSAtbyAkQFxcbitcXHQkKFEpbG4gLXNmICQoaWYgJChGTEFWT1IpLC4uLC4pL3Rvb2xzL2J1aWxkL2JwZnRvb2wvJChVU0VfQk9PVFNUUkFQKWJwZnRvb2wgXFxcXFxcbitcXHRcXHQgICAkKFJESVIpL2JwZnRvb2xcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2hcXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4wYjIzN2Y2Mzk2N2RkNlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoXFxuQEAgLTAsMCArMSw5NyBAQFxcbisjIS9iaW4vYmFzaFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNcXG4rIyBMaW5rIEJQRiBvYmplY3QgZmlsZShzKSB3aXRoIFxcXCJicGZ0b29sIGdlbiBvYmplY3RcXFwiIGFuZCBnZW5lcmF0ZSBhXFxuKyMgc2tlbGV0b24gKG9yIGxpZ2h0IHNrZWxldG9uKSBoZWFkZXIgZnJvbSB0aGUgcmVzdWx0LlxcbisjXFxuKyMgVXNhZ2U6XFxuKyMgICBCUEZUT09MPVxcdTAwM2NicGZ0b29sXFx1MDAzZSBnZW5fYnBmX3NrZWwuc2ggLS1uYW1lIE5BTUUgLS1za2VsIE9VVCBbb3B0aW9uc10gT0JKLi4uXFxuKyNcXG4rIyAgIC0tbmFtZSBOQU1FICAgICAgIHNrZWxldG9uIG9iamVjdCBuYW1lIChcXFwibmFtZSBOQU1FXFxcIiBmb3IgYnBmdG9vbClcXG4rIyAgIC0tc2tlbCBPVVQgICAgICAgIG91dHB1dCBoZWFkZXIgKFxcXCJmb28uc2tlbC5oXFxcIiBvciBcXFwiZm9vLmxza2VsLmhcXFwiKVxcbisjICAgLS1zdWJza2VsIE9VVCAgICAgYWxzbyBnZW5lcmF0ZSBhIHN1YnNrZWxldG9uIGhlYWRlciBpbnRvIE9VVFxcbisjICAgLS1sc2tlbCAgICAgICAgICAgZ2VuZXJhdGUgYSBsaWdodCBza2VsZXRvbiAoYnBmdG9vbCBnZW4gc2tlbGV0b24gLUwpXFxuKyMgICAtLXNpZ24gJ0FSR1MnICAgICBleHRyYSBcXFwiZ2VuIHNrZWxldG9uXFxcIiBhcmdzIGZvciBzaWduaW5nICgtUyAtayAuLiAtaSAuLilcXG4rIyAgIC0tdGFnIFRBRyAgICAgICAgIGJ1aWxkLWxvZyB0YWcsIGUuZy4gXFxcInRlc3RfcHJvZ3Mtbm9fYWx1MzJcXFwiXFxuKyMgICAtLWluZml4IFNUUiAgICAgICBpbnRlcm1lZGlhdGUgZmlsZSBpbmZpeCAoZGVmYXVsdDogbGlua2VkKS4gQ2FsbGVyc1xcbisjICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGluZyBib3RoIGEgLnNrZWwuaCBhbmQgYSAubHNrZWwuaCBmcm9tIHRoZVxcbisjICAgICAgICAgICAgICAgICAgICAgc2FtZSAuYnBmLm8gTVVTVCB1c2UgZGlzdGluY3QgaW5maXhlcywgb3IgcGFyYWxsZWxcXG4rIyAgICAgICAgICAgICAgICAgICAgIGJ1aWxkcyByYWNlIG9uIHRoZSBpbnRlcm1lZGlhdGUgZmlsZXMuXFxuKyMgICAtLW5vLWRldGVybWluaXNtLWNoZWNrXFxuKyMgICAgICAgICAgICAgICAgICAgICBsaW5rIHRoZSBpbnB1dHMgb25jZSBpbnN0ZWFkIG9mIHRocmVlIHRpbWVzLlxcbisjICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCB0aGUgb2JqZWN0IGlzIHJlLWxpbmtlZCB0d2ljZSBtb3JlIGFuZFxcbisjICAgICAgICAgICAgICAgICAgICAgdGhlIDJuZCBhbmQgM3JkIHJlc3VsdHMgY29tcGFyZWQsIGFzIGEgcmVncmVzc2lvblxcbisjICAgICAgICAgICAgICAgICAgICAgdGVzdCBmb3IgdGhlIGRldGVybWluaXNtIG9mIFxcXCJicGZ0b29sIGdlbiBvYmplY3RcXFwiLlxcbisjXFxuKyMgVGhlIGJwZnRvb2wgYmluYXJ5IGlzIHRha2VuIGZyb20gJEJQRlRPT0wgKGRlZmF1bHQ6IGJwZnRvb2wgZnJvbSBQQVRIKS5cXG4rIyBPbiBmYWlsdXJlIGFsbCBvdXRwdXRzIGFuZCBpbnRlcm1lZGlhdGVzIGFyZSByZW1vdmVkIGFuZCB0aGUgc2NyaXB0XFxuKyMgZXhpdHMgbm9uLXplcm87IHBlcm1pc3NpdmUtbW9kZSBza2lwcGluZyBpcyB0aGUgY2FsbGVyJ3MgYnVzaW5lc3NcXG4rIyAoc2VlIHNraXBfb25fZmFpbCBpbiBNYWtlZmlsZS5idWlsZHZhcnMpLlxcbitcXG4rc2V0IC11XFxuK1xcbiticGZ0b29sPSR7QlBGVE9PTDotYnBmdG9vbH1cXG4rbmFtZT0nJyBza2VsPScnIHN1YnNrZWw9JycgdGFnPScnIHNpZ25fYXJncz0nJyBpbmZpeD1saW5rZWRcXG4rbHNrZWw9MCBkZXRfY2hlY2s9MVxcbitcXG4rd2hpbGUgWyAkIyAtZ3QgMCBdOyBkb1xcbitcXHRjYXNlIFxcXCIkMVxcXCIgaW5cXG4rXFx0LS1uYW1lKVxcdFxcdG5hbWU9JDI7IHNoaWZ0IDIgOztcXG4rXFx0LS1za2VsKVxcdFxcdHNrZWw9JDI7IHNoaWZ0IDIgOztcXG4rXFx0LS1zdWJza2VsKVxcdHN1YnNrZWw9JDI7IHNoaWZ0IDIgOztcXG4rXFx0LS10YWcpXFx0XFx0dGFnPSQyOyBzaGlmdCAyIDs7XFxuK1xcdC0taW5maXgpXFx0aW5maXg9JDI7IHNoaWZ0IDIgOztcXG4rXFx0LS1zaWduKVxcdFxcdHNpZ25fYXJncz0kMjsgc2hpZnQgMiA7O1xcbitcXHQtLWxza2VsKVxcdGxza2VsPTE7IHNoaWZ0IDs7XFxuK1xcdC0tbm8tZGV0ZXJtaW5pc20tY2hlY2spIGRldF9jaGVjaz0wOyBzaGlmdCA7O1xcbitcXHQtLSlcXHRcXHRzaGlmdDsgYnJlYWsgOztcXG4rXFx0LSopXFx0XFx0ZWNobyBcXFwiJDA6IHVua25vd24gb3B0aW9uOiAkMVxcXCIgXFx1MDAzZVxcdTAwMjYyOyBleGl0IDEgOztcXG4rXFx0KilcXHRcXHRicmVhayA7O1xcbitcXHRlc2FjXFxuK2RvbmVcXG4rXFxuK2lmIFsgLXogXFxcIiRuYW1lXFxcIiBdIHx8IFsgLXogXFxcIiRza2VsXFxcIiBdIHx8IFsgJCMgLWVxIDAgXTsgdGhlblxcbitcXHRlY2hvIFxcXCJ1c2FnZTogJDAgLS1uYW1lIE5BTUUgLS1za2VsIE9VVCBbb3B0aW9uc10gT0JKLi4uXFxcIiBcXHUwMDNlXFx1MDAyNjJcXG4rXFx0ZXhpdCAxXFxuK2ZpXFxuK1xcbitiYXNlPSR7c2tlbCUuc2tlbC5ofVxcbitiYXNlPSR7YmFzZSUubHNrZWwuaH1cXG4rdDE9JGJhc2UuJHtpbmZpeH0xLm9cXG4rdDI9JGJhc2UuJHtpbmZpeH0yLm9cXG4rdDM9JGJhc2UuJHtpbmZpeH0zLm9cXG4rXFxuK2ZhaWwoKSB7XFxuK1xcdHJtIC1mIFxcXCIkc2tlbFxcXCIgJHtzdWJza2VsOitcXFwiJHN1YnNrZWxcXFwifSBcXFwiJHQxXFxcIiBcXFwiJHQyXFxcIiBcXFwiJHQzXFxcIlxcbitcXHRleGl0IDFcXG4rfVxcbitcXG4raWYgWyAkIyAtZ3QgMSBdOyB0aGVuXFxuK1xcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnTElOSy1CUEYnIFxcXCIke3RhZzorWyR0YWddIH0kKGJhc2VuYW1lIFxcXCIkYmFzZVxcXCIpLmJwZi5vXFxcIiBcXHUwMDNlXFx1MDAyNjJcXG4rZmlcXG4rcHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdHRU4tU0tFTCcgXFxcIiR7dGFnOitbJHRhZ10gfSQoYmFzZW5hbWUgXFxcIiRza2VsXFxcIilcXFwiIFxcdTAwM2VcXHUwMDI2MlxcbitcXG4rXFxcIiRicGZ0b29sXFxcIiBnZW4gb2JqZWN0IFxcXCIkdDFcXFwiIFxcXCIkQFxcXCIgfHwgZmFpbFxcbitmaW5hbD0kdDFcXG4raWYgWyBcXFwiJGRldF9jaGVja1xcXCIgLWVxIDEgXTsgdGhlblxcbitcXHRcXFwiJGJwZnRvb2xcXFwiIGdlbiBvYmplY3QgXFxcIiR0MlxcXCIgXFxcIiR0MVxcXCIgfHwgZmFpbFxcbitcXHRcXFwiJGJwZnRvb2xcXFwiIGdlbiBvYmplY3QgXFxcIiR0M1xcXCIgXFxcIiR0MlxcXCIgfHwgZmFpbFxcbitcXHRpZiAhIGNtcCAtcyBcXFwiJHQyXFxcIiBcXFwiJHQzXFxcIjsgdGhlblxcbitcXHRcXHRlY2hvIFxcXCIkMDogYnBmdG9vbCBnZW4gb2JqZWN0IGlzIG5vdCBkZXRlcm1pbmlzdGljIGZvciAkc2tlbFxcXCIgXFx1MDAzZVxcdTAwMjYyXFxuK1xcdFxcdGZhaWxcXG4rXFx0ZmlcXG4rXFx0ZmluYWw9JHQzXFxuK2ZpXFxuK1xcbitmbGFncz1cXG4rWyBcXFwiJGxza2VsXFxcIiAtZXEgMSBdIFxcdTAwMjZcXHUwMDI2IGZsYWdzPS1MXFxuKyMgJHNpZ25fYXJncyBpbnRlbnRpb25hbGx5IHVucXVvdGVkOiBpdCBpcyBhIGxpc3Qgb2YgYnBmdG9vbCBhcmd1bWVudHNcXG4rIyBzaGVsbGNoZWNrIGRpc2FibGU9U0MyMDg2XFxuK1xcXCIkYnBmdG9vbFxcXCIgZ2VuIHNrZWxldG9uICRzaWduX2FyZ3MgJGZsYWdzIFxcXCIkZmluYWxcXFwiIG5hbWUgXFxcIiRuYW1lXFxcIiBcXHUwMDNlIFxcXCIkc2tlbFxcXCIgfHwgZmFpbFxcbitcXG4raWYgWyAtbiBcXFwiJHN1YnNrZWxcXFwiIF07IHRoZW5cXG4rXFx0XFxcIiRicGZ0b29sXFxcIiBnZW4gc3Vic2tlbGV0b24gXFxcIiRmaW5hbFxcXCIgbmFtZSBcXFwiJG5hbWVcXFwiIFxcdTAwM2UgXFxcIiRzdWJza2VsXFxcIiB8fCBmYWlsXFxuK2ZpXFxuK1xcbitybSAtZiBcXFwiJHQxXFxcIiBcXFwiJHQyXFxcIiBcXFwiJHQzXFxcIlxcbitleGl0IDBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTM6Mjk6MjQuMzYwMDY1MjEyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTY2OTE3MjE2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgYnVpbGQgc3lzdGVtIGZvciBCUEYgc2VsZnRlc3RzIChNYWtlZmlsZXMgYW5kIGEgc2hlbGwgc2NyaXB0KS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGUwY2E5MGJiN2ZhMzczZWM4ZjdlNGZmMTc2NGY4MWVhYmNjYTk2NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDIyIDEzOjI5OjIxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXG5pbmRleCBiNjQyZWU0ODllYTY0MC4uYTNhYjUyNWY3ZGZhYmIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZVxuQEAgLTEsOTYgKzEsNDQgQEBcbiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI1xuKyMgQlBGIHNlbGZ0ZXN0cyBidWlsZC5cbisjXG4rIyBUaGUgYnVpbGQgaXMgc3BsaXQgaW4gdHdvIGxheWVyczpcbisjXG4rIyAgIE1ha2VmaWxlICh0aGlzIGZpbGUpXG4rIyAgICAgICBFdmVyeXRoaW5nIHRoYXQgZXhpc3RzIG9uY2U6IGtub2JzIGFuZCB0b29sY2hhaW4gc2V0dXAsIGxpYmJwZiAvXG4rIyAgICAgICBicGZ0b29sIC8gcmVzb2x2ZV9idGZpZHMgc3ViLWJ1aWxkcywgdm1saW51eC5oLCBzaWduaW5nIGtleXMsXG4rIyAgICAgICBnZW5lcmF0ZWQgdGVzdHMuaCBoZWFkZXJzLCBzaGFyZWQgaGVscGVyIG9iamVjdHMsIHN0YW5kYWxvbmUgdGVzdFxuKyMgICAgICAgYmluYXJpZXMgKGJlbmNoLCB2ZXJpc3RhdCwgdGVzdF92ZXJpZmllciwgeHNrKiwgLi4uKSwga2VybmVsIHRlc3RcbisjICAgICAgIG1vZHVsZXMsIGRvY3MsIGFuZCB0aGUga3NlbGZ0ZXN0IGxpYi5tayBydW4vaW5zdGFsbC9jbGVhblxuKyMgICAgICAgY29udHJhY3QuXG4rI1xuKyMgICBNYWtlZmlsZS5ydW5uZXJcbisjICAgICAgIE9uZSB0ZXN0LXJ1bm5lciBpbnN0YW5jZSAodGVzdF9wcm9ncywgdGVzdF9wcm9ncy1cdTAwM2NmbGF2b3JcdTAwM2UsXG4rIyAgICAgICB0ZXN0X21hcHMpOiBCUEYgb2JqZWN0cywgc2tlbGV0b24gaGVhZGVycywgdGVzdCBvYmplY3RzIGFuZCB0aGVcbisjICAgICAgIGZpbmFsIHJ1bm5lciBiaW5hcnkuIEludm9rZWQgZnJvbSBoZXJlIG9uY2UgcGVyIGluc3RhbmNlOyBlYWNoXG4rIyAgICAgICBpbnZvY2F0aW9uIGlzIGFuIGluZGVwZW5kZW50IHNpbmdsZS1mbGF2b3IgbmFtZXNwYWNlLCBzbyB0aGVcbisjICAgICAgIHJ1bm5lciBpcyBwbGFpbiBtYWtlIHdpdGhvdXQgJCQtZXNjYXBpbmcgb3IgZXZhbC5cbisjXG4rIyAgIGdlbl9icGZfc2tlbC5zaFxuKyMgICAgICAgTGlua3MgQlBGIG9iamVjdHMgdmlhIGJwZnRvb2wgYW5kIGdlbmVyYXRlcyAobGlnaHQpIHNrZWxldG9ucztcbisjICAgICAgIG9uZSBzY3JpcHQgaW5zdGVhZCBvZiBmb3VyIG5lYXItaWRlbnRpY2FsIG1ha2UgcmVjaXBlcy5cbisjXG4rIyBTaGFyZWQgZGVmaW5pdGlvbnMgKHBhdGhzLCBmbGFncywgcGVybWlzc2l2ZS1tb2RlIGhlbHBlcnMpIGxpdmUgaW5cbisjIE1ha2VmaWxlLmJ1aWxkdmFycywgaW5jbHVkZWQgYnkgYm90aCBsYXllcnMuXG4rXG4gaW5jbHVkZSAuLi8uLi8uLi9idWlsZC9CdWlsZC5pbmNsdWRlXG4gaW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2hcbiBpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZVxuIFxuLUNYWCA/PSAkKENST1NTX0NPTVBJTEUpZysrXG4tT0JKQ09QWSA/PSAkKENST1NTX0NPTVBJTEUpb2JqY29weVxuLVxuLUNVUkRJUiA6PSAkKGFic3BhdGggLilcbi1UT09MU0RJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4pXG4tTElCRElSIDo9ICQoVE9PTFNESVIpL2xpYlxuLUJQRkRJUiA6PSAkKExJQkRJUikvYnBmXG4tVE9PTFNJTkNESVIgOj0gJChUT09MU0RJUikvaW5jbHVkZVxuLVRPT0xTQVJDSElOQ0RJUiA6PSAkKFRPT0xTRElSKS9hcmNoLyQoU1JDQVJDSCkvaW5jbHVkZVxuLUJQRlRPT0xESVIgOj0gJChUT09MU0RJUikvYnBmL2JwZnRvb2xcbi1BUElESVIgOj0gJChUT09MU0lOQ0RJUikvdWFwaVxuLWlmbmVxICgkKE8pLClcbi1HRU5ESVIgOj0gJChPKS9pbmNsdWRlL2dlbmVyYXRlZFxuLWVsc2Vcbi1HRU5ESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uLy4uL2luY2x1ZGUvZ2VuZXJhdGVkKVxuLWVuZGlmXG4tR0VOSERSIDo9ICQoR0VORElSKS9hdXRvY29uZi5oXG4tUEtHX0NPTkZJRyA/PSAkKENST1NTX0NPTVBJTEUpcGtnLWNvbmZpZ1xuLVxuLWlmbmVxICgkKHdpbGRjYXJkICQoR0VOSERSKSksKVxuLSAgR0VORkxBR1MgOj0gLURIQVZFX0dFTkhEUlxuKyMgVGhlc2UgcHJvYmVzIGdhdGUgdGhlIGZsYXZvciBsaXN0LCB3aGljaCBtdXN0IGJlIGZpbmFsIGJlZm9yZSBsaWIubWsgaXNcbisjIGluY2x1ZGVkOyBrZWVwIHZhbHVlcyBjb25zaXN0ZW50IHdpdGggTWFrZWZpbGUuYnVpbGR2YXJzLlxuK2lmZXEgKCQob3JpZ2luIEJQRl9HQ0MpLHVuZGVmaW5lZClcbitCUEZfR0NDIDo9ICQoc2hlbGwgY29tbWFuZCAtdiBicGYtZ2NjOylcbiBlbmRpZlxuLVxuLUJQRl9HQ0NcdFx0Pz0gJChzaGVsbCBjb21tYW5kIC12IGJwZi1nY2M7KVxuLWlmZGVmIEFTQU5cbi1TQU5fQ0ZMQUdTIFx0Pz0gLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXG4tZWxzZVxuLVNBTl9DRkxBR1NcdD89XG4tZW5kaWZcbi1TQU5fTERGTEFHU1x0Pz0gJChTQU5fQ0ZMQUdTKVxuLVJFTEVBU0VcdFx0Pz1cbi1PUFRfRkxBR1NcdD89ICQoaWYgJChSRUxFQVNFKSwtTzIsLU8wKVxuLVxuLUxJQkVMRl9DRkxBR1NcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1jZmxhZ3MgMlx1MDAzZS9kZXYvbnVsbClcbi1MSUJFTEZfTElCU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWxpYnMgMlx1MDAzZS9kZXYvbnVsbCB8fCBlY2hvIC1sZWxmKVxuLVxuLVNLSVBfRE9DU1x0Pz1cbi1TS0lQX0xMVk1cdD89XG4tU0tJUF9MSUJCRkRcdD89XG4tU0tJUF9DUllQVE9cdD89XG4tXG4tIyBXaGVuIEJQRl9TVFJJQ1RfQlVJTEQgaXMgMSwgYW55IEJQRiBvYmplY3QsIHNrZWxldG9uLCB0ZXN0IG9iamVjdCwgb3Jcbi0jIGJlbmNobWFyayBjb21waWxhdGlvbiBmYWlsdXJlIGlzIGZhdGFsLiBTZXQgdG8gMCB0byB0b2xlcmF0ZSBmYWlsdXJlc1xuLSMgYW5kIGNvbnRpbnVlIGJ1aWxkaW5nIHRoZSByZW1haW5pbmcgdGVzdHMuXG4tQlBGX1NUUklDVF9CVUlMRCA/PSAxXG4tUEVSTUlTU0lWRSA6PSAkKGZpbHRlciAwLCQoQlBGX1NUUklDVF9CVUlMRCkpXG4tXG4taWZlcSAoJChzcmN0cmVlKSwpXG4tc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChDVVJESVIpKSlcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcbi1lbmRpZlxuLVxuLUNPTU1PTl9DRkxBR1MgPSAtZyAkKE9QVF9GTEFHUykgLXJkeW5hbWljIC1zdGQ9Z251MTFcdFx0XHRcdFxcXG4tXHQgIC1XYWxsIC1XZXJyb3IgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcdFx0XHRcdFxcXG4tXHQgIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGVcdFx0XHRcdFx0XFxcbi1cdCAgJChHRU5GTEFHUykgJChTQU5fQ0ZMQUdTKSAkKExJQkVMRl9DRkxBR1MpXHRcdFx0XFxcbi1cdCAgLUkkKENVUkRJUikgLUkkKElOQ0xVREVfRElSKSAtSSQoR0VORElSKSAtSSQoTElCRElSKVx0XHRcXFxuLVx0ICAtSSQoVE9PTFNJTkNESVIpIC1JJChUT09MU0FSQ0hJTkNESVIpIC1JJChBUElESVIpIC1JJChPVVRQVVQpXHRcXFxuLVx0ICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXG4tTERGTEFHUyArPSAkKFNBTl9MREZMQUdTKVxuLUxETElCUyArPSAkKExJQkVMRl9MSUJTKSAtbHogLWxydCAtbHB0aHJlYWRcbi1cbi1QQ0FQX0NGTEFHU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGxpYnBjYXAgMlx1MDAzZS9kZXYvbnVsbCBcdTAwMjZcdTAwMjYgZWNobyBcIi1EVFJBRkZJQ19NT05JVE9SPTFcIilcbi1QQ0FQX0xJQlNcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGlicGNhcCAyXHUwMDNlL2Rldi9udWxsKVxuLUxETElCUyArPSAkKFBDQVBfTElCUylcbi1DRkxBR1MgKz0gJChDT01NT05fQ0ZMQUdTKSAkKFBDQVBfQ0ZMQUdTKVxuLVxuLSMgU29tZSB1dGlsaXR5IGZ1bmN0aW9ucyB1c2UgTExWTSBsaWJyYXJpZXNcbi1qaXRfZGlzYXNtX2hlbHBlcnMuYy1DRkxBR1MgPSAkKExMVk1fQ0ZMQUdTKVxuLVxuLWlmbmVxICgkKExMVk0pLClcbi0jIFNpbGVuY2Ugc29tZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHdpdGggY2xhbmdcbi1DRkxBR1MgKz0gLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50XG4tZW5kaWZcbi1cbi0jIENoZWNrIHdoZXRoZXIgYnBmIGNwdT12NCBpcyBzdXBwb3J0ZWQgb3Igbm90IGJ5IGNsYW5nXG4gaWZuZXEgKCQoc2hlbGwgJChDTEFORykgLS10YXJnZXQ9YnBmIC1tY3B1PWhlbHAgMlx1MDAzZVx1MDAyNjEgfCBncmVwICd2NCcpLClcbiBDTEFOR19DUFVWNCA6PSAxXG4gZW5kaWZcbiBcbi0jIENoZWNrIHdoZXRoZXIgY2xhbmcgc3VwcG9ydHMgQlBGIGFkZHJlc3Mgc2FuaXRpemVyIChyZXF1aXJlcyBMTFZNIDIyKylcbi1DTEFOR19IQVNfQVJFTkFfQVNBTiA6PSAkKHNoZWxsIGVjaG8gJ2ludCB4OycgfCBcXFxuLVx0JChDTEFORykgLS10YXJnZXQ9YnBmIC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MgXFxcbi1cdC1tbGx2bSAtYXNhbi1zaGFkb3ctYWRkci1zcGFjZT0xIFxcXG4tXHQteCBjIC1jIC0gLW8gL2Rldi9udWxsIDJcdTAwM2UvZGV2L251bGwgXHUwMDI2XHUwMDI2IGVjaG8gMSlcbi1cbiAjIE9yZGVyIGNvcnJlc3BvbmQgdG8gJ21ha2UgcnVuX3Rlc3RzJyBvcmRlclxuIFRFU1RfR0VOX1BST0dTID0gdGVzdF92ZXJpZmllciB0ZXN0X3RhZyB0ZXN0X21hcHMgdGVzdF9scnVfbWFwIHRlc3RfcHJvZ3MgXFxcbiBcdHRlc3Rfc29ja21hcCBcXFxuQEAgLTEwMiwxNiArNTAsNiBAQCBURVNUX0lOU1RfU1VCRElSUyA6PSBub19hbHUzMlxuIGlmbmVxICgkKEJQRl9HQ0MpLClcbiBURVNUX0dFTl9QUk9HUyArPSB0ZXN0X3Byb2dzLWJwZl9nY2NcbiBURVNUX0lOU1RfU1VCRElSUyArPSBicGZfZ2NjXG4tXG4tIyBUaGUgZm9sbG93aW5nIHRlc3RzIGNvbnRhaW4gQyBjb2RlIHRoYXQsIGFsdGhvdWdoIHRlY2huaWNhbGx5IGxlZ2FsLFxuLSMgdHJpZ2dlcnMgR0NDIHdhcm5pbmdzIHRoYXQgY2Fubm90IGJlIGRpc2FibGVkOiBkZWNsYXJhdGlvbiBvZlxuLSMgYW5vbnltb3VzIHN0cnVjdCB0eXBlcyBpbiBmdW5jdGlvbiBwYXJhbWV0ZXIgbGlzdHMuXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX2JpdGZpZWxkcy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3Jcbi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfbmFtZXNwYWNpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhY2tpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhZGRpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3N5bnRheC5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3Jcbi1cbiBlbmRpZlxuIFxuIGlmbmVxICgkKENMQU5HX0NQVVY0KSwpXG5AQCAtMTMyLDEwICs3MCw2IEBAIFRFU1RfUFJPR1MgOj0gdGVzdF9rbW9kLnNoIFxcXG4gVEVTVF9QUk9HU19FWFRFTkRFRCA6PSBcXFxuIFx0aW1hX3NldHVwLnNoIHZlcmlmeV9zaWdfc2V0dXAuc2hcbiBcbi1URVNUX0tNT0RTIDo9IGJwZl90ZXN0bW9kLmtvIGJwZl90ZXN0X25vX2NmaS5rbyBicGZfdGVzdF9tb2RvcmRlcl94LmtvIFxcXG4tXHRicGZfdGVzdF9tb2RvcmRlcl95LmtvIGJwZl90ZXN0X3Jxc3BpbmxvY2sua29cbi1URVNUX0tNT0RfVEFSR0VUUyA9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sJChURVNUX0tNT0RTKSlcbi1cbiAjIENvbXBpbGUgYnV0IG5vdCBwYXJ0IG9mICdtYWtlIHJ1bl90ZXN0cydcbiBURVNUX0dFTl9QUk9HU19FWFRFTkRFRCA9IFxcXG4gXHRiZW5jaCBcXFxuQEAgLTE0OCwxMSArODIsMTAgQEAgVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQgPSBcXFxuIFx0eGRwX3N5bnByb3h5IFxcXG4gXHR4c2t4Y2VpdmVyXG4gXG4tVEVTVF9HRU5fRklMRVMgKz0gJChURVNUX0tNT0RTKSBsaWJ1cmFuZG9tX3JlYWQuc28gdXJhbmRvbV9yZWFkIHNpZ24tZmlsZSB1cHJvYmVfbXVsdGlcbitURVNUX0tNT0RTID89IGJwZl90ZXN0bW9kLmtvIGJwZl90ZXN0X25vX2NmaS5rbyBicGZfdGVzdF9tb2RvcmRlcl94LmtvIFxcXG4rXHRicGZfdGVzdF9tb2RvcmRlcl95LmtvIGJwZl90ZXN0X3Jxc3BpbmxvY2sua29cbiBcbi1pZm5lcSAoJChWKSwxKVxuLXN1Ym1ha2VfZXh0cmFzIDo9IGZlYXR1cmVfZGlzcGxheT0wXG4tZW5kaWZcbitURVNUX0dFTl9GSUxFUyArPSAkKFRFU1RfS01PRFMpIGxpYnVyYW5kb21fcmVhZC5zbyB1cmFuZG9tX3JlYWQgc2lnbi1maWxlIHVwcm9iZV9tdWx0aVxuIFxuICMgb3ZlcnJpZGUgbGliLm1rJ3MgZGVmYXVsdCBydWxlc1xuIE9WRVJSSURFX1RBUkdFVFMgOj0gMVxuQEAgLTE3MSw3ICsxMDQsNyBAQCBlbmRlZlxuIGluY2x1ZGUgLi4vbGliLm1rXG4gXG4gTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyA6PSBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHNcbi1DSEVDS19GRUFUIDo9ICQoZmlsdGVyLW91dCAkKE5PTl9DSEVDS19GRUFUX1RBUkdFVFMpLCQob3IgJChNQUtFQ01ER09BTFMpLCBcIm5vbmVcIikpXG4rQ0hFQ0tfRkVBVCA6PSAkKGZpbHRlci1vdXQgJChOT05fQ0hFQ0tfRkVBVF9UQVJHRVRTKSwkKG9yICQoTUFLRUNNREdPQUxTKSxhbGwpKVxuIGlmbmVxICgkKENIRUNLX0ZFQVQpLClcbiBGRUFUVVJFX1VTRVIgOj0gLnNlbGZ0ZXN0c1xuIEZFQVRVUkVfVEVTVFMgOj0gbGx2bVxuQEAgLTE4OCw2ICsxMjEsOCBAQCBvdmVycmlkZSBPVVRQVVQgOj0gJChwYXRzdWJzdCAlLywlLCQoT1VUUFVUKSlcbiBlbmRpZlxuIGVuZGlmXG4gXG4raW5jbHVkZSBNYWtlZmlsZS5idWlsZHZhcnNcbitcbiBpZm5lcSAoJChTS0lQX0xMVk0pLDEpXG4gaWZlcSAoJChmZWF0dXJlLWxsdm0pLDEpXG4gICBMTFZNX0NGTEFHUyAgKz0gLURIQVZFX0xMVk1fU1VQUE9SVFxuQEAgLTIxMywzNiArMTQ4LDExIEBAIGlmZXEgKCQoZmVhdHVyZS1sbHZtKSwxKVxuIGVuZGlmXG4gZW5kaWZcbiBcbi1TQ1JBVENIX0RJUiA6PSAkKE9VVFBVVCkvdG9vbHNcbi1CVUlMRF9ESVIgOj0gJChTQ1JBVENIX0RJUikvYnVpbGRcbi1JTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlXG4tQlBGT0JKIDo9ICQoQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tSE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpL2hvc3Rcbi1IT1NUX1NDUkFUQ0hfRElSXHQ6PSAkKE9VVFBVVCkvaG9zdC10b29sc1xuLUhPU1RfSU5DTFVERV9ESVJcdDo9ICQoSE9TVF9TQ1JBVENIX0RJUikvaW5jbHVkZVxuLWVsc2Vcbi1IT1NUX0JVSUxEX0RJUlx0XHQ6PSAkKEJVSUxEX0RJUilcbi1IT1NUX1NDUkFUQ0hfRElSXHQ6PSAkKFNDUkFUQ0hfRElSKVxuLUhPU1RfSU5DTFVERV9ESVJcdDo9ICQoSU5DTFVERV9ESVIpXG4tZW5kaWZcbi1IT1NUX0JQRk9CSiA6PSAkKEhPU1RfQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcbi1SRVNPTFZFX0JURklEUyA6PSAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkcy9yZXNvbHZlX2J0Zmlkc1xuLVZNTElOVVhfQlRGX1BBVEhTID89ICQoaWYgJChPKSwkKE8pL3ZtbGludXgpXHRcdFx0XHRcXFxuLVx0XHQgICAgICQoaWYgJChLQlVJTERfT1VUUFVUKSwkKEtCVUlMRF9PVVRQVVQpL3ZtbGludXgpXHRcXFxuLVx0XHQgICAgIC4uLy4uLy4uLy4uL3ZtbGludXhcdFx0XHRcdFxcXG4tXHRcdCAgICAgL3N5cy9rZXJuZWwvYnRmL3ZtbGludXhcdFx0XHRcdFxcXG4tXHRcdCAgICAgL2Jvb3Qvdm1saW51eC0kKHNoZWxsIHVuYW1lIC1yKVxuLVZNTElOVVhfQlRGID89ICQoYWJzcGF0aCAkKGZpcnN0d29yZCAkKHdpbGRjYXJkICQoVk1MSU5VWF9CVEZfUEFUSFMpKSkpXG4taWZlcSAoJChWTUxJTlVYX0JURiksKVxuLSQoZXJyb3IgQ2Fubm90IGZpbmQgYSB2bWxpbnV4IGZvciBWTUxJTlVYX0JURiBhdCBhbnkgb2YgXCIkKFZNTElOVVhfQlRGX1BBVEhTKVwiKVxuLWVuZGlmXG4tXG4gIyBEZWZpbmUgc2ltcGxlIGFuZCBzaG9ydCBgbWFrZSB0ZXN0X3Byb2dzYCwgYG1ha2UgdGVzdF9tYXBzYCwgZXRjIHRhcmdldHNcbiAjIHRvIGJ1aWxkIGluZGl2aWR1YWwgdGVzdHMuXG4gIyBOT1RFOiBTZW1pY29sb24gYXQgdGhlIGVuZCBpcyBjcml0aWNhbCB0byBvdmVycmlkZSBsaWIubWsncyBkZWZhdWx0IHN0YXRpY1xuICMgcnVsZSBmb3IgYmluYXJpZXMuXG4tJChub3RkaXIgJChURVNUX0dFTl9QUk9HUykgJChURVNUX0tNT0RTKVx0XHRcdFx0XFxcbiskKG5vdGRpciAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfS01PRF9UQVJHRVRTKVx0XHRcdFx0XFxcbiBcdCAkKFRFU1RfR0VOX1BST0dTX0VYVEVOREVEKSk6ICU6ICQoT1VUUFVUKS8lIDtcbiBcbiAjIHNvcnQgcmVtb3ZlcyBsaWJicGYgZHVwbGljYXRlcyB3aGVuIG5vdCBjcm9zcy1idWlsZGluZ1xuQEAgLTI1NiwxMSArMTY2LDE0IEBAICQoTUFLRV9ESVJTKTpcbiBcbiAkKE9VVFBVVCkvJS5vOiAlLmNcbiBcdCQoY2FsbCBtc2csQ0MsLCRAKVxuLVx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkKGZpbHRlciAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxuK1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkKGZpbHRlciAlLmMsJF4pIC1vICRAXG4gXG4rIyBIZWFkZXJzIG1heSBhcHBlYXIgYW1vbmcgdGhlIHByZXJlcXVpc2l0ZXMgZm9yIGRlcGVuZGVuY3kgdHJhY2tpbmc7XG4rIyB0aGV5IG11c3Qgbm90IHJlYWNoIHRoZSBjbGFuZy9nY2MgY29tbWFuZCBsaW5lIChjbGFuZyB0cmVhdHMgYSBiYXJlIC5oXG4rIyBhcmd1bWVudCBhcyBhIHByZWNvbXBpbGVkLWhlYWRlciBqb2IgYW5kIHJlZnVzZXMgLW8pLlxuICQoT1VUUFVUKS8lOiUuY1xuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuLVx0JChRKSQoTElOSy5jKSAkXiAkKExETElCUykgLW8gJEBcbitcdCQoUSkkKExJTksuYykgJChmaWx0ZXItb3V0ICUuaCwkXikgJChMRExJQlMpIC1vICRAXG4gXG4gIyBMTFZNJ3MgbGQubGxkIGRvZXNuJ3Qgc3VwcG9ydCBhbGwgdGhlIGFyY2hpdGVjdHVyZXMsIHNvIHVzZSBpdCBvbmx5IG9uIHg4NlxuIGlmZXEgKCQoU1JDQVJDSCksJChmaWx0ZXIgJChTUkNBUkNIKSx4ODYgcmlzY3YpKVxuQEAgLTI5Nyw2ICsyMTAsMTMgQEAgJChPVVRQVVQpL3NpZ24tZmlsZTogLi4vLi4vLi4vLi4vc2NyaXB0cy9zaWduLWZpbGUuY1xuIFx0XHQgICRcdTAwM2MgLW8gJEAgXFxcbiBcdFx0ICAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYmNyeXB0byAyXHUwMDNlIC9kZXYvbnVsbCB8fCBlY2hvIC1sY3J5cHRvKVxuIFxuKyMgTGlua2luZyB1cHJvYmVfbXVsdGkgY2FuIGZhaWwgZHVlIHRvIHJlbG9jYXRpb24gb3ZlcmZsb3dzIG9uIG1pcHMuXG4rJChPVVRQVVQpL3Vwcm9iZV9tdWx0aTogQ0ZMQUdTICs9ICQoaWYgJChmaWx0ZXIgbWlwcywgJChBUkNIKSksLW14Z290KVxuKyQoT1VUUFVUKS91cHJvYmVfbXVsdGk6IHVwcm9iZV9tdWx0aS5jIHVwcm9iZV9tdWx0aS5sZFxuK1x0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuK1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtV2wsLVQsdXByb2JlX211bHRpLmxkIC1PMCAkKExERkxBR1MpIFx0XFxcbitcdFx0JChmaWx0ZXItb3V0ICUubGQsJF4pICQoTERMSUJTKSAtbyAkQFxuK1xuICMgVGhpcyBzaG91bGQgcmVhbGx5IGJlIGEgZ3JvdXBlZCB0YXJnZXQsIGJ1dCBtYWtlIHZlcnNpb25zIGJlZm9yZSA0LjMgZG9uJ3RcbiAjIHN1cHBvcnQgdGhhdCBmb3IgcmVndWxhciBydWxlcy4gSG93ZXZlciwgcGF0dGVybiBtYXRjaGluZyBydWxlcyBhcmUgaW1wbGljaXRseVxuICMgdHJlYXRlZCBhcyBncm91cGVkIGV2ZW4gd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBtYWtlLCBzbyBhcyBhIHdvcmthcm91bmQsIHRoZVxuQEAgLTMxMyw0MCArMjMzLDE4IEBAICQoVEVTVF9LTU9EX1RBUkdFVFMpOiAkKGFkZHByZWZpeCB0ZXN0X2ttb2RzLywkKFRFU1RfS01PRFMpKVxuIFx0JChjYWxsIG1zZyxNT0QsLCRAKVxuIFx0JChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbIC1mIHRlc3Rfa21vZHMvJChARikgXTsgdGhlbiApY3AgdGVzdF9rbW9kcy8kKEBGKSAkQCQoaWYgJChQRVJNSVNTSVZFKSw7IGZpKVxuIFxuLVxuLURFRkFVTFRfQlBGVE9PTCA6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxuLWlmbmVxICgkKENST1NTX0NPTVBJTEUpLClcbi1DUk9TU19CUEZUT09MIDo9ICQoU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxuLVRSVU5ORVJfQlBGVE9PTCA6PSAkKENST1NTX0JQRlRPT0wpXG4tVVNFX0JPT1RTVFJBUCA6PSBcIlwiXG4tZWxzZVxuLVRSVU5ORVJfQlBGVE9PTCA6PSAkKERFRkFVTFRfQlBGVE9PTClcbi1VU0VfQk9PVFNUUkFQIDo9IFwiYm9vdHN0cmFwL1wiXG4tZW5kaWZcbi1cbiBURVNUX0dFTl9QUk9HU19FWFRFTkRFRCArPSAkKFRSVU5ORVJfQlBGVE9PTClcbiBcbiAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfR0VOX1BST0dTX0VYVEVOREVEKTogJChCUEZPQkopXG4gXG4tVEVTVElOR19IRUxQRVJTXHQ6PSAkKE9VVFBVVCkvdGVzdGluZ19oZWxwZXJzLm9cbi1DR1JPVVBfSEVMUEVSU1x0Oj0gJChPVVRQVVQpL2Nncm91cF9oZWxwZXJzLm9cbi1VTlBSSVZfSEVMUEVSUyAgOj0gJChPVVRQVVQpL3VucHJpdl9oZWxwZXJzLm9cbi1UUkFDRV9IRUxQRVJTXHQ6PSAkKE9VVFBVVCkvdHJhY2VfaGVscGVycy5vXG4tSlNPTl9XUklURVJcdFx0Oj0gJChPVVRQVVQpL2pzb25fd3JpdGVyLm9cbi1DQVBfSEVMUEVSU1x0Oj0gJChPVVRQVVQpL2NhcF9oZWxwZXJzLm9cbi1ORVRXT1JLX0hFTFBFUlMgOj0gJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vXG4tXG4tJChPVVRQVVQpL3Rlc3Rfc29ja21hcDogJChDR1JPVVBfSEVMUEVSUykgJChURVNUSU5HX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3RfdGNwbm90aWZ5X3VzZXI6ICQoQ0dST1VQX0hFTFBFUlMpICQoVEVTVElOR19IRUxQRVJTKSAkKFRSQUNFX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3Rfc29ja19maWVsZHM6ICQoQ0dST1VQX0hFTFBFUlMpICQoVEVTVElOR19IRUxQRVJTKVxuLSQoT1VUUFVUKS90ZXN0X3RhZzogJChURVNUSU5HX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3RfbGlyY19tb2RlMl91c2VyOiAkKFRFU1RJTkdfSEVMUEVSUylcbi0kKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZDogJChURVNUSU5HX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3RfbWFwczogJChURVNUSU5HX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6ICQoVEVTVElOR19IRUxQRVJTKSAkKENBUF9IRUxQRVJTKSAkKFVOUFJJVl9IRUxQRVJTKVxuLSQoT1VUUFVUKS94c2subzogJChCUEZPQkopXG4tXG4tQlBGVE9PTCA/PSAkKERFRkFVTFRfQlBGVE9PTClcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgVG9vbCBzdWItYnVpbGRzOiBicGZ0b29sIGFuZCBsaWJicGYgKGhvc3QgYW5kLCB3aGVuIGNyb3NzLWNvbXBpbGluZyxcbisjIHRhcmdldCB2YXJpYW50cykgYW5kIHJlc29sdmVfYnRmaWRzLlxuKyNcbisjIE5vdGUgdGhlIGRlbGliZXJhdGUgYXN5bW1ldHJ5OiB0aGUgaG9zdCBsaWJicGYgYnVpbGRzIHdpdGhvdXRcbisjIHNhbml0aXplcnMgYW5kIHdpdGggdGhlIGhvc3QgdG9vbGNoYWluLlxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4gJChERUZBVUxUX0JQRlRPT0wpOiAkKHdpbGRjYXJkICQoQlBGVE9PTERJUikvKi5bY2hdICQoQlBGVE9PTERJUikvTWFrZWZpbGUpICAgIFxcXG4gXHRcdCAgICAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL2JwZnRvb2xcbiBcdCQoUSkkKE1BS0UpICQoc3VibWFrZV9leHRyYXMpICAtQyAkKEJQRlRPT0xESVIpXHRcdFx0ICAgICAgIFxcXG5AQCAtMzc3LDIwICsyNzUsNiBAQCAkKENST1NTX0JQRlRPT0wpOiAkKHdpbGRjYXJkICQoQlBGVE9PTERJUikvKi5bY2hdICQoQlBGVE9PTERJUikvTWFrZWZpbGUpXHRcXFxuIFx0XHQgICAgcHJlZml4PSBERVNURElSPSQoU0NSQVRDSF9ESVIpLyBpbnN0YWxsLWJpblxuIGVuZGlmXG4gXG4taWZuZXEgKCQoU0tJUF9ET0NTKSwxKVxuLWFsbDogZG9jc1xuLWVuZGlmXG4tXG4tZG9jczpcbi1cdCQoUSlSU1QyTUFOX09QVFM9XCItLWV4aXQtc3RhdHVzPTFcIiAkKE1BS0UpICQoc3VibWFrZV9leHRyYXMpXHRcXFxuLVx0ICAgICAgICAgICAgLWYgTWFrZWZpbGUuZG9jc1x0XHRcdFx0XHRcXFxuLVx0ICAgICAgICAgICAgcHJlZml4PSBPVVRQVVQ9JChPVVRQVVQpLyBERVNURElSPSQoT1VUUFVUKS8gJEBcbi1cbi1kb2NzLWNsZWFuOlxuLVx0JChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcylcdFx0XHRcdFx0XFxcbi1cdCAgICAgICAgICAgIC1mIE1ha2VmaWxlLmRvY3NcdFx0XHRcdFx0XFxcbi1cdCAgICAgICAgICAgIHByZWZpeD0gT1VUUFVUPSQoT1VUUFVUKS8gREVTVERJUj0kKE9VVFBVVCkvICRAXG4tXG4gJChCUEZPQkopOiAkKHdpbGRjYXJkICQoQlBGRElSKS8qLltjaF0gJChCUEZESVIpL01ha2VmaWxlKVx0XHQgICAgICAgXFxcbiBcdCAgICQoQVBJRElSKS9saW51eC9icGYuaFx0XHRcdFx0XHQgICAgICAgXFxcbiBcdCAgIHwgJChCVUlMRF9ESVIpL2xpYmJwZlxuQEAgLTQxMiwxOSArMjk2LDYgQEAgJChIT1NUX0JQRk9CSik6ICQod2lsZGNhcmQgJChCUEZESVIpLyouW2NoXSAkKEJQRkRJUikvTWFrZWZpbGUpXHRcdCAgICAgICBcXFxuIFx0XHQgICAgREVTVERJUj0kKEhPU1RfU0NSQVRDSF9ESVIpLyBwcmVmaXg9IGFsbCBpbnN0YWxsX2hlYWRlcnNcbiBlbmRpZlxuIFxuLSMgdm1saW51eC5oIGlzIGZpcnN0IGR1bXBlZCB0byBhIHRlbXBvcmFyeSBmaWxlIGFuZCB0aGVuIGNvbXBhcmVkIHRvXG4tIyB0aGUgcHJldmlvdXMgdmVyc2lvbi4gVGhpcyBoZWxwcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZS1idWlsZHMgb2Zcbi0jICQoVFJVTk5FUl9CUEZfT0JKUylcbi0kKElOQ0xVREVfRElSKS92bWxpbnV4Lmg6ICQoVk1MSU5VWF9CVEYpICQoQlBGVE9PTCkgfCAkKElOQ0xVREVfRElSKVxuLWlmZXEgKCQoVk1MSU5VWF9IKSwpXG4tXHQkKGNhbGwgbXNnLEdFTiwsJEApXG4tXHQkKFEpJChCUEZUT09MKSBidGYgZHVtcCBmaWxlICQoVk1MSU5VWF9CVEYpIGZvcm1hdCBjIFx1MDAzZSAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcFxuLVx0JChRKWNtcCAtcyAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcCAkQCB8fCBtdiAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcCAkQFxuLWVsc2Vcbi1cdCQoY2FsbCBtc2csQ1AsLCRAKVxuLVx0JChRKWNwIFwiJChWTUxJTlVYX0gpXCIgJEBcbi1lbmRpZlxuLVxuICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzXHRcXFxuIFx0XHQgICAgICAgJChUT09MU0RJUikvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uY1x0XFxcbiBcdFx0ICAgICAgICQoVE9PTFNESVIpL2xpYi9yYnRyZWUuY1x0XHRcdFxcXG5AQCAtNDM5LDM3NCArMzEwLDM4IEBAICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzXHRcXFxuIFx0XHRIT1NUUEtHX0NPTkZJRz0nJChQS0dfQ09ORklHKScgXFxcbiBcdFx0T1VUUFVUPSQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzLyBCUEZPQko9JChIT1NUX0JQRk9CSilcbiBcbi0jIEdldCBDbGFuZydzIGRlZmF1bHQgaW5jbHVkZXMgb24gdGhpcyBzeXN0ZW0sIGFzIG9wcG9zZWQgdG8gdGhvc2Ugc2VlbiBieVxuLSMgJy0tdGFyZ2V0PWJwZicuIFRoaXMgZml4ZXMgXCJtaXNzaW5nXCIgZmlsZXMgb24gc29tZSBhcmNoaXRlY3R1cmVzL2Rpc3Ryb3MsXG4tIyBzdWNoIGFzIGFzbS9ieXRlb3JkZXIuaCwgYXNtL3NvY2tldC5oLCBhc20vc29ja2lvcy5oLCBzeXMvY2RlZnMuaCBldGMuXG4tI1xuLSMgVXNlICctaWRpcmFmdGVyJzogRG9uJ3QgaW50ZXJmZXJlIHdpdGggaW5jbHVkZSBtZWNoYW5pY3MgZXhjZXB0IHdoZXJlIHRoZVxuLSMgYnVpbGQgd291bGQgaGF2ZSBmYWlsZWQgYW55d2F5cy5cbi1kZWZpbmUgZ2V0X3N5c19pbmNsdWRlc1xuLSQoc2hlbGwgJCgxKSAkKDIpIC12IC1FIC0gXHUwMDNjL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxIFxcXG4tXHR8IHNlZCAtbiAnL1x1MDAzYy4uLlx1MDAzZSBzZWFyY2ggc3RhcnRzIGhlcmU6LywvRW5kIG9mIHNlYXJjaCBsaXN0Li97IHN8IFxcKC8uKlxcKXwtaWRpcmFmdGVyIFxcMXxwIH0nKSBcXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJ19fcmlzY3ZfeGxlbiAnIHwgYXdrICd7cHJpbnRmKFwiLURfX3Jpc2N2X3hsZW49JWQgLURfX0JJVFNfUEVSX0xPTkc9JWRcIiwgJCQzLCAkJDMpfScpIFxcXG4tJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19sb29uZ2FyY2hfZ3JsZW4gJyB8IGF3ayAne3ByaW50ZihcIi1EX19CSVRTX1BFUl9MT05HPSVkXCIsICQkMyl9JykgXFxcbi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBncmVwIC1FICdNSVBTKEVMfEVCKXxfTUlQU19TWihQVFJ8TE9ORykgfF9NSVBTX1NJTSB8X0FCSShPMzJ8TjMyfDY0KSAnIHwgYXdrICd7cHJpbnRmKFwiLUQlcz0lcyBcIiwgJCQyLCAkJDMpfScpXG4tZW5kZWZcbi1cbi0jIERldGVybWluZSB0YXJnZXQgZW5kaWFubmVzcy5cbi1JU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgXFxcbi1cdFx0XHRncmVwICdkZWZpbmUgX19CWVRFX09SREVSX18gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18nKVxuLU1FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKVxuLUJQRl9UQVJHRVRfRU5ESUFOOj0kKGlmICQoSVNfTElUVExFX0VORElBTiksLS10YXJnZXQ9YnBmZWwsLS10YXJnZXQ9YnBmZWIpXG4tXG4taWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxuLUNMQU5HX1RBUkdFVF9BUkNIID0gLS10YXJnZXQ9JChub3RkaXIgJChDUk9TU19DT01QSUxFOiUtPSUpKVxuLWVuZGlmXG4tXG4tQ0xBTkdfU1lTX0lOQ0xVREVTID0gJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsJChDTEFORyksJChDTEFOR19UQVJHRVRfQVJDSCkpXG4tQlBGX0NGTEFHUyA9IC1nIC1XYWxsIC1XZXJyb3IgLURfX1RBUkdFVF9BUkNIXyQoU1JDQVJDSCkgJChNRU5ESUFOKVx0XFxcbi1cdCAgICAgLUkkKElOQ0xVREVfRElSKSAtSSQoQ1VSRElSKSAtSSQoQVBJRElSKVx0XHRcdFxcXG4tXHQgICAgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcdFx0XHRcdFxcXG4tXHQgICAgIC1JJChhYnNwYXRoICQoT1VUUFVUKS8uLi91c3IvaW5jbHVkZSlcdFx0XHRcXFxuLVx0ICAgICAtc3RkPWdudTExXHRcdCBcdFx0XHRcdFx0XFxcbi1cdCAgICAgLWZuby1zdHJpY3QtYWxpYXNpbmcgXHRcdFx0XHRcdFxcXG4tXHQgICAgIC1Xbm8tbWljcm9zb2Z0LWFub24tdGFnXHRcdFx0XHRcdFxcXG4tXHQgICAgIC1mbXMtZXh0ZW5zaW9uc1x0XHRcdFx0XHRcdFxcXG4tXHQgICAgIC1Xbm8tY29tcGFyZS1kaXN0aW5jdC1wb2ludGVyLXR5cGVzXHRcdFx0XFxcbi1cdCAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXNcdFx0XHRcdFx0XFxcbi1cdCAgICAgI1xuLSMgVE9ETzogZW5hYmxlIG1lIC1Xc2lnbi1jb21wYXJlXG4tXG4tQ0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXG4tXG4tJChPVVRQVVQpL3Rlc3RfbDRsYl9ub2lubGluZS5vOiBCUEZfQ0ZMQUdTICs9IC1mbm8taW5saW5lXG4tJChPVVRQVVQpL3Rlc3RfeGRwX25vaW5saW5lLm86IEJQRl9DRkxBR1MgKz0gLWZuby1pbmxpbmVcbi1cbi0kKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZC5vOiBmbG93X2Rpc3NlY3Rvcl9sb2FkLmhcbi0kKE9VVFBVVCkvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MubzogY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFxuLVxuLSMgQnVpbGQgQlBGIG9iamVjdCB1c2luZyBDbGFuZ1xuLSMgJDEgLSBpbnB1dCAuYyBmaWxlXG4tIyAkMiAtIG91dHB1dCAubyBmaWxlXG4tIyAkMyAtIENGTEFHU1xuLSMgJDQgLSBiaW5hcnkgbmFtZVxuLWRlZmluZSBDTEFOR19CUEZfQlVJTERfUlVMRVxuLVx0JChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMilcbi1cdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djMgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkMjsgcHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1CUEYnICckKG5vdGRpciAkMiknIDFcdTAwM2VcdTAwMjYyKSlcbi1lbmRlZlxuLSMgU2ltaWxhciB0byBDTEFOR19CUEZfQlVJTERfUlVMRSwgYnV0IHdpdGggZGlzYWJsZWQgYWx1MzJcbi1kZWZpbmUgQ0xBTkdfTk9BTFUzMl9CUEZfQlVJTERfUlVMRVxuLVx0JChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMilcbi1cdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djIgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkMjsgcHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1CUEYnICckKG5vdGRpciAkMiknIDFcdTAwM2VcdTAwMjYyKSlcbi1lbmRlZlxuLSMgU2ltaWxhciB0byBDTEFOR19CUEZfQlVJTERfUlVMRSwgYnV0IHdpdGggY3B1LXY0XG4tZGVmaW5lIENMQU5HX0NQVVY0X0JQRl9CVUlMRF9SVUxFXG4tXHQkKGNhbGwgbXNnLENMTkctQlBGLCQ0LCQyKVxuLVx0JChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12NCAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLUJQRicgJyQobm90ZGlyICQyKScgMVx1MDAzZVx1MDAyNjIpKVxuLWVuZGVmXG4tIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIEdDQ1xuLWRlZmluZSBHQ0NfQlBGX0JVSUxEX1JVTEVcbi1cdCQoY2FsbCBtc2csR0NDLUJQRiwkNCwkMilcbi1cdCQoUSkkKEJQRl9HQ0MpICQzIC1EQlBGX05PX1BSRVNFUlZFX0FDQ0VTU19JTkRFWCAtV25vLWF0dHJpYnV0ZXMgLU8yIC1jICQxIC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJDI7IHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXHUwMDNlXHUwMDI2MikpXG4tZW5kZWZcbi1cbi1TS0VMX0JMQUNLTElTVCA6PSBidGZfXyUgdGVzdF9waW5uaW5nX2ludmFsaWQuYyB0ZXN0X3NrX2Fzc2lnbi5jXG4tXG4tTElOS0VEX1NLRUxTIDo9IHRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmggbGlua2VkX2Z1bmNzLnNrZWwuaFx0XHRcXFxuLVx0XHRsaW5rZWRfdmFycy5za2VsLmggbGlua2VkX21hcHMuc2tlbC5oIFx0XHRcdFxcXG4tXHRcdHRlc3Rfc3Vic2tlbGV0b24uc2tlbC5oIHRlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaFx0XFxcbi1cdFx0dGVzdF91c2R0LnNrZWwuaCB0cmFjaW5nX211bHRpLnNrZWwuaFx0XHRcdFxcXG4tXHRcdHRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaFx0XHRcdFx0XFxcbi1cdFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oXHRcdFx0XHRcXFxuLVx0XHR0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oXG4tXG4tTFNLRUxTIDo9IGZleGl0X3NsZWVwLmMgdHJhY2VfcHJpbnRrLmMgdHJhY2VfdnByaW50ay5jIG1hcF9wdHJfa2Vybi5jIFx0XFxcbi1cdGNvcmVfa2Vybi5jIGNvcmVfa2Vybl9vdmVyZmxvdy5jIHRlc3RfcmluZ2J1Zi5jXHRcdFx0XFxcbi1cdHRlc3RfcmluZ2J1Zl9uLmMgdGVzdF9yaW5nYnVmX21hcF9rZXkuYyB0ZXN0X3JpbmdidWZfd3JpdGUuYyAgICBcXFxuLVx0dGVzdF9yaW5nYnVmX292ZXJ3cml0ZS5jXG4tXG4tTFNLRUxTX1NJR05FRCA6PSBmZW50cnlfdGVzdC5jIGZleGl0X3Rlc3QuYyBhdG9taWNzLmNcbi1cbi0jIEdlbmVyYXRlIGJvdGggbGlnaHQgc2tlbGV0b24gYW5kIGxpYmJwZiBza2VsZXRvbiBmb3IgdGhlc2Vcbi1MU0tFTFNfRVhUUkEgOj0gdGVzdF9rc3ltc19tb2R1bGUuYyB0ZXN0X2tzeW1zX3dlYWsuYyBrZnVuY19jYWxsX3Rlc3QuYyBcXFxuLVx0a2Z1bmNfY2FsbF90ZXN0X3N1YnByb2cuY1xuLVNLRUxfQkxBQ0tMSVNUICs9ICQkKExTS0VMUykgJCQoTFNLRUxTX1NJR05FRClcbi1cbi10ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vXG4tbGlua2VkX2Z1bmNzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9mdW5jczEuYnBmLm8gbGlua2VkX2Z1bmNzMi5icGYub1xuLWxpbmtlZF92YXJzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF92YXJzMS5icGYubyBsaW5rZWRfdmFyczIuYnBmLm9cbi1saW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vXG4tIyBJbiB0aGUgc3Vic2tlbGV0b24gY2FzZSwgd2Ugd2FudCB0aGUgdGVzdF9zdWJza2VsZXRvbl9saWIuc3Vic2tlbC5oIGZpbGVcbi0jIGJ1dCB0aGF0J3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi5cbi10ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXG4tdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vXG4tdGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vXG4teHNrX3hkcF9wcm9ncy5za2VsLmgtZGVwcyA6PSB4c2tfeGRwX3Byb2dzLmJwZi5vXG4teGRwX2h3X21ldGFkYXRhLnNrZWwuaC1kZXBzIDo9IHhkcF9od19tZXRhZGF0YS5icGYub1xuLXhkcF9mZWF0dXJlcy5za2VsLmgtZGVwcyA6PSB4ZHBfZmVhdHVyZXMuYnBmLm9cbi10cmFjaW5nX211bHRpLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbi10cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaF9tb2R1bGUuYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuLXRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4tdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfc2Vzc2lvbl9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuLVxuLUxJTktFRF9CUEZfT0JKUyA6PSAkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKVxuLUxJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoTElOS0VEX0JQRl9PQkpTKSlcbi1cbi1IRUFERVJTX0ZPUl9CUEZfT0JKUyA6PSAkKHdpbGRjYXJkICQoQlBGRElSKS8qLmJwZi5oKVx0XHRcXFxuLVx0XHRcdCQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKVx0XFxcbi1cdFx0XHQkKGFkZHByZWZpeCAkKEJQRkRJUikvLFx0YnBmX2NvcmVfcmVhZC5oXHRcXFxuLVx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl9lbmRpYW4uaFx0XFxcbi1cdFx0XHRcdFx0XHRicGZfaGVscGVycy5oXHRcXFxuLVx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl90cmFjaW5nLmgpXG4tXG4tIyBTZXQgdXAgZXh0cmEgVFJVTk5FUl9YWFggXCJ0ZW1wb3JhcnlcIiB2YXJpYWJsZXMgaW4gdGhlIGVudmlyb25tZW50IChyZWxpZXMgb25cbi0jICRldmFsKCkpIGFuZCBwYXNzIGNvbnRyb2wgdG8gREVGSU5FX1RFU1RfUlVOTkVSX1JVTEVTLlxuLSMgUGFyYW1ldGVyczpcbi0jICQxIC0gdGVzdCBydW5uZXIgYmFzZSBiaW5hcnkgbmFtZSAoZS5nLiwgdGVzdF9wcm9ncylcbi0jICQyIC0gdGVzdCBydW5uZXIgZXh0cmEgXCJmbGF2b3JcIiAoZS5nLiwgbm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjLCBldGMpXG4tZGVmaW5lIERFRklORV9URVNUX1JVTk5FUlxuLVxuLUxTS0VMX1NJR04gOj0gLVMgLWsgJChQUklWQVRFX0tFWSkgLWkgJChWRVJJRklDQVRJT05fQ0VSVClcbi1UUlVOTkVSX09VVFBVVCA6PSAkKE9VVFBVVCkkKGlmICQyLC8pJDJcbi1UUlVOTkVSX0JJTkFSWSA6PSAkMSQoaWYgJDIsLSkkMlxuLVRSVU5ORVJfVEVTVF9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0Lm8sXHRcXFxuLVx0XHRcdFx0ICQkKG5vdGRpciAkJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVFNfRElSKS8qLmMpKSlcbi1UUlVOTkVSX0VYVFJBX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLm8sXHRcdFxcXG4tXHRcdFx0XHQgJCQoZmlsdGVyICUuYywkKFRSVU5ORVJfRVhUUkFfU09VUkNFUykpKVxuLVRSVU5ORVJfTElCX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLm8sXHRcdFxcXG4tXHRcdFx0XHQgJCQoZmlsdGVyICUuYywkKFRSVU5ORVJfTElCX1NPVVJDRVMpKSlcbi1UUlVOTkVSX0VYVFJBX0hEUlMgOj0gJCQoZmlsdGVyICUuaCwkKFRSVU5ORVJfRVhUUkFfU09VUkNFUykpXG4tVFJVTk5FUl9URVNUU19IRFIgOj0gJChUUlVOTkVSX1RFU1RTX0RJUikvdGVzdHMuaFxuLVRSVU5ORVJfQlBGX1NSQ1MgOj0gJCQobm90ZGlyICQkKHdpbGRjYXJkICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8qLmMpKVxuLVRSVU5ORVJfQlBGX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmJwZi5vLCAkJChUUlVOTkVSX0JQRl9TUkNTKSlcbi1UUlVOTkVSX0JQRl9TS0VMUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUuc2tlbC5oLFx0XFxcbi1cdFx0XHRcdCAkJChmaWx0ZXItb3V0ICQoU0tFTF9CTEFDS0xJU1QpICQoTElOS0VEX0JQRl9TUkNTKSxcXFxuLVx0XHRcdFx0XHQgICAgICAgJCQoVFJVTk5FUl9CUEZfU1JDUykpKVxuLVRSVU5ORVJfQlBGX0xTS0VMUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubHNrZWwuaCwgJCQoTFNLRUxTKSAkJChMU0tFTFNfRVhUUkEpKVxuLVRSVU5ORVJfQlBGX1NLRUxTX0xJTktFRCA6PSAkJChhZGRwcmVmaXggJCQoVFJVTk5FUl9PVVRQVVQpLywkKExJTktFRF9TS0VMUykpXG4tVFJVTk5FUl9CUEZfTFNLRUxTX1NJR05FRCA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubHNrZWwuaCwgJCQoTFNLRUxTX1NJR05FRCkpXG4tVEVTVF9HRU5fRklMRVMgKz0gJCQoVFJVTk5FUl9CUEZfT0JKUylcbi1cbi0jIEV2YWx1YXRlIHJ1bGVzIG5vdyB3aXRoIGV4dHJhIFRSVU5ORVJfWFhYIHZhcmlhYmxlcyBhYm92ZSBhbHJlYWR5IGRlZmluZWRcbi0kJChldmFsICQkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSX1JVTEVTLCQxLCQyKSlcbi1cbi1lbmRlZlxuLVxuLSMgVXNpbmcgVFJVTk5FUl9YWFggdmFyaWFibGVzLCBwcm92aWRlZCBieSBjYWxsZXJzIG9mIERFRklORV9URVNUX1JVTk5FUiBhbmRcbi0jIHNldCB1cCBieSBERUZJTkVfVEVTVF9SVU5ORVIgaXRzZWxmLCBjcmVhdGUgdGVzdCBydW5uZXIgYnVpbGQgcnVsZXMgd2l0aDpcbi0jICQxIC0gdGVzdCBydW5uZXIgYmFzZSBiaW5hcnkgbmFtZSAoZS5nLiwgdGVzdF9wcm9ncylcbi0jICQyIC0gdGVzdCBydW5uZXIgZXh0cmEgXCJmbGF2b3JcIiAoZS5nLiwgbm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjLCBldGMpXG4tZGVmaW5lIERFRklORV9URVNUX1JVTk5FUl9SVUxFU1xuLVxuLSMgUGVybWlzc2l2ZSBidWlsZCBiZWhhdmlvdXIgKHNraXAtb24tZmFpbHVyZSBjb21waWxlLCBwYXJ0aWFsLWxpbmspIG9ubHlcbi0jIGFwcGxpZXMgdG8gdGVzdF9wcm9ncyBhbmQgaXRzIGZsYXZvcnM7IHJ1bm5lcnMgdGhhdCB1c2Ugc3Ryb25nIGNyb3NzLW9iamVjdFxuLSMgcmVmZXJlbmNlcyAoZS5nLiB0ZXN0X21hcHMpIGtlZXAgc3RyaWN0IHNlbWFudGljcyBldmVuIHdoZW4gcGVybWlzc2l2ZS5cbi0jIFRoZSBjaGVjayBpcyBpbmxpbmVkIHBlci1ydW5uZXIgc28gJDEgaXMgc3Vic3RpdHV0ZWQgYXQgJChjYWxsKSB0aW1lIGFuZFxuLSMgdGhlIHJlc3VsdCBpcyBiYWtlZCBpbnRvIGVhY2ggcnVsZSdzIHJlY2lwZS5cbi1cbi1pZmVxICgkKCQoVFJVTk5FUl9PVVRQVVQpLWRpciksKVxuLSQoVFJVTk5FUl9PVVRQVVQpLWRpciA6PSB5XG4tJChUUlVOTkVSX09VVFBVVCk6XG4tXHQkJChjYWxsIG1zZyxNS0RJUiwsJCRAKVxuLVx0JChRKW1rZGlyIC1wICQkQFxuLWVuZGlmXG4tXG4tIyBlbnN1cmUgd2Ugc2V0IHVwIEJQRiBvYmplY3RzIGdlbmVyYXRpb24gcnVsZSBqdXN0IG9uY2UgZm9yIGEgZ2l2ZW5cbi0jIGlucHV0L291dHB1dCBkaXJlY3RvcnkgY29tYmluYXRpb25cbi1pZmVxICgkKCQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKSQoaWYgJDIsLSkkMi1icGZvYmpzKSwpXG4tJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMgOj0geVxuLSQoVFJVTk5FUl9CUEZfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUuYnBmLm86XHRcdFx0XHRcXFxuLVx0XHQgICAgICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8lLmNcdFx0XHRcXFxuLVx0XHQgICAgICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8qLmhcdFx0XHRcXFxuLVx0XHQgICAgICQkKElOQ0xVREVfRElSKS92bWxpbnV4LmhcdFx0XHRcdFxcXG4tXHRcdCAgICAgJChIRUFERVJTX0ZPUl9CUEZfT0JKUylcdFx0XHRcdFxcXG4tXHRcdCAgICAgfCAkKFRSVU5ORVJfT1VUUFVUKSAkJChCUEZPQkopXG4tXHQkJChjYWxsICQoVFJVTk5FUl9CUEZfQlVJTERfUlVMRSksJCRcdTAwM2MsJCRALFx0XHRcdFxcXG4tXHRcdFx0XHRcdCAgJChUUlVOTkVSX0JQRl9DRkxBR1MpICAgICAgICAgXFxcbi1cdFx0XHRcdFx0ICAkJCgkJFx1MDAzYy1DRkxBR1MpXHRcdFxcXG4tXHRcdFx0XHRcdCAgJCQoJCRcdTAwM2MtJDItQ0ZMQUdTKSwkKFRSVU5ORVJfQklOQVJZKSlcbi1cbi0kKFRSVU5ORVJfQlBGX1NLRUxTKTogJS5za2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQCAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCk7XHRcdFx0XFxcbi1cdFx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0XHRleGl0IDA7XHRcdFx0XHRcdFx0XHRcXFxuLVx0Zmk7KVx0XHRcdFx0XHRcdFx0XHRcXFxuLVx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnR0VOLVNLRUwnICdbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXHUwMDNjOi5vPS5saW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5saW5rZWQxLm8pIFx1MDAyNlx1MDAyNiBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5saW5rZWQyLm8pIFx1MDAyNlx1MDAyNiBcXFxuLVx0ZGlmZiAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQkKFx1MDAzYzoubz0ubGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChcdTAwM2M6LmJwZi5vPSkpIFx1MDAzZSAkJEAgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc3Vic2tlbGV0b24gJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFx1MDAzYzouYnBmLm89KSkgXHUwMDNlICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSAkKGlmICQoUEVSTUlTU0lWRSksfHwgeyBcXFxuLVx0XHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTsgXFxcbi1cdFx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0fSkgXHUwMDI2XHUwMDI2IFxcXG4tXHRybSAtZiAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgJCQoXHUwMDNjOi5vPS5saW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGlua2VkMy5vKVxuLVxuLSQoVFJVTk5FUl9CUEZfTFNLRUxTKTogJS5sc2tlbC5oOiAlLmJwZi5vICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKVxuLVx0JChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbICEgLWYgJCRcdTAwM2MgXTsgdGhlblx0XHRcdFxcXG4tXHRcdCQkKFJNKSAkJEA7XHRcdFx0XHRcdFx0XFxcbi1cdFx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0XHRleGl0IDA7XHRcdFx0XHRcdFx0XHRcXFxuLVx0Zmk7KVx0XHRcdFx0XHRcdFx0XHRcXFxuLVx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnR0VOLVNLRUwnICdbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJFx1MDAzYyBcdTAwMjZcdTAwMjZcdFx0XFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pIFx1MDAyNlx1MDAyNiBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKSBcdTAwMjZcdTAwMjZcdFx0XFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAtTCAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFx1MDAzYzouYnBmLm89X2xza2VsKSkgXHUwMDNlICQkQCAkKGlmICQoUEVSTUlTU0lWRSksfHwgeyBcXFxuLVx0XHQkJChSTSkgJCRAOyBcXFxuLVx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHR9KSBcdTAwMjZcdTAwMjYgXFxcbi1cdHJtIC1mICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pXG4tXG4tJChUUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEKTogJS5sc2tlbC5oOiAlLmJwZi5vICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKVxuLVx0JChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbICEgLWYgJCRcdTAwM2MgXTsgdGhlblx0XHRcdFxcXG4tXHRcdCQkKFJNKSAkJEA7XHRcdFx0XHRcdFx0XFxcbi1cdFx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0XHRleGl0IDA7XHRcdFx0XHRcdFx0XHRcXFxuLVx0Zmk7KVx0XHRcdFx0XHRcdFx0XHRcXFxuLVx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnR0VOLVNLRUwnICdbJChUUlVOTkVSX0JJTkFSWSkgKHNpZ25lZCldICQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJFx1MDAzYyBcdTAwMjZcdTAwMjZcdFx0XFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pIFx1MDAyNlx1MDAyNiBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKSBcdTAwMjZcdTAwMjZcdFx0XFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkKExTS0VMX1NJR04pICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz1fbHNrZWwpKSBcdTAwM2UgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEA7IFxcXG4tXHRcdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNiBcXFxuLVx0cm0gLWYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubylcbi1cbi0kKExJTktFRF9CUEZfT0JKUyk6ICU6ICQoVFJVTk5FUl9PVVRQVVQpLyVcbi1cbi0jIC5TRUNPTkRFWFBBTlNJT04gaGVyZSBhbGxvd3MgdG8gY29ycmVjdGx5IGV4cGFuZCAlLWRlcHMgdmFyaWFibGVzIGFzIHByZXJlcXVpc2l0ZXNcbi0uU0VDT05ERVhQQU5TSU9OOlxuLSQoVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEKTogJChUUlVOTkVSX09VVFBVVCkvJTogJCQkJCglLWRlcHMpICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKVxuLVx0JChRKSQoaWYgJChQRVJNSVNTSVZFKSxmb3IgZiBpbiAkJChhZGRwcmVmaXggJChUUlVOTkVSX09VVFBVVCkvLCQkKCQkKEBGKS1kZXBzKSk7IGRvIFxcXG4tXHRcdGlmIFsgISAtZiAkJCQkZiBdOyB0aGVuXHRcdFx0XHRcdFx0XFxcbi1cdFx0XHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTtcdFx0XFxcbi1cdFx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdFx0ZXhpdCAwO1x0XHRcdFx0XHRcdFx0XFxcbi1cdFx0Zmk7XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRkb25lOylcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLVx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnTElOSy1CUEYnICdbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJChAOi5za2VsLmg9LmJwZi5vKSknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoYWRkcHJlZml4ICQoVFJVTk5FUl9PVVRQVVQpLywkJCgkJChARiktZGVwcykpIFx1MDAyNlx1MDAyNiBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgJCQoQDouc2tlbC5oPS5saW5rZWQxLm8pIFx1MDAyNlx1MDAyNiBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pIFx1MDAyNlx1MDAyNiBcXFxuLVx0ZGlmZiAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XFxcbi1cdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ0dFTi1TS0VMJyAnWyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjIgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKEA6LnNrZWwuaD0pKSBcdTAwM2UgJCRAIFx1MDAyNlx1MDAyNiBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHN1YnNrZWxldG9uICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChAOi5za2VsLmg9KSkgXHUwMDNlICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSAkKGlmICQoUEVSTUlTU0lWRSksfHwgeyBcXFxuLVx0XHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTtcdFx0XHRcXFxuLVx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHR9KSBcdTAwMjZcdTAwMjZcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLVx0cm0gLWYgJCQoQDouc2tlbC5oPS5saW5rZWQxLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDMubylcbi1cbi0jIFdoZW4gdGhlIGNvbXBpbGVyIGdlbmVyYXRlcyBhICUuZCBmaWxlLCBvbmx5IHNrZWwgYmFzZW5hbWVzIChub3Rcbi0jIGZ1bGwgcGF0aHMpIGFyZSBzcGVjaWZpZWQgYXMgcHJlcmVxdWlzaXRlcyBmb3IgY29ycmVzcG9uZGluZyAlLm9cbi0jIGZpbGUuIHZwYXRoIGRpcmVjdGl2ZXMgYmVsb3cgaW5zdHJ1Y3QgbWFrZSB0byBzZWFyY2ggZm9yIHNrZWwgZmlsZXNcbi0jIGluIFRSVU5ORVJfT1VUUFVULCBpZiB0aGV5IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkuXG4tdnBhdGggJS5za2VsLmggJChUUlVOTkVSX09VVFBVVClcbi12cGF0aCAlLmxza2VsLmggJChUUlVOTkVSX09VVFBVVClcbi12cGF0aCAlLnN1YnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLVxuK2lmbmVxICgkKFNLSVBfRE9DUyksMSlcbithbGw6IGRvY3NcbiBlbmRpZlxuIFxuLSMgZW5zdXJlIHdlIHNldCB1cCB0ZXN0cy5oIGhlYWRlciBnZW5lcmF0aW9uIHJ1bGUganVzdCBvbmNlXG4taWZlcSAoJCgkKFRSVU5ORVJfVEVTVFNfRElSKS10ZXN0cy1oZHIpLClcbi0kKFRSVU5ORVJfVEVTVFNfRElSKS10ZXN0cy1oZHIgOj0geVxuLSQoVFJVTk5FUl9URVNUU19IRFIpOiAkKFRSVU5ORVJfVEVTVFNfRElSKS8qLmNcbi1cdCQkKGNhbGwgbXNnLFRFU1QtSERSLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcbi1cdCQkKHNoZWxsIChlY2hvICcvKiBHZW5lcmF0ZWQgaGVhZGVyLCBkbyBub3QgZWRpdCAqLyc7XHRcdFx0XHRcdFxcXG4tXHRcdCAgc2VkIC1uIC1FICdzL152b2lkIChzZXJpYWxfKT90ZXN0XyhbYS16QS1aMC05X10rKVxcKCh2b2lkKT9cXCkuKi9ERUZJTkVfVEVTVChcXDIpL3AnXHRcXFxuLVx0XHRcdCQoVFJVTk5FUl9URVNUU19ESVIpLyouYyB8IHNvcnQgO1x0XFxcbi1cdFx0ICkgXHUwMDNlICQkQClcbi1lbmRpZlxuK2RvY3M6XG4rXHQkKFEpUlNUMk1BTl9PUFRTPVwiLS1leGl0LXN0YXR1cz0xXCIgJChNQUtFKSAkKHN1Ym1ha2VfZXh0cmFzKVx0XFxcbitcdCAgICAgICAgICAgIC1mIE1ha2VmaWxlLmRvY3NcdFx0XHRcdFx0XFxcbitcdCAgICAgICAgICAgIHByZWZpeD0gT1VUUFVUPSQoT1VUUFVUKS8gREVTVERJUj0kKE9VVFBVVCkvICRAXG4gXG4tJChUUlVOTkVSX09VVFBVVCkvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiAkKFJFU09MVkVfQlRGSURTKSAkKFRSVU5ORVJfT1VUUFVUKS9idGZfZGF0YS5icGYub1xuLSQoVFJVTk5FUl9PVVRQVVQpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogcHJpdmF0ZSBURVNUX05FRURTX0JURklEUyA9IDFcbi1cbi0jIGNvbXBpbGUgaW5kaXZpZHVhbCB0ZXN0IGZpbGVzXG4tIyBOb3RlOiB3ZSBjZCBpbnRvIG91dHB1dCBkaXJlY3RvcnkgdG8gZW5zdXJlIGVtYmVkZGVkIEJQRiBvYmplY3QgaXMgZm91bmRcbi0kKFRSVU5ORVJfVEVTVF9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0Lm86XHRcdFx0XFxcbi1cdFx0ICAgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jXHRcdFx0XHRcXFxuLVx0XHQgICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kXG4tXHQkJChjYWxsIG1zZyxURVNULU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkKFEpKGNkICQkKEBEKSBcdTAwMjZcdTAwMjYgJCQoQ0MpIC1JLiAkJChDRkxBR1MpIC1NTUQgLU1UICQkQCAtYyAkKENVUkRJUikvJCRcdTAwM2MgJCQoTERMSUJTKSAtbyAkJChARikpICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJCRAOyBwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVRFU1QnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjIpKSlcbi1cdCQkKGlmICQkKFRFU1RfTkVFRFNfQlRGSURTKSxcdFx0XHRcdFx0XHRcXFxuLVx0XHQkKFEpaWYgWyAtZiAkJEAgXTsgdGhlblx0XHRcdFx0XHRcdFxcXG4tXHRcdCQoaWYgJChmaWx0ZXIgMSwkKFYpKSx0cnVlLHByaW50ZiAnICAlLThzJXMgJXNcXG4nIFwiQlRGSURTXCIgXCIgWyQoVFJVTk5FUl9CSU5BUlkpXVwiIFwiJCQobm90ZGlyICQkQClcIik7IFxcXG4tXHRcdCQoUkVTT0xWRV9CVEZJRFMpIC0tYnRmICQoVFJVTk5FUl9PVVRQVVQpL2J0Zl9kYXRhLmJwZi5vICQkQDtcdFxcXG4tXHRcdCQoUkVTT0xWRV9CVEZJRFMpIC0tcGF0Y2hfYnRmaWRzICQkQC5CVEZfaWRzICQkQDtcdFx0XFxcbi1cdFx0ZmkpXG4tXG4tJChUUlVOTkVSX1RFU1RfT0JKUzoubz0uZCk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kOlx0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9URVNUU19ESVIpLyUuY1x0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9FWFRSQV9IRFJTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKVx0XHRcXFxuLVx0XHRcdCAgICAkKFRSVU5ORVJfQlBGX1NLRUxTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9CUEZfTFNLRUxTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9CUEZfTFNLRUxTX1NJR05FRClcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpXG4tXG4taWZlcSAoJChmaWx0ZXIgY2xlYW4gZG9jcy1jbGVhbiBlbWl0X3Rlc3RzLCQoTUFLRUNNREdPQUxTKSksKVxuLWluY2x1ZGUgJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKSlcbi1lbmRpZlxuK2RvY3MtY2xlYW46XG4rXHQkKFEpJChNQUtFKSAkKHN1Ym1ha2VfZXh0cmFzKVx0XHRcdFx0XHRcXFxuK1x0ICAgICAgICAgICAgLWYgTWFrZWZpbGUuZG9jc1x0XHRcdFx0XHRcXFxuK1x0ICAgICAgICAgICAgcHJlZml4PSBPVVRQVVQ9JChPVVRQVVQpLyBERVNURElSPSQoT1VUUFVUKS8gJEBcbiBcbi0jIGFkZCBwZXIgZXh0cmEgb2JqIENGR0xBR1MgZGVmaW5pdGlvbnNcbi0kKGZvcmVhY2ggTiwkKHBhdHN1YnN0ICQoVFJVTk5FUl9PVVRQVVQpLyUubywlLCQoVFJVTk5FUl9FWFRSQV9PQkpTKSksXHRcXFxuLVx0JChldmFsICQoVFJVTk5FUl9PVVRQVVQpLyQoTikubzogQ0ZMQUdTICs9ICQoJChOKS5jLUNGTEFHUykpKVxuLVxuLSQoVFJVTk5FUl9FWFRSQV9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5vOlx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICUuY1x0XHRcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFRSVU5ORVJfRVhUUkFfSERSUylcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFZFUklGWV9TSUdfSERSKVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoVFJVTk5FUl9URVNUU19IRFIpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkJChjYWxsIG1zZyxFWFQtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcbi1cdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAtYyAkJFx1MDAzYyAkJChMRExJQlMpIC1vICQkQFxuLVxuLSQoVFJVTk5FUl9MSUJfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUubzokKFRPT0xTRElSKS9saWIvJS5jXG4tXHQkJChjYWxsIG1zZyxMSUItT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcbi1cdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAtYyAkJFx1MDAzYyAkJChMRExJQlMpIC1vICQkQFxuLVxuLSMgbm9uLWZsYXZvcmVkIGluLXNyY3RyZWUgYnVpbGRzIHJlY2VpdmUgc3BlY2lhbCB0cmVhdG1lbnQsIGluIHBhcnRpY3VsYXIsIHdlXG4tIyBkbyBub3QgbmVlZCB0byBjb3B5IGV4dHJhIHJlc291cmNlcyAoc2VlIGUuZy4gdGVzdF9idGZfZHVtcF9jYXNlKCkpXG4tJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzOiAkKFRSVU5ORVJfRVhUUkFfRklMRVMpIHwgJChUUlVOTkVSX09VVFBVVClcbi1pZm5lcSAoJDI6JChPVVRQVVQpLDokKHNoZWxsIHB3ZCkpXG4tXHQkJChjYWxsIG1zZyxFWFQtQ09QWSwkKFRSVU5ORVJfQklOQVJZKSwkKFRSVU5ORVJfRVhUUkFfRklMRVMpKVxuLVx0JChRKXJzeW5jIC1hcSAkKGlmICQoUEVSTUlTU0lWRSksLS1pZ25vcmUtbWlzc2luZy1hcmdzKSAkJF4gJChUUlVOTkVSX09VVFBVVCkvXG4rIyB2bWxpbnV4LmggaXMgZmlyc3QgZHVtcGVkIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kIHRoZW4gY29tcGFyZWQgdG9cbisjIHRoZSBwcmV2aW91cyB2ZXJzaW9uLiBUaGlzIGhlbHBzIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHJlLWJ1aWxkcyBvZlxuKyMgQlBGIG9iamVjdHMuXG4rJChJTkNMVURFX0RJUikvdm1saW51eC5oOiAkKFZNTElOVVhfQlRGKSAkKEJQRlRPT0wpIHwgJChJTkNMVURFX0RJUilcbitpZmVxICgkKFZNTElOVVhfSCksKVxuK1x0JChjYWxsIG1zZyxHRU4sLCRAKVxuK1x0JChRKSQoQlBGVE9PTCkgYnRmIGR1bXAgZmlsZSAkKFZNTElOVVhfQlRGKSBmb3JtYXQgYyBcdTAwM2UgJChJTkNMVURFX0RJUikvLnZtbGludXguaC50bXBcbitcdCQoUSljbXAgLXMgJChJTkNMVURFX0RJUikvLnZtbGludXguaC50bXAgJEAgfHwgbXYgJChJTkNMVURFX0RJUikvLnZtbGludXguaC50bXAgJEBcbitlbHNlXG4rXHQkKGNhbGwgbXNnLENQLCwkQClcbitcdCQoUSljcCBcIiQoVk1MSU5VWF9IKVwiICRAXG4gZW5kaWZcbiBcbi0jIHNvbWUgWC50ZXN0Lm8gZmlsZXMgaGF2ZSBydW50aW1lIGRlcGVuZGVuY2llcyBvbiBZLmJwZi5vIGZpbGVzXG4tJChPVVRQVVQpLyQoVFJVTk5FUl9CSU5BUlkpOiB8ICQoVFJVTk5FUl9CUEZfT0JKUylcbi1cbi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6ICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTKSksJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKVx0XFxcbi1cdFx0XHQgICAgICQoVFJVTk5FUl9FWFRSQV9PQkpTKSAkJChCUEZPQkopXHRcdFxcXG4tXHRcdFx0ICAgICAkKFRSVU5ORVJfTElCX09CSlMpXHRcdFx0XFxcbi1cdFx0XHQgICAgICQoVFJVTk5FUl9CUEZUT09MKVx0XHRcdFx0XFxcbi1cdFx0XHQgICAgICQoT1VUUFVUKS92ZXJpc3RhdFx0XHRcdFx0XFxcbi1cdFx0XHQgICAgIHwgJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzXHRcdFx0XFxcbi1cdFx0XHQgICAgICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSkpXG4tXHQkJChjYWxsIG1zZyxCSU5BUlksLCQkQClcbi1cdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQoZmlsdGVyICUuYSAlLm8sJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpICQkKGZpbHRlci1vdXQgJChUUlVOTkVSX1RFU1RfT0JKUyksJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSkgJCQoTERMSUJTKSAkJChMTFZNX0xETElCUykgJCQoTERGTEFHUykgJCQoTExWTV9MREZMQUdTKSAtbyAkJEBcbi1cdCQoUSlsbiAtc2YgJChpZiAkMiwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFxcXG4tXHRcdCAgICQoT1VUUFVUKS8kKGlmICQyLCQyLylicGZ0b29sXG4tXG4tZW5kZWZcbi1cbi1WRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXG4tVkVSSUZZX1NJR19IRFIgOj0gdmVyaWZpY2F0aW9uX2NlcnQuaFxuLVZFUklGSUNBVElPTl9DRVJUICAgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LmRlclxuLVBSSVZBVEVfS0VZIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5wZW1cbi1cbi0kKFZFUklGSUNBVElPTl9DRVJUKSAkKFBSSVZBVEVfS0VZKTogJChWRVJJRllfU0lHX1NFVFVQKVxuKyMgT25lIGdlbmtleSBydW4gcHJvZHVjZXMgYm90aCBmaWxlcy4gQSBwbGFpbiB0d28tdGFyZ2V0IHJ1bGUgaXMgbm90XG4rIyBncm91cGVkIC0gdW5kZXIgLWogbWFrZSB3b3VsZCBydW4gZ2Vua2V5IHR3aWNlIGNvbmN1cnJlbnRseSBhbmQgdGhlXG4rIyBvcGVuc3NsIGludm9jYXRpb25zIHJhY2U7IHRoZSBwYXR0ZXJuIGZvcm0gaXMgaW1wbGljaXRseSBncm91cGVkIGV2ZW5cbisjIHdpdGggbWFrZSBcdTAwM2MgNC4zIChzYW1lIHdvcmthcm91bmQgYXMgdGhlIHRlc3Rfa21vZHMgcnVsZSkuXG4rJChCVUlMRF9ESVIpLyUucGVtICQoQlVJTERfRElSKS8lLmRlcjogJChWRVJJRllfU0lHX1NFVFVQKVxuIFx0JChRKW1rZGlyIC1wICQoQlVJTERfRElSKVxuIFx0JChRKSQoVkVSSUZZX1NJR19TRVRVUCkgZ2Vua2V5ICQoQlVJTERfRElSKVxuIFxuQEAgLTgzNSwxMTYgKzM3MCwxODMgQEAgTElCQVJFTkFfQlBGX0RFUFMgOj0gJCh3aWxkY2FyZCBsaWJhcmVuYS9NYWtlZmlsZVx0XHRcXFxuIFx0XHRcdFx0IGxpYmFyZW5hL3NlbGZ0ZXN0cy8qXHRcdFxcXG4gXHRcdFx0XHQgbGliYXJlbmEvKi5icGYubylcbiBcbi1MSUJBUkVOQV9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hLnNrZWwuaFxuLVxuICQoTElCQVJFTkFfU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CUEZfREVQUylcbiBcdCskKE1BS0UpIC1DIGxpYmFyZW5hIGxpYmFyZW5hLnNrZWwuaCAkKExJQkFSRU5BX01BS0VfQVJHUylcbiBcbi1pZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKVxuLUxJQkFSRU5BX0FTQU5fU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYV9hc2FuLnNrZWwuaFxuLUNGTEFHUyArPSAtREhBU19CUEZfQVJFTkFfQVNBTlxuK2xpYmFyZW5hOiAkKExJQkFSRU5BX1NLRUwpXG4gXG4raWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcbiAkKExJQkFSRU5BX0FTQU5fU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CUEZfREVQUylcbiBcdCskKE1BS0UpIC1DIGxpYmFyZW5hIGxpYmFyZW5hX2FzYW4uc2tlbC5oICQoTElCQVJFTkFfTUFLRV9BUkdTKVxuK1xuK2xpYmFyZW5hX2FzYW46ICQoTElCQVJFTkFfQVNBTl9TS0VMKVxuIGVuZGlmXG4gXG4tIyBEZWZpbmUgdGVzdF9wcm9ncyB0ZXN0IHJ1bm5lci5cbi1UUlVOTkVSX1RFU1RTX0RJUiA6PSBwcm9nX3Rlc3RzXG4tVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzXG4tVFJVTk5FUl9FWFRSQV9TT1VSQ0VTIDo9IHRlc3RfcHJvZ3MuY1x0XHRcXFxuLVx0XHRcdCBjZ3JvdXBfaGVscGVycy5jXHRcXFxuLVx0XHRcdCB0cmFjZV9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IG5ldHdvcmtfaGVscGVycy5jXHRcXFxuLVx0XHRcdCB0ZXN0aW5nX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgYnRmX2hlbHBlcnMuY1x0XHRcXFxuLVx0XHRcdCBjYXBfaGVscGVycy5jXHRcdFxcXG4tXHRcdFx0IHVucHJpdl9oZWxwZXJzLmMgXHRcXFxuLVx0XHRcdCBzeXNjdGxfaGVscGVycy5jXHRcXFxuLVx0XHRcdCBuZXRsaW5rX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgaml0X2Rpc2FzbV9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IGlvX2hlbHBlcnMuY1x0XHRcXFxuLVx0XHRcdCB0ZXN0X2xvYWRlci5jXHRcdFxcXG4tXHRcdFx0IHhzay5jXHRcdFx0XFxcbi1cdFx0XHQgZGlzYXNtLmNcdFx0XFxcbi1cdFx0XHQgZGlzYXNtX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQganNvbl93cml0ZXIuYyBcdFx0XFxcbi1cdFx0XHQgJChWRVJJRllfU0lHX0hEUilcdFx0XFxcbi1cdFx0XHQgZmxvd19kaXNzZWN0b3JfbG9hZC5oXHRcXFxuLVx0XHRcdCBpcF9jaGVja19kZWZyYWdfZnJhZ3MuaFx0XFxcbi1cdFx0XHQgYnBmdG9vbF9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IHVzZHRfMS5jIHVzZHRfMi5jXHRcXFxuLVx0XHRcdCAkKExJQkFSRU5BX1NLRUwpXHRcXFxuLVx0XHRcdCAkKExJQkFSRU5BX0FTQU5fU0tFTClcbi1UUlVOTkVSX0xJQl9TT1VSQ0VTIDo9IGZpbmRfYml0LmNcbi1UUlVOTkVSX0VYVFJBX0ZJTEVTIDo9ICQoT1VUUFVUKS91cmFuZG9tX3JlYWRcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvXHRcdFx0XFxcbi1cdFx0ICAgICAgICQoT1VUUFVUKS94ZHBfc3lucHJveHlcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKE9VVFBVVCkvc2lnbi1maWxlXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChPVVRQVVQpL3Vwcm9iZV9tdWx0aVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoVEVTVF9LTU9EX1RBUkdFVFMpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgaW1hX3NldHVwLnNoIFx0XHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChWRVJJRllfU0lHX1NFVFVQKVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlXyouYylcdFx0XFxcbi1cdFx0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubylcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzKSlcbi1cbi0jIERlZmluZSB0ZXN0X3Byb2dzLW5vX2FsdTMyIHRlc3QgcnVubmVyLlxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfTk9BTFUzMl9CUEZfQlVJTERfUlVMRVxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKVxuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3Msbm9fYWx1MzIpKVxuLVxuLSMgRGVmaW5lIHRlc3RfcHJvZ3MtY3B1djQgdGVzdCBydW5uZXIuXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIEdlbmVyYXRlZCB0ZXN0IGxpc3QgaGVhZGVyc1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4rZGVmaW5lIGdlbl90ZXN0c19oZHJcbitcdCQoY2FsbCBtc2csVEVTVC1IRFIsLCRAKVxuK1x0JChRKShlY2hvICcvKiBHZW5lcmF0ZWQgaGVhZGVyLCBkbyBub3QgZWRpdCAqLyc7XHRcdFxcXG4rXHQgICAgIHNlZCAtbiAtRSAncy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dKylcXCgodm9pZCk/XFwpLiovREVGSU5FX1RFU1QoXFwyKS9wJyBcXFxuK1x0XHQkKEBEKS8qLmMgfCBzb3J0KSBcdTAwM2UgJEBcbitlbmRlZlxuK1xuK3Byb2dfdGVzdHMvdGVzdHMuaDogJCh3aWxkY2FyZCBwcm9nX3Rlc3RzLyouYylcbitcdCQoZ2VuX3Rlc3RzX2hkcilcbitcbittYXBfdGVzdHMvdGVzdHMuaDogJCh3aWxkY2FyZCBtYXBfdGVzdHMvKi5jKVxuK1x0JChnZW5fdGVzdHNfaGRyKVxuK1xuK3ZlcmlmaWVyL3Rlc3RzLmg6IHZlcmlmaWVyLyouY1xuK1x0JChRKSggY2QgdmVyaWZpZXIvOyBcXFxuK1x0ICAgICAgZWNobyAnLyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8nOyBcXFxuK1x0ICAgICAgZWNobyAnI2lmZGVmIEZJTExfQVJSQVknOyBcXFxuK1x0ICAgICAgbHMgKi5jIDJcdTAwM2UgL2Rldi9udWxsIHwgc2VkIC1lICdzQFxcKC4qXFwpQCNpbmNsdWRlIFxcXCJcXDFcXFwiQCc7IFxcXG4rXHQgICAgICBlY2hvICcjZW5kaWYnIFxcXG4rXHQgICAgKSBcdTAwM2UgdmVyaWZpZXIvdGVzdHMuaFxuK1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rIyBTaGFyZWQgaGVscGVyIG9iamVjdHMsIHVzZWQgYnkgdGhlIHN0YW5kYWxvbmUgYmluYXJpZXMgYmVsb3cgYW5kIChhc1xuKyMgcHJlYnVpbHQgaW5wdXRzKSBieSB0aGUgdW5mbGF2b3JlZCB0ZXN0X3Byb2dzIHJ1bm5lci5cbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuK1xuKyMgU29tZSB1dGlsaXR5IGZ1bmN0aW9ucyB1c2UgTExWTSBsaWJyYXJpZXNcbiskKE9VVFBVVCkvaml0X2Rpc2FzbV9oZWxwZXJzLm86IENGTEFHUyArPSAkKExMVk1fQ0ZMQUdTKVxuK1xuK0hFTFBFUl9PQkpTIDo9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sdGVzdGluZ19oZWxwZXJzLm8gY2dyb3VwX2hlbHBlcnMubyBcXFxuK1x0ICAgICAgIHRyYWNlX2hlbHBlcnMubyBuZXR3b3JrX2hlbHBlcnMubyBqc29uX3dyaXRlci5vXHRcdFxcXG4rXHQgICAgICAgY2FwX2hlbHBlcnMubyB1bnByaXZfaGVscGVycy5vIHVzZHRfMS5vIHVzZHRfMi5vIHhzay5vKVxuK1xuKyMgJChCUEZUT09MKSBpcyBhIHByZXJlcXVpc2l0ZSBiZWNhdXNlIGl0cyBzdWItbWFrZSBpcyB3aGF0IGluc3RhbGxzXG4rIyBsaWJicGYncyBpbnRlcm5hbCBoZWFkZXJzIChicGYvaGFzaG1hcC5oLCBicGYvbGliYnBmX2ludGVybmFsLmgpIGludG9cbisjICQoSU5DTFVERV9ESVIpOyB3aXRob3V0IGl0LCBoZWxwZXJzIGluY2x1ZGluZyB0aG9zZSBoZWFkZXJzIHJhY2UgdGhlXG4rIyBpbnN0YWxsIGFuZCBjYW4gc2lsZW50bHkgcGljayB1cCB0aGUgc291cmNlLXRyZWUgY29waWVzIGluc3RlYWQuXG4rJChIRUxQRVJfT0JKUyk6IGZsb3dfZGlzc2VjdG9yX2xvYWQuaCBpcF9jaGVja19kZWZyYWdfZnJhZ3MuaFx0XHRcXFxuK1x0XHQkKFZFUklGWV9TSUdfSERSKSBwcm9nX3Rlc3RzL3Rlc3RzLmggJChCUEZPQkopICQoQlBGVE9PTClcbitcbiskKE9VVFBVVCkvdGVzdF9zb2NrbWFwOiAkKE9VVFBVVCkvY2dyb3VwX2hlbHBlcnMubyAkKE9VVFBVVCkvdGVzdGluZ19oZWxwZXJzLm9cbiskKE9VVFBVVCkvdGVzdF90Y3Bub3RpZnlfdXNlcjogJChPVVRQVVQpL2Nncm91cF9oZWxwZXJzLm9cdFx0XFxcbitcdFx0XHQgICAgICAgJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vXHRcdFxcXG4rXHRcdFx0ICAgICAgICQoT1VUUFVUKS90cmFjZV9oZWxwZXJzLm9cbiskKE9VVFBVVCkvdGVzdF90YWc6ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xuKyQoT1VUUFVUKS90ZXN0X2xpcmNfbW9kZTJfdXNlcjogJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vXG4rJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQ6IGZsb3dfZGlzc2VjdG9yX2xvYWQuaCAkKE9VVFBVVCkvdGVzdGluZ19oZWxwZXJzLm9cbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgVGVzdCBydW5uZXIgaW5zdGFuY2VzLCBvbmUgc3ViLW1ha2UgZWFjaCAoc2VlIE1ha2VmaWxlLnJ1bm5lcikuXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbitcbisjIFRoZSBMTFZNIGZlYXR1cmUtcHJvYmUgcmVzdWx0cyBhcmUgZXhwb3J0ZWQgdG8gdGhlIHJ1bm5lciBzdWItbWFrZXMuXG4rIyBDQyBpcyBwYXNzZWQgZXhwbGljaXRseSBpbnN0ZWFkOiBleHBvcnRpbmcgaXQgd291bGQgYWxzbyBsZWFrIGxpYi5taydzXG4rIyBDQyBpbnRvIHRoZSBsaWJicGYvYnBmdG9vbC9yZXNvbHZlX2J0ZmlkcyBzdWItYnVpbGRzLCB3aGljaCBjb21wdXRlXG4rIyB0aGVpciBvd24uXG4rZXhwb3J0IExMVk1fQ0ZMQUdTIExMVk1fTERMSUJTIExMVk1fTERGTEFHU1xuK1xuK1JVTk5FUl9NQUtFIDo9ICQoTUFLRSkgLWYgTWFrZWZpbGUucnVubmVyIE9VVFBVVD0kKE9VVFBVVCkgQ0M9JyQoQ0MpJ1xuK1xuKyMgRXZlcnl0aGluZyBhIHJ1bm5lciBpbnN0YW5jZSByZWZlcmVuY2VzIGJ1dCBkb2VzIG5vdCBrbm93IGhvdyB0byBidWlsZC5cbitSVU5ORVJfUFJFUkVRUyA6PSAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoQlBGVE9PTClcdFx0XFxcbitcdFx0ICAkKFRSVU5ORVJfQlBGVE9PTCkgJChSRVNPTFZFX0JURklEUylcdFx0XHRcXFxuK1x0XHQgICQoT1VUUFVUKS92ZXJpc3RhdFx0XHRcdFx0XHRcXFxuK1x0XHQgICQoVkVSSUZZX1NJR19IRFIpICQoUFJJVkFURV9LRVkpICQoVkVSSUZJQ0FUSU9OX0NFUlQpXHRcXFxuK1x0XHQgICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXHRcdFxcXG4rXHRcdCAgcHJvZ190ZXN0cy90ZXN0cy5oXHRcdFx0XHRcdFxcXG4rXHRcdCAgJChIRUxQRVJfT0JKUylcdFx0XHRcdFx0XFxcbitcdFx0ICAkKE9VVFBVVCkvdXJhbmRvbV9yZWFkICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc29cdFxcXG4rXHRcdCAgJChPVVRQVVQpL3hkcF9zeW5wcm94eSAkKE9VVFBVVCkvc2lnbi1maWxlXHRcdFxcXG4rXHRcdCAgJChPVVRQVVQpL3Vwcm9iZV9tdWx0aSAkKFRFU1RfS01PRF9UQVJHRVRTKVxuK1xuK0ZPUkNFOlxuK1xuKyMgVGhlIGRlZmF1bHQgZmxhdm9yJ3Mgc2tlbGV0b25zIGFyZSBhbHNvIGlucHV0cyBvZiBiZW5jaCwgdGVzdF9tYXBzLFxuKyMgeHNreGNlaXZlciwgeGRwXyogYW5kIHRlc3RfY3BwOyBcImRlZmF1bHQtc2tlbHNcIiBidWlsZHMganVzdCB0aG9zZVxuKyMgd2l0aG91dCB0aGUgdGVzdF9wcm9ncyB0ZXN0IG9iamVjdHMgYW5kIGJpbmFyeS5cbisuUEhPTlk6IGRlZmF1bHQtc2tlbHNcbitkZWZhdWx0LXNrZWxzOiAkKFJVTk5FUl9QUkVSRVFTKVxuK1x0KyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9IFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXG4rXHRcdEJQRl9CVUlMRD1jbGFuZyBCUEZfTUNQVT12MyBCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTIHNrZWxzXG4rXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3M6ICQoUlVOTkVSX1BSRVJFUVMpIGRlZmF1bHQtc2tlbHMgRk9SQ0VcbitcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPSBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxuK1x0XHRCUEZfQlVJTEQ9Y2xhbmcgQlBGX01DUFU9djMgQlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUU1xuK1xuKyQoT1VUUFVUKS90ZXN0X3Byb2dzLW5vX2FsdTMyOiAkKFJVTk5FUl9QUkVSRVFTKSBGT1JDRVxuK1x0KyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9bm9fYWx1MzIgVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcbitcdFx0QlBGX0JVSUxEPWNsYW5nIEJQRl9NQ1BVPXYyXG4rXG4gaWZuZXEgKCQoQ0xBTkdfQ1BVVjQpLClcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX0NQVVY0X0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzLGNwdXY0KSlcbiskKE9VVFBVVCkvdGVzdF9wcm9ncy1jcHV2NDogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0VcbitcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPWNwdXY0IFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXG4rXHRcdEJQRl9CVUlMRD1jbGFuZyBCUEZfTUNQVT12NCBCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTXG4gZW5kaWZcbiBcbi0jIERlZmluZSB0ZXN0X3Byb2dzIEJQRi1HQ0MtZmxhdm9yZWQgdGVzdCBydW5uZXIuXG4gaWZuZXEgKCQoQlBGX0dDQyksKVxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gR0NDX0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsZ2NjLClcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzLGJwZl9nY2MpKVxuLWVuZGlmXG4tXG4tIyBEZWZpbmUgdGVzdF9tYXBzIHRlc3QgcnVubmVyLlxuLVRSVU5ORVJfVEVTVFNfRElSIDo9IG1hcF90ZXN0c1xuLVRSVU5ORVJfQlBGX1BST0dTX0RJUiA6PSBwcm9nc1xuLVRSVU5ORVJfRVhUUkFfU09VUkNFUyA6PSB0ZXN0X21hcHMuY1xuLVRSVU5ORVJfTElCX1NPVVJDRVMgOj1cbi1UUlVOTkVSX0VYVFJBX0ZJTEVTIDo9XG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSAkJChlcnJvciBubyBCUEYgb2JqZWN0cyBzaG91bGQgYmUgYnVpbHQpXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9XG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9tYXBzKSlcbi1cbi0jIERlZmluZSB0ZXN0X3ZlcmlmaWVyIHRlc3QgcnVubmVyLlxuLSMgSXQgaXMgbXVjaCBzaW1wbGVyIHRoYW4gdGVzdF9tYXBzL3Rlc3RfcHJvZ3MgYW5kIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgZnJvbVxuLSMgdGhlbSAoZS5nLiwgdGVzdC5oIGlzIHVzaW5nIGNvbXBsZXRlbHkgcGF0dGVybiksIHRoYXQgaXQncyB3b3J0aCBqdXN0XG4tIyBleHBsaWNpdGx5IGRlZmluaW5nIGFsbCB0aGUgcnVsZXMgZXhwbGljaXRseS5cbi12ZXJpZmllci90ZXN0cy5oOiB2ZXJpZmllci8qLmNcbi1cdCQoc2hlbGwgKCBjZCB2ZXJpZmllci87IFxcXG4tXHRcdCAgZWNobyAnLyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8nOyBcXFxuLVx0XHQgIGVjaG8gJyNpZmRlZiBGSUxMX0FSUkFZJzsgXFxcbi1cdFx0ICBscyAqLmMgMlx1MDAzZSAvZGV2L251bGwgfCBzZWQgLWUgJ3NAXFwoLipcXClAI2luY2x1ZGUgXFxcIlxcMVxcXCJAJzsgXFxcbi1cdFx0ICBlY2hvICcjZW5kaWYnIFxcXG4tXHRcdCkgXHUwMDNlIHZlcmlmaWVyL3Rlc3RzLmgpXG4tJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6IHRlc3RfdmVyaWZpZXIuYyB2ZXJpZmllci90ZXN0cy5oICQoQlBGT0JKKSB8ICQoT1VUUFVUKVxuKyQoT1VUUFVUKS90ZXN0X3Byb2dzLWJwZl9nY2M6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXG4rXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1icGZfZ2NjIFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXG4rXHRcdEJQRl9CVUlMRD1nY2NcbitlbmRpZlxuK1xuKyMgdGVzdF9tYXBzIGNvbXBpbGVzIG1hcF90ZXN0cy8qLmMgYWdhaW5zdCB0aGUgZGVmYXVsdCBmbGF2b3IncyBza2VsZXRvbnNcbiskKE9VVFBVVCkvdGVzdF9tYXBzOiAkKFJVTk5FUl9QUkVSRVFTKSBtYXBfdGVzdHMvdGVzdHMuaCBkZWZhdWx0LXNrZWxzIEZPUkNFXG4rXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X21hcHMgRkxBVk9SPSBURVNUU19ESVI9bWFwX3Rlc3RzIFxcXG4rXHRcdEJQRl9CVUlMRD1ub25lXG4rXG4rIyBEZWZhdWx0LWZsYXZvciBCUEYgb2JqZWN0cyBhbmQgc2tlbGV0b25zIGNvbnN1bWVkIGJ5IHRhcmdldHMgaW4gdGhpc1xuKyMgTWFrZWZpbGUgKGFuZCBieSBsaWIubWsncyBpbnN0YWxsIHJ1bGUpIGFyZSBwcm9kdWNlZCBieSB0aGUgcnVubmVyXG4rIyBzdWItbWFrZSBhYm92ZTsgdGhlIGVtcHR5IHJlY2lwZSBwbHVzIHRoZSBvcmRlci1vbmx5IHByZXJlcXVpc2l0ZVxuKyMgbWFrZXMgdGhlbSBhdmFpbGFibGUgaGVyZSB3aXRob3V0IGR1cGxpY2F0aW5nIHRoZSBydW5uZXIncyBydWxlcy5cbitERUZBVUxUX0JQRl9PQkpTIDo9ICQocGF0c3Vic3QgcHJvZ3MvJS5jLCQoT1VUUFVUKS8lLmJwZi5vLCQod2lsZGNhcmQgcHJvZ3MvKi5jKSlcbitURVNUX0dFTl9GSUxFUyArPSAkKERFRkFVTFRfQlBGX09CSlMpXG4rXG4rQkVOQ0hfU0tFTFMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyxcdFx0XHRcdFx0XFxcbitcdCAgICAgICB0ZXN0X292ZXJoZWFkLnNrZWwuaCB0cmlnZ2VyX2JlbmNoLnNrZWwuaFx0XHRcXFxuK1x0ICAgICAgIHJpbmdidWZfYmVuY2guc2tlbC5oIHBlcmZidWZfYmVuY2guc2tlbC5oXHRcdFxcXG4rXHQgICAgICAgYmxvb21fZmlsdGVyX2JlbmNoLnNrZWwuaCBicGZfbG9vcF9iZW5jaC5za2VsLmhcdFx0XFxcbitcdCAgICAgICBzdHJuY21wX2JlbmNoLnNrZWwuaCBicGZfaGFzaG1hcF9mdWxsX3VwZGF0ZV9iZW5jaC5za2VsLmhcXFxuK1x0ICAgICAgIGxvY2FsX3N0b3JhZ2VfYmVuY2guc2tlbC5oXHRcdFx0XHRcXFxuK1x0ICAgICAgIGxvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlX2JlbmNoLnNrZWwuaFx0XHRcXFxuK1x0ICAgICAgIGJlbmNoX2xvY2FsX3N0b3JhZ2VfY3JlYXRlLnNrZWwuaFx0XHRcdFxcXG4rXHQgICAgICAgYnBmX2hhc2htYXBfbG9va3VwLnNrZWwuaCBodGFiX21lbV9iZW5jaC5za2VsLmhcdFx0XFxcbitcdCAgICAgICBjcnlwdG9fYmVuY2guc2tlbC5oIGJlbmNoX3NvY2ttYXBfcHJvZy5za2VsLmhcdFx0XFxcbitcdCAgICAgICBscG1fdHJpZV9iZW5jaC5za2VsLmggbHBtX3RyaWVfbWFwLnNrZWwuaFx0XHRcXFxuK1x0ICAgICAgIGJwZl9ub3BfYmVuY2guc2tlbC5oIHhkcF9sYl9iZW5jaC5za2VsLmgpXG4rVE9QX1NLRUxTIDo9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8seHNrX3hkcF9wcm9ncy5za2VsLmhcdFx0XFxcbitcdCAgICAgeGRwX2h3X21ldGFkYXRhLnNrZWwuaCB4ZHBfZmVhdHVyZXMuc2tlbC5oXHRcdFx0XFxcbitcdCAgICAgdGVzdF9jb3JlX2V4dGVybi5za2VsLmgpICQoQkVOQ0hfU0tFTFMpXG4rXG4rIyBFbXB0eS1yZWNpcGUgZGVsZWdhdGlvbjogXCJkZWZhdWx0LXNrZWxzXCIgKHJlKWJ1aWxkcyB0aGUgZmlsZSB2aWEgdGhlXG4rIyBydW5uZXIgc3ViLW1ha2UsIGFmdGVyIHdoaWNoIG1ha2UgcmUtc3RhdHMgdGhlIHRhcmdldCwgc28gZGVwZW5kZW50c1xuKyMgc2VlIGZyZXNoIHRpbWVzdGFtcHMgd2l0aGluIHRoZSBzYW1lIGludm9jYXRpb24uIERlcGVuZGVudHMgc3RpbGxcbisjIHJlYnVpbGQgb24gbXRpbWUgb25seSAtIHRoZSBwaG9ueSBwcmVyZXF1aXNpdGUgZG9lcyBub3QgY2FzY2FkZS5cbiskKERFRkFVTFRfQlBGX09CSlMpICQoVE9QX1NLRUxTKTogZGVmYXVsdC1za2VscyA7XG4rXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIFN0YW5kYWxvbmUgdGVzdCBiaW5hcmllc1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4rIyB0ZXN0X3ZlcmlmaWVyIGlzIG11Y2ggc2ltcGxlciB0aGFuIHRlc3RfbWFwcy90ZXN0X3Byb2dzIGFuZFxuKyMgc3VmZmljaWVudGx5IGRpZmZlcmVudCBmcm9tIHRoZW0gKGUuZy4sIGl0cyB0ZXN0cy5oIHVzZXMgYSBjb21wbGV0ZWx5XG4rIyBkaWZmZXJlbnQgcGF0dGVybiksIHRoYXQgaXQncyB3b3J0aCBqdXN0IGRlZmluaW5nIGl0cyBydWxlcyBleHBsaWNpdGx5LlxuKyQoT1VUUFVUKS90ZXN0X3ZlcmlmaWVyOiB0ZXN0X3ZlcmlmaWVyLmMgdmVyaWZpZXIvdGVzdHMuaCAkKEJQRk9CSilcdFxcXG4rXHRcdFx0ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1x0XHRcdFxcXG4rXHRcdFx0ICQoT1VUUFVUKS9jYXBfaGVscGVycy5vXHRcdFx0XFxcbitcdFx0XHQgJChPVVRQVVQpL3VucHJpdl9oZWxwZXJzLm9cbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbiBcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxuIFxuICMgSW5jbHVkZSBmaW5kX2JpdC5jIHRvIGNvbXBpbGUgeHNreGNlaXZlci5cbiBFWFRSQV9TUkMgOj0gJChUT09MU0RJUikvbGliL2ZpbmRfYml0LmMgcHJvZ190ZXN0cy90ZXN0X3hzay5jIHByb2dfdGVzdHMvdGVzdF94c2suaFxuLSQoT1VUUFVUKS94c2t4Y2VpdmVyOiAkKEVYVFJBX1NSQykgeHNreGNlaXZlci5jIHhza3hjZWl2ZXIuaCAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hzay5vICQoT1VUUFVUKS94c2tfeGRwX3Byb2dzLnNrZWwuaCAkKEJQRk9CSikgfCAkKE9VVFBVVClcbiskKE9VVFBVVCkveHNreGNlaXZlcjogJChFWFRSQV9TUkMpIHhza3hjZWl2ZXIuYyB4c2t4Y2VpdmVyLmggJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveHNrX3hkcF9wcm9ncy5za2VsLmggJChCUEZPQkopXG4gXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4gXHQkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEBcbiBcbi0kKE9VVFBVVCkveGRwX2h3X21ldGFkYXRhOiB4ZHBfaHdfbWV0YWRhdGEuYyAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hzay5vICQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGEuc2tlbC5oIHwgJChPVVRQVVQpXG4rJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YTogeGRwX2h3X21ldGFkYXRhLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveGRwX2h3X21ldGFkYXRhLnNrZWwuaFxuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuIFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuYywkXikgJChMRExJQlMpIC1vICRAXG4gXG4tJChPVVRQVVQpL3hkcF9mZWF0dXJlczogeGRwX2ZlYXR1cmVzLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94ZHBfZmVhdHVyZXMuc2tlbC5oIHwgJChPVVRQVVQpXG4rJChPVVRQVVQpL3hkcF9mZWF0dXJlczogeGRwX2ZlYXR1cmVzLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94ZHBfZmVhdHVyZXMuc2tlbC5oXG4gXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4gXHQkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEBcbiBcbkBAIC05NTYsMTEgKzU1OCwxOCBAQCAkKE9VVFBVVCkvdGVzdF9jcHA6IHRlc3RfY3BwLmNwcCAkKE9VVFBVVCkvdGVzdF9jb3JlX2V4dGVybi5za2VsLmggJChCUEZPQkopXG4gXHQkKGNhbGwgbXNnLENYWCwsJEApXG4gXHQkKFEpJChDWFgpICQoQ1hYRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jcHAsJF4pICQoTERMSUJTKSAtbyAkQFxuIFxuLSMgQmVuY2htYXJrIHJ1bm5lclxuLSQoT1VUUFVUKS9iZW5jaF8lLm86IGJlbmNocy9iZW5jaF8lLmMgYmVuY2guaCAkKEJQRk9CSilcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgQmVuY2htYXJrIHJ1bm5lci4gVGhlIGJlbmNobWFyayBsaXN0IGlzIGRlZmluZWQgYnkgdGhlIGZpbGVzIGluXG4rIyBiZW5jaHMvOiBldmVyeSBiZW5jaHMvYmVuY2hfKi5jIGlzIGNvbXBpbGVkIGFuZCBsaW5rZWQgaW4uXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbitcbitCRU5DSF9PQkpTIDo9ICQoc29ydCAkKHBhdHN1YnN0IGJlbmNocy8lLmMsJChPVVRQVVQpLyUubywkKHdpbGRjYXJkIGJlbmNocy9iZW5jaF8qLmMpKSlcbitcbiskKE9VVFBVVCkvYmVuY2hfJS5vOiBiZW5jaHMvYmVuY2hfJS5jIGJlbmNoLmggJChCUEZPQkopIHwgZGVmYXVsdC1za2Vsc1xuIFx0JChjYWxsIG1zZyxDQywsJEApXG4tXHQkKFEpJChDQykgJChDRkxBR1MpIC1PMiAtYyAkKGZpbHRlciAlLmMsJF4pICQoTERMSUJTKSAtbyAkQCAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICRAOyBwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLUJFTkNIJyAnJChub3RkaXIgJEApJyAxXHUwMDNlXHUwMDI2MikpXG4rXHQkKFEpJChDQykgJChDRkxBR1MpIC1PMiAtYyAkKGZpbHRlciAlLmMsJF4pIC1vICRAICQoY2FsbCBza2lwX29uX2ZhaWwsQkVOQ0gpXG4rXG4rIyBiZW5jaG1hcmstc3BlY2lmaWMgZ2VuZXJhdGVkLXNrZWxldG9uIGRlcGVuZGVuY2llc1xuICQoT1VUUFVUKS9iZW5jaF9yZW5hbWUubzogJChPVVRQVVQpL3Rlc3Rfb3ZlcmhlYWQuc2tlbC5oXG4gJChPVVRQVVQpL2JlbmNoX3RyaWdnZXIubzogJChPVVRQVVQpL3RyaWdnZXJfYmVuY2guc2tlbC5oXG4gJChPVVRQVVQpL2JlbmNoX3JpbmdidWZzLm86ICQoT1VUUFVUKS9yaW5nYnVmX2JlbmNoLnNrZWwuaCBcXFxuQEAgLTk4MCwzNyArNTg5LDE5IEBAICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubzogJChPVVRQVVQpL2xwbV90cmllX2JlbmNoLnNrZWwuaCAkKE9VVFBVVCkvbHBtX3RyXG4gJChPVVRQVVQpL2JlbmNoX2JwZl9ub3AubzogJChPVVRQVVQpL2JwZl9ub3BfYmVuY2guc2tlbC5oIGJlbmNoX2JwZl90aW1pbmcuaFxuICQoT1VUUFVUKS9iZW5jaF94ZHBfbGIubzogJChPVVRQVVQpL3hkcF9sYl9iZW5jaC5za2VsLmggYmVuY2hfYnBmX3RpbWluZy5oXG4gJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubzogYmVuY2hfYnBmX3RpbWluZy5oXG4rXG4gJChPVVRQVVQpL2JlbmNoLm86IGJlbmNoLmggdGVzdGluZ19oZWxwZXJzLmggJChCUEZPQkopXG4gJChPVVRQVVQpL2JlbmNoOiBMRExJQlMgKz0gLWxtXG4tJChPVVRQVVQpL2JlbmNoOiAkKE9VVFBVVCkvYmVuY2gubyBcXFxuLVx0XHQgJChURVNUSU5HX0hFTFBFUlMpIFxcXG4tXHRcdCAkKFRSQUNFX0hFTFBFUlMpIFxcXG4tXHRcdCAkKENHUk9VUF9IRUxQRVJTKSBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2NvdW50Lm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9yZW5hbWUubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3RyaWdnZXIubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3JpbmdidWZzLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9ibG9vbV9maWx0ZXJfbWFwLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfbG9vcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2UubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9sb29rdXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2VfY3JlYXRlLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9odGFiX21lbS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2NyeXB0by5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfc29ja21hcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfbHBtX3RyaWVfbWFwLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfdGltaW5nLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfbm9wLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF94ZHBfbGIubyBcXFxuLVx0XHQgJChPVVRQVVQpL3VzZHRfMS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvdXNkdF8yLm8gXFxcbi1cdFx0ICNcbiskKE9VVFBVVCkvYmVuY2g6ICQoT1VUUFVUKS9iZW5jaC5vXHRcdFxcXG4rXHRcdCAkKE9VVFBVVCkvdGVzdGluZ19oZWxwZXJzLm9cdFxcXG4rXHRcdCAkKE9VVFBVVCkvdHJhY2VfaGVscGVycy5vXHRcXFxuK1x0XHQgJChPVVRQVVQpL2Nncm91cF9oZWxwZXJzLm9cdFxcXG4rXHRcdCAkKE9VVFBVVCkvdXNkdF8xLm9cdFx0XFxcbitcdFx0ICQoT1VUUFVUKS91c2R0XzIub1x0XHRcXFxuK1x0XHQgJChCRU5DSF9PQkpTKVxuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuLVx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQCAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICRAOyBwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLUxJTksnICckKG5vdGRpciAkQCkgKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpJyAxXHUwMDNlXHUwMDI2MikpXG4rXHQkKFEpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChmaWx0ZXIgJS5hICUubywkXikgJChMRExJQlMpIC1vICRAIFxcXG4rXHRcdCQoY2FsbCBza2lwX29uX2ZhaWwsTElOSywsKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpKVxuIFxuICMgVGhpcyB3b3JrcyBhcm91bmQgR0NDIHdhcm5pbmcgYWJvdXQgc25wcmludGYgdHJ1bmNhdGluZyBzdHJpbmdzIGxpa2U6XG4gI1xuQEAgLTEwMjIsMTMgKzYxMyw2IEBAICQoT1VUUFVUKS92ZXJpc3RhdDogJChPVVRQVVQpL3ZlcmlzdGF0Lm9cbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbiBcdCQoUSkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKGZpbHRlciAlLmEgJS5vLCReKSAkKExETElCUykgLW8gJEBcbiBcbi0jIExpbmtpbmcgdXByb2JlX211bHRpIGNhbiBmYWlsIGR1ZSB0byByZWxvY2F0aW9uIG92ZXJmbG93cyBvbiBtaXBzLlxuLSQoT1VUUFVUKS91cHJvYmVfbXVsdGk6IENGTEFHUyArPSAkKGlmICQoZmlsdGVyIG1pcHMsICQoQVJDSCkpLC1teGdvdClcbi0kKE9VVFBVVCkvdXByb2JlX211bHRpOiB1cHJvYmVfbXVsdGkuYyB1cHJvYmVfbXVsdGkubGRcbi1cdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbi1cdCQoUSkkKENDKSAkKENGTEFHUykgLVdsLC1ULHVwcm9iZV9tdWx0aS5sZCAtTzAgJChMREZMQUdTKSBcdFxcXG4tXHRcdCQoZmlsdGVyLW91dCAlLmxkLCReKSAkKExETElCUykgLW8gJEBcbi1cbiBFWFRSQV9DTEVBTiA6PSAkKFNDUkFUQ0hfRElSKSAkKEhPU1RfU0NSQVRDSF9ESVIpXHRcdFx0XFxcbiBcdHByb2dfdGVzdHMvdGVzdHMuaCBtYXBfdGVzdHMvdGVzdHMuaCB2ZXJpZmllci90ZXN0cy5oXHRcdFxcXG4gXHRmZWF0dXJlIGJwZnRvb2wgJChURVNUX0tNT0RfVEFSR0VUUylcdFx0XHRcdFxcXG5AQCAtMTAzOCw3ICs2MjIsNyBAQCBFWFRSQV9DTEVBTiA6PSAkKFNDUkFUQ0hfRElSKSAkKEhPU1RfU0NSQVRDSF9ESVIpXHRcdFx0XFxcbiBcdFx0XHQgICAgICAgbGlidXJhbmRvbV9yZWFkLnNvKVx0XHRcdFxcXG4gXHQkKE9VVFBVVCkvRkVBVFVSRS1EVU1QLnNlbGZ0ZXN0c1xuIFxuLS5QSE9OWTogZG9jcyBkb2NzLWNsZWFuXG4rLlBIT05ZOiBkb2NzIGRvY3MtY2xlYW4gbGliYXJlbmEgbGliYXJlbmFfYXNhblxuIFxuICMgRGVsZXRlIHBhcnRpYWxseSB1cGRhdGVkIChjb3JydXB0ZWQpIGZpbGVzIG9uIGVycm9yXG4gLkRFTEVURV9PTl9FUlJPUjpcbkBAIC0xMDYyLDkgKzY0NiwzIEBAIG92ZXJyaWRlIGRlZmluZSBJTlNUQUxMX1JVTEVcbiBcdFx0XHQkKElOU1RBTExfUEFUSCkvJCRESVI7XHRcdFx0XHQgIFxcXG4gXHRkb25lXG4gZW5kZWZcbi1cbi1saWJhcmVuYTogJChMSUJBUkVOQV9TS0VMKVxuLVxuLWlmbmVxICgkKENMQU5HX0hBU19BUkVOQV9BU0FOKSwpXG4tbGliYXJlbmFfYXNhbjogJChMSUJBUkVOQV9BU0FOX1NLRUwpXG4tZW5kaWZcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFyc1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lYTk3NWZlZWYwMTM2ZlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFyc1xuQEAgLTAsMCArMSwyMDQgQEBcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI1xuKyMgU2hhcmVkIHRvb2xjaGFpbiwgcGF0aCBhbmQgZmxhZyBkZWZpbml0aW9ucyBmb3IgdGhlIEJQRiBzZWxmdGVzdHMgYnVpbGQuXG4rIyBJbmNsdWRlZCBieSBib3RoIE1ha2VmaWxlICh0aGUgdG9wIGxldmVsKSBhbmQgTWFrZWZpbGUucnVubmVyIChvbmVcbisjIHRlc3QtcnVubmVyIGluc3RhbmNlKS5cbisjXG4rIyBSZXF1aXJlbWVudHMgYXQgaW5jbHVkZSB0aW1lOlxuKyMgICAtICQoT1VUUFVUKSBpcyBzZXQgdG8gYW4gYWJzb2x1dGUgcGF0aFxuKyMgICAtIHRvb2xzL2J1aWxkL0J1aWxkLmluY2x1ZGUsIHRvb2xzL3NjcmlwdHMvTWFrZWZpbGUuYXJjaCBhbmRcbisjICAgICB0b29scy9zY3JpcHRzL01ha2VmaWxlLmluY2x1ZGUgaGF2ZSBiZWVuIGluY2x1ZGVkIChmb3IgU1JDQVJDSCBldGMuKVxuK1xuK0NYWCA/PSAkKENST1NTX0NPTVBJTEUpZysrXG4rUEtHX0NPTkZJRyA/PSAkKENST1NTX0NPTVBJTEUpcGtnLWNvbmZpZ1xuK1xuK1RPT0xTRElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLilcbitMSUJESVIgOj0gJChUT09MU0RJUikvbGliXG4rQlBGRElSIDo9ICQoTElCRElSKS9icGZcbitUT09MU0lOQ0RJUiA6PSAkKFRPT0xTRElSKS9pbmNsdWRlXG4rVE9PTFNBUkNISU5DRElSIDo9ICQoVE9PTFNESVIpL2FyY2gvJChTUkNBUkNIKS9pbmNsdWRlXG4rQlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbFxuK0FQSURJUiA6PSAkKFRPT0xTSU5DRElSKS91YXBpXG4raWZuZXEgKCQoTyksKVxuK0dFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkXG4rZWxzZVxuK0dFTkRJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4vaW5jbHVkZS9nZW5lcmF0ZWQpXG4rZW5kaWZcbitHRU5IRFIgOj0gJChHRU5ESVIpL2F1dG9jb25mLmhcbitcbitpZm5lcSAoJCh3aWxkY2FyZCAkKEdFTkhEUikpLClcbisgIEdFTkZMQUdTIDo9IC1ESEFWRV9HRU5IRFJcbitlbmRpZlxuK1xuK2lmZXEgKCQoc3JjdHJlZSksKVxuK3NyY3RyZWUgOj0gJChhYnNwYXRoIC4uLy4uLy4uLy4uKVxuK2VuZGlmXG4rXG4rIyBJbW1lZGlhdGUgKHdpdGggYW4gb3ZlcnJpZGUtcHJlc2VydmluZyBndWFyZCk6IGEgcGxhaW4gPz0gc3RheXNcbisjIHJlY3Vyc2l2ZWx5IGV4cGFuZGVkIGFuZCB3b3VsZCByZS1ydW4gJ2NvbW1hbmQgLXYnIG9uIGV2ZXJ5IGV4cGFuc2lvbi5cbitpZmVxICgkKG9yaWdpbiBCUEZfR0NDKSx1bmRlZmluZWQpXG4rQlBGX0dDQ1x0XHQ6PSAkKHNoZWxsIGNvbW1hbmQgLXYgYnBmLWdjYzspXG4rZW5kaWZcbitpZmRlZiBBU0FOXG4rU0FOX0NGTEFHU1x0Pz0gLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXG4rZWxzZVxuK1NBTl9DRkxBR1NcdD89XG4rZW5kaWZcbitTQU5fTERGTEFHU1x0Pz0gJChTQU5fQ0ZMQUdTKVxuK1JFTEVBU0VcdFx0Pz1cbitPUFRfRkxBR1NcdD89ICQoaWYgJChSRUxFQVNFKSwtTzIsLU8wKVxuK1xuK0xJQkVMRl9DRkxBR1NcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1jZmxhZ3MgMlx1MDAzZS9kZXYvbnVsbClcbitMSUJFTEZfTElCU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWxpYnMgMlx1MDAzZS9kZXYvbnVsbCB8fCBlY2hvIC1sZWxmKVxuK1xuK1NLSVBfRE9DU1x0Pz1cbitTS0lQX0xMVk1cdD89XG4rU0tJUF9MSUJCRkRcdD89XG4rU0tJUF9DUllQVE9cdD89XG4rXG4rIyBXaGVuIEJQRl9TVFJJQ1RfQlVJTEQgaXMgMSwgYW55IEJQRiBvYmplY3QsIHNrZWxldG9uLCB0ZXN0IG9iamVjdCwgb3JcbisjIGJlbmNobWFyayBjb21waWxhdGlvbiBmYWlsdXJlIGlzIGZhdGFsLiBTZXQgdG8gMCB0byB0b2xlcmF0ZSBmYWlsdXJlc1xuKyMgYW5kIGNvbnRpbnVlIGJ1aWxkaW5nIHRoZSByZW1haW5pbmcgdGVzdHMuXG4rQlBGX1NUUklDVF9CVUlMRCA/PSAxXG4rUEVSTUlTU0lWRSA6PSAkKGZpbHRlciAwLCQoQlBGX1NUUklDVF9CVUlMRCkpXG4rXG4rIyBQZXJtaXNzaXZlLW1vZGUgcmVjaXBlIHN1ZmZpeDogb24gZmFpbHVyZSwgcmVtb3ZlIHRoZSB0YXJnZXQsIGVtaXQgYVxuKyMgU0tJUCBtYXJrZXIgYW5kIHJlcG9ydCBzdWNjZXNzIHNvIHRoZSByZXN0IG9mIHRoZSBidWlsZCBjb250aW51ZXMuXG4rIyAkKDEpIC0gU0tJUCB0YWcgKEJQRiwgVEVTVCwgQkVOQ0gsIFNLRUwsIExJTkssIC4uLilcbisjICQoMikgLSBvcHRpb25hbCBleHRyYSBmaWxlcyB0byByZW1vdmUgYWxvbmdzaWRlIHRoZSB0YXJnZXRcbisjICQoMykgLSBvcHRpb25hbCBub3RlIGFwcGVuZGVkIHRvIHRoZSBTS0lQIG1lc3NhZ2Vcbitza2lwX29uX2ZhaWwgPSAkKGlmICQoUEVSTUlTU0lWRSksfHwgeyAkKFJNKSAkQCAkKDIpOyBcXFxuK1x0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC0kKDEpJyAnJChub3RkaXIgJEApJChpZiAkKDMpLCAkKDMpKScgMVx1MDAzZVx1MDAyNjI7IH0pXG4rXG4rIyBLZXJuZWwgdGVzdCBtb2R1bGVzOyBURVNUX0tNT0RTPSBvbiB0aGUgY29tbWFuZCBsaW5lIGRpc2FibGVzIHRoZW0uXG4rVEVTVF9LTU9EUyA/PSBicGZfdGVzdG1vZC5rbyBicGZfdGVzdF9ub19jZmkua28gYnBmX3Rlc3RfbW9kb3JkZXJfeC5rbyBcXFxuK1x0YnBmX3Rlc3RfbW9kb3JkZXJfeS5rbyBicGZfdGVzdF9ycXNwaW5sb2NrLmtvXG4rVEVTVF9LTU9EX1RBUkdFVFMgPSAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLCQoVEVTVF9LTU9EUykpXG4rXG4rIyBPdXRwdXQtdHJlZSBsYXlvdXQuIERlZmluZWQgYmVmb3JlIENPTU1PTl9DRkxBR1Mgb24gcHVycG9zZTogQ0ZMQUdTXG4rIyBiZWxvdyBpcyBleHBhbmRlZCBpbW1lZGlhdGVseSBhbmQgcmVmZXJlbmNlcyAkKElOQ0xVREVfRElSKS5cbitTQ1JBVENIX0RJUiA6PSAkKE9VVFBVVCkvdG9vbHNcbitCVUlMRF9ESVIgOj0gJChTQ1JBVENIX0RJUikvYnVpbGRcbitJTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlXG4rQlBGT0JKIDo9ICQoQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcbitpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4rSE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpL2hvc3RcbitIT1NUX1NDUkFUQ0hfRElSXHQ6PSAkKE9VVFBVVCkvaG9zdC10b29sc1xuK0hPU1RfSU5DTFVERV9ESVJcdDo9ICQoSE9TVF9TQ1JBVENIX0RJUikvaW5jbHVkZVxuK2Vsc2VcbitIT1NUX0JVSUxEX0RJUlx0XHQ6PSAkKEJVSUxEX0RJUilcbitIT1NUX1NDUkFUQ0hfRElSXHQ6PSAkKFNDUkFUQ0hfRElSKVxuK0hPU1RfSU5DTFVERV9ESVJcdDo9ICQoSU5DTFVERV9ESVIpXG4rZW5kaWZcbitIT1NUX0JQRk9CSiA6PSAkKEhPU1RfQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcbitSRVNPTFZFX0JURklEUyA6PSAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkcy9yZXNvbHZlX2J0Zmlkc1xuK1xuK0RFRkFVTFRfQlBGVE9PTCA6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxuK2lmbmVxICgkKENST1NTX0NPTVBJTEUpLClcbitDUk9TU19CUEZUT09MIDo9ICQoU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxuK1RSVU5ORVJfQlBGVE9PTCA6PSAkKENST1NTX0JQRlRPT0wpXG4rVVNFX0JPT1RTVFJBUCA6PVxuK2Vsc2VcbitUUlVOTkVSX0JQRlRPT0wgOj0gJChERUZBVUxUX0JQRlRPT0wpXG4rVVNFX0JPT1RTVFJBUCA6PSBib290c3RyYXAvXG4rZW5kaWZcbitCUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKVxuK1xuK0NPTU1PTl9DRkxBR1MgPSAtZyAkKE9QVF9GTEFHUykgLXJkeW5hbWljIC1zdGQ9Z251MTFcdFx0XHRcXFxuK1x0ICAtV2FsbCAtV2Vycm9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXHRcdFx0XHRcXFxuK1x0ICAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlXHRcdFx0XHRcdFxcXG4rXHQgICQoR0VORkxBR1MpICQoU0FOX0NGTEFHUykgJChMSUJFTEZfQ0ZMQUdTKVx0XHRcdFxcXG4rXHQgIC1JJChDVVJESVIpIC1JJChJTkNMVURFX0RJUikgLUkkKEdFTkRJUikgLUkkKExJQkRJUilcdFx0XFxcbitcdCAgLUkkKFRPT0xTSU5DRElSKSAtSSQoVE9PTFNBUkNISU5DRElSKSAtSSQoQVBJRElSKSAtSSQoT1VUUFVUKVx0XFxcbitcdCAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVxuK0xERkxBR1MgKz0gJChTQU5fTERGTEFHUylcbitMRExJQlMgKz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkXG4rXG4rUENBUF9DRkxBR1NcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJwY2FwIDJcdTAwM2UvZGV2L251bGwgXHUwMDI2XHUwMDI2IGVjaG8gXCItRFRSQUZGSUNfTU9OSVRPUj0xXCIpXG4rUENBUF9MSUJTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYnBjYXAgMlx1MDAzZS9kZXYvbnVsbClcbitMRExJQlMgKz0gJChQQ0FQX0xJQlMpXG4rIyBQcmVwZW5kIHJhdGhlciB0aGFuIGFwcGVuZDogdGhlIGluY2x1ZGUtc2VhcmNoIG9yZGVyIG11c3Qgc3RheVxuKyMgXCIkKENPTU1PTl9DRkxBR1MpIGZpcnN0LCBsaWIubWsgYWRkaXRpb25zIGFmdGVyXCIgcmVnYXJkbGVzcyBvZiB3aGV0aGVyXG4rIyBsaWIubWsgd2FzIGluY2x1ZGVkIGJlZm9yZSB0aGlzIGZpbGUgKHRvcCBsZXZlbCkgb3Igbm90IGF0IGFsbCAocnVubmVyKS5cbitDRkxBR1MgOj0gJChDT01NT05fQ0ZMQUdTKSAkKFBDQVBfQ0ZMQUdTKSAkKENGTEFHUylcbitcbitpZm5lcSAoJChMTFZNKSwpXG4rIyBTaWxlbmNlIHNvbWUgd2FybmluZ3Mgd2hlbiBjb21waWxlZCB3aXRoIGNsYW5nXG4rQ0ZMQUdTICs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudFxuK2VuZGlmXG4rXG4rIyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMispXG4rQ0xBTkdfSEFTX0FSRU5BX0FTQU4gOj0gJChzaGVsbCBlY2hvICdpbnQgeDsnIHwgXFxcbitcdCQoQ0xBTkcpIC0tdGFyZ2V0PWJwZiAtZnNhbml0aXplPWtlcm5lbC1hZGRyZXNzIFxcXG4rXHQtbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcXFxuK1x0LXggYyAtYyAtIC1vIC9kZXYvbnVsbCAyXHUwMDNlL2Rldi9udWxsIFx1MDAyNlx1MDAyNiBlY2hvIDEpXG4raWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcbitDRkxBR1MgKz0gLURIQVNfQlBGX0FSRU5BX0FTQU5cbitlbmRpZlxuK1xuK1ZNTElOVVhfQlRGX1BBVEhTID89ICQoaWYgJChPKSwkKE8pL3ZtbGludXgpXHRcdFx0XHRcXFxuK1x0XHQgICAgICQoaWYgJChLQlVJTERfT1VUUFVUKSwkKEtCVUlMRF9PVVRQVVQpL3ZtbGludXgpXHRcXFxuK1x0XHQgICAgIC4uLy4uLy4uLy4uL3ZtbGludXhcdFx0XHRcdFxcXG4rXHRcdCAgICAgL3N5cy9rZXJuZWwvYnRmL3ZtbGludXhcdFx0XHRcdFxcXG4rXHRcdCAgICAgL2Jvb3Qvdm1saW51eC0kKHNoZWxsIHVuYW1lIC1yKVxuK1ZNTElOVVhfQlRGID89ICQoYWJzcGF0aCAkKGZpcnN0d29yZCAkKHdpbGRjYXJkICQoVk1MSU5VWF9CVEZfUEFUSFMpKSkpXG4raWZlcSAoJChWTUxJTlVYX0JURiksKVxuKyQoZXJyb3IgQ2Fubm90IGZpbmQgYSB2bWxpbnV4IGZvciBWTUxJTlVYX0JURiBhdCBhbnkgb2YgXCIkKFZNTElOVVhfQlRGX1BBVEhTKVwiKVxuK2VuZGlmXG4rXG4rIyBHZXQgQ2xhbmcncyBkZWZhdWx0IGluY2x1ZGVzIG9uIHRoaXMgc3lzdGVtLCBhcyBvcHBvc2VkIHRvIHRob3NlIHNlZW4gYnlcbisjICctLXRhcmdldD1icGYnLiBUaGlzIGZpeGVzIFwibWlzc2luZ1wiIGZpbGVzIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcy9kaXN0cm9zLFxuKyMgc3VjaCBhcyBhc20vYnl0ZW9yZGVyLmgsIGFzbS9zb2NrZXQuaCwgYXNtL3NvY2tpb3MuaCwgc3lzL2NkZWZzLmggZXRjLlxuKyNcbisjIFVzZSAnLWlkaXJhZnRlcic6IERvbid0IGludGVyZmVyZSB3aXRoIGluY2x1ZGUgbWVjaGFuaWNzIGV4Y2VwdCB3aGVyZSB0aGVcbisjIGJ1aWxkIHdvdWxkIGhhdmUgZmFpbGVkIGFueXdheXMuXG4rZGVmaW5lIGdldF9zeXNfaW5jbHVkZXNcbiskKHNoZWxsICQoMSkgJCgyKSAtdiAtRSAtIFx1MDAzYy9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MSBcXFxuK1x0fCBzZWQgLW4gJy9cdTAwM2MuLi5cdTAwM2Ugc2VhcmNoIHN0YXJ0cyBoZXJlOi8sL0VuZCBvZiBzZWFyY2ggbGlzdC4veyBzfCBcXCgvLipcXCl8LWlkaXJhZnRlciBcXDF8cCB9JykgXFxcbiskKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBncmVwICdfX3Jpc2N2X3hsZW4gJyB8IGF3ayAne3ByaW50ZihcIi1EX19yaXNjdl94bGVuPSVkIC1EX19CSVRTX1BFUl9MT05HPSVkXCIsICQkMywgJCQzKX0nKSBcXFxuKyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJ19fbG9vbmdhcmNoX2dybGVuICcgfCBhd2sgJ3twcmludGYoXCItRF9fQklUU19QRVJfTE9ORz0lZFwiLCAkJDMpfScpIFxcXG4rJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAtRSAnTUlQUyhFTHxFQil8X01JUFNfU1ooUFRSfExPTkcpIHxfTUlQU19TSU0gfF9BQkkoTzMyfE4zMnw2NCkgJyB8IGF3ayAne3ByaW50ZihcIi1EJXM9JXMgXCIsICQkMiwgJCQzKX0nKVxuK2VuZGVmXG4rXG4rIyBEZXRlcm1pbmUgdGFyZ2V0IGVuZGlhbm5lc3MuXG4rSVNfTElUVExFX0VORElBTiA6PSAkKHNoZWxsICQoQ0MpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IFxcXG4rXHRcdFx0Z3JlcCAnZGVmaW5lIF9fQllURV9PUkRFUl9fIF9fT1JERVJfTElUVExFX0VORElBTl9fJylcbitNRU5ESUFOIDo9ICQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKVxuK0JQRl9UQVJHRVRfRU5ESUFOIDo9ICQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYilcbitcbitpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4rQ0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpXG4rZW5kaWZcbitcbitDTEFOR19TWVNfSU5DTFVERVMgOj0gJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsJChDTEFORyksJChDTEFOR19UQVJHRVRfQVJDSCkpXG4rQlBGX0NGTEFHUyA9IC1nIC1XYWxsIC1XZXJyb3IgLURfX1RBUkdFVF9BUkNIXyQoU1JDQVJDSCkgJChNRU5ESUFOKVx0XFxcbitcdCAgICAgLUkkKElOQ0xVREVfRElSKSAtSSQoQ1VSRElSKSAtSSQoQVBJRElSKVx0XHRcdFxcXG4rXHQgICAgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcdFx0XHRcdFxcXG4rXHQgICAgIC1JJChhYnNwYXRoICQoT1VUUFVUKS8uLi91c3IvaW5jbHVkZSlcdFx0XHRcXFxuK1x0ICAgICAtc3RkPWdudTExXHRcdCBcdFx0XHRcdFx0XFxcbitcdCAgICAgLWZuby1zdHJpY3QtYWxpYXNpbmcgXHRcdFx0XHRcdFxcXG4rXHQgICAgIC1Xbm8tbWljcm9zb2Z0LWFub24tdGFnXHRcdFx0XHRcdFxcXG4rXHQgICAgIC1mbXMtZXh0ZW5zaW9uc1x0XHRcdFx0XHRcdFxcXG4rXHQgICAgIC1Xbm8tY29tcGFyZS1kaXN0aW5jdC1wb2ludGVyLXR5cGVzXHRcdFx0XFxcbitcdCAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXNcdFx0XHRcdFx0XFxcbitcdCAgICAgI1xuKyMgVE9ETzogZW5hYmxlIG1lIC1Xc2lnbi1jb21wYXJlXG4rXG4rQ0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXG4rXG4rIyBTaWduaW5nIGtleS9jZXJ0IHNoYXJlZCBieSB0aGUgc2lnbmVkIGxpZ2h0IHNrZWxldG9ucyBhbmQgdGVzdF9wcm9ncy5cbitWRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXG4rVkVSSUZZX1NJR19IRFIgOj0gdmVyaWZpY2F0aW9uX2NlcnQuaFxuK1ZFUklGSUNBVElPTl9DRVJUIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5kZXJcbitQUklWQVRFX0tFWSA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkucGVtXG4rXG4rIyBsaWJhcmVuYSBza2VsZXRvbnMsIGJ1aWx0IGJ5IHRoZSBsaWJhcmVuYS8gc3ViLW1ha2UgKGRyaXZlbiBieSB0aGUgdG9wXG4rIyBsZXZlbCBNYWtlZmlsZSk7IHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzIGRlcGVuZCBvbiB0aGUgaGVhZGVycy5cbitMSUJBUkVOQV9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hLnNrZWwuaFxuK2lmbmVxICgkKENMQU5HX0hBU19BUkVOQV9BU0FOKSwpXG4rTElCQVJFTkFfQVNBTl9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hX2FzYW4uc2tlbC5oXG4rZW5kaWZcbitcbitpZm5lcSAoJChWKSwxKVxuK3N1Ym1ha2VfZXh0cmFzIDo9IGZlYXR1cmVfZGlzcGxheT0wXG4rZW5kaWZcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnJ1bm5lclxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi40YzU4Y2M1MWYyNTE0ZVxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnJ1bm5lclxuQEAgLTAsMCArMSwzMTMgQEBcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI1xuKyMgQnVpbGQgb25lIEJQRiB0ZXN0LXJ1bm5lciBpbnN0YW5jZTogdGVzdF9wcm9ncywgb25lIG9mIGl0cyBmbGF2b3JzXG4rIyAobm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjKSwgb3IgdGVzdF9tYXBzLlxuKyNcbisjIEVhY2ggaW5zdGFuY2UgaXMgYW4gaW5kZXBlbmRlbnQgc3ViLW1ha2Ugd2l0aCBpdHMgb3duIG91dHB1dCBkaXJlY3RvcnksXG4rIyBzbyBldmVyeXRoaW5nIGhlcmUgaXMgd3JpdHRlbiBpbiBwbGFpbiBtYWtlIC0gbm8gJCQtZXNjYXBpbmcsIG5vIGV2YWwsXG4rIyBubyBwZXItZmxhdm9yIGd1YXJkcy4gVGhpcyBmaWxlIGlzIGFsd2F5cyBpbnZva2VkIGJ5IHRoZSBtYWluIE1ha2VmaWxlLFxuKyMgbmV2ZXIgZGlyZWN0bHk6IGFsbCBzaGFyZWQgcHJlcmVxdWlzaXRlcyAobGliYnBmLCBicGZ0b29sLCB2bWxpbnV4LmgsXG4rIyB2ZXJpc3RhdCwgaGVscGVyIG9iamVjdHMsIHNpZ25pbmcga2V5LCBnZW5lcmF0ZWQgdGVzdHMuaCwgZXh0cmFcbisjIGJpbmFyaWVzKSBhcmUgYnVpbHQgYnkgdGhlIG1haW4gTWFrZWZpbGUgKmJlZm9yZSogdGhpcyBvbmUgcnVucyBhbmQgYXJlXG4rIyByZWZlcmVuY2VkIGJlbG93IGFzIHBsYWluIGZpbGVzLlxuKyNcbisjIFBhcmFtZXRlcnMgKGFsbCBwYXNzZWQgb24gdGhlIHN1Yi1tYWtlIGNvbW1hbmQgbGluZSk6XG4rIyAgIE9VVFBVVCAgICAgIGFic29sdXRlIHBhdGggb2YgdGhlIHNlbGZ0ZXN0cyBvdXRwdXQgZGlyZWN0b3J5XG4rIyAgIFJVTk5FUiAgICAgIGJhc2UgYmluYXJ5IG5hbWU6IHRlc3RfcHJvZ3MgfCB0ZXN0X21hcHNcbisjICAgRkxBVk9SICAgICAgZmxhdm9yIHN1ZmZpeDogZW1wdHkgfCBub19hbHUzMiB8IGNwdXY0IHwgYnBmX2djY1xuKyMgICBURVNUU19ESVIgICBkaXJlY3Rvcnkgd2l0aCB0aGUgdGVzdCBzb3VyY2VzOiBwcm9nX3Rlc3RzIHwgbWFwX3Rlc3RzXG4rIyAgIEJQRl9CVUlMRCAgIGhvdyB0byBidWlsZCBwcm9ncy8qLmMgQlBGIG9iamVjdHM6IGNsYW5nIHwgZ2NjIHwgbm9uZVxuKyMgICBCUEZfTUNQVSAgICBjbGFuZyAtbWNwdT0gdmFsdWU6IHYyIHwgdjMgfCB2NFxuKyMgICBCUEZfREVGSU5FUyBleHRyYSBkZWZpbmVzIGZvciBCUEYgb2JqZWN0cyAoZS5nLiAtREVOQUJMRV9BVE9NSUNTX1RFU1RTKVxuKyMgICBDQyAgICAgICAgICBDIGNvbXBpbGVyIChhcyByZXNvbHZlZCBieSBsaWIubWsgaW4gdGhlIG1haW4gTWFrZWZpbGUpXG4rIyAgIExMVk1fQ0ZMQUdTL0xMVk1fTERMSUJTL0xMVk1fTERGTEFHU1xuKyMgICAgICAgICAgICAgICByZXN1bHRzIG9mIHRoZSB0b3AtbGV2ZWwgTExWTSBmZWF0dXJlIHByb2JlXG4rXG4raW5jbHVkZSAuLi8uLi8uLi9idWlsZC9CdWlsZC5pbmNsdWRlXG4raW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2hcbitpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZVxuK1xuKyMgU2FtZSBtZXNzYWdlIGhlbHBlcnMgYXMgLi4vbGliLm1rLCB3aGljaCBvbmx5IHRoZSB0b3AgbGV2ZWwgaW5jbHVkZXMuXG4raWZlcSAoJChWKSwxKVxuK1EgPVxuK21zZyA9XG4rZWxzZVxuK1EgPSBAXG4rbXNnID0gQHByaW50ZiAnICAlLThzJXMgJXMlc1xcbicgXCIkKDEpXCIgXCIkKGlmICQoMiksIFskKDIpXSlcIiBcIiQobm90ZGlyICQoMykpXCIgXCIkKGlmICQoNCksICQoNCkpXCI7XG4rTUFLRUZMQUdTICs9IC0tbm8tcHJpbnQtZGlyZWN0b3J5XG4rZW5kaWZcbitcbitpbmNsdWRlIE1ha2VmaWxlLmJ1aWxkdmFyc1xuK1xuKyMgS2VlcCBpbiBzeW5jIHdpdGggdGhlIENGTEFHUy9MREZMQUdTIGFkZGl0aW9ucyBpbiAuLi9saWIubWsuXG4rQ0ZMQUdTICs9IC1EX0dOVV9TT1VSQ0U9XG4rQ0ZMQUdTICs9IC1JJChzcmN0cmVlKS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0c1xuK0NGTEFHUyArPSAkKFVTRVJDRkxBR1MpXG4rTERGTEFHUyArPSAkKFVTRVJMREZMQUdTKVxuK2lmbmVxICgkKExMVk0pLClcbitDRkxBR1MgKz0gLVduby1hZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXJcbitDRkxBR1MgKz0gLVduby1nbnUtdmFyaWFibGUtc2l6ZWQtdHlwZS1ub3QtYXQtZW5kXG4rZW5kaWZcbitcbitCSU5BUlkgOj0gJChSVU5ORVIpJChpZiAkKEZMQVZPUiksLSQoRkxBVk9SKSlcbitSRElSICAgOj0gJChPVVRQVVQpJChpZiAkKEZMQVZPUiksLyQoRkxBVk9SKSlcbitcbithbGw6ICQoT1VUUFVUKS8kKEJJTkFSWSlcbisuUEhPTlk6IGFsbFxuK1xuKyMgRGVsZXRlIHBhcnRpYWxseSB1cGRhdGVkIChjb3JydXB0ZWQpIGZpbGVzIG9uIGVycm9yXG4rLkRFTEVURV9PTl9FUlJPUjpcbitcbisjIFBlcm1pc3NpdmUgc2tpcC1vbi1mYWlsdXJlIG9mIGluZGl2aWR1YWwgdGVzdHMgYXBwbGllcyB0byB0ZXN0X3Byb2dzIGFuZFxuKyMgaXRzIGZsYXZvcnMgb25seTsgdGVzdF9tYXBzIHVzZXMgc3Ryb25nIGNyb3NzLW9iamVjdCByZWZlcmVuY2VzIGFuZCBrZWVwc1xuKyMgc3RyaWN0IHNlbWFudGljcyBldmVuIHdoZW4gQlBGX1NUUklDVF9CVUlMRD0wLlxuK1BFUk1JU1NJVkVfVEVTVFMgOj0gJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzLCQoUlVOTkVSKSksJChQRVJNSVNTSVZFKSlcbitcbiskKFJESVIpOlxuK1x0JChjYWxsIG1zZyxNS0RJUiwsJEApXG4rXHQkKFEpbWtkaXIgLXAgJEBcbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgUGVyLXJ1bm5lciBzb3VyY2VzXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbitcbitpZmVxICgkKFJVTk5FUiksdGVzdF9wcm9ncylcbitFWFRSQV9TT1VSQ0VTIDo9IHRlc3RfcHJvZ3MuYyBjZ3JvdXBfaGVscGVycy5jIHRyYWNlX2hlbHBlcnMuY1x0XHRcXFxuK1x0XHQgbmV0d29ya19oZWxwZXJzLmMgdGVzdGluZ19oZWxwZXJzLmMgYnRmX2hlbHBlcnMuY1x0XFxcbitcdFx0IGNhcF9oZWxwZXJzLmMgdW5wcml2X2hlbHBlcnMuYyBzeXNjdGxfaGVscGVycy5jXHRcXFxuK1x0XHQgbmV0bGlua19oZWxwZXJzLmMgaml0X2Rpc2FzbV9oZWxwZXJzLmMgaW9faGVscGVycy5jXHRcXFxuK1x0XHQgdGVzdF9sb2FkZXIuYyB4c2suYyBkaXNhc20uYyBkaXNhc21faGVscGVycy5jXHRcdFxcXG4rXHRcdCBqc29uX3dyaXRlci5jIGJwZnRvb2xfaGVscGVycy5jIHVzZHRfMS5jIHVzZHRfMi5jXG4rTElCX1NPVVJDRVMgOj0gZmluZF9iaXQuY1xuK0VYVFJBX0hEUlMgOj0gZmxvd19kaXNzZWN0b3JfbG9hZC5oIGlwX2NoZWNrX2RlZnJhZ19mcmFncy5oXHRcdFxcXG4rXHQgICAgICAkKFZFUklGWV9TSUdfSERSKSAkKExJQkFSRU5BX1NLRUwpICQoTElCQVJFTkFfQVNBTl9TS0VMKVxuK0VYVFJBX0ZJTEVTIDo9ICQoT1VUUFVUKS91cmFuZG9tX3JlYWQgJChPVVRQVVQpL2xpYnVyYW5kb21fcmVhZC5zb1x0XFxcbitcdCAgICAgICAkKE9VVFBVVCkveGRwX3N5bnByb3h5ICQoT1VUUFVUKS9zaWduLWZpbGVcdFx0XFxcbitcdCAgICAgICAkKE9VVFBVVCkvdXByb2JlX211bHRpXHRcdFx0XHRcdFxcXG4rXHQgICAgICAgJChURVNUX0tNT0RfVEFSR0VUUylcdFx0XHRcdFx0XFxcbitcdCAgICAgICBpbWFfc2V0dXAuc2ggJChWRVJJRllfU0lHX1NFVFVQKVx0XHRcdFx0XFxcbitcdCAgICAgICAkKHdpbGRjYXJkIHByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV8qLmMpXHRcdFx0XFxcbitcdCAgICAgICAkKHdpbGRjYXJkIHByb2dzLyouYnBmLm8pXG4rZW5kaWZcbitcbitpZmVxICgkKFJVTk5FUiksdGVzdF9tYXBzKVxuK0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9tYXBzLmMgdGVzdGluZ19oZWxwZXJzLmNcbitlbmRpZlxuK1xuKyMgTm90ZSBvbiB0aGUgdW5mbGF2b3JlZCBydW5uZXJzLCB3aGljaCBzaGFyZSAkKE9VVFBVVCkgd2l0aCB0aGUgbWFpblxuKyMgTWFrZWZpbGU6IGhlbHBlciBvYmplY3RzIHRoZSBtYWluIE1ha2VmaWxlIGFsc28gdXNlcyAoYW5kIGxpc3RzIGluIHRoZVxuKyMgcnVubmVyIHByZXJlcXVpc2l0ZXMpIGFyZSBhbHJlYWR5IGJ1aWx0IGFuZCBmcmVzaCB3aGVuIGEgcnVubmVyIHN0YXJ0cyxcbisjIHNvIHRoZSBydWxlcyBiZWxvdyBmaW5kIHRoZW0gdXAgdG8gZGF0ZSBhbmQgbmV2ZXIgd3JpdGUgdGhlbS5cbitcbitURVNUU19IRFIgOj0gJChURVNUU19ESVIpL3Rlc3RzLmhcbitcbitURVNUX1NSQ1MgIDo9ICQobm90ZGlyICQod2lsZGNhcmQgJChURVNUU19ESVIpLyouYykpXG4rVEVTVF9PQkpTICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUudGVzdC5vLCQoVEVTVF9TUkNTKSlcbitURVNUX0RFUFMgIDo9ICQoVEVTVF9PQkpTOi5vPS5kKVxuK0VYVFJBX09CSlMgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLm8sJChmaWx0ZXIgJS5jLCQoRVhUUkFfU09VUkNFUykpKVxuK0xJQl9PQkpTICAgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLm8sJChMSUJfU09VUkNFUykpXG4rXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnNcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuK1xuK2lmbmVxICgkKEJQRl9CVUlMRCksbm9uZSlcbitcbitCUEZfU1JDUyA6PSAkKG5vdGRpciAkKHdpbGRjYXJkIHByb2dzLyouYykpXG4rQlBGX09CSlMgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLmJwZi5vLCQoQlBGX1NSQ1MpKVxuK1xuKyMgV2hpY2ggdGVzdHMgd2FudCBhIGxpZ2h0IHNrZWxldG9uIGlzIGRlcml2ZWQgZnJvbSB0aGUgdGVzdCBzb3VyY2VzXG4rIyB0aGVtc2VsdmVzOiBhbiAnI2luY2x1ZGUgXCJmb28ubHNrZWwuaFwiJyBsaW5lIGlzIHRoZSBzaW5nbGUgc291cmNlIG9mXG4rIyB0cnV0aC4gVGVzdHMgdGhhdCBpbmNsdWRlIGJvdGggZm9vLnNrZWwuaCBhbmQgZm9vLmxza2VsLmggZ2V0IGJvdGguXG4rc2tlbF9pbmNsdWRlcyA9ICQoc2hlbGwgZ3JlcCAtcmhvRSAnXCJbYS16QS1aMC05X10rXFwuJCgxKVwiJyBwcm9nX3Rlc3RzIGJlbmNocyBtYXBfdGVzdHMgKi5jICouY3BwIDJcdTAwM2UvZGV2L251bGwpXG4rTFNLRUxfQkFTRVMgOj0gJChzb3J0ICQocGF0c3Vic3QgXCIlLmxza2VsLmhcIiwlLCQoY2FsbCBza2VsX2luY2x1ZGVzLGxza2VsLmgpKSlcbitTS0VMX0RFTUFOREVEIDo9ICQoc29ydCAkKHBhdHN1YnN0IFwiJS5za2VsLmhcIiwlLCQoY2FsbCBza2VsX2luY2x1ZGVzLHNrZWwuaCkpKVxuK1xuKyMgU2lnbmluZyBpcyBub3QgZXhwcmVzc2VkIGluIHRoZSBpbmNsdWRlLCBzbyB0aGUgc2lnbmVkIHN1YnNldCBzdGF5c1xuKyMgZXhwbGljaXQuXG4rTFNLRUxTX1NJR05FRCA6PSBmZW50cnlfdGVzdCBmZXhpdF90ZXN0IGF0b21pY3NcbitcbisjIEJQRiBvYmplY3RzIHRoYXQgY2Fubm90IGhhdmUgYSByZWd1bGFyIHNrZWxldG9uLCBwbHVzIGxza2VsLW9ubHkgdGVzdHNcbisjIChsaWdodC1za2VsZXRvbiB1c2VycyB3aG9zZSBzb3VyY2VzIG5ldmVyIGluY2x1ZGUgdGhlIC5za2VsLmggZm9ybSkuXG4rU0tFTF9CTEFDS0xJU1QgOj0gYnRmX18lIHRlc3RfcGlubmluZ19pbnZhbGlkLmMgdGVzdF9za19hc3NpZ24uYyBcXFxuK1x0XHQgICQoYWRkc3VmZml4IC5jLCQoZmlsdGVyLW91dCAkKFNLRUxfREVNQU5ERUQpLCQoTFNLRUxfQkFTRVMpKSlcbitcbisjIFNrZWxldG9ucyBtYWRlIGJ5IGxpbmtpbmcgbXVsdGlwbGUgQlBGIG9iamVjdHMgdG9nZXRoZXIuIFRoZSAlLWRlcHNcbisjIG1hcHBpbmcgaXMgdGhlIG9ubHkgaGFuZC1tYWludGFpbmVkIG1ldGFkYXRhOiBpdCBjYW5ub3QgYmUgZGVyaXZlZCBmcm9tXG4rIyB0aGUgc291cmNlcy5cbit0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vXG4rbGlua2VkX2Z1bmNzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9mdW5jczEuYnBmLm8gbGlua2VkX2Z1bmNzMi5icGYub1xuK2xpbmtlZF92YXJzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF92YXJzMS5icGYubyBsaW5rZWRfdmFyczIuYnBmLm9cbitsaW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vXG4rIyBJbiB0aGUgc3Vic2tlbGV0b24gY2FzZSwgd2Ugd2FudCB0aGUgdGVzdF9zdWJza2VsZXRvbl9saWIuc3Vic2tlbC5oIGZpbGVcbisjIGJ1dCB0aGF0J3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi5cbit0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXG4rdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vXG4rdGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vXG4rdHJhY2luZ19tdWx0aS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4rdHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2hfbW9kdWxlLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbit0cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuK3RyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX3Nlc3Npb25fYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbitcbitMSU5LRURfU0tFTFMgOj0gdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaCBsaW5rZWRfZnVuY3Muc2tlbC5oXHRcdFxcXG4rXHRcdGxpbmtlZF92YXJzLnNrZWwuaCBsaW5rZWRfbWFwcy5za2VsLmhcdFx0XHRcXFxuK1x0XHR0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmhcdFxcXG4rXHRcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcdFx0XHRcXFxuK1x0XHR0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmhcdFx0XHRcdFxcXG4rXHRcdHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaFx0XHRcdFx0XFxcbitcdFx0dHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaFxuK0xJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoZm9yZWFjaCBza2VsLCQoTElOS0VEX1NLRUxTKSwkKCQoc2tlbCktZGVwcykpKVxuK1xuK1NLRUxTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5za2VsLmgsXHRcdFx0XHRcXFxuK1x0ICAgJChmaWx0ZXItb3V0ICQoU0tFTF9CTEFDS0xJU1QpICQoTElOS0VEX0JQRl9TUkNTKSwkKEJQRl9TUkNTKSkpXG4rTFNLRUxTX0ggICAgICAgIDo9ICQocGF0c3Vic3QgJSwkKFJESVIpLyUubHNrZWwuaCwkKGZpbHRlci1vdXQgJChMU0tFTFNfU0lHTkVEKSwkKExTS0VMX0JBU0VTKSkpXG4rTFNLRUxTX1NJR05FRF9IIDo9ICQocGF0c3Vic3QgJSwkKFJESVIpLyUubHNrZWwuaCwkKExTS0VMU19TSUdORUQpKVxuK0xJTktFRF9TS0VMU19IICA6PSAkKGFkZHByZWZpeCAkKFJESVIpLywkKExJTktFRF9TS0VMUykpXG4rQUxMX1NLRUxTIDo9ICQoU0tFTFMpICQoTFNLRUxTX0gpICQoTFNLRUxTX1NJR05FRF9IKSAkKExJTktFRF9TS0VMU19IKVxuK1xuK0hFQURFUlNfRk9SX0JQRl9PQkpTIDo9ICQod2lsZGNhcmQgJChCUEZESVIpLyouYnBmLmgpXHRcdFx0XFxcbitcdFx0XHQkKHdpbGRjYXJkICQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlLyouW2NoXSlcdFxcXG4rXHRcdFx0JChhZGRwcmVmaXggJChCUEZESVIpLyxcdGJwZl9jb3JlX3JlYWQuaFx0XHRcXFxuK1x0XHRcdFx0XHRcdGJwZl9lbmRpYW4uaFx0XHRcXFxuK1x0XHRcdFx0XHRcdGJwZl9oZWxwZXJzLmhcdFx0XFxcbitcdFx0XHRcdFx0XHRicGZfdHJhY2luZy5oKVxuK1xuKyMgUGVyLXNvdXJjZSBCUEYgY29tcGlsYXRpb24gZmxhZyBvdmVycmlkZXMgKCRcdTAwM2MtQ0ZMQUdTIC8gJFx1MDAzYy0kKEZMQVZPUiktQ0ZMQUdTKS5cbisjIEdDQyBjYW5ub3QgZGlzYWJsZSBcImRlY2xhcmF0aW9uIG9mIGFub255bW91cyBzdHJ1Y3QgaW4gcGFyYW1ldGVyIGxpc3RcIlxuKyMgd2FybmluZ3MgdHJpZ2dlcmVkIGJ5IHRoZXNlICh0ZWNobmljYWxseSBsZWdhbCkgdGVzdCBwcm9ncmFtcy5cbitwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfYml0ZmllbGRzLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9uYW1lc3BhY2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3Jcbitwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfcGFja2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3Jcbitwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfcGFkZGluZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3Jcbitwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2Vfc3ludGF4LmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuK1xuK2lmZXEgKCQoQlBGX0JVSUxEKSxnY2MpXG4rQlBGX0NDX01TRyA6PSBHQ0MtQlBGXG4rIyBOb3RlOiBzeXMgaW5jbHVkZXMgY29tZSBmcm9tIHRoZSAqaG9zdCogZ2NjLCBub3QgJChCUEZfR0NDKSAtIGJwZi1nY2Mnc1xuKyMgb3duIHNlYXJjaCBwYXRoIGxhY2tzIHRoZSBob3N0J3MgYXNtLWdlbmVyaWMvIGhlYWRlcnMuIENvbXB1dGVkIG9uY2VcbisjIGhlcmU6IGJwZl9jYyBiZWxvdyBpcyBkZWZlcnJlZCBhbmQgZXhwYW5kcyBwZXIgY29tcGlsZWQgb2JqZWN0LlxuK0dDQ19TWVNfSU5DTFVERVMgOj0gJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsZ2NjLClcbiticGZfY2MgPSAkKEJQRl9HQ0MpICQoQlBGX0NGTEFHUykgJChHQ0NfU1lTX0lOQ0xVREVTKVx0XHRcdFxcXG4rXHQgJChCUEZfREVGSU5FUykgJCgkXHUwMDNjLUNGTEFHUykgJCgkXHUwMDNjLSQoRkxBVk9SKS1DRkxBR1MpXHRcdFxcXG4rXHQgLURCUEZfTk9fUFJFU0VSVkVfQUNDRVNTX0lOREVYIC1Xbm8tYXR0cmlidXRlcyAtTzIgLWMgJFx1MDAzYyAtbyAkQFxuK2Vsc2VcbitCUEZfQ0NfTVNHIDo9IENMTkctQlBGXG4rYnBmX2NjID0gJChDTEFORykgJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykgJChCUEZfREVGSU5FUylcdFx0XFxcbitcdCAkKCRcdTAwM2MtQ0ZMQUdTKSAkKCRcdTAwM2MtJChGTEFWT1IpLUNGTEFHUylcdFx0XHRcdFxcXG4rXHQgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICRcdTAwM2MgLW1jcHU9JChCUEZfTUNQVSkgLW8gJEBcbitlbmRpZlxuK1xuKyQoQlBGX09CSlMpOiAkKFJESVIpLyUuYnBmLm86IHByb2dzLyUuYyBwcm9ncy8qLmhcdFx0XHRcXFxuK1x0ICAgICAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChIRUFERVJTX0ZPUl9CUEZfT0JKUylcdFx0XFxcbitcdCAgICAgfCAkKFJESVIpICQoQlBGT0JKKVxuK1x0JChjYWxsIG1zZywkKEJQRl9DQ19NU0cpLCQoQklOQVJZKSwkQClcbitcdCQoUSkkKGJwZl9jYykgJChjYWxsIHNraXBfb25fZmFpbCxCUEYpXG4rXG4rIyBnZW5fYnBmX3NrZWwuc2ggcGlja3MgdGhlIGJwZnRvb2wgYmluYXJ5IHVwIGZyb20gdGhlIGVudmlyb25tZW50LlxuK2V4cG9ydCBCUEZUT09MXG4rR0VOX1NLRUwgOj0gLi9nZW5fYnBmX3NrZWwuc2hcbitcbiskKFNLRUxTKTogJChSRElSKS8lLnNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkgfCAkKFJESVIpXG4rXHQkKFEpJChHRU5fU0tFTCkgLS10YWcgJyQoQklOQVJZKScgLS1uYW1lICQqIC0taW5maXggbGlua2VkXHRcXFxuK1x0XHQtLXNrZWwgJEAgLS1zdWJza2VsICQoQDouc2tlbC5oPS5zdWJza2VsLmgpICRcdTAwM2NcdFx0XFxcbitcdFx0JChjYWxsIHNraXBfb25fZmFpbCxTS0VMLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKVxuK1xuKyQoTFNLRUxTX0gpOiAkKFJESVIpLyUubHNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkgfCAkKFJESVIpXG4rXHQkKFEpJChHRU5fU0tFTCkgLS10YWcgJyQoQklOQVJZKScgLS1uYW1lICQqX2xza2VsIC0taW5maXggbGxpbmtlZCBcXFxuK1x0XHQtLWxza2VsIC0tc2tlbCAkQCAkXHUwMDNjICQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTClcbitcbiskKExTS0VMU19TSUdORURfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKVx0XFxcbitcdFx0ICAgICQoUFJJVkFURV9LRVkpICQoVkVSSUZJQ0FUSU9OX0NFUlQpIHwgJChSRElSKVxuK1x0JChRKSQoR0VOX1NLRUwpIC0tdGFnICckKEJJTkFSWSkgKHNpZ25lZCknIC0tbmFtZSAkKl9sc2tlbFx0XFxcbitcdFx0LS1pbmZpeCBsbGlua2VkXHRcdFx0XHRcdFx0XFxcbitcdFx0LS1zaWduICctUyAtayAkKFBSSVZBVEVfS0VZKSAtaSAkKFZFUklGSUNBVElPTl9DRVJUKSdcdFxcXG4rXHRcdC0tc2tlbCAkQCAkXHUwMDNjICQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTClcbitcbisuU0VDT05ERVhQQU5TSU9OOlxuKyQoTElOS0VEX1NLRUxTX0gpOiAkKFJESVIpLyUuc2tlbC5oOiAkJChhZGRwcmVmaXggJChSRElSKS8sJCQoJCQqLnNrZWwuaC1kZXBzKSkgXFxcbitcdFx0ICAgJChCUEZUT09MKSB8ICQoUkRJUilcbitcdCQoUSkkKEdFTl9TS0VMKSAtLXRhZyAnJChCSU5BUlkpJyAtLW5hbWUgJCogLS1pbmZpeCBsaW5rZWRcdFxcXG4rXHRcdC0tc2tlbCAkQCAtLXN1YnNrZWwgJChAOi5za2VsLmg9LnN1YnNrZWwuaClcdFx0XFxcbitcdFx0JChhZGRwcmVmaXggJChSRElSKS8sJCgkKi5za2VsLmgtZGVwcykpXHRcdFx0XFxcbitcdFx0JChjYWxsIHNraXBfb25fZmFpbCxTS0VMLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKVxuK1xuK2VuZGlmICMgQlBGX0JVSUxEICE9IG5vbmVcbitcbisuUEhPTlk6IHNrZWxzXG4rc2tlbHM6ICQoQUxMX1NLRUxTKVxuK1xuKyMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdCBmdWxsXG4rIyBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciB0aGUgY29ycmVzcG9uZGluZyAlLm8gZmlsZS5cbisjIFRoZSB2cGF0aCBkaXJlY3RpdmVzIGluc3RydWN0IG1ha2UgdG8gYWxzbyBzZWFyY2ggZm9yIHNrZWwgZmlsZXMgaW5cbisjICQoUkRJUikgaWYgdGhleSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LlxuK3ZwYXRoICUuc2tlbC5oICQoUkRJUilcbit2cGF0aCAlLmxza2VsLmggJChSRElSKVxuK3ZwYXRoICUuc3Vic2tlbC5oICQoUkRJUilcbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgVGVzdCBvYmplY3RzIGFuZCBydW5uZXIgYmluYXJ5XG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbitcbiskKFJESVIpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogJChSRVNPTFZFX0JURklEUykgJChSRElSKS9idGZfZGF0YS5icGYub1xuKyQoUkRJUikvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiBwcml2YXRlIFRFU1RfTkVFRFNfQlRGSURTID0gMVxuK1xuKyMgQ29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXMuXG4rIyBOb3RlOiB3ZSBjZCBpbnRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0c1xuKyMgYXJlIGZvdW5kLiBUaGUgJS50ZXN0LmQgZGVwZW5kZW5jeSBmaWxlcyBhcmUgYSBzaWRlIGVmZmVjdCBvZiB0aGUgLU1NRFxuKyMgYmVsb3c7IHRoZSBzZXBhcmF0ZSBuby1yZWNpcGUgcnVsZSBmb3IgdGhlbSBvcmRlcnMgdGhlIGZpcnN0XG4rIyBjb21waWxhdGlvbiBhZnRlciBza2VsZXRvbiBnZW5lcmF0aW9uIGFuZCByZS1vcmRlcnMgdGVzdCBvYmplY3RcbisjIGNvbXBpbGF0aW9uIHdoZW4gaGVhZGVycyBjaGFuZ2UuXG4rJChURVNUX09CSlMpOiAkKFJESVIpLyUudGVzdC5vOiAkKFRFU1RTX0RJUikvJS5jIHwgJChSRElSKS8lLnRlc3QuZFxuK1x0JChjYWxsIG1zZyxURVNULU9CSiwkKEJJTkFSWSksJEApXG4rXHQkKFEpKGNkICQoQEQpIFx1MDAyNlx1MDAyNiAkKENDKSAtSS4gJChDRkxBR1MpIC1NTUQgLU1UICRAIC1jICQoQ1VSRElSKS8kXHUwMDNjIC1vICQoQEYpKSBcXFxuK1x0XHQkKGlmICQoUEVSTUlTU0lWRV9URVNUUyksJChjYWxsIHNraXBfb25fZmFpbCxURVNUKSlcbitcdCQoaWYgJChURVNUX05FRURTX0JURklEUyksXHRcdFx0XHRcdFxcXG4rXHRcdCQoUSlpZiBbIC1mICRAIF07IHRoZW5cdFx0XHRcdFx0XFxcbitcdFx0JChpZiAkKGZpbHRlciAxLCQoVikpLHRydWUscHJpbnRmICcgICUtOHMlcyAlc1xcbicgXCJCVEZJRFNcIiBcIiBbJChCSU5BUlkpXVwiIFwiJChub3RkaXIgJEApXCIpOyBcXFxuK1x0XHQkKFJFU09MVkVfQlRGSURTKSAtLWJ0ZiAkKFJESVIpL2J0Zl9kYXRhLmJwZi5vICRAO1x0XFxcbitcdFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJEAuQlRGX2lkcyAkQDtcdFx0XFxcbitcdFx0ZmkpXG4rXG4rJChURVNUX0RFUFMpOiAkKFJESVIpLyUudGVzdC5kOiAkKFRFU1RTX0RJUikvJS5jICQoRVhUUkFfSERSUykgJChCUEZPQkopIFxcXG4rXHQgICAgICB8ICQoUkRJUikgJChBTExfU0tFTFMpXG4rXG4raW5jbHVkZSAkKHdpbGRjYXJkICQoVEVTVF9ERVBTKSlcbitcbiskKFJESVIpL2ppdF9kaXNhc21faGVscGVycy5vOiBDRkxBR1MgKz0gJChMTFZNX0NGTEFHUylcbitcbiskKEVYVFJBX09CSlMpOiAkKFJESVIpLyUubzogJS5jICQoRVhUUkFfSERSUykgJChURVNUU19IRFIpICQoQlBGT0JKKSB8ICQoUkRJUilcbitcdCQoY2FsbCBtc2csRVhULU9CSiwkKEJJTkFSWSksJEApXG4rXHQkKFEpJChDQykgJChDRkxBR1MpIC1jICRcdTAwM2MgLW8gJEBcbitcbiskKExJQl9PQkpTKTogJChSRElSKS8lLm86ICQoVE9PTFNESVIpL2xpYi8lLmMgfCAkKFJESVIpXG4rXHQkKGNhbGwgbXNnLExJQi1PQkosJChCSU5BUlkpLCRAKVxuK1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkXHUwMDNjIC1vICRAXG4rXG4rIyBOb24tZmxhdm9yZWQgaW4tc3JjdHJlZSBidWlsZHMgcmVjZWl2ZSBzcGVjaWFsIHRyZWF0bWVudCwgaW4gcGFydGljdWxhclxuKyMgd2UgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKS5cbisuUEhPTlk6IGV4dHJhc1xuK2V4dHJhczogJChpZiAkKFBFUk1JU1NJVkUpLCQod2lsZGNhcmQgJChFWFRSQV9GSUxFUykpLCQoRVhUUkFfRklMRVMpKSB8ICQoUkRJUilcbitpZm5lcSAoJChGTEFWT1IpOiQoT1VUUFVUKSw6JChDVVJESVIpKVxuK2lmbmVxICgkKHN0cmlwICQoRVhUUkFfRklMRVMpKSwpXG4rXHQkKGNhbGwgbXNnLEVYVC1DT1BZLCQoQklOQVJZKSwkKG5vdGRpciAkKEVYVFJBX0ZJTEVTKSkpXG4rXHQkKFEpcnN5bmMgLWFxICQoaWYgJChQRVJNSVNTSVZFKSwtLWlnbm9yZS1taXNzaW5nLWFyZ3MpICQoRVhUUkFfRklMRVMpICQoUkRJUikvXG4rZW5kaWZcbitlbmRpZlxuK1xuKyMgSW4gcGVybWlzc2l2ZSBtb2RlLCBsaW5rIHdoYXRldmVyIHRlc3Qgb2JqZWN0cyB3ZXJlIHN1Y2Nlc3NmdWxseSBidWlsdFxuKyMgKHRoZWlyIGNvbXBpbGF0aW9uIG1heSBoYXZlIGJlZW4gc2tpcHBlZCk7IHRoZSB3aWxkY2FyZCBpbiB0aGUgcmVjaXBlXG4rIyBwaWNrcyB1cCB0aGUgc3Vydml2b3JzIGF0IGxpbmsgdGltZS5cbisjIFByZXJlcXVpc2l0ZSBvcmRlciBpcyBhbHNvIGxpbmsgb3JkZXIgKHRlc3Qgb2JqZWN0cywgZXh0cmEgb2JqZWN0cyxcbisjIGxpYmJwZiwgbGliIG9iamVjdHMpLlxuKyQoT1VUUFVUKS8kKEJJTkFSWSk6ICQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwsJChURVNUX09CSlMpKVx0XHRcXFxuK1x0XHQgICAgICQoRVhUUkFfT0JKUykgJChCUEZPQkopICQoTElCX09CSlMpXHRcdFxcXG4rXHRcdCAgICAgJChUUlVOTkVSX0JQRlRPT0wpICQoT1VUUFVUKS92ZXJpc3RhdFx0XHRcXFxuK1x0XHQgICAgIHwgZXh0cmFzICQoQlBGX09CSlMpXHRcdFx0XHRcXFxuK1x0XHQgICAgICQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKFRFU1RfT0JKUykpXG4rXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4rXHQkKFEpJChDQykgJChDRkxBR1MpXHRcdFx0XHRcdFx0XFxcbitcdFx0JChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKSlcdFxcXG4rXHRcdCQoZmlsdGVyICUuYSAlLm8sJF4pXHRcdFx0XHRcdFxcXG4rXHRcdCQoTERMSUJTKSAkKExMVk1fTERMSUJTKSAkKExERkxBR1MpICQoTExWTV9MREZMQUdTKSAtbyAkQFxuK1x0JChRKWxuIC1zZiAkKGlmICQoRkxBVk9SKSwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFxcXG4rXHRcdCAgICQoUkRJUikvYnBmdG9vbFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjBiMjM3ZjYzOTY3ZGQ2XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoXG5AQCAtMCwwICsxLDk3IEBAXG4rIyEvYmluL2Jhc2hcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI1xuKyMgTGluayBCUEYgb2JqZWN0IGZpbGUocykgd2l0aCBcImJwZnRvb2wgZ2VuIG9iamVjdFwiIGFuZCBnZW5lcmF0ZSBhXG4rIyBza2VsZXRvbiAob3IgbGlnaHQgc2tlbGV0b24pIGhlYWRlciBmcm9tIHRoZSByZXN1bHQuXG4rI1xuKyMgVXNhZ2U6XG4rIyAgIEJQRlRPT0w9XHUwMDNjYnBmdG9vbFx1MDAzZSBnZW5fYnBmX3NrZWwuc2ggLS1uYW1lIE5BTUUgLS1za2VsIE9VVCBbb3B0aW9uc10gT0JKLi4uXG4rI1xuKyMgICAtLW5hbWUgTkFNRSAgICAgICBza2VsZXRvbiBvYmplY3QgbmFtZSAoXCJuYW1lIE5BTUVcIiBmb3IgYnBmdG9vbClcbisjICAgLS1za2VsIE9VVCAgICAgICAgb3V0cHV0IGhlYWRlciAoXCJmb28uc2tlbC5oXCIgb3IgXCJmb28ubHNrZWwuaFwiKVxuKyMgICAtLXN1YnNrZWwgT1VUICAgICBhbHNvIGdlbmVyYXRlIGEgc3Vic2tlbGV0b24gaGVhZGVyIGludG8gT1VUXG4rIyAgIC0tbHNrZWwgICAgICAgICAgIGdlbmVyYXRlIGEgbGlnaHQgc2tlbGV0b24gKGJwZnRvb2wgZ2VuIHNrZWxldG9uIC1MKVxuKyMgICAtLXNpZ24gJ0FSR1MnICAgICBleHRyYSBcImdlbiBza2VsZXRvblwiIGFyZ3MgZm9yIHNpZ25pbmcgKC1TIC1rIC4uIC1pIC4uKVxuKyMgICAtLXRhZyBUQUcgICAgICAgICBidWlsZC1sb2cgdGFnLCBlLmcuIFwidGVzdF9wcm9ncy1ub19hbHUzMlwiXG4rIyAgIC0taW5maXggU1RSICAgICAgIGludGVybWVkaWF0ZSBmaWxlIGluZml4IChkZWZhdWx0OiBsaW5rZWQpLiBDYWxsZXJzXG4rIyAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRpbmcgYm90aCBhIC5za2VsLmggYW5kIGEgLmxza2VsLmggZnJvbSB0aGVcbisjICAgICAgICAgICAgICAgICAgICAgc2FtZSAuYnBmLm8gTVVTVCB1c2UgZGlzdGluY3QgaW5maXhlcywgb3IgcGFyYWxsZWxcbisjICAgICAgICAgICAgICAgICAgICAgYnVpbGRzIHJhY2Ugb24gdGhlIGludGVybWVkaWF0ZSBmaWxlcy5cbisjICAgLS1uby1kZXRlcm1pbmlzbS1jaGVja1xuKyMgICAgICAgICAgICAgICAgICAgICBsaW5rIHRoZSBpbnB1dHMgb25jZSBpbnN0ZWFkIG9mIHRocmVlIHRpbWVzLlxuKyMgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0IHRoZSBvYmplY3QgaXMgcmUtbGlua2VkIHR3aWNlIG1vcmUgYW5kXG4rIyAgICAgICAgICAgICAgICAgICAgIHRoZSAybmQgYW5kIDNyZCByZXN1bHRzIGNvbXBhcmVkLCBhcyBhIHJlZ3Jlc3Npb25cbisjICAgICAgICAgICAgICAgICAgICAgdGVzdCBmb3IgdGhlIGRldGVybWluaXNtIG9mIFwiYnBmdG9vbCBnZW4gb2JqZWN0XCIuXG4rI1xuKyMgVGhlIGJwZnRvb2wgYmluYXJ5IGlzIHRha2VuIGZyb20gJEJQRlRPT0wgKGRlZmF1bHQ6IGJwZnRvb2wgZnJvbSBQQVRIKS5cbisjIE9uIGZhaWx1cmUgYWxsIG91dHB1dHMgYW5kIGludGVybWVkaWF0ZXMgYXJlIHJlbW92ZWQgYW5kIHRoZSBzY3JpcHRcbisjIGV4aXRzIG5vbi16ZXJvOyBwZXJtaXNzaXZlLW1vZGUgc2tpcHBpbmcgaXMgdGhlIGNhbGxlcidzIGJ1c2luZXNzXG4rIyAoc2VlIHNraXBfb25fZmFpbCBpbiBNYWtlZmlsZS5idWlsZHZhcnMpLlxuK1xuK3NldCAtdVxuK1xuK2JwZnRvb2w9JHtCUEZUT09MOi1icGZ0b29sfVxuK25hbWU9Jycgc2tlbD0nJyBzdWJza2VsPScnIHRhZz0nJyBzaWduX2FyZ3M9JycgaW5maXg9bGlua2VkXG4rbHNrZWw9MCBkZXRfY2hlY2s9MVxuK1xuK3doaWxlIFsgJCMgLWd0IDAgXTsgZG9cbitcdGNhc2UgXCIkMVwiIGluXG4rXHQtLW5hbWUpXHRcdG5hbWU9JDI7IHNoaWZ0IDIgOztcbitcdC0tc2tlbClcdFx0c2tlbD0kMjsgc2hpZnQgMiA7O1xuK1x0LS1zdWJza2VsKVx0c3Vic2tlbD0kMjsgc2hpZnQgMiA7O1xuK1x0LS10YWcpXHRcdHRhZz0kMjsgc2hpZnQgMiA7O1xuK1x0LS1pbmZpeClcdGluZml4PSQyOyBzaGlmdCAyIDs7XG4rXHQtLXNpZ24pXHRcdHNpZ25fYXJncz0kMjsgc2hpZnQgMiA7O1xuK1x0LS1sc2tlbClcdGxza2VsPTE7IHNoaWZ0IDs7XG4rXHQtLW5vLWRldGVybWluaXNtLWNoZWNrKSBkZXRfY2hlY2s9MDsgc2hpZnQgOztcbitcdC0tKVx0XHRzaGlmdDsgYnJlYWsgOztcbitcdC0qKVx0XHRlY2hvIFwiJDA6IHVua25vd24gb3B0aW9uOiAkMVwiIFx1MDAzZVx1MDAyNjI7IGV4aXQgMSA7O1xuK1x0KilcdFx0YnJlYWsgOztcbitcdGVzYWNcbitkb25lXG4rXG4raWYgWyAteiBcIiRuYW1lXCIgXSB8fCBbIC16IFwiJHNrZWxcIiBdIHx8IFsgJCMgLWVxIDAgXTsgdGhlblxuK1x0ZWNobyBcInVzYWdlOiAkMCAtLW5hbWUgTkFNRSAtLXNrZWwgT1VUIFtvcHRpb25zXSBPQkouLi5cIiBcdTAwM2VcdTAwMjYyXG4rXHRleGl0IDFcbitmaVxuK1xuK2Jhc2U9JHtza2VsJS5za2VsLmh9XG4rYmFzZT0ke2Jhc2UlLmxza2VsLmh9XG4rdDE9JGJhc2UuJHtpbmZpeH0xLm9cbit0Mj0kYmFzZS4ke2luZml4fTIub1xuK3QzPSRiYXNlLiR7aW5maXh9My5vXG4rXG4rZmFpbCgpIHtcbitcdHJtIC1mIFwiJHNrZWxcIiAke3N1YnNrZWw6K1wiJHN1YnNrZWxcIn0gXCIkdDFcIiBcIiR0MlwiIFwiJHQzXCJcbitcdGV4aXQgMVxuK31cbitcbitpZiBbICQjIC1ndCAxIF07IHRoZW5cbitcdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ0xJTkstQlBGJyBcIiR7dGFnOitbJHRhZ10gfSQoYmFzZW5hbWUgXCIkYmFzZVwiKS5icGYub1wiIFx1MDAzZVx1MDAyNjJcbitmaVxuK3ByaW50ZiAnICAlLTEycyAlc1xcbicgJ0dFTi1TS0VMJyBcIiR7dGFnOitbJHRhZ10gfSQoYmFzZW5hbWUgXCIkc2tlbFwiKVwiIFx1MDAzZVx1MDAyNjJcbitcbitcIiRicGZ0b29sXCIgZ2VuIG9iamVjdCBcIiR0MVwiIFwiJEBcIiB8fCBmYWlsXG4rZmluYWw9JHQxXG4raWYgWyBcIiRkZXRfY2hlY2tcIiAtZXEgMSBdOyB0aGVuXG4rXHRcIiRicGZ0b29sXCIgZ2VuIG9iamVjdCBcIiR0MlwiIFwiJHQxXCIgfHwgZmFpbFxuK1x0XCIkYnBmdG9vbFwiIGdlbiBvYmplY3QgXCIkdDNcIiBcIiR0MlwiIHx8IGZhaWxcbitcdGlmICEgY21wIC1zIFwiJHQyXCIgXCIkdDNcIjsgdGhlblxuK1x0XHRlY2hvIFwiJDA6IGJwZnRvb2wgZ2VuIG9iamVjdCBpcyBub3QgZGV0ZXJtaW5pc3RpYyBmb3IgJHNrZWxcIiBcdTAwM2VcdTAwMjYyXG4rXHRcdGZhaWxcbitcdGZpXG4rXHRmaW5hbD0kdDNcbitmaVxuK1xuK2ZsYWdzPVxuK1sgXCIkbHNrZWxcIiAtZXEgMSBdIFx1MDAyNlx1MDAyNiBmbGFncz0tTFxuKyMgJHNpZ25fYXJncyBpbnRlbnRpb25hbGx5IHVucXVvdGVkOiBpdCBpcyBhIGxpc3Qgb2YgYnBmdG9vbCBhcmd1bWVudHNcbisjIHNoZWxsY2hlY2sgZGlzYWJsZT1TQzIwODZcbitcIiRicGZ0b29sXCIgZ2VuIHNrZWxldG9uICRzaWduX2FyZ3MgJGZsYWdzIFwiJGZpbmFsXCIgbmFtZSBcIiRuYW1lXCIgXHUwMDNlIFwiJHNrZWxcIiB8fCBmYWlsXG4rXG4raWYgWyAtbiBcIiRzdWJza2VsXCIgXTsgdGhlblxuK1x0XCIkYnBmdG9vbFwiIGdlbiBzdWJza2VsZXRvbiBcIiRmaW5hbFwiIG5hbWUgXCIkbmFtZVwiIFx1MDAzZSBcIiRzdWJza2VsXCIgfHwgZmFpbFxuK2ZpXG4rXG4rcm0gLWYgXCIkdDFcIiBcIiR0MlwiIFwiJHQzXCJcbitleGl0IDBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEzOjI5OjI0LjM2MDA2ODMyMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NjkxMTg2MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBUaGlzIEJQRiBTZWxmdGVzdHMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIGhlcmUsIGFuZCBpdCdzIGFsbCBhYm91dCByZWZhY3RvcmluZyB0aGUgYnVpbGQgc3lzdGVtIGZvciB0aGUgQlBGIHNlbGZ0ZXN0cy4gU3BlY2lmaWNhbGx5LCBpdCdzIG1lc3Npbmcgd2l0aCB0aGUgYE1ha2VmaWxlYCBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuIFRoZXkncmUgc3BsaXR0aW5nIGl0IHVwIGludG8gYE1ha2VmaWxlLmJ1aWxkdmFyc2AsIGBNYWtlZmlsZS5ydW5uZXJgLCBhbmQgYWRkaW5nIGBnZW5fYnBmX3NrZWwuc2hgLiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIGFwcHJvYWNoIGZvciBjb21wbGV4IGJ1aWxkIHN5c3RlbXM7IGl0IG1ha2VzIHRoaW5ncyBtb3JlIG9yZ2FuaXplZCBhbmQgcG90ZW50aWFsbHkgc3BlZWRzIHVwIHBhcmFsbGVsIGJ1aWxkcywgd2hpY2ggSSBhcHByZWNpYXRlLlxuXG5JJ3ZlIHRha2VuIGEgY2xvc2UgbG9vaywgYW5kIGNvbmZpcm1lZCB0aGF0IHRoZSBjaGFuZ2VzIGFyZSBpc29sYXRlZCB0byB0aGlzIHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUuIEl0IGRvZXNuJ3QgdG91Y2ggYW55IGNvcmUga2VybmVsIGNvZGUsIGFueSBkcml2ZXJzLCBvciBhbnl0aGluZyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMuIEl0J3Mgc3RyaWN0bHkgYWJvdXQgaG93IHRoZSB0ZXN0cyB0aGVtc2VsdmVzIGFyZSBidWlsdCBhbmQgcnVuLlxuXG5UaGVyZWZvcmUsIGdpdmVuIHRoYXQgaXQncyBqdXN0IGJ1aWxkIHN5c3RlbSBjaGFuZ2VzIGZvciBzZWxmdGVzdHMsIEknbSBnb2luZyB0byBmbGFnIHRoaXMgYXMgbm90IGJlaW5nIHJlbGV2YW50IGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTM2OCwiT3V0cHV0VG9rZW5zIjo2NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEzOjI5OjMwLjAyOTE5MTE5NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMyNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgYnVpbGQgc3lzdGVtIGZvciBCUEYgc2VsZnRlc3RzIChNYWtlZmlsZXMgYW5kIGEgc2hlbGwgc2NyaXB0KS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGJ1aWxkIHN5c3RlbSBmb3IgQlBGIHNlbGZ0ZXN0cyAoTWFrZWZpbGVzIGFuZCBhIHNoZWxsIHNjcmlwdCkuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflown44pd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-22 13:15:10 +0000 UTC FinishedAt: 2026-07-22 13:29:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEzOjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGJ1aWxkIHN5c3RlbSBmb3IgQlBGIHNlbGZ0ZXN0cyAoTWFrZWZpbGVzIGFuZCBhIHNoZWxsIHNjcmlwdCkuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEzOjI5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGUwY2E5MGJiN2ZhMzczZWM4ZjdlNGZmMTc2NGY4MWVhYmNjYTk2NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDIyIDEzOjI5OjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZVxuaW5kZXggYjY0MmVlNDg5ZWE2NDAuLmEzYWI1MjVmN2RmYWJiIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbkBAIC0xLDk2ICYjNDM7MSw0NCBAQFxuICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I1xuJiM0MzsjIEJQRiBzZWxmdGVzdHMgYnVpbGQuXG4mIzQzOyNcbiYjNDM7IyBUaGUgYnVpbGQgaXMgc3BsaXQgaW4gdHdvIGxheWVyczpcbiYjNDM7I1xuJiM0MzsjICAgTWFrZWZpbGUgKHRoaXMgZmlsZSlcbiYjNDM7IyAgICAgICBFdmVyeXRoaW5nIHRoYXQgZXhpc3RzIG9uY2U6IGtub2JzIGFuZCB0b29sY2hhaW4gc2V0dXAsIGxpYmJwZiAvXG4mIzQzOyMgICAgICAgYnBmdG9vbCAvIHJlc29sdmVfYnRmaWRzIHN1Yi1idWlsZHMsIHZtbGludXguaCwgc2lnbmluZyBrZXlzLFxuJiM0MzsjICAgICAgIGdlbmVyYXRlZCB0ZXN0cy5oIGhlYWRlcnMsIHNoYXJlZCBoZWxwZXIgb2JqZWN0cywgc3RhbmRhbG9uZSB0ZXN0XG4mIzQzOyMgICAgICAgYmluYXJpZXMgKGJlbmNoLCB2ZXJpc3RhdCwgdGVzdF92ZXJpZmllciwgeHNrKiwgLi4uKSwga2VybmVsIHRlc3RcbiYjNDM7IyAgICAgICBtb2R1bGVzLCBkb2NzLCBhbmQgdGhlIGtzZWxmdGVzdCBsaWIubWsgcnVuL2luc3RhbGwvY2xlYW5cbiYjNDM7IyAgICAgICBjb250cmFjdC5cbiYjNDM7I1xuJiM0MzsjICAgTWFrZWZpbGUucnVubmVyXG4mIzQzOyMgICAgICAgT25lIHRlc3QtcnVubmVyIGluc3RhbmNlICh0ZXN0X3Byb2dzLCB0ZXN0X3Byb2dzLVx1MDAzY2ZsYXZvclx1MDAzZSxcbiYjNDM7IyAgICAgICB0ZXN0X21hcHMpOiBCUEYgb2JqZWN0cywgc2tlbGV0b24gaGVhZGVycywgdGVzdCBvYmplY3RzIGFuZCB0aGVcbiYjNDM7IyAgICAgICBmaW5hbCBydW5uZXIgYmluYXJ5LiBJbnZva2VkIGZyb20gaGVyZSBvbmNlIHBlciBpbnN0YW5jZTsgZWFjaFxuJiM0MzsjICAgICAgIGludm9jYXRpb24gaXMgYW4gaW5kZXBlbmRlbnQgc2luZ2xlLWZsYXZvciBuYW1lc3BhY2UsIHNvIHRoZVxuJiM0MzsjICAgICAgIHJ1bm5lciBpcyBwbGFpbiBtYWtlIHdpdGhvdXQgJCQtZXNjYXBpbmcgb3IgZXZhbC5cbiYjNDM7I1xuJiM0MzsjICAgZ2VuX2JwZl9za2VsLnNoXG4mIzQzOyMgICAgICAgTGlua3MgQlBGIG9iamVjdHMgdmlhIGJwZnRvb2wgYW5kIGdlbmVyYXRlcyAobGlnaHQpIHNrZWxldG9ucztcbiYjNDM7IyAgICAgICBvbmUgc2NyaXB0IGluc3RlYWQgb2YgZm91ciBuZWFyLWlkZW50aWNhbCBtYWtlIHJlY2lwZXMuXG4mIzQzOyNcbiYjNDM7IyBTaGFyZWQgZGVmaW5pdGlvbnMgKHBhdGhzLCBmbGFncywgcGVybWlzc2l2ZS1tb2RlIGhlbHBlcnMpIGxpdmUgaW5cbiYjNDM7IyBNYWtlZmlsZS5idWlsZHZhcnMsIGluY2x1ZGVkIGJ5IGJvdGggbGF5ZXJzLlxuJiM0MztcbiBpbmNsdWRlIC4uLy4uLy4uL2J1aWxkL0J1aWxkLmluY2x1ZGVcbiBpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuYXJjaFxuIGluY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5pbmNsdWRlXG4gXG4tQ1hYID89ICQoQ1JPU1NfQ09NUElMRSlnJiM0MzsmIzQzO1xuLU9CSkNPUFkgPz0gJChDUk9TU19DT01QSUxFKW9iamNvcHlcbi1cbi1DVVJESVIgOj0gJChhYnNwYXRoIC4pXG4tVE9PTFNESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uKVxuLUxJQkRJUiA6PSAkKFRPT0xTRElSKS9saWJcbi1CUEZESVIgOj0gJChMSUJESVIpL2JwZlxuLVRPT0xTSU5DRElSIDo9ICQoVE9PTFNESVIpL2luY2x1ZGVcbi1UT09MU0FSQ0hJTkNESVIgOj0gJChUT09MU0RJUikvYXJjaC8kKFNSQ0FSQ0gpL2luY2x1ZGVcbi1CUEZUT09MRElSIDo9ICQoVE9PTFNESVIpL2JwZi9icGZ0b29sXG4tQVBJRElSIDo9ICQoVE9PTFNJTkNESVIpL3VhcGlcbi1pZm5lcSAoJChPKSwpXG4tR0VORElSIDo9ICQoTykvaW5jbHVkZS9nZW5lcmF0ZWRcbi1lbHNlXG4tR0VORElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLi8uLi9pbmNsdWRlL2dlbmVyYXRlZClcbi1lbmRpZlxuLUdFTkhEUiA6PSAkKEdFTkRJUikvYXV0b2NvbmYuaFxuLVBLR19DT05GSUcgPz0gJChDUk9TU19DT01QSUxFKXBrZy1jb25maWdcbi1cbi1pZm5lcSAoJCh3aWxkY2FyZCAkKEdFTkhEUikpLClcbi0gIEdFTkZMQUdTIDo9IC1ESEFWRV9HRU5IRFJcbiYjNDM7IyBUaGVzZSBwcm9iZXMgZ2F0ZSB0aGUgZmxhdm9yIGxpc3QsIHdoaWNoIG11c3QgYmUgZmluYWwgYmVmb3JlIGxpYi5tayBpc1xuJiM0MzsjIGluY2x1ZGVkOyBrZWVwIHZhbHVlcyBjb25zaXN0ZW50IHdpdGggTWFrZWZpbGUuYnVpbGR2YXJzLlxuJiM0MztpZmVxICgkKG9yaWdpbiBCUEZfR0NDKSx1bmRlZmluZWQpXG4mIzQzO0JQRl9HQ0MgOj0gJChzaGVsbCBjb21tYW5kIC12IGJwZi1nY2M7KVxuIGVuZGlmXG4tXG4tQlBGX0dDQ1x0XHQ/PSAkKHNoZWxsIGNvbW1hbmQgLXYgYnBmLWdjYzspXG4taWZkZWYgQVNBTlxuLVNBTl9DRkxBR1MgXHQ/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcbi1lbHNlXG4tU0FOX0NGTEFHU1x0Pz1cbi1lbmRpZlxuLVNBTl9MREZMQUdTXHQ/PSAkKFNBTl9DRkxBR1MpXG4tUkVMRUFTRVx0XHQ/PVxuLU9QVF9GTEFHU1x0Pz0gJChpZiAkKFJFTEVBU0UpLC1PMiwtTzApXG4tXG4tTElCRUxGX0NGTEFHU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWNmbGFncyAyXHUwMDNlL2Rldi9udWxsKVxuLUxJQkVMRl9MSUJTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyXHUwMDNlL2Rldi9udWxsIHx8IGVjaG8gLWxlbGYpXG4tXG4tU0tJUF9ET0NTXHQ/PVxuLVNLSVBfTExWTVx0Pz1cbi1TS0lQX0xJQkJGRFx0Pz1cbi1TS0lQX0NSWVBUT1x0Pz1cbi1cbi0jIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxuLSMgYmVuY2htYXJrIGNvbXBpbGF0aW9uIGZhaWx1cmUgaXMgZmF0YWwuIFNldCB0byAwIHRvIHRvbGVyYXRlIGZhaWx1cmVzXG4tIyBhbmQgY29udGludWUgYnVpbGRpbmcgdGhlIHJlbWFpbmluZyB0ZXN0cy5cbi1CUEZfU1RSSUNUX0JVSUxEID89IDFcbi1QRVJNSVNTSVZFIDo9ICQoZmlsdGVyIDAsJChCUEZfU1RSSUNUX0JVSUxEKSlcbi1cbi1pZmVxICgkKHNyY3RyZWUpLClcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKENVUkRJUikpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLWVuZGlmXG4tXG4tQ09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMVx0XHRcdFx0XFxcbi1cdCAgLVdhbGwgLVdlcnJvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclx0XHRcdFx0XFxcbi1cdCAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZVx0XHRcdFx0XHRcXFxuLVx0ICAkKEdFTkZMQUdTKSAkKFNBTl9DRkxBR1MpICQoTElCRUxGX0NGTEFHUylcdFx0XHRcXFxuLVx0ICAtSSQoQ1VSRElSKSAtSSQoSU5DTFVERV9ESVIpIC1JJChHRU5ESVIpIC1JJChMSUJESVIpXHRcdFxcXG4tXHQgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVClcdFxcXG4tXHQgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcbi1MREZMQUdTICYjNDM7PSAkKFNBTl9MREZMQUdTKVxuLUxETElCUyAmIzQzOz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkXG4tXG4tUENBUF9DRkxBR1NcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJwY2FwIDJcdTAwM2UvZGV2L251bGwgXHUwMDI2XHUwMDI2IGVjaG8gXCYjMzQ7LURUUkFGRklDX01PTklUT1I9MVwmIzM0Oylcbi1QQ0FQX0xJQlNcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGlicGNhcCAyXHUwMDNlL2Rldi9udWxsKVxuLUxETElCUyAmIzQzOz0gJChQQ0FQX0xJQlMpXG4tQ0ZMQUdTICYjNDM7PSAkKENPTU1PTl9DRkxBR1MpICQoUENBUF9DRkxBR1MpXG4tXG4tIyBTb21lIHV0aWxpdHkgZnVuY3Rpb25zIHVzZSBMTFZNIGxpYnJhcmllc1xuLWppdF9kaXNhc21faGVscGVycy5jLUNGTEFHUyA9ICQoTExWTV9DRkxBR1MpXG4tXG4taWZuZXEgKCQoTExWTSksKVxuLSMgU2lsZW5jZSBzb21lIHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgd2l0aCBjbGFuZ1xuLUNGTEFHUyAmIzQzOz0gLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50XG4tZW5kaWZcbi1cbi0jIENoZWNrIHdoZXRoZXIgYnBmIGNwdT12NCBpcyBzdXBwb3J0ZWQgb3Igbm90IGJ5IGNsYW5nXG4gaWZuZXEgKCQoc2hlbGwgJChDTEFORykgLS10YXJnZXQ9YnBmIC1tY3B1PWhlbHAgMlx1MDAzZVx1MDAyNjEgfCBncmVwICYjMzk7djQmIzM5OyksKVxuIENMQU5HX0NQVVY0IDo9IDFcbiBlbmRpZlxuIFxuLSMgQ2hlY2sgd2hldGhlciBjbGFuZyBzdXBwb3J0cyBCUEYgYWRkcmVzcyBzYW5pdGl6ZXIgKHJlcXVpcmVzIExMVk0gMjImIzQzOylcbi1DTEFOR19IQVNfQVJFTkFfQVNBTiA6PSAkKHNoZWxsIGVjaG8gJiMzOTtpbnQgeDsmIzM5OyB8IFxcXG4tXHQkKENMQU5HKSAtLXRhcmdldD1icGYgLWZzYW5pdGl6ZT1rZXJuZWwtYWRkcmVzcyBcXFxuLVx0LW1sbHZtIC1hc2FuLXNoYWRvdy1hZGRyLXNwYWNlPTEgXFxcbi1cdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlx1MDAzZS9kZXYvbnVsbCBcdTAwMjZcdTAwMjYgZWNobyAxKVxuLVxuICMgT3JkZXIgY29ycmVzcG9uZCB0byAmIzM5O21ha2UgcnVuX3Rlc3RzJiMzOTsgb3JkZXJcbiBURVNUX0dFTl9QUk9HUyA9IHRlc3RfdmVyaWZpZXIgdGVzdF90YWcgdGVzdF9tYXBzIHRlc3RfbHJ1X21hcCB0ZXN0X3Byb2dzIFxcXG4gXHR0ZXN0X3NvY2ttYXAgXFxcbkBAIC0xMDIsMTYgJiM0Mzs1MCw2IEBAIFRFU1RfSU5TVF9TVUJESVJTIDo9IG5vX2FsdTMyXG4gaWZuZXEgKCQoQlBGX0dDQyksKVxuIFRFU1RfR0VOX1BST0dTICYjNDM7PSB0ZXN0X3Byb2dzLWJwZl9nY2NcbiBURVNUX0lOU1RfU1VCRElSUyAmIzQzOz0gYnBmX2djY1xuLVxuLSMgVGhlIGZvbGxvd2luZyB0ZXN0cyBjb250YWluIEMgY29kZSB0aGF0LCBhbHRob3VnaCB0ZWNobmljYWxseSBsZWdhbCxcbi0jIHRyaWdnZXJzIEdDQyB3YXJuaW5ncyB0aGF0IGNhbm5vdCBiZSBkaXNhYmxlZDogZGVjbGFyYXRpb24gb2Zcbi0jIGFub255bW91cyBzdHJ1Y3QgdHlwZXMgaW4gZnVuY3Rpb24gcGFyYW1ldGVyIGxpc3RzLlxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX25hbWVzcGFjaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWNraW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9zeW50YXguYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tXG4gZW5kaWZcbiBcbiBpZm5lcSAoJChDTEFOR19DUFVWNCksKVxuQEAgLTEzMiwxMCAmIzQzOzcwLDYgQEAgVEVTVF9QUk9HUyA6PSB0ZXN0X2ttb2Quc2ggXFxcbiBURVNUX1BST0dTX0VYVEVOREVEIDo9IFxcXG4gXHRpbWFfc2V0dXAuc2ggdmVyaWZ5X3NpZ19zZXR1cC5zaFxuIFxuLVRFU1RfS01PRFMgOj0gYnBmX3Rlc3Rtb2Qua28gYnBmX3Rlc3Rfbm9fY2ZpLmtvIGJwZl90ZXN0X21vZG9yZGVyX3gua28gXFxcbi1cdGJwZl90ZXN0X21vZG9yZGVyX3kua28gYnBmX3Rlc3RfcnFzcGlubG9jay5rb1xuLVRFU1RfS01PRF9UQVJHRVRTID0gJChhZGRwcmVmaXggJChPVVRQVVQpLywkKFRFU1RfS01PRFMpKVxuLVxuICMgQ29tcGlsZSBidXQgbm90IHBhcnQgb2YgJiMzOTttYWtlIHJ1bl90ZXN0cyYjMzk7XG4gVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQgPSBcXFxuIFx0YmVuY2ggXFxcbkBAIC0xNDgsMTEgJiM0Mzs4MiwxMCBAQCBURVNUX0dFTl9QUk9HU19FWFRFTkRFRCA9IFxcXG4gXHR4ZHBfc3lucHJveHkgXFxcbiBcdHhza3hjZWl2ZXJcbiBcbi1URVNUX0dFTl9GSUxFUyAmIzQzOz0gJChURVNUX0tNT0RTKSBsaWJ1cmFuZG9tX3JlYWQuc28gdXJhbmRvbV9yZWFkIHNpZ24tZmlsZSB1cHJvYmVfbXVsdGlcbiYjNDM7VEVTVF9LTU9EUyA/PSBicGZfdGVzdG1vZC5rbyBicGZfdGVzdF9ub19jZmkua28gYnBmX3Rlc3RfbW9kb3JkZXJfeC5rbyBcXFxuJiM0MztcdGJwZl90ZXN0X21vZG9yZGVyX3kua28gYnBmX3Rlc3RfcnFzcGlubG9jay5rb1xuIFxuLWlmbmVxICgkKFYpLDEpXG4tc3VibWFrZV9leHRyYXMgOj0gZmVhdHVyZV9kaXNwbGF5PTBcbi1lbmRpZlxuJiM0MztURVNUX0dFTl9GSUxFUyAmIzQzOz0gJChURVNUX0tNT0RTKSBsaWJ1cmFuZG9tX3JlYWQuc28gdXJhbmRvbV9yZWFkIHNpZ24tZmlsZSB1cHJvYmVfbXVsdGlcbiBcbiAjIG92ZXJyaWRlIGxpYi5tayYjMzk7cyBkZWZhdWx0IHJ1bGVzXG4gT1ZFUlJJREVfVEFSR0VUUyA6PSAxXG5AQCAtMTcxLDcgJiM0MzsxMDQsNyBAQCBlbmRlZlxuIGluY2x1ZGUgLi4vbGliLm1rXG4gXG4gTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyA6PSBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHNcbi1DSEVDS19GRUFUIDo9ICQoZmlsdGVyLW91dCAkKE5PTl9DSEVDS19GRUFUX1RBUkdFVFMpLCQob3IgJChNQUtFQ01ER09BTFMpLCBcJiMzNDtub25lXCYjMzQ7KSlcbiYjNDM7Q0hFQ0tfRkVBVCA6PSAkKGZpbHRlci1vdXQgJChOT05fQ0hFQ0tfRkVBVF9UQVJHRVRTKSwkKG9yICQoTUFLRUNNREdPQUxTKSxhbGwpKVxuIGlmbmVxICgkKENIRUNLX0ZFQVQpLClcbiBGRUFUVVJFX1VTRVIgOj0gLnNlbGZ0ZXN0c1xuIEZFQVRVUkVfVEVTVFMgOj0gbGx2bVxuQEAgLTE4OCw2ICYjNDM7MTIxLDggQEAgb3ZlcnJpZGUgT1VUUFVUIDo9ICQocGF0c3Vic3QgJS8sJSwkKE9VVFBVVCkpXG4gZW5kaWZcbiBlbmRpZlxuIFxuJiM0MztpbmNsdWRlIE1ha2VmaWxlLmJ1aWxkdmFyc1xuJiM0MztcbiBpZm5lcSAoJChTS0lQX0xMVk0pLDEpXG4gaWZlcSAoJChmZWF0dXJlLWxsdm0pLDEpXG4gICBMTFZNX0NGTEFHUyAgJiM0Mzs9IC1ESEFWRV9MTFZNX1NVUFBPUlRcbkBAIC0yMTMsMzYgJiM0MzsxNDgsMTEgQEAgaWZlcSAoJChmZWF0dXJlLWxsdm0pLDEpXG4gZW5kaWZcbiBlbmRpZlxuIFxuLVNDUkFUQ0hfRElSIDo9ICQoT1VUUFVUKS90b29sc1xuLUJVSUxEX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9idWlsZFxuLUlOQ0xVREVfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2luY2x1ZGVcbi1CUEZPQkogOj0gJChCVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYVxuLWlmbmVxICgkKENST1NTX0NPTVBJTEUpLClcbi1IT1NUX0JVSUxEX0RJUlx0XHQ6PSAkKEJVSUxEX0RJUikvaG9zdFxuLUhPU1RfU0NSQVRDSF9ESVJcdDo9ICQoT1VUUFVUKS9ob3N0LXRvb2xzXG4tSE9TVF9JTkNMVURFX0RJUlx0Oj0gJChIT1NUX1NDUkFUQ0hfRElSKS9pbmNsdWRlXG4tZWxzZVxuLUhPU1RfQlVJTERfRElSXHRcdDo9ICQoQlVJTERfRElSKVxuLUhPU1RfU0NSQVRDSF9ESVJcdDo9ICQoU0NSQVRDSF9ESVIpXG4tSE9TVF9JTkNMVURFX0RJUlx0Oj0gJChJTkNMVURFX0RJUilcbi1lbmRpZlxuLUhPU1RfQlBGT0JKIDo9ICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYVxuLVJFU09MVkVfQlRGSURTIDo9ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzL3Jlc29sdmVfYnRmaWRzXG4tVk1MSU5VWF9CVEZfUEFUSFMgPz0gJChpZiAkKE8pLCQoTykvdm1saW51eClcdFx0XHRcdFxcXG4tXHRcdCAgICAgJChpZiAkKEtCVUlMRF9PVVRQVVQpLCQoS0JVSUxEX09VVFBVVCkvdm1saW51eClcdFxcXG4tXHRcdCAgICAgLi4vLi4vLi4vLi4vdm1saW51eFx0XHRcdFx0XFxcbi1cdFx0ICAgICAvc3lzL2tlcm5lbC9idGYvdm1saW51eFx0XHRcdFx0XFxcbi1cdFx0ICAgICAvYm9vdC92bWxpbnV4LSQoc2hlbGwgdW5hbWUgLXIpXG4tVk1MSU5VWF9CVEYgPz0gJChhYnNwYXRoICQoZmlyc3R3b3JkICQod2lsZGNhcmQgJChWTUxJTlVYX0JURl9QQVRIUykpKSlcbi1pZmVxICgkKFZNTElOVVhfQlRGKSwpXG4tJChlcnJvciBDYW5ub3QgZmluZCBhIHZtbGludXggZm9yIFZNTElOVVhfQlRGIGF0IGFueSBvZiBcJiMzNDskKFZNTElOVVhfQlRGX1BBVEhTKVwmIzM0Oylcbi1lbmRpZlxuLVxuICMgRGVmaW5lIHNpbXBsZSBhbmQgc2hvcnQgYG1ha2UgdGVzdF9wcm9nc2AsIGBtYWtlIHRlc3RfbWFwc2AsIGV0YyB0YXJnZXRzXG4gIyB0byBidWlsZCBpbmRpdmlkdWFsIHRlc3RzLlxuICMgTk9URTogU2VtaWNvbG9uIGF0IHRoZSBlbmQgaXMgY3JpdGljYWwgdG8gb3ZlcnJpZGUgbGliLm1rJiMzOTtzIGRlZmF1bHQgc3RhdGljXG4gIyBydWxlIGZvciBiaW5hcmllcy5cbi0kKG5vdGRpciAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfS01PRFMpXHRcdFx0XHRcXFxuJiM0MzskKG5vdGRpciAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfS01PRF9UQVJHRVRTKVx0XHRcdFx0XFxcbiBcdCAkKFRFU1RfR0VOX1BST0dTX0VYVEVOREVEKSk6ICU6ICQoT1VUUFVUKS8lIDtcbiBcbiAjIHNvcnQgcmVtb3ZlcyBsaWJicGYgZHVwbGljYXRlcyB3aGVuIG5vdCBjcm9zcy1idWlsZGluZ1xuQEAgLTI1NiwxMSAmIzQzOzE2NiwxNCBAQCAkKE1BS0VfRElSUyk6XG4gXG4gJChPVVRQVVQpLyUubzogJS5jXG4gXHQkKGNhbGwgbXNnLENDLCwkQClcbi1cdCQoUSkkKENDKSAkKENGTEFHUykgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEBcbiYjNDM7XHQkKFEpJChDQykgJChDRkxBR1MpIC1jICQoZmlsdGVyICUuYywkXikgLW8gJEBcbiBcbiYjNDM7IyBIZWFkZXJzIG1heSBhcHBlYXIgYW1vbmcgdGhlIHByZXJlcXVpc2l0ZXMgZm9yIGRlcGVuZGVuY3kgdHJhY2tpbmc7XG4mIzQzOyMgdGhleSBtdXN0IG5vdCByZWFjaCB0aGUgY2xhbmcvZ2NjIGNvbW1hbmQgbGluZSAoY2xhbmcgdHJlYXRzIGEgYmFyZSAuaFxuJiM0MzsjIGFyZ3VtZW50IGFzIGEgcHJlY29tcGlsZWQtaGVhZGVyIGpvYiBhbmQgcmVmdXNlcyAtbykuXG4gJChPVVRQVVQpLyU6JS5jXG4gXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4tXHQkKFEpJChMSU5LLmMpICReICQoTERMSUJTKSAtbyAkQFxuJiM0MztcdCQoUSkkKExJTksuYykgJChmaWx0ZXItb3V0ICUuaCwkXikgJChMRExJQlMpIC1vICRAXG4gXG4gIyBMTFZNJiMzOTtzIGxkLmxsZCBkb2VzbiYjMzk7dCBzdXBwb3J0IGFsbCB0aGUgYXJjaGl0ZWN0dXJlcywgc28gdXNlIGl0IG9ubHkgb24geDg2XG4gaWZlcSAoJChTUkNBUkNIKSwkKGZpbHRlciAkKFNSQ0FSQ0gpLHg4NiByaXNjdikpXG5AQCAtMjk3LDYgJiM0MzsyMTAsMTMgQEAgJChPVVRQVVQpL3NpZ24tZmlsZTogLi4vLi4vLi4vLi4vc2NyaXB0cy9zaWduLWZpbGUuY1xuIFx0XHQgICRcdTAwM2MgLW8gJEAgXFxcbiBcdFx0ICAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYmNyeXB0byAyXHUwMDNlIC9kZXYvbnVsbCB8fCBlY2hvIC1sY3J5cHRvKVxuIFxuJiM0MzsjIExpbmtpbmcgdXByb2JlX211bHRpIGNhbiBmYWlsIGR1ZSB0byByZWxvY2F0aW9uIG92ZXJmbG93cyBvbiBtaXBzLlxuJiM0MzskKE9VVFBVVCkvdXByb2JlX211bHRpOiBDRkxBR1MgJiM0Mzs9ICQoaWYgJChmaWx0ZXIgbWlwcywgJChBUkNIKSksLW14Z290KVxuJiM0MzskKE9VVFBVVCkvdXByb2JlX211bHRpOiB1cHJvYmVfbXVsdGkuYyB1cHJvYmVfbXVsdGkubGRcbiYjNDM7XHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4mIzQzO1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtV2wsLVQsdXByb2JlX211bHRpLmxkIC1PMCAkKExERkxBR1MpIFx0XFxcbiYjNDM7XHRcdCQoZmlsdGVyLW91dCAlLmxkLCReKSAkKExETElCUykgLW8gJEBcbiYjNDM7XG4gIyBUaGlzIHNob3VsZCByZWFsbHkgYmUgYSBncm91cGVkIHRhcmdldCwgYnV0IG1ha2UgdmVyc2lvbnMgYmVmb3JlIDQuMyBkb24mIzM5O3RcbiAjIHN1cHBvcnQgdGhhdCBmb3IgcmVndWxhciBydWxlcy4gSG93ZXZlciwgcGF0dGVybiBtYXRjaGluZyBydWxlcyBhcmUgaW1wbGljaXRseVxuICMgdHJlYXRlZCBhcyBncm91cGVkIGV2ZW4gd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBtYWtlLCBzbyBhcyBhIHdvcmthcm91bmQsIHRoZVxuQEAgLTMxMyw0MCAmIzQzOzIzMywxOCBAQCAkKFRFU1RfS01PRF9UQVJHRVRTKTogJChhZGRwcmVmaXggdGVzdF9rbW9kcy8sJChURVNUX0tNT0RTKSlcbiBcdCQoY2FsbCBtc2csTU9ELCwkQClcbiBcdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAtZiB0ZXN0X2ttb2RzLyQoQEYpIF07IHRoZW4gKWNwIHRlc3Rfa21vZHMvJChARikgJEAkKGlmICQoUEVSTUlTU0lWRSksOyBmaSlcbiBcbi1cbi1ERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tQ1JPU1NfQlBGVE9PTCA6PSAkKFNDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbi1UUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKVxuLVVTRV9CT09UU1RSQVAgOj0gXCYjMzQ7XCYjMzQ7XG4tZWxzZVxuLVRSVU5ORVJfQlBGVE9PTCA6PSAkKERFRkFVTFRfQlBGVE9PTClcbi1VU0VfQk9PVFNUUkFQIDo9IFwmIzM0O2Jvb3RzdHJhcC9cJiMzNDtcbi1lbmRpZlxuLVxuIFRFU1RfR0VOX1BST0dTX0VYVEVOREVEICYjNDM7PSAkKFRSVU5ORVJfQlBGVE9PTClcbiBcbiAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfR0VOX1BST0dTX0VYVEVOREVEKTogJChCUEZPQkopXG4gXG4tVEVTVElOR19IRUxQRVJTXHQ6PSAkKE9VVFBVVCkvdGVzdGluZ19oZWxwZXJzLm9cbi1DR1JPVVBfSEVMUEVSU1x0Oj0gJChPVVRQVVQpL2Nncm91cF9oZWxwZXJzLm9cbi1VTlBSSVZfSEVMUEVSUyAgOj0gJChPVVRQVVQpL3VucHJpdl9oZWxwZXJzLm9cbi1UUkFDRV9IRUxQRVJTXHQ6PSAkKE9VVFBVVCkvdHJhY2VfaGVscGVycy5vXG4tSlNPTl9XUklURVJcdFx0Oj0gJChPVVRQVVQpL2pzb25fd3JpdGVyLm9cbi1DQVBfSEVMUEVSU1x0Oj0gJChPVVRQVVQpL2NhcF9oZWxwZXJzLm9cbi1ORVRXT1JLX0hFTFBFUlMgOj0gJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vXG4tXG4tJChPVVRQVVQpL3Rlc3Rfc29ja21hcDogJChDR1JPVVBfSEVMUEVSUykgJChURVNUSU5HX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3RfdGNwbm90aWZ5X3VzZXI6ICQoQ0dST1VQX0hFTFBFUlMpICQoVEVTVElOR19IRUxQRVJTKSAkKFRSQUNFX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3Rfc29ja19maWVsZHM6ICQoQ0dST1VQX0hFTFBFUlMpICQoVEVTVElOR19IRUxQRVJTKVxuLSQoT1VUUFVUKS90ZXN0X3RhZzogJChURVNUSU5HX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3RfbGlyY19tb2RlMl91c2VyOiAkKFRFU1RJTkdfSEVMUEVSUylcbi0kKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZDogJChURVNUSU5HX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3RfbWFwczogJChURVNUSU5HX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6ICQoVEVTVElOR19IRUxQRVJTKSAkKENBUF9IRUxQRVJTKSAkKFVOUFJJVl9IRUxQRVJTKVxuLSQoT1VUUFVUKS94c2subzogJChCUEZPQkopXG4tXG4tQlBGVE9PTCA/PSAkKERFRkFVTFRfQlBGVE9PTClcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBUb29sIHN1Yi1idWlsZHM6IGJwZnRvb2wgYW5kIGxpYmJwZiAoaG9zdCBhbmQsIHdoZW4gY3Jvc3MtY29tcGlsaW5nLFxuJiM0MzsjIHRhcmdldCB2YXJpYW50cykgYW5kIHJlc29sdmVfYnRmaWRzLlxuJiM0MzsjXG4mIzQzOyMgTm90ZSB0aGUgZGVsaWJlcmF0ZSBhc3ltbWV0cnk6IHRoZSBob3N0IGxpYmJwZiBidWlsZHMgd2l0aG91dFxuJiM0MzsjIHNhbml0aXplcnMgYW5kIHdpdGggdGhlIGhvc3QgdG9vbGNoYWluLlxuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MztcbiAkKERFRkFVTFRfQlBGVE9PTCk6ICQod2lsZGNhcmQgJChCUEZUT09MRElSKS8qLltjaF0gJChCUEZUT09MRElSKS9NYWtlZmlsZSkgICAgXFxcbiBcdFx0ICAgICQoSE9TVF9CUEZPQkopIHwgJChIT1NUX0JVSUxEX0RJUikvYnBmdG9vbFxuIFx0JChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcykgIC1DICQoQlBGVE9PTERJUilcdFx0XHQgICAgICAgXFxcbkBAIC0zNzcsMjAgJiM0MzsyNzUsNiBAQCAkKENST1NTX0JQRlRPT0wpOiAkKHdpbGRjYXJkICQoQlBGVE9PTERJUikvKi5bY2hdICQoQlBGVE9PTERJUikvTWFrZWZpbGUpXHRcXFxuIFx0XHQgICAgcHJlZml4PSBERVNURElSPSQoU0NSQVRDSF9ESVIpLyBpbnN0YWxsLWJpblxuIGVuZGlmXG4gXG4taWZuZXEgKCQoU0tJUF9ET0NTKSwxKVxuLWFsbDogZG9jc1xuLWVuZGlmXG4tXG4tZG9jczpcbi1cdCQoUSlSU1QyTUFOX09QVFM9XCYjMzQ7LS1leGl0LXN0YXR1cz0xXCYjMzQ7ICQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcylcdFxcXG4tXHQgICAgICAgICAgICAtZiBNYWtlZmlsZS5kb2NzXHRcdFx0XHRcdFxcXG4tXHQgICAgICAgICAgICBwcmVmaXg9IE9VVFBVVD0kKE9VVFBVVCkvIERFU1RESVI9JChPVVRQVVQpLyAkQFxuLVxuLWRvY3MtY2xlYW46XG4tXHQkKFEpJChNQUtFKSAkKHN1Ym1ha2VfZXh0cmFzKVx0XHRcdFx0XHRcXFxuLVx0ICAgICAgICAgICAgLWYgTWFrZWZpbGUuZG9jc1x0XHRcdFx0XHRcXFxuLVx0ICAgICAgICAgICAgcHJlZml4PSBPVVRQVVQ9JChPVVRQVVQpLyBERVNURElSPSQoT1VUUFVUKS8gJEBcbi1cbiAkKEJQRk9CSik6ICQod2lsZGNhcmQgJChCUEZESVIpLyouW2NoXSAkKEJQRkRJUikvTWFrZWZpbGUpXHRcdCAgICAgICBcXFxuIFx0ICAgJChBUElESVIpL2xpbnV4L2JwZi5oXHRcdFx0XHRcdCAgICAgICBcXFxuIFx0ICAgfCAkKEJVSUxEX0RJUikvbGliYnBmXG5AQCAtNDEyLDE5ICYjNDM7Mjk2LDYgQEAgJChIT1NUX0JQRk9CSik6ICQod2lsZGNhcmQgJChCUEZESVIpLyouW2NoXSAkKEJQRkRJUikvTWFrZWZpbGUpXHRcdCAgICAgICBcXFxuIFx0XHQgICAgREVTVERJUj0kKEhPU1RfU0NSQVRDSF9ESVIpLyBwcmVmaXg9IGFsbCBpbnN0YWxsX2hlYWRlcnNcbiBlbmRpZlxuIFxuLSMgdm1saW51eC5oIGlzIGZpcnN0IGR1bXBlZCB0byBhIHRlbXBvcmFyeSBmaWxlIGFuZCB0aGVuIGNvbXBhcmVkIHRvXG4tIyB0aGUgcHJldmlvdXMgdmVyc2lvbi4gVGhpcyBoZWxwcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZS1idWlsZHMgb2Zcbi0jICQoVFJVTk5FUl9CUEZfT0JKUylcbi0kKElOQ0xVREVfRElSKS92bWxpbnV4Lmg6ICQoVk1MSU5VWF9CVEYpICQoQlBGVE9PTCkgfCAkKElOQ0xVREVfRElSKVxuLWlmZXEgKCQoVk1MSU5VWF9IKSwpXG4tXHQkKGNhbGwgbXNnLEdFTiwsJEApXG4tXHQkKFEpJChCUEZUT09MKSBidGYgZHVtcCBmaWxlICQoVk1MSU5VWF9CVEYpIGZvcm1hdCBjIFx1MDAzZSAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcFxuLVx0JChRKWNtcCAtcyAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcCAkQCB8fCBtdiAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcCAkQFxuLWVsc2Vcbi1cdCQoY2FsbCBtc2csQ1AsLCRAKVxuLVx0JChRKWNwIFwmIzM0OyQoVk1MSU5VWF9IKVwmIzM0OyAkQFxuLWVuZGlmXG4tXG4gJChSRVNPTFZFX0JURklEUyk6ICQoSE9TVF9CUEZPQkopIHwgJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHNcdFxcXG4gXHRcdCAgICAgICAkKFRPT0xTRElSKS9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jXHRcXFxuIFx0XHQgICAgICAgJChUT09MU0RJUikvbGliL3JidHJlZS5jXHRcdFx0XFxcbkBAIC00MzksMzc0ICYjNDM7MzEwLDM4IEBAICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzXHRcXFxuIFx0XHRIT1NUUEtHX0NPTkZJRz0mIzM5OyQoUEtHX0NPTkZJRykmIzM5OyBcXFxuIFx0XHRPVVRQVVQ9JChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvIEJQRk9CSj0kKEhPU1RfQlBGT0JKKVxuIFxuLSMgR2V0IENsYW5nJiMzOTtzIGRlZmF1bHQgaW5jbHVkZXMgb24gdGhpcyBzeXN0ZW0sIGFzIG9wcG9zZWQgdG8gdGhvc2Ugc2VlbiBieVxuLSMgJiMzOTstLXRhcmdldD1icGYmIzM5Oy4gVGhpcyBmaXhlcyBcJiMzNDttaXNzaW5nXCYjMzQ7IGZpbGVzIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcy9kaXN0cm9zLFxuLSMgc3VjaCBhcyBhc20vYnl0ZW9yZGVyLmgsIGFzbS9zb2NrZXQuaCwgYXNtL3NvY2tpb3MuaCwgc3lzL2NkZWZzLmggZXRjLlxuLSNcbi0jIFVzZSAmIzM5Oy1pZGlyYWZ0ZXImIzM5OzogRG9uJiMzOTt0IGludGVyZmVyZSB3aXRoIGluY2x1ZGUgbWVjaGFuaWNzIGV4Y2VwdCB3aGVyZSB0aGVcbi0jIGJ1aWxkIHdvdWxkIGhhdmUgZmFpbGVkIGFueXdheXMuXG4tZGVmaW5lIGdldF9zeXNfaW5jbHVkZXNcbi0kKHNoZWxsICQoMSkgJCgyKSAtdiAtRSAtIFx1MDAzYy9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MSBcXFxuLVx0fCBzZWQgLW4gJiMzOTsvXHUwMDNjLi4uXHUwMDNlIHNlYXJjaCBzdGFydHMgaGVyZTovLC9FbmQgb2Ygc2VhcmNoIGxpc3QuL3sgc3wgXFwoLy4qXFwpfC1pZGlyYWZ0ZXIgXFwxfHAgfSYjMzk7KSBcXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX3Jpc2N2X3hsZW4gJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKFwmIzM0Oy1EX19yaXNjdl94bGVuPSVkIC1EX19CSVRTX1BFUl9MT05HPSVkXCYjMzQ7LCAkJDMsICQkMyl9JiMzOTspIFxcXG4tJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAmIzM5O19fbG9vbmdhcmNoX2dybGVuICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZihcJiMzNDstRF9fQklUU19QRVJfTE9ORz0lZFwmIzM0OywgJCQzKX0mIzM5OykgXFxcbi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBncmVwIC1FICYjMzk7TUlQUyhFTHxFQil8X01JUFNfU1ooUFRSfExPTkcpIHxfTUlQU19TSU0gfF9BQkkoTzMyfE4zMnw2NCkgJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKFwmIzM0Oy1EJXM9JXMgXCYjMzQ7LCAkJDIsICQkMyl9JiMzOTspXG4tZW5kZWZcbi1cbi0jIERldGVybWluZSB0YXJnZXQgZW5kaWFubmVzcy5cbi1JU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgXFxcbi1cdFx0XHRncmVwICYjMzk7ZGVmaW5lIF9fQllURV9PUkRFUl9fIF9fT1JERVJfTElUVExFX0VORElBTl9fJiMzOTspXG4tTUVORElBTjo9JChpZiAkKElTX0xJVFRMRV9FTkRJQU4pLC1tbGl0dGxlLWVuZGlhbiwtbWJpZy1lbmRpYW4pXG4tQlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYilcbi1cbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tQ0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpXG4tZW5kaWZcbi1cbi1DTEFOR19TWVNfSU5DTFVERVMgPSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcywkKENMQU5HKSwkKENMQU5HX1RBUkdFVF9BUkNIKSlcbi1CUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXHRcXFxuLVx0ICAgICAtSSQoSU5DTFVERV9ESVIpIC1JJChDVVJESVIpIC1JJChBUElESVIpXHRcdFx0XFxcbi1cdCAgICAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVx0XHRcdFx0XFxcbi1cdCAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKVx0XHRcdFxcXG4tXHQgICAgIC1zdGQ9Z251MTFcdFx0IFx0XHRcdFx0XHRcXFxuLVx0ICAgICAtZm5vLXN0cmljdC1hbGlhc2luZyBcdFx0XHRcdFx0XFxcbi1cdCAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWdcdFx0XHRcdFx0XFxcbi1cdCAgICAgLWZtcy1leHRlbnNpb25zXHRcdFx0XHRcdFx0XFxcbi1cdCAgICAgLVduby1jb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXNcdFx0XHRcXFxuLVx0ICAgICAtV25vLWluaXRpYWxpemVyLW92ZXJyaWRlc1x0XHRcdFx0XHRcXFxuLVx0ICAgICAjXG4tIyBUT0RPOiBlbmFibGUgbWUgLVdzaWduLWNvbXBhcmVcbi1cbi1DTEFOR19DRkxBR1MgPSAkKENMQU5HX1NZU19JTkNMVURFUylcbi1cbi0kKE9VVFBVVCkvdGVzdF9sNGxiX25vaW5saW5lLm86IEJQRl9DRkxBR1MgJiM0Mzs9IC1mbm8taW5saW5lXG4tJChPVVRQVVQpL3Rlc3RfeGRwX25vaW5saW5lLm86IEJQRl9DRkxBR1MgJiM0Mzs9IC1mbm8taW5saW5lXG4tXG4tJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQubzogZmxvd19kaXNzZWN0b3JfbG9hZC5oXG4tJChPVVRQVVQpL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLm86IGNncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhcbi1cbi0jIEJ1aWxkIEJQRiBvYmplY3QgdXNpbmcgQ2xhbmdcbi0jICQxIC0gaW5wdXQgLmMgZmlsZVxuLSMgJDIgLSBvdXRwdXQgLm8gZmlsZVxuLSMgJDMgLSBDRkxBR1Ncbi0jICQ0IC0gYmluYXJ5IG5hbWVcbi1kZWZpbmUgQ0xBTkdfQlBGX0JVSUxEX1JVTEVcbi1cdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXG4tXHQkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXYzIC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJDI7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtQlBGJiMzOTsgJiMzOTskKG5vdGRpciAkMikmIzM5OyAxXHUwMDNlXHUwMDI2MikpXG4tZW5kZWZcbi0jIFNpbWlsYXIgdG8gQ0xBTkdfQlBGX0JVSUxEX1JVTEUsIGJ1dCB3aXRoIGRpc2FibGVkIGFsdTMyXG4tZGVmaW5lIENMQU5HX05PQUxVMzJfQlBGX0JVSUxEX1JVTEVcbi1cdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXG4tXHQkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXYyIC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJDI7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtQlBGJiMzOTsgJiMzOTskKG5vdGRpciAkMikmIzM5OyAxXHUwMDNlXHUwMDI2MikpXG4tZW5kZWZcbi0jIFNpbWlsYXIgdG8gQ0xBTkdfQlBGX0JVSUxEX1JVTEUsIGJ1dCB3aXRoIGNwdS12NFxuLWRlZmluZSBDTEFOR19DUFVWNF9CUEZfQlVJTERfUlVMRVxuLVx0JChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMilcbi1cdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djQgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkMjsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1CUEYmIzM5OyAmIzM5OyQobm90ZGlyICQyKSYjMzk7IDFcdTAwM2VcdTAwMjYyKSlcbi1lbmRlZlxuLSMgQnVpbGQgQlBGIG9iamVjdCB1c2luZyBHQ0Ncbi1kZWZpbmUgR0NDX0JQRl9CVUlMRF9SVUxFXG4tXHQkKGNhbGwgbXNnLEdDQy1CUEYsJDQsJDIpXG4tXHQkKFEpJChCUEZfR0NDKSAkMyAtREJQRl9OT19QUkVTRVJWRV9BQ0NFU1NfSU5ERVggLVduby1hdHRyaWJ1dGVzIC1PMiAtYyAkMSAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICQyOyBwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLUJQRiYjMzk7ICYjMzk7JChub3RkaXIgJDIpJiMzOTsgMVx1MDAzZVx1MDAyNjIpKVxuLWVuZGVmXG4tXG4tU0tFTF9CTEFDS0xJU1QgOj0gYnRmX18lIHRlc3RfcGlubmluZ19pbnZhbGlkLmMgdGVzdF9za19hc3NpZ24uY1xuLVxuLUxJTktFRF9TS0VMUyA6PSB0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oIGxpbmtlZF9mdW5jcy5za2VsLmhcdFx0XFxcbi1cdFx0bGlua2VkX3ZhcnMuc2tlbC5oIGxpbmtlZF9tYXBzLnNrZWwuaCBcdFx0XHRcXFxuLVx0XHR0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmhcdFxcXG4tXHRcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcdFx0XHRcXFxuLVx0XHR0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmhcdFx0XHRcdFxcXG4tXHRcdHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaFx0XHRcdFx0XFxcbi1cdFx0dHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaFxuLVxuLUxTS0VMUyA6PSBmZXhpdF9zbGVlcC5jIHRyYWNlX3ByaW50ay5jIHRyYWNlX3ZwcmludGsuYyBtYXBfcHRyX2tlcm4uYyBcdFxcXG4tXHRjb3JlX2tlcm4uYyBjb3JlX2tlcm5fb3ZlcmZsb3cuYyB0ZXN0X3JpbmdidWYuY1x0XHRcdFxcXG4tXHR0ZXN0X3JpbmdidWZfbi5jIHRlc3RfcmluZ2J1Zl9tYXBfa2V5LmMgdGVzdF9yaW5nYnVmX3dyaXRlLmMgICAgXFxcbi1cdHRlc3RfcmluZ2J1Zl9vdmVyd3JpdGUuY1xuLVxuLUxTS0VMU19TSUdORUQgOj0gZmVudHJ5X3Rlc3QuYyBmZXhpdF90ZXN0LmMgYXRvbWljcy5jXG4tXG4tIyBHZW5lcmF0ZSBib3RoIGxpZ2h0IHNrZWxldG9uIGFuZCBsaWJicGYgc2tlbGV0b24gZm9yIHRoZXNlXG4tTFNLRUxTX0VYVFJBIDo9IHRlc3Rfa3N5bXNfbW9kdWxlLmMgdGVzdF9rc3ltc193ZWFrLmMga2Z1bmNfY2FsbF90ZXN0LmMgXFxcbi1cdGtmdW5jX2NhbGxfdGVzdF9zdWJwcm9nLmNcbi1TS0VMX0JMQUNLTElTVCAmIzQzOz0gJCQoTFNLRUxTKSAkJChMU0tFTFNfU0lHTkVEKVxuLVxuLXRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmgtZGVwcyA6PSB0ZXN0X3N0YXRpY19saW5rZWQxLmJwZi5vIHRlc3Rfc3RhdGljX2xpbmtlZDIuYnBmLm9cbi1saW5rZWRfZnVuY3Muc2tlbC5oLWRlcHMgOj0gbGlua2VkX2Z1bmNzMS5icGYubyBsaW5rZWRfZnVuY3MyLmJwZi5vXG4tbGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYub1xuLWxpbmtlZF9tYXBzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9tYXBzMS5icGYubyBsaW5rZWRfbWFwczIuYnBmLm9cbi0jIEluIHRoZSBzdWJza2VsZXRvbiBjYXNlLCB3ZSB3YW50IHRoZSB0ZXN0X3N1YnNrZWxldG9uX2xpYi5zdWJza2VsLmggZmlsZVxuLSMgYnV0IHRoYXQmIzM5O3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi5cbi10ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXG4tdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vXG4tdGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vXG4teHNrX3hkcF9wcm9ncy5za2VsLmgtZGVwcyA6PSB4c2tfeGRwX3Byb2dzLmJwZi5vXG4teGRwX2h3X21ldGFkYXRhLnNrZWwuaC1kZXBzIDo9IHhkcF9od19tZXRhZGF0YS5icGYub1xuLXhkcF9mZWF0dXJlcy5za2VsLmgtZGVwcyA6PSB4ZHBfZmVhdHVyZXMuYnBmLm9cbi10cmFjaW5nX211bHRpLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbi10cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaF9tb2R1bGUuYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuLXRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4tdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfc2Vzc2lvbl9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuLVxuLUxJTktFRF9CUEZfT0JKUyA6PSAkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKVxuLUxJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoTElOS0VEX0JQRl9PQkpTKSlcbi1cbi1IRUFERVJTX0ZPUl9CUEZfT0JKUyA6PSAkKHdpbGRjYXJkICQoQlBGRElSKS8qLmJwZi5oKVx0XHRcXFxuLVx0XHRcdCQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKVx0XFxcbi1cdFx0XHQkKGFkZHByZWZpeCAkKEJQRkRJUikvLFx0YnBmX2NvcmVfcmVhZC5oXHRcXFxuLVx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl9lbmRpYW4uaFx0XFxcbi1cdFx0XHRcdFx0XHRicGZfaGVscGVycy5oXHRcXFxuLVx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl90cmFjaW5nLmgpXG4tXG4tIyBTZXQgdXAgZXh0cmEgVFJVTk5FUl9YWFggXCYjMzQ7dGVtcG9yYXJ5XCYjMzQ7IHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQgKHJlbGllcyBvblxuLSMgJGV2YWwoKSkgYW5kIHBhc3MgY29udHJvbCB0byBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMuXG4tIyBQYXJhbWV0ZXJzOlxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcJiMzNDtmbGF2b3JcJiMzNDsgKGUuZy4sIG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYywgZXRjKVxuLWRlZmluZSBERUZJTkVfVEVTVF9SVU5ORVJcbi1cbi1MU0tFTF9TSUdOIDo9IC1TIC1rICQoUFJJVkFURV9LRVkpIC1pICQoVkVSSUZJQ0FUSU9OX0NFUlQpXG4tVFJVTk5FUl9PVVRQVVQgOj0gJChPVVRQVVQpJChpZiAkMiwvKSQyXG4tVFJVTk5FUl9CSU5BUlkgOj0gJDEkKGlmICQyLC0pJDJcbi1UUlVOTkVSX1RFU1RfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5vLFx0XFxcbi1cdFx0XHRcdCAkJChub3RkaXIgJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jKSkpXG4tVFJVTk5FUl9FWFRSQV9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5vLFx0XHRcXFxuLVx0XHRcdFx0ICQkKGZpbHRlciAlLmMsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKSlcbi1UUlVOTkVSX0xJQl9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5vLFx0XHRcXFxuLVx0XHRcdFx0ICQkKGZpbHRlciAlLmMsJChUUlVOTkVSX0xJQl9TT1VSQ0VTKSkpXG4tVFJVTk5FUl9FWFRSQV9IRFJTIDo9ICQkKGZpbHRlciAlLmgsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKVxuLVRSVU5ORVJfVEVTVFNfSERSIDo9ICQoVFJVTk5FUl9URVNUU19ESVIpL3Rlc3RzLmhcbi1UUlVOTkVSX0JQRl9TUkNTIDo9ICQkKG5vdGRpciAkJCh3aWxkY2FyZCAkKFRSVU5ORVJfQlBGX1BST0dTX0RJUikvKi5jKSlcbi1UUlVOTkVSX0JQRl9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5icGYubywgJCQoVFJVTk5FUl9CUEZfU1JDUykpXG4tVFJVTk5FUl9CUEZfU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLnNrZWwuaCxcdFxcXG4tXHRcdFx0XHQgJCQoZmlsdGVyLW91dCAkKFNLRUxfQkxBQ0tMSVNUKSAkKExJTktFRF9CUEZfU1JDUyksXFxcbi1cdFx0XHRcdFx0ICAgICAgICQkKFRSVU5ORVJfQlBGX1NSQ1MpKSlcbi1UUlVOTkVSX0JQRl9MU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmxza2VsLmgsICQkKExTS0VMUykgJCQoTFNLRUxTX0VYVFJBKSlcbi1UUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQgOj0gJCQoYWRkcHJlZml4ICQkKFRSVU5ORVJfT1VUUFVUKS8sJChMSU5LRURfU0tFTFMpKVxuLVRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmxza2VsLmgsICQkKExTS0VMU19TSUdORUQpKVxuLVRFU1RfR0VOX0ZJTEVTICYjNDM7PSAkJChUUlVOTkVSX0JQRl9PQkpTKVxuLVxuLSMgRXZhbHVhdGUgcnVsZXMgbm93IHdpdGggZXh0cmEgVFJVTk5FUl9YWFggdmFyaWFibGVzIGFib3ZlIGFscmVhZHkgZGVmaW5lZFxuLSQkKGV2YWwgJCQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMsJDEsJDIpKVxuLVxuLWVuZGVmXG4tXG4tIyBVc2luZyBUUlVOTkVSX1hYWCB2YXJpYWJsZXMsIHByb3ZpZGVkIGJ5IGNhbGxlcnMgb2YgREVGSU5FX1RFU1RfUlVOTkVSIGFuZFxuLSMgc2V0IHVwIGJ5IERFRklORV9URVNUX1JVTk5FUiBpdHNlbGYsIGNyZWF0ZSB0ZXN0IHJ1bm5lciBidWlsZCBydWxlcyB3aXRoOlxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcJiMzNDtmbGF2b3JcJiMzNDsgKGUuZy4sIG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYywgZXRjKVxuLWRlZmluZSBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVNcbi1cbi0jIFBlcm1pc3NpdmUgYnVpbGQgYmVoYXZpb3VyIChza2lwLW9uLWZhaWx1cmUgY29tcGlsZSwgcGFydGlhbC1saW5rKSBvbmx5XG4tIyBhcHBsaWVzIHRvIHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzOyBydW5uZXJzIHRoYXQgdXNlIHN0cm9uZyBjcm9zcy1vYmplY3Rcbi0jIHJlZmVyZW5jZXMgKGUuZy4gdGVzdF9tYXBzKSBrZWVwIHN0cmljdCBzZW1hbnRpY3MgZXZlbiB3aGVuIHBlcm1pc3NpdmUuXG4tIyBUaGUgY2hlY2sgaXMgaW5saW5lZCBwZXItcnVubmVyIHNvICQxIGlzIHN1YnN0aXR1dGVkIGF0ICQoY2FsbCkgdGltZSBhbmRcbi0jIHRoZSByZXN1bHQgaXMgYmFrZWQgaW50byBlYWNoIHJ1bGUmIzM5O3MgcmVjaXBlLlxuLVxuLWlmZXEgKCQoJChUUlVOTkVSX09VVFBVVCktZGlyKSwpXG4tJChUUlVOTkVSX09VVFBVVCktZGlyIDo9IHlcbi0kKFRSVU5ORVJfT1VUUFVUKTpcbi1cdCQkKGNhbGwgbXNnLE1LRElSLCwkJEApXG4tXHQkKFEpbWtkaXIgLXAgJCRAXG4tZW5kaWZcbi1cbi0jIGVuc3VyZSB3ZSBzZXQgdXAgQlBGIG9iamVjdHMgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZSBmb3IgYSBnaXZlblxuLSMgaW5wdXQvb3V0cHV0IGRpcmVjdG9yeSBjb21iaW5hdGlvblxuLWlmZXEgKCQoJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMpLClcbi0kKFRSVU5ORVJfQlBGX1BST0dTX0RJUikkKGlmICQyLC0pJDItYnBmb2JqcyA6PSB5XG4tJChUUlVOTkVSX0JQRl9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5icGYubzpcdFx0XHRcdFxcXG4tXHRcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyUuY1x0XHRcdFxcXG4tXHRcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouaFx0XHRcdFxcXG4tXHRcdCAgICAgJCQoSU5DTFVERV9ESVIpL3ZtbGludXguaFx0XHRcdFx0XFxcbi1cdFx0ICAgICAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKVx0XHRcdFx0XFxcbi1cdFx0ICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpICQkKEJQRk9CSilcbi1cdCQkKGNhbGwgJChUUlVOTkVSX0JQRl9CVUlMRF9SVUxFKSwkJFx1MDAzYywkJEAsXHRcdFx0XFxcbi1cdFx0XHRcdFx0ICAkKFRSVU5ORVJfQlBGX0NGTEFHUykgICAgICAgICBcXFxuLVx0XHRcdFx0XHQgICQkKCQkXHUwMDNjLUNGTEFHUylcdFx0XFxcbi1cdFx0XHRcdFx0ICAkJCgkJFx1MDAzYy0kMi1DRkxBR1MpLCQoVFJVTk5FUl9CSU5BUlkpKVxuLVxuLSQoVFJVTk5FUl9CUEZfU0tFTFMpOiAlLnNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVClcbi1cdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAhIC1mICQkXHUwMDNjIF07IHRoZW5cdFx0XHRcXFxuLVx0XHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTtcdFx0XHRcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgJCRcdTAwM2MgXHUwMDI2XHUwMDI2XHRcdFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGlua2VkMy5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgXHUwMDI2XHUwMDI2XHRcdFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFx1MDAzYzouYnBmLm89KSkgXHUwMDNlICQkQCBcdTAwMjZcdTAwMjYgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBzdWJza2VsZXRvbiAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz0pKSBcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpOyBcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHR9KSBcdTAwMjZcdTAwMjYgXFxcbi1cdHJtIC1mICQkKFx1MDAzYzoubz0ubGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pXG4tXG4tJChUUlVOTkVSX0JQRl9MU0tFTFMpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQDtcdFx0XHRcdFx0XHRcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcdTAwMjZcdTAwMjYgXFxcbi1cdGRpZmYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uIC1MICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz1fbHNrZWwpKSBcdTAwM2UgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEA7IFxcXG4tXHRcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNiBcXFxuLVx0cm0gLWYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubylcbi1cbi0kKFRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQDtcdFx0XHRcdFx0XHRcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpIChzaWduZWQpXSAkJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcdTAwMjZcdTAwMjYgXFxcbi1cdGRpZmYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQoTFNLRUxfU0lHTikgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChcdTAwM2M6LmJwZi5vPV9sc2tlbCkpIFx1MDAzZSAkJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXFxcbi1cdFx0JCQoUk0pICQkQDsgXFxcbi1cdFx0cHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0fSkgXHUwMDI2XHUwMDI2IFxcXG4tXHRybSAtZiAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKVxuLVxuLSQoTElOS0VEX0JQRl9PQkpTKTogJTogJChUUlVOTkVSX09VVFBVVCkvJVxuLVxuLSMgLlNFQ09OREVYUEFOU0lPTiBoZXJlIGFsbG93cyB0byBjb3JyZWN0bHkgZXhwYW5kICUtZGVwcyB2YXJpYWJsZXMgYXMgcHJlcmVxdWlzaXRlc1xuLS5TRUNPTkRFWFBBTlNJT046XG4tJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpOiAkKFRSVU5ORVJfT1VUUFVUKS8lOiAkJCQkKCUtZGVwcykgJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGZvciBmIGluICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKTsgZG8gXFxcbi1cdFx0aWYgWyAhIC1mICQkJCRmIF07IHRoZW5cdFx0XHRcdFx0XHRcXFxuLVx0XHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1x0XHRcXFxuLVx0XHRcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdFx0XHRleGl0IDA7XHRcdFx0XHRcdFx0XHRcXFxuLVx0XHRmaTtcdFx0XHRcdFx0XHRcdFx0XFxcbi1cdGRvbmU7KVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtMSU5LLUJQRiYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCQoQDouc2tlbC5oPS5icGYubykpJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSAkJChhZGRwcmVmaXggJChUUlVOTkVSX09VVFBVVCkvLCQkKCQkKEBGKS1kZXBzKSkgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgXHUwMDI2XHUwMDI2XHRcXFxuLVx0cHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyAmIzM5O1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MiBcdTAwMjZcdTAwMjYgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoQDouc2tlbC5oPSkpIFx1MDAzZSAkJEAgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc3Vic2tlbGV0b24gJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKEA6LnNrZWwuaD0pKSBcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1x0XHRcdFxcXG4tXHRcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRybSAtZiAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKVxuLVxuLSMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdFxuLSMgZnVsbCBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciBjb3JyZXNwb25kaW5nICUub1xuLSMgZmlsZS4gdnBhdGggZGlyZWN0aXZlcyBiZWxvdyBpbnN0cnVjdCBtYWtlIHRvIHNlYXJjaCBmb3Igc2tlbCBmaWxlc1xuLSMgaW4gVFJVTk5FUl9PVVRQVVQsIGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50IGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeS5cbi12cGF0aCAlLnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLXZwYXRoICUubHNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLXZwYXRoICUuc3Vic2tlbC5oICQoVFJVTk5FUl9PVVRQVVQpXG4tXG4mIzQzO2lmbmVxICgkKFNLSVBfRE9DUyksMSlcbiYjNDM7YWxsOiBkb2NzXG4gZW5kaWZcbiBcbi0jIGVuc3VyZSB3ZSBzZXQgdXAgdGVzdHMuaCBoZWFkZXIgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZVxuLWlmZXEgKCQoJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyKSwpXG4tJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyIDo9IHlcbi0kKFRSVU5ORVJfVEVTVFNfSERSKTogJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jXG4tXHQkJChjYWxsIG1zZyxURVNULUhEUiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkJChzaGVsbCAoZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7XHRcdFx0XHRcdFxcXG4tXHRcdCAgc2VkIC1uIC1FICYjMzk7cy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dJiM0MzspXFwoKHZvaWQpP1xcKS4qL0RFRklORV9URVNUKFxcMikvcCYjMzk7XHRcXFxuLVx0XHRcdCQoVFJVTk5FUl9URVNUU19ESVIpLyouYyB8IHNvcnQgO1x0XFxcbi1cdFx0ICkgXHUwMDNlICQkQClcbi1lbmRpZlxuJiM0Mztkb2NzOlxuJiM0MztcdCQoUSlSU1QyTUFOX09QVFM9XCYjMzQ7LS1leGl0LXN0YXR1cz0xXCYjMzQ7ICQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcylcdFxcXG4mIzQzO1x0ICAgICAgICAgICAgLWYgTWFrZWZpbGUuZG9jc1x0XHRcdFx0XHRcXFxuJiM0MztcdCAgICAgICAgICAgIHByZWZpeD0gT1VUUFVUPSQoT1VUUFVUKS8gREVTVERJUj0kKE9VVFBVVCkvICRAXG4gXG4tJChUUlVOTkVSX09VVFBVVCkvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiAkKFJFU09MVkVfQlRGSURTKSAkKFRSVU5ORVJfT1VUUFVUKS9idGZfZGF0YS5icGYub1xuLSQoVFJVTk5FUl9PVVRQVVQpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogcHJpdmF0ZSBURVNUX05FRURTX0JURklEUyA9IDFcbi1cbi0jIGNvbXBpbGUgaW5kaXZpZHVhbCB0ZXN0IGZpbGVzXG4tIyBOb3RlOiB3ZSBjZCBpbnRvIG91dHB1dCBkaXJlY3RvcnkgdG8gZW5zdXJlIGVtYmVkZGVkIEJQRiBvYmplY3QgaXMgZm91bmRcbi0kKFRSVU5ORVJfVEVTVF9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0Lm86XHRcdFx0XFxcbi1cdFx0ICAgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jXHRcdFx0XHRcXFxuLVx0XHQgICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kXG4tXHQkJChjYWxsIG1zZyxURVNULU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkKFEpKGNkICQkKEBEKSBcdTAwMjZcdTAwMjYgJCQoQ0MpIC1JLiAkJChDRkxBR1MpIC1NTUQgLU1UICQkQCAtYyAkKENVUkRJUikvJCRcdTAwM2MgJCQoTERMSUJTKSAtbyAkJChARikpICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJCRAOyBwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVRFU1QmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjIpKSlcbi1cdCQkKGlmICQkKFRFU1RfTkVFRFNfQlRGSURTKSxcdFx0XHRcdFx0XHRcXFxuLVx0XHQkKFEpaWYgWyAtZiAkJEAgXTsgdGhlblx0XHRcdFx0XHRcdFxcXG4tXHRcdCQoaWYgJChmaWx0ZXIgMSwkKFYpKSx0cnVlLHByaW50ZiAmIzM5OyAgJS04cyVzICVzXFxuJiMzOTsgXCYjMzQ7QlRGSURTXCYjMzQ7IFwmIzM0OyBbJChUUlVOTkVSX0JJTkFSWSldXCYjMzQ7IFwmIzM0OyQkKG5vdGRpciAkJEApXCYjMzQ7KTsgXFxcbi1cdFx0JChSRVNPTFZFX0JURklEUykgLS1idGYgJChUUlVOTkVSX09VVFBVVCkvYnRmX2RhdGEuYnBmLm8gJCRAO1x0XFxcbi1cdFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJCRALkJURl9pZHMgJCRAO1x0XHRcXFxuLVx0XHRmaSlcbi1cbi0kKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKTogJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0LmQ6XHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jXHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpXHRcdFx0XFxcbi1cdFx0XHQgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpXHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9CUEZfU0tFTFMpXHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0JQRl9MU0tFTFMpXHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEKVx0XHRcXFxuLVx0XHRcdCAgICAkKFRSVU5ORVJfQlBGX1NLRUxTX0xJTktFRClcbi1cbi1pZmVxICgkKGZpbHRlciBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHMsJChNQUtFQ01ER09BTFMpKSwpXG4taW5jbHVkZSAkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUX09CSlM6Lm89LmQpKVxuLWVuZGlmXG4mIzQzO2RvY3MtY2xlYW46XG4mIzQzO1x0JChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcylcdFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgICAgICAgICAtZiBNYWtlZmlsZS5kb2NzXHRcdFx0XHRcdFxcXG4mIzQzO1x0ICAgICAgICAgICAgcHJlZml4PSBPVVRQVVQ9JChPVVRQVVQpLyBERVNURElSPSQoT1VUUFVUKS8gJEBcbiBcbi0jIGFkZCBwZXIgZXh0cmEgb2JqIENGR0xBR1MgZGVmaW5pdGlvbnNcbi0kKGZvcmVhY2ggTiwkKHBhdHN1YnN0ICQoVFJVTk5FUl9PVVRQVVQpLyUubywlLCQoVFJVTk5FUl9FWFRSQV9PQkpTKSksXHRcXFxuLVx0JChldmFsICQoVFJVTk5FUl9PVVRQVVQpLyQoTikubzogQ0ZMQUdTICYjNDM7PSAkKCQoTikuYy1DRkxBR1MpKSlcbi1cbi0kKFRSVU5ORVJfRVhUUkFfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUubzpcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAlLmNcdFx0XHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChWRVJJRllfU0lHX0hEUilcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFRSVU5ORVJfVEVTVFNfSERSKVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKVxuLVx0JCQoY2FsbCBtc2csRVhULU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgLWMgJCRcdTAwM2MgJCQoTERMSUJTKSAtbyAkJEBcbi1cbi0kKFRSVU5ORVJfTElCX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLm86JChUT09MU0RJUikvbGliLyUuY1xuLVx0JCQoY2FsbCBtc2csTElCLU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgLWMgJCRcdTAwM2MgJCQoTERMSUJTKSAtbyAkJEBcbi1cbi0jIG5vbi1mbGF2b3JlZCBpbi1zcmN0cmVlIGJ1aWxkcyByZWNlaXZlIHNwZWNpYWwgdHJlYXRtZW50LCBpbiBwYXJ0aWN1bGFyLCB3ZVxuLSMgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKVxuLSQoVFJVTk5FUl9CSU5BUlkpLWV4dHJhczogJChUUlVOTkVSX0VYVFJBX0ZJTEVTKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4taWZuZXEgKCQyOiQoT1VUUFVUKSw6JChzaGVsbCBwd2QpKVxuLVx0JCQoY2FsbCBtc2csRVhULUNPUFksJChUUlVOTkVSX0JJTkFSWSksJChUUlVOTkVSX0VYVFJBX0ZJTEVTKSlcbi1cdCQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJCReICQoVFJVTk5FUl9PVVRQVVQpL1xuJiM0MzsjIHZtbGludXguaCBpcyBmaXJzdCBkdW1wZWQgdG8gYSB0ZW1wb3JhcnkgZmlsZSBhbmQgdGhlbiBjb21wYXJlZCB0b1xuJiM0MzsjIHRoZSBwcmV2aW91cyB2ZXJzaW9uLiBUaGlzIGhlbHBzIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHJlLWJ1aWxkcyBvZlxuJiM0MzsjIEJQRiBvYmplY3RzLlxuJiM0MzskKElOQ0xVREVfRElSKS92bWxpbnV4Lmg6ICQoVk1MSU5VWF9CVEYpICQoQlBGVE9PTCkgfCAkKElOQ0xVREVfRElSKVxuJiM0MztpZmVxICgkKFZNTElOVVhfSCksKVxuJiM0MztcdCQoY2FsbCBtc2csR0VOLCwkQClcbiYjNDM7XHQkKFEpJChCUEZUT09MKSBidGYgZHVtcCBmaWxlICQoVk1MSU5VWF9CVEYpIGZvcm1hdCBjIFx1MDAzZSAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcFxuJiM0MztcdCQoUSljbXAgLXMgJChJTkNMVURFX0RJUikvLnZtbGludXguaC50bXAgJEAgfHwgbXYgJChJTkNMVURFX0RJUikvLnZtbGludXguaC50bXAgJEBcbiYjNDM7ZWxzZVxuJiM0MztcdCQoY2FsbCBtc2csQ1AsLCRAKVxuJiM0MztcdCQoUSljcCBcJiMzNDskKFZNTElOVVhfSClcJiMzNDsgJEBcbiBlbmRpZlxuIFxuLSMgc29tZSBYLnRlc3QubyBmaWxlcyBoYXZlIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIG9uIFkuYnBmLm8gZmlsZXNcbi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6IHwgJChUUlVOTkVSX0JQRl9PQkpTKVxuLVxuLSQoT1VUUFVUKS8kKFRSVU5ORVJfQklOQVJZKTogJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLCQkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUX09CSlMpKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSksJChUUlVOTkVSX1RFU1RfT0JKUykpXHRcXFxuLVx0XHRcdCAgICAgJChUUlVOTkVSX0VYVFJBX09CSlMpICQkKEJQRk9CSilcdFx0XFxcbi1cdFx0XHQgICAgICQoVFJVTk5FUl9MSUJfT0JKUylcdFx0XHRcXFxuLVx0XHRcdCAgICAgJChUUlVOTkVSX0JQRlRPT0wpXHRcdFx0XHRcXFxuLVx0XHRcdCAgICAgJChPVVRQVVQpL3ZlcmlzdGF0XHRcdFx0XHRcXFxuLVx0XHRcdCAgICAgfCAkKFRSVU5ORVJfQklOQVJZKS1leHRyYXNcdFx0XHRcXFxuLVx0XHRcdCAgICAgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLCQoVFJVTk5FUl9URVNUX09CSlMpKSlcbi1cdCQkKGNhbGwgbXNnLEJJTkFSWSwsJCRAKVxuLVx0JChRKSQkKENDKSAkJChDRkxBR1MpICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkJChmaWx0ZXIgJS5hICUubywkJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTKSkgJCQoZmlsdGVyLW91dCAkKFRSVU5ORVJfVEVTVF9PQkpTKSwkJF4pKSwkJChmaWx0ZXIgJS5hICUubywkJF4pKSwkJChmaWx0ZXIgJS5hICUubywkJF4pKSAkJChMRExJQlMpICQkKExMVk1fTERMSUJTKSAkJChMREZMQUdTKSAkJChMTFZNX0xERkxBR1MpIC1vICQkQFxuLVx0JChRKWxuIC1zZiAkKGlmICQyLC4uLC4pL3Rvb2xzL2J1aWxkL2JwZnRvb2wvJChVU0VfQk9PVFNUUkFQKWJwZnRvb2wgXFxcbi1cdFx0ICAgJChPVVRQVVQpLyQoaWYgJDIsJDIvKWJwZnRvb2xcbi1cbi1lbmRlZlxuLVxuLVZFUklGWV9TSUdfU0VUVVAgOj0gJChDVVJESVIpL3ZlcmlmeV9zaWdfc2V0dXAuc2hcbi1WRVJJRllfU0lHX0hEUiA6PSB2ZXJpZmljYXRpb25fY2VydC5oXG4tVkVSSUZJQ0FUSU9OX0NFUlQgICA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkuZGVyXG4tUFJJVkFURV9LRVkgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LnBlbVxuLVxuLSQoVkVSSUZJQ0FUSU9OX0NFUlQpICQoUFJJVkFURV9LRVkpOiAkKFZFUklGWV9TSUdfU0VUVVApXG4mIzQzOyMgT25lIGdlbmtleSBydW4gcHJvZHVjZXMgYm90aCBmaWxlcy4gQSBwbGFpbiB0d28tdGFyZ2V0IHJ1bGUgaXMgbm90XG4mIzQzOyMgZ3JvdXBlZCAtIHVuZGVyIC1qIG1ha2Ugd291bGQgcnVuIGdlbmtleSB0d2ljZSBjb25jdXJyZW50bHkgYW5kIHRoZVxuJiM0MzsjIG9wZW5zc2wgaW52b2NhdGlvbnMgcmFjZTsgdGhlIHBhdHRlcm4gZm9ybSBpcyBpbXBsaWNpdGx5IGdyb3VwZWQgZXZlblxuJiM0MzsjIHdpdGggbWFrZSBcdTAwM2MgNC4zIChzYW1lIHdvcmthcm91bmQgYXMgdGhlIHRlc3Rfa21vZHMgcnVsZSkuXG4mIzQzOyQoQlVJTERfRElSKS8lLnBlbSAkKEJVSUxEX0RJUikvJS5kZXI6ICQoVkVSSUZZX1NJR19TRVRVUClcbiBcdCQoUSlta2RpciAtcCAkKEJVSUxEX0RJUilcbiBcdCQoUSkkKFZFUklGWV9TSUdfU0VUVVApIGdlbmtleSAkKEJVSUxEX0RJUilcbiBcbkBAIC04MzUsMTE2ICYjNDM7MzcwLDE4MyBAQCBMSUJBUkVOQV9CUEZfREVQUyA6PSAkKHdpbGRjYXJkIGxpYmFyZW5hL01ha2VmaWxlXHRcdFxcXG4gXHRcdFx0XHQgbGliYXJlbmEvc2VsZnRlc3RzLypcdFx0XFxcbiBcdFx0XHRcdCBsaWJhcmVuYS8qLmJwZi5vKVxuIFxuLUxJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oXG4tXG4gJChMSUJBUkVOQV9TS0VMKTogJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoQlBGT0JKKSAkKExJQkFSRU5BX0JQRl9ERVBTKVxuIFx0JiM0MzskKE1BS0UpIC1DIGxpYmFyZW5hIGxpYmFyZW5hLnNrZWwuaCAkKExJQkFSRU5BX01BS0VfQVJHUylcbiBcbi1pZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKVxuLUxJQkFSRU5BX0FTQU5fU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYV9hc2FuLnNrZWwuaFxuLUNGTEFHUyAmIzQzOz0gLURIQVNfQlBGX0FSRU5BX0FTQU5cbiYjNDM7bGliYXJlbmE6ICQoTElCQVJFTkFfU0tFTClcbiBcbiYjNDM7aWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcbiAkKExJQkFSRU5BX0FTQU5fU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CUEZfREVQUylcbiBcdCYjNDM7JChNQUtFKSAtQyBsaWJhcmVuYSBsaWJhcmVuYV9hc2FuLnNrZWwuaCAkKExJQkFSRU5BX01BS0VfQVJHUylcbiYjNDM7XG4mIzQzO2xpYmFyZW5hX2FzYW46ICQoTElCQVJFTkFfQVNBTl9TS0VMKVxuIGVuZGlmXG4gXG4tIyBEZWZpbmUgdGVzdF9wcm9ncyB0ZXN0IHJ1bm5lci5cbi1UUlVOTkVSX1RFU1RTX0RJUiA6PSBwcm9nX3Rlc3RzXG4tVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzXG4tVFJVTk5FUl9FWFRSQV9TT1VSQ0VTIDo9IHRlc3RfcHJvZ3MuY1x0XHRcXFxuLVx0XHRcdCBjZ3JvdXBfaGVscGVycy5jXHRcXFxuLVx0XHRcdCB0cmFjZV9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IG5ldHdvcmtfaGVscGVycy5jXHRcXFxuLVx0XHRcdCB0ZXN0aW5nX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgYnRmX2hlbHBlcnMuY1x0XHRcXFxuLVx0XHRcdCBjYXBfaGVscGVycy5jXHRcdFxcXG4tXHRcdFx0IHVucHJpdl9oZWxwZXJzLmMgXHRcXFxuLVx0XHRcdCBzeXNjdGxfaGVscGVycy5jXHRcXFxuLVx0XHRcdCBuZXRsaW5rX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgaml0X2Rpc2FzbV9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IGlvX2hlbHBlcnMuY1x0XHRcXFxuLVx0XHRcdCB0ZXN0X2xvYWRlci5jXHRcdFxcXG4tXHRcdFx0IHhzay5jXHRcdFx0XFxcbi1cdFx0XHQgZGlzYXNtLmNcdFx0XFxcbi1cdFx0XHQgZGlzYXNtX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQganNvbl93cml0ZXIuYyBcdFx0XFxcbi1cdFx0XHQgJChWRVJJRllfU0lHX0hEUilcdFx0XFxcbi1cdFx0XHQgZmxvd19kaXNzZWN0b3JfbG9hZC5oXHRcXFxuLVx0XHRcdCBpcF9jaGVja19kZWZyYWdfZnJhZ3MuaFx0XFxcbi1cdFx0XHQgYnBmdG9vbF9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IHVzZHRfMS5jIHVzZHRfMi5jXHRcXFxuLVx0XHRcdCAkKExJQkFSRU5BX1NLRUwpXHRcXFxuLVx0XHRcdCAkKExJQkFSRU5BX0FTQU5fU0tFTClcbi1UUlVOTkVSX0xJQl9TT1VSQ0VTIDo9IGZpbmRfYml0LmNcbi1UUlVOTkVSX0VYVFJBX0ZJTEVTIDo9ICQoT1VUUFVUKS91cmFuZG9tX3JlYWRcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvXHRcdFx0XFxcbi1cdFx0ICAgICAgICQoT1VUUFVUKS94ZHBfc3lucHJveHlcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKE9VVFBVVCkvc2lnbi1maWxlXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChPVVRQVVQpL3Vwcm9iZV9tdWx0aVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoVEVTVF9LTU9EX1RBUkdFVFMpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgaW1hX3NldHVwLnNoIFx0XHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChWRVJJRllfU0lHX1NFVFVQKVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlXyouYylcdFx0XFxcbi1cdFx0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubylcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzKSlcbi1cbi0jIERlZmluZSB0ZXN0X3Byb2dzLW5vX2FsdTMyIHRlc3QgcnVubmVyLlxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfTk9BTFUzMl9CUEZfQlVJTERfUlVMRVxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKVxuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3Msbm9fYWx1MzIpKVxuLVxuLSMgRGVmaW5lIHRlc3RfcHJvZ3MtY3B1djQgdGVzdCBydW5uZXIuXG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzOyMgR2VuZXJhdGVkIHRlc3QgbGlzdCBoZWFkZXJzXG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO1xuJiM0MztkZWZpbmUgZ2VuX3Rlc3RzX2hkclxuJiM0MztcdCQoY2FsbCBtc2csVEVTVC1IRFIsLCRAKVxuJiM0MztcdCQoUSkoZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7XHRcdFxcXG4mIzQzO1x0ICAgICBzZWQgLW4gLUUgJiMzOTtzL152b2lkIChzZXJpYWxfKT90ZXN0XyhbYS16QS1aMC05X10mIzQzOylcXCgodm9pZCk/XFwpLiovREVGSU5FX1RFU1QoXFwyKS9wJiMzOTsgXFxcbiYjNDM7XHRcdCQoQEQpLyouYyB8IHNvcnQpIFx1MDAzZSAkQFxuJiM0MztlbmRlZlxuJiM0MztcbiYjNDM7cHJvZ190ZXN0cy90ZXN0cy5oOiAkKHdpbGRjYXJkIHByb2dfdGVzdHMvKi5jKVxuJiM0MztcdCQoZ2VuX3Rlc3RzX2hkcilcbiYjNDM7XG4mIzQzO21hcF90ZXN0cy90ZXN0cy5oOiAkKHdpbGRjYXJkIG1hcF90ZXN0cy8qLmMpXG4mIzQzO1x0JChnZW5fdGVzdHNfaGRyKVxuJiM0MztcbiYjNDM7dmVyaWZpZXIvdGVzdHMuaDogdmVyaWZpZXIvKi5jXG4mIzQzO1x0JChRKSggY2QgdmVyaWZpZXIvOyBcXFxuJiM0MztcdCAgICAgIGVjaG8gJiMzOTsvKiBHZW5lcmF0ZWQgaGVhZGVyLCBkbyBub3QgZWRpdCAqLyYjMzk7OyBcXFxuJiM0MztcdCAgICAgIGVjaG8gJiMzOTsjaWZkZWYgRklMTF9BUlJBWSYjMzk7OyBcXFxuJiM0MztcdCAgICAgIGxzICouYyAyXHUwMDNlIC9kZXYvbnVsbCB8IHNlZCAtZSAmIzM5O3NAXFwoLipcXClAI2luY2x1ZGUgXFxcJiMzNDtcXDFcXFwmIzM0O0AmIzM5OzsgXFxcbiYjNDM7XHQgICAgICBlY2hvICYjMzk7I2VuZGlmJiMzOTsgXFxcbiYjNDM7XHQgICAgKSBcdTAwM2UgdmVyaWZpZXIvdGVzdHMuaFxuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBTaGFyZWQgaGVscGVyIG9iamVjdHMsIHVzZWQgYnkgdGhlIHN0YW5kYWxvbmUgYmluYXJpZXMgYmVsb3cgYW5kIChhc1xuJiM0MzsjIHByZWJ1aWx0IGlucHV0cykgYnkgdGhlIHVuZmxhdm9yZWQgdGVzdF9wcm9ncyBydW5uZXIuXG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO1xuJiM0MzsjIFNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgdXNlIExMVk0gbGlicmFyaWVzXG4mIzQzOyQoT1VUUFVUKS9qaXRfZGlzYXNtX2hlbHBlcnMubzogQ0ZMQUdTICYjNDM7PSAkKExMVk1fQ0ZMQUdTKVxuJiM0MztcbiYjNDM7SEVMUEVSX09CSlMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyx0ZXN0aW5nX2hlbHBlcnMubyBjZ3JvdXBfaGVscGVycy5vIFxcXG4mIzQzO1x0ICAgICAgIHRyYWNlX2hlbHBlcnMubyBuZXR3b3JrX2hlbHBlcnMubyBqc29uX3dyaXRlci5vXHRcdFxcXG4mIzQzO1x0ICAgICAgIGNhcF9oZWxwZXJzLm8gdW5wcml2X2hlbHBlcnMubyB1c2R0XzEubyB1c2R0XzIubyB4c2subylcbiYjNDM7XG4mIzQzOyMgJChCUEZUT09MKSBpcyBhIHByZXJlcXVpc2l0ZSBiZWNhdXNlIGl0cyBzdWItbWFrZSBpcyB3aGF0IGluc3RhbGxzXG4mIzQzOyMgbGliYnBmJiMzOTtzIGludGVybmFsIGhlYWRlcnMgKGJwZi9oYXNobWFwLmgsIGJwZi9saWJicGZfaW50ZXJuYWwuaCkgaW50b1xuJiM0MzsjICQoSU5DTFVERV9ESVIpOyB3aXRob3V0IGl0LCBoZWxwZXJzIGluY2x1ZGluZyB0aG9zZSBoZWFkZXJzIHJhY2UgdGhlXG4mIzQzOyMgaW5zdGFsbCBhbmQgY2FuIHNpbGVudGx5IHBpY2sgdXAgdGhlIHNvdXJjZS10cmVlIGNvcGllcyBpbnN0ZWFkLlxuJiM0MzskKEhFTFBFUl9PQkpTKTogZmxvd19kaXNzZWN0b3JfbG9hZC5oIGlwX2NoZWNrX2RlZnJhZ19mcmFncy5oXHRcdFxcXG4mIzQzO1x0XHQkKFZFUklGWV9TSUdfSERSKSBwcm9nX3Rlc3RzL3Rlc3RzLmggJChCUEZPQkopICQoQlBGVE9PTClcbiYjNDM7XG4mIzQzOyQoT1VUUFVUKS90ZXN0X3NvY2ttYXA6ICQoT1VUUFVUKS9jZ3JvdXBfaGVscGVycy5vICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xuJiM0MzskKE9VVFBVVCkvdGVzdF90Y3Bub3RpZnlfdXNlcjogJChPVVRQVVQpL2Nncm91cF9oZWxwZXJzLm9cdFx0XFxcbiYjNDM7XHRcdFx0ICAgICAgICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1x0XHRcXFxuJiM0MztcdFx0XHQgICAgICAgJChPVVRQVVQpL3RyYWNlX2hlbHBlcnMub1xuJiM0MzskKE9VVFBVVCkvdGVzdF90YWc6ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xuJiM0MzskKE9VVFBVVCkvdGVzdF9saXJjX21vZGUyX3VzZXI6ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xuJiM0MzskKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZDogZmxvd19kaXNzZWN0b3JfbG9hZC5oICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBUZXN0IHJ1bm5lciBpbnN0YW5jZXMsIG9uZSBzdWItbWFrZSBlYWNoIChzZWUgTWFrZWZpbGUucnVubmVyKS5cbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzOyMgVGhlIExMVk0gZmVhdHVyZS1wcm9iZSByZXN1bHRzIGFyZSBleHBvcnRlZCB0byB0aGUgcnVubmVyIHN1Yi1tYWtlcy5cbiYjNDM7IyBDQyBpcyBwYXNzZWQgZXhwbGljaXRseSBpbnN0ZWFkOiBleHBvcnRpbmcgaXQgd291bGQgYWxzbyBsZWFrIGxpYi5tayYjMzk7c1xuJiM0MzsjIENDIGludG8gdGhlIGxpYmJwZi9icGZ0b29sL3Jlc29sdmVfYnRmaWRzIHN1Yi1idWlsZHMsIHdoaWNoIGNvbXB1dGVcbiYjNDM7IyB0aGVpciBvd24uXG4mIzQzO2V4cG9ydCBMTFZNX0NGTEFHUyBMTFZNX0xETElCUyBMTFZNX0xERkxBR1NcbiYjNDM7XG4mIzQzO1JVTk5FUl9NQUtFIDo9ICQoTUFLRSkgLWYgTWFrZWZpbGUucnVubmVyIE9VVFBVVD0kKE9VVFBVVCkgQ0M9JiMzOTskKENDKSYjMzk7XG4mIzQzO1xuJiM0MzsjIEV2ZXJ5dGhpbmcgYSBydW5uZXIgaW5zdGFuY2UgcmVmZXJlbmNlcyBidXQgZG9lcyBub3Qga25vdyBob3cgdG8gYnVpbGQuXG4mIzQzO1JVTk5FUl9QUkVSRVFTIDo9ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChCUEZUT09MKVx0XHRcXFxuJiM0MztcdFx0ICAkKFRSVU5ORVJfQlBGVE9PTCkgJChSRVNPTFZFX0JURklEUylcdFx0XHRcXFxuJiM0MztcdFx0ICAkKE9VVFBVVCkvdmVyaXN0YXRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdCAgJChWRVJJRllfU0lHX0hEUikgJChQUklWQVRFX0tFWSkgJChWRVJJRklDQVRJT05fQ0VSVClcdFxcXG4mIzQzO1x0XHQgICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXHRcdFxcXG4mIzQzO1x0XHQgIHByb2dfdGVzdHMvdGVzdHMuaFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0ICAkKEhFTFBFUl9PQkpTKVx0XHRcdFx0XHRcXFxuJiM0MztcdFx0ICAkKE9VVFBVVCkvdXJhbmRvbV9yZWFkICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc29cdFxcXG4mIzQzO1x0XHQgICQoT1VUUFVUKS94ZHBfc3lucHJveHkgJChPVVRQVVQpL3NpZ24tZmlsZVx0XHRcXFxuJiM0MztcdFx0ICAkKE9VVFBVVCkvdXByb2JlX211bHRpICQoVEVTVF9LTU9EX1RBUkdFVFMpXG4mIzQzO1xuJiM0MztGT1JDRTpcbiYjNDM7XG4mIzQzOyMgVGhlIGRlZmF1bHQgZmxhdm9yJiMzOTtzIHNrZWxldG9ucyBhcmUgYWxzbyBpbnB1dHMgb2YgYmVuY2gsIHRlc3RfbWFwcyxcbiYjNDM7IyB4c2t4Y2VpdmVyLCB4ZHBfKiBhbmQgdGVzdF9jcHA7IFwmIzM0O2RlZmF1bHQtc2tlbHNcJiMzNDsgYnVpbGRzIGp1c3QgdGhvc2VcbiYjNDM7IyB3aXRob3V0IHRoZSB0ZXN0X3Byb2dzIHRlc3Qgb2JqZWN0cyBhbmQgYmluYXJ5LlxuJiM0MzsuUEhPTlk6IGRlZmF1bHQtc2tlbHNcbiYjNDM7ZGVmYXVsdC1za2VsczogJChSVU5ORVJfUFJFUkVRUylcbiYjNDM7XHQmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9IFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXG4mIzQzO1x0XHRCUEZfQlVJTEQ9Y2xhbmcgQlBGX01DUFU9djMgQlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUUyBza2Vsc1xuJiM0MztcbiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3M6ICQoUlVOTkVSX1BSRVJFUVMpIGRlZmF1bHQtc2tlbHMgRk9SQ0VcbiYjNDM7XHQmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9IFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXG4mIzQzO1x0XHRCUEZfQlVJTEQ9Y2xhbmcgQlBGX01DUFU9djMgQlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUU1xuJiM0MztcbiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3Mtbm9fYWx1MzI6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXG4mIzQzO1x0JiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPW5vX2FsdTMyIFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXG4mIzQzO1x0XHRCUEZfQlVJTEQ9Y2xhbmcgQlBGX01DUFU9djJcbiYjNDM7XG4gaWZuZXEgKCQoQ0xBTkdfQ1BVVjQpLClcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX0NQVVY0X0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzLGNwdXY0KSlcbiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3MtY3B1djQ6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXG4mIzQzO1x0JiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPWNwdXY0IFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXG4mIzQzO1x0XHRCUEZfQlVJTEQ9Y2xhbmcgQlBGX01DUFU9djQgQlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUU1xuIGVuZGlmXG4gXG4tIyBEZWZpbmUgdGVzdF9wcm9ncyBCUEYtR0NDLWZsYXZvcmVkIHRlc3QgcnVubmVyLlxuIGlmbmVxICgkKEJQRl9HQ0MpLClcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IEdDQ19CUEZfQlVJTERfUlVMRVxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLGdjYywpXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxicGZfZ2NjKSlcbi1lbmRpZlxuLVxuLSMgRGVmaW5lIHRlc3RfbWFwcyB0ZXN0IHJ1bm5lci5cbi1UUlVOTkVSX1RFU1RTX0RJUiA6PSBtYXBfdGVzdHNcbi1UUlVOTkVSX0JQRl9QUk9HU19ESVIgOj0gcHJvZ3Ncbi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9tYXBzLmNcbi1UUlVOTkVSX0xJQl9TT1VSQ0VTIDo9XG4tVFJVTk5FUl9FWFRSQV9GSUxFUyA6PVxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gJCQoZXJyb3Igbm8gQlBGIG9iamVjdHMgc2hvdWxkIGJlIGJ1aWx0KVxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PVxuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfbWFwcykpXG4tXG4tIyBEZWZpbmUgdGVzdF92ZXJpZmllciB0ZXN0IHJ1bm5lci5cbi0jIEl0IGlzIG11Y2ggc2ltcGxlciB0aGFuIHRlc3RfbWFwcy90ZXN0X3Byb2dzIGFuZCBzdWZmaWNpZW50bHkgZGlmZmVyZW50IGZyb21cbi0jIHRoZW0gKGUuZy4sIHRlc3QuaCBpcyB1c2luZyBjb21wbGV0ZWx5IHBhdHRlcm4pLCB0aGF0IGl0JiMzOTtzIHdvcnRoIGp1c3Rcbi0jIGV4cGxpY2l0bHkgZGVmaW5pbmcgYWxsIHRoZSBydWxlcyBleHBsaWNpdGx5LlxuLXZlcmlmaWVyL3Rlc3RzLmg6IHZlcmlmaWVyLyouY1xuLVx0JChzaGVsbCAoIGNkIHZlcmlmaWVyLzsgXFxcbi1cdFx0ICBlY2hvICYjMzk7LyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8mIzM5OzsgXFxcbi1cdFx0ICBlY2hvICYjMzk7I2lmZGVmIEZJTExfQVJSQVkmIzM5OzsgXFxcbi1cdFx0ICBscyAqLmMgMlx1MDAzZSAvZGV2L251bGwgfCBzZWQgLWUgJiMzOTtzQFxcKC4qXFwpQCNpbmNsdWRlIFxcXCYjMzQ7XFwxXFxcJiMzNDtAJiMzOTs7IFxcXG4tXHRcdCAgZWNobyAmIzM5OyNlbmRpZiYjMzk7IFxcXG4tXHRcdCkgXHUwMDNlIHZlcmlmaWVyL3Rlc3RzLmgpXG4tJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6IHRlc3RfdmVyaWZpZXIuYyB2ZXJpZmllci90ZXN0cy5oICQoQlBGT0JKKSB8ICQoT1VUUFVUKVxuJiM0MzskKE9VVFBVVCkvdGVzdF9wcm9ncy1icGZfZ2NjOiAkKFJVTk5FUl9QUkVSRVFTKSBGT1JDRVxuJiM0MztcdCYjNDM7JChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1icGZfZ2NjIFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXG4mIzQzO1x0XHRCUEZfQlVJTEQ9Z2NjXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MzsjIHRlc3RfbWFwcyBjb21waWxlcyBtYXBfdGVzdHMvKi5jIGFnYWluc3QgdGhlIGRlZmF1bHQgZmxhdm9yJiMzOTtzIHNrZWxldG9uc1xuJiM0MzskKE9VVFBVVCkvdGVzdF9tYXBzOiAkKFJVTk5FUl9QUkVSRVFTKSBtYXBfdGVzdHMvdGVzdHMuaCBkZWZhdWx0LXNrZWxzIEZPUkNFXG4mIzQzO1x0JiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfbWFwcyBGTEFWT1I9IFRFU1RTX0RJUj1tYXBfdGVzdHMgXFxcbiYjNDM7XHRcdEJQRl9CVUlMRD1ub25lXG4mIzQzO1xuJiM0MzsjIERlZmF1bHQtZmxhdm9yIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnMgY29uc3VtZWQgYnkgdGFyZ2V0cyBpbiB0aGlzXG4mIzQzOyMgTWFrZWZpbGUgKGFuZCBieSBsaWIubWsmIzM5O3MgaW5zdGFsbCBydWxlKSBhcmUgcHJvZHVjZWQgYnkgdGhlIHJ1bm5lclxuJiM0MzsjIHN1Yi1tYWtlIGFib3ZlOyB0aGUgZW1wdHkgcmVjaXBlIHBsdXMgdGhlIG9yZGVyLW9ubHkgcHJlcmVxdWlzaXRlXG4mIzQzOyMgbWFrZXMgdGhlbSBhdmFpbGFibGUgaGVyZSB3aXRob3V0IGR1cGxpY2F0aW5nIHRoZSBydW5uZXImIzM5O3MgcnVsZXMuXG4mIzQzO0RFRkFVTFRfQlBGX09CSlMgOj0gJChwYXRzdWJzdCBwcm9ncy8lLmMsJChPVVRQVVQpLyUuYnBmLm8sJCh3aWxkY2FyZCBwcm9ncy8qLmMpKVxuJiM0MztURVNUX0dFTl9GSUxFUyAmIzQzOz0gJChERUZBVUxUX0JQRl9PQkpTKVxuJiM0MztcbiYjNDM7QkVOQ0hfU0tFTFMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyxcdFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgICAgdGVzdF9vdmVyaGVhZC5za2VsLmggdHJpZ2dlcl9iZW5jaC5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgICAgcmluZ2J1Zl9iZW5jaC5za2VsLmggcGVyZmJ1Zl9iZW5jaC5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgICAgYmxvb21fZmlsdGVyX2JlbmNoLnNrZWwuaCBicGZfbG9vcF9iZW5jaC5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgICAgc3RybmNtcF9iZW5jaC5za2VsLmggYnBmX2hhc2htYXBfZnVsbF91cGRhdGVfYmVuY2guc2tlbC5oXFxcbiYjNDM7XHQgICAgICAgbG9jYWxfc3RvcmFnZV9iZW5jaC5za2VsLmhcdFx0XHRcdFxcXG4mIzQzO1x0ICAgICAgIGxvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlX2JlbmNoLnNrZWwuaFx0XHRcXFxuJiM0MztcdCAgICAgICBiZW5jaF9sb2NhbF9zdG9yYWdlX2NyZWF0ZS5za2VsLmhcdFx0XHRcXFxuJiM0MztcdCAgICAgICBicGZfaGFzaG1hcF9sb29rdXAuc2tlbC5oIGh0YWJfbWVtX2JlbmNoLnNrZWwuaFx0XHRcXFxuJiM0MztcdCAgICAgICBjcnlwdG9fYmVuY2guc2tlbC5oIGJlbmNoX3NvY2ttYXBfcHJvZy5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgICAgbHBtX3RyaWVfYmVuY2guc2tlbC5oIGxwbV90cmllX21hcC5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgICAgYnBmX25vcF9iZW5jaC5za2VsLmggeGRwX2xiX2JlbmNoLnNrZWwuaClcbiYjNDM7VE9QX1NLRUxTIDo9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8seHNrX3hkcF9wcm9ncy5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgIHhkcF9od19tZXRhZGF0YS5za2VsLmggeGRwX2ZlYXR1cmVzLnNrZWwuaFx0XHRcdFxcXG4mIzQzO1x0ICAgICB0ZXN0X2NvcmVfZXh0ZXJuLnNrZWwuaCkgJChCRU5DSF9TS0VMUylcbiYjNDM7XG4mIzQzOyMgRW1wdHktcmVjaXBlIGRlbGVnYXRpb246IFwmIzM0O2RlZmF1bHQtc2tlbHNcJiMzNDsgKHJlKWJ1aWxkcyB0aGUgZmlsZSB2aWEgdGhlXG4mIzQzOyMgcnVubmVyIHN1Yi1tYWtlLCBhZnRlciB3aGljaCBtYWtlIHJlLXN0YXRzIHRoZSB0YXJnZXQsIHNvIGRlcGVuZGVudHNcbiYjNDM7IyBzZWUgZnJlc2ggdGltZXN0YW1wcyB3aXRoaW4gdGhlIHNhbWUgaW52b2NhdGlvbi4gRGVwZW5kZW50cyBzdGlsbFxuJiM0MzsjIHJlYnVpbGQgb24gbXRpbWUgb25seSAtIHRoZSBwaG9ueSBwcmVyZXF1aXNpdGUgZG9lcyBub3QgY2FzY2FkZS5cbiYjNDM7JChERUZBVUxUX0JQRl9PQkpTKSAkKFRPUF9TS0VMUyk6IGRlZmF1bHQtc2tlbHMgO1xuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBTdGFuZGFsb25lIHRlc3QgYmluYXJpZXNcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzOyMgdGVzdF92ZXJpZmllciBpcyBtdWNoIHNpbXBsZXIgdGhhbiB0ZXN0X21hcHMvdGVzdF9wcm9ncyBhbmRcbiYjNDM7IyBzdWZmaWNpZW50bHkgZGlmZmVyZW50IGZyb20gdGhlbSAoZS5nLiwgaXRzIHRlc3RzLmggdXNlcyBhIGNvbXBsZXRlbHlcbiYjNDM7IyBkaWZmZXJlbnQgcGF0dGVybiksIHRoYXQgaXQmIzM5O3Mgd29ydGgganVzdCBkZWZpbmluZyBpdHMgcnVsZXMgZXhwbGljaXRseS5cbiYjNDM7JChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6IHRlc3RfdmVyaWZpZXIuYyB2ZXJpZmllci90ZXN0cy5oICQoQlBGT0JKKVx0XFxcbiYjNDM7XHRcdFx0ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1x0XHRcdFxcXG4mIzQzO1x0XHRcdCAkKE9VVFBVVCkvY2FwX2hlbHBlcnMub1x0XHRcdFxcXG4mIzQzO1x0XHRcdCAkKE9VVFBVVCkvdW5wcml2X2hlbHBlcnMub1xuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuIFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuYywkXikgJChMRExJQlMpIC1vICRAXG4gXG4gIyBJbmNsdWRlIGZpbmRfYml0LmMgdG8gY29tcGlsZSB4c2t4Y2VpdmVyLlxuIEVYVFJBX1NSQyA6PSAkKFRPT0xTRElSKS9saWIvZmluZF9iaXQuYyBwcm9nX3Rlc3RzL3Rlc3RfeHNrLmMgcHJvZ190ZXN0cy90ZXN0X3hzay5oXG4tJChPVVRQVVQpL3hza3hjZWl2ZXI6ICQoRVhUUkFfU1JDKSB4c2t4Y2VpdmVyLmMgeHNreGNlaXZlci5oICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hza194ZHBfcHJvZ3Muc2tlbC5oICQoQlBGT0JKKSB8ICQoT1VUUFVUKVxuJiM0MzskKE9VVFBVVCkveHNreGNlaXZlcjogJChFWFRSQV9TUkMpIHhza3hjZWl2ZXIuYyB4c2t4Y2VpdmVyLmggJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveHNrX3hkcF9wcm9ncy5za2VsLmggJChCUEZPQkopXG4gXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4gXHQkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEBcbiBcbi0kKE9VVFBVVCkveGRwX2h3X21ldGFkYXRhOiB4ZHBfaHdfbWV0YWRhdGEuYyAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hzay5vICQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGEuc2tlbC5oIHwgJChPVVRQVVQpXG4mIzQzOyQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGE6IHhkcF9od19tZXRhZGF0YS5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YS5za2VsLmhcbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbiBcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxuIFxuLSQoT1VUUFVUKS94ZHBfZmVhdHVyZXM6IHhkcF9mZWF0dXJlcy5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveGRwX2ZlYXR1cmVzLnNrZWwuaCB8ICQoT1VUUFVUKVxuJiM0MzskKE9VVFBVVCkveGRwX2ZlYXR1cmVzOiB4ZHBfZmVhdHVyZXMuYyAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hkcF9mZWF0dXJlcy5za2VsLmhcbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbiBcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxuIFxuQEAgLTk1NiwxMSAmIzQzOzU1OCwxOCBAQCAkKE9VVFBVVCkvdGVzdF9jcHA6IHRlc3RfY3BwLmNwcCAkKE9VVFBVVCkvdGVzdF9jb3JlX2V4dGVybi5za2VsLmggJChCUEZPQkopXG4gXHQkKGNhbGwgbXNnLENYWCwsJEApXG4gXHQkKFEpJChDWFgpICQoQ1hYRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jcHAsJF4pICQoTERMSUJTKSAtbyAkQFxuIFxuLSMgQmVuY2htYXJrIHJ1bm5lclxuLSQoT1VUUFVUKS9iZW5jaF8lLm86IGJlbmNocy9iZW5jaF8lLmMgYmVuY2guaCAkKEJQRk9CSilcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBCZW5jaG1hcmsgcnVubmVyLiBUaGUgYmVuY2htYXJrIGxpc3QgaXMgZGVmaW5lZCBieSB0aGUgZmlsZXMgaW5cbiYjNDM7IyBiZW5jaHMvOiBldmVyeSBiZW5jaHMvYmVuY2hfKi5jIGlzIGNvbXBpbGVkIGFuZCBsaW5rZWQgaW4uXG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO1xuJiM0MztCRU5DSF9PQkpTIDo9ICQoc29ydCAkKHBhdHN1YnN0IGJlbmNocy8lLmMsJChPVVRQVVQpLyUubywkKHdpbGRjYXJkIGJlbmNocy9iZW5jaF8qLmMpKSlcbiYjNDM7XG4mIzQzOyQoT1VUUFVUKS9iZW5jaF8lLm86IGJlbmNocy9iZW5jaF8lLmMgYmVuY2guaCAkKEJQRk9CSikgfCBkZWZhdWx0LXNrZWxzXG4gXHQkKGNhbGwgbXNnLENDLCwkQClcbi1cdCQoUSkkKENDKSAkKENGTEFHUykgLU8yIC1jICQoZmlsdGVyICUuYywkXikgJChMRExJQlMpIC1vICRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJEA7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtQkVOQ0gmIzM5OyAmIzM5OyQobm90ZGlyICRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyKSlcbiYjNDM7XHQkKFEpJChDQykgJChDRkxBR1MpIC1PMiAtYyAkKGZpbHRlciAlLmMsJF4pIC1vICRAICQoY2FsbCBza2lwX29uX2ZhaWwsQkVOQ0gpXG4mIzQzO1xuJiM0MzsjIGJlbmNobWFyay1zcGVjaWZpYyBnZW5lcmF0ZWQtc2tlbGV0b24gZGVwZW5kZW5jaWVzXG4gJChPVVRQVVQpL2JlbmNoX3JlbmFtZS5vOiAkKE9VVFBVVCkvdGVzdF9vdmVyaGVhZC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfdHJpZ2dlci5vOiAkKE9VVFBVVCkvdHJpZ2dlcl9iZW5jaC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfcmluZ2J1ZnMubzogJChPVVRQVVQpL3JpbmdidWZfYmVuY2guc2tlbC5oIFxcXG5AQCAtOTgwLDM3ICYjNDM7NTg5LDE5IEBAICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubzogJChPVVRQVVQpL2xwbV90cmllX2JlbmNoLnNrZWwuaCAkKE9VVFBVVCkvbHBtX3RyXG4gJChPVVRQVVQpL2JlbmNoX2JwZl9ub3AubzogJChPVVRQVVQpL2JwZl9ub3BfYmVuY2guc2tlbC5oIGJlbmNoX2JwZl90aW1pbmcuaFxuICQoT1VUUFVUKS9iZW5jaF94ZHBfbGIubzogJChPVVRQVVQpL3hkcF9sYl9iZW5jaC5za2VsLmggYmVuY2hfYnBmX3RpbWluZy5oXG4gJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubzogYmVuY2hfYnBmX3RpbWluZy5oXG4mIzQzO1xuICQoT1VUUFVUKS9iZW5jaC5vOiBiZW5jaC5oIHRlc3RpbmdfaGVscGVycy5oICQoQlBGT0JKKVxuICQoT1VUUFVUKS9iZW5jaDogTERMSUJTICYjNDM7PSAtbG1cbi0kKE9VVFBVVCkvYmVuY2g6ICQoT1VUUFVUKS9iZW5jaC5vIFxcXG4tXHRcdCAkKFRFU1RJTkdfSEVMUEVSUykgXFxcbi1cdFx0ICQoVFJBQ0VfSEVMUEVSUykgXFxcbi1cdFx0ICQoQ0dST1VQX0hFTFBFUlMpIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfY291bnQubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3JlbmFtZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfdHJpZ2dlci5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfcmluZ2J1ZnMubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2Jsb29tX2ZpbHRlcl9tYXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9sb29wLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9zdHJuY21wLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfbG9jYWxfc3RvcmFnZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfbG9jYWxfc3RvcmFnZV9yY3VfdGFza3NfdHJhY2UubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfbG9jYWxfc3RvcmFnZV9jcmVhdGUubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2h0YWJfbWVtLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfY3J5cHRvLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9zb2NrbWFwLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9ub3AubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3hkcF9sYi5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvdXNkdF8xLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS91c2R0XzIubyBcXFxuLVx0XHQgI1xuJiM0MzskKE9VVFBVVCkvYmVuY2g6ICQoT1VUUFVUKS9iZW5jaC5vXHRcdFxcXG4mIzQzO1x0XHQgJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vXHRcXFxuJiM0MztcdFx0ICQoT1VUUFVUKS90cmFjZV9oZWxwZXJzLm9cdFxcXG4mIzQzO1x0XHQgJChPVVRQVVQpL2Nncm91cF9oZWxwZXJzLm9cdFxcXG4mIzQzO1x0XHQgJChPVVRQVVQpL3VzZHRfMS5vXHRcdFxcXG4mIzQzO1x0XHQgJChPVVRQVVQpL3VzZHRfMi5vXHRcdFxcXG4mIzQzO1x0XHQgJChCRU5DSF9PQkpTKVxuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuLVx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQCAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICRAOyBwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLUxJTksmIzM5OyAmIzM5OyQobm90ZGlyICRAKSAoc29tZSBiZW5jaG1hcmtzIG1heSBoYXZlIGJlZW4gc2tpcHBlZCkmIzM5OyAxXHUwMDNlXHUwMDI2MikpXG4mIzQzO1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQCBcXFxuJiM0MztcdFx0JChjYWxsIHNraXBfb25fZmFpbCxMSU5LLCwoc29tZSBiZW5jaG1hcmtzIG1heSBoYXZlIGJlZW4gc2tpcHBlZCkpXG4gXG4gIyBUaGlzIHdvcmtzIGFyb3VuZCBHQ0Mgd2FybmluZyBhYm91dCBzbnByaW50ZiB0cnVuY2F0aW5nIHN0cmluZ3MgbGlrZTpcbiAjXG5AQCAtMTAyMiwxMyAmIzQzOzYxMyw2IEBAICQoT1VUUFVUKS92ZXJpc3RhdDogJChPVVRQVVQpL3ZlcmlzdGF0Lm9cbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbiBcdCQoUSkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKGZpbHRlciAlLmEgJS5vLCReKSAkKExETElCUykgLW8gJEBcbiBcbi0jIExpbmtpbmcgdXByb2JlX211bHRpIGNhbiBmYWlsIGR1ZSB0byByZWxvY2F0aW9uIG92ZXJmbG93cyBvbiBtaXBzLlxuLSQoT1VUUFVUKS91cHJvYmVfbXVsdGk6IENGTEFHUyAmIzQzOz0gJChpZiAkKGZpbHRlciBtaXBzLCAkKEFSQ0gpKSwtbXhnb3QpXG4tJChPVVRQVVQpL3Vwcm9iZV9tdWx0aTogdXByb2JlX211bHRpLmMgdXByb2JlX211bHRpLmxkXG4tXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4tXHQkKFEpJChDQykgJChDRkxBR1MpIC1XbCwtVCx1cHJvYmVfbXVsdGkubGQgLU8wICQoTERGTEFHUykgXHRcXFxuLVx0XHQkKGZpbHRlci1vdXQgJS5sZCwkXikgJChMRExJQlMpIC1vICRAXG4tXG4gRVhUUkFfQ0xFQU4gOj0gJChTQ1JBVENIX0RJUikgJChIT1NUX1NDUkFUQ0hfRElSKVx0XHRcdFxcXG4gXHRwcm9nX3Rlc3RzL3Rlc3RzLmggbWFwX3Rlc3RzL3Rlc3RzLmggdmVyaWZpZXIvdGVzdHMuaFx0XHRcXFxuIFx0ZmVhdHVyZSBicGZ0b29sICQoVEVTVF9LTU9EX1RBUkdFVFMpXHRcdFx0XHRcXFxuQEAgLTEwMzgsNyAmIzQzOzYyMiw3IEBAIEVYVFJBX0NMRUFOIDo9ICQoU0NSQVRDSF9ESVIpICQoSE9TVF9TQ1JBVENIX0RJUilcdFx0XHRcXFxuIFx0XHRcdCAgICAgICBsaWJ1cmFuZG9tX3JlYWQuc28pXHRcdFx0XFxcbiBcdCQoT1VUUFVUKS9GRUFUVVJFLURVTVAuc2VsZnRlc3RzXG4gXG4tLlBIT05ZOiBkb2NzIGRvY3MtY2xlYW5cbiYjNDM7LlBIT05ZOiBkb2NzIGRvY3MtY2xlYW4gbGliYXJlbmEgbGliYXJlbmFfYXNhblxuIFxuICMgRGVsZXRlIHBhcnRpYWxseSB1cGRhdGVkIChjb3JydXB0ZWQpIGZpbGVzIG9uIGVycm9yXG4gLkRFTEVURV9PTl9FUlJPUjpcbkBAIC0xMDYyLDkgJiM0Mzs2NDYsMyBAQCBvdmVycmlkZSBkZWZpbmUgSU5TVEFMTF9SVUxFXG4gXHRcdFx0JChJTlNUQUxMX1BBVEgpLyQkRElSO1x0XHRcdFx0ICBcXFxuIFx0ZG9uZVxuIGVuZGVmXG4tXG4tbGliYXJlbmE6ICQoTElCQVJFTkFfU0tFTClcbi1cbi1pZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKVxuLWxpYmFyZW5hX2FzYW46ICQoTElCQVJFTkFfQVNBTl9TS0VMKVxuLWVuZGlmXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFycyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZWE5NzVmZWVmMDEzNmZcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnNcbkBAIC0wLDAgJiM0MzsxLDIwNCBAQFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOyNcbiYjNDM7IyBTaGFyZWQgdG9vbGNoYWluLCBwYXRoIGFuZCBmbGFnIGRlZmluaXRpb25zIGZvciB0aGUgQlBGIHNlbGZ0ZXN0cyBidWlsZC5cbiYjNDM7IyBJbmNsdWRlZCBieSBib3RoIE1ha2VmaWxlICh0aGUgdG9wIGxldmVsKSBhbmQgTWFrZWZpbGUucnVubmVyIChvbmVcbiYjNDM7IyB0ZXN0LXJ1bm5lciBpbnN0YW5jZSkuXG4mIzQzOyNcbiYjNDM7IyBSZXF1aXJlbWVudHMgYXQgaW5jbHVkZSB0aW1lOlxuJiM0MzsjICAgLSAkKE9VVFBVVCkgaXMgc2V0IHRvIGFuIGFic29sdXRlIHBhdGhcbiYjNDM7IyAgIC0gdG9vbHMvYnVpbGQvQnVpbGQuaW5jbHVkZSwgdG9vbHMvc2NyaXB0cy9NYWtlZmlsZS5hcmNoIGFuZFxuJiM0MzsjICAgICB0b29scy9zY3JpcHRzL01ha2VmaWxlLmluY2x1ZGUgaGF2ZSBiZWVuIGluY2x1ZGVkIChmb3IgU1JDQVJDSCBldGMuKVxuJiM0MztcbiYjNDM7Q1hYID89ICQoQ1JPU1NfQ09NUElMRSlnJiM0MzsmIzQzO1xuJiM0MztQS0dfQ09ORklHID89ICQoQ1JPU1NfQ09NUElMRSlwa2ctY29uZmlnXG4mIzQzO1xuJiM0MztUT09MU0RJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4pXG4mIzQzO0xJQkRJUiA6PSAkKFRPT0xTRElSKS9saWJcbiYjNDM7QlBGRElSIDo9ICQoTElCRElSKS9icGZcbiYjNDM7VE9PTFNJTkNESVIgOj0gJChUT09MU0RJUikvaW5jbHVkZVxuJiM0MztUT09MU0FSQ0hJTkNESVIgOj0gJChUT09MU0RJUikvYXJjaC8kKFNSQ0FSQ0gpL2luY2x1ZGVcbiYjNDM7QlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbFxuJiM0MztBUElESVIgOj0gJChUT09MU0lOQ0RJUikvdWFwaVxuJiM0MztpZm5lcSAoJChPKSwpXG4mIzQzO0dFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkXG4mIzQzO2Vsc2VcbiYjNDM7R0VORElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLi8uLi9pbmNsdWRlL2dlbmVyYXRlZClcbiYjNDM7ZW5kaWZcbiYjNDM7R0VOSERSIDo9ICQoR0VORElSKS9hdXRvY29uZi5oXG4mIzQzO1xuJiM0MztpZm5lcSAoJCh3aWxkY2FyZCAkKEdFTkhEUikpLClcbiYjNDM7ICBHRU5GTEFHUyA6PSAtREhBVkVfR0VOSERSXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MztpZmVxICgkKHNyY3RyZWUpLClcbiYjNDM7c3JjdHJlZSA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4pXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MzsjIEltbWVkaWF0ZSAod2l0aCBhbiBvdmVycmlkZS1wcmVzZXJ2aW5nIGd1YXJkKTogYSBwbGFpbiA/PSBzdGF5c1xuJiM0MzsjIHJlY3Vyc2l2ZWx5IGV4cGFuZGVkIGFuZCB3b3VsZCByZS1ydW4gJiMzOTtjb21tYW5kIC12JiMzOTsgb24gZXZlcnkgZXhwYW5zaW9uLlxuJiM0MztpZmVxICgkKG9yaWdpbiBCUEZfR0NDKSx1bmRlZmluZWQpXG4mIzQzO0JQRl9HQ0NcdFx0Oj0gJChzaGVsbCBjb21tYW5kIC12IGJwZi1nY2M7KVxuJiM0MztlbmRpZlxuJiM0MztpZmRlZiBBU0FOXG4mIzQzO1NBTl9DRkxBR1NcdD89IC1mc2FuaXRpemU9YWRkcmVzcyAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclxuJiM0MztlbHNlXG4mIzQzO1NBTl9DRkxBR1NcdD89XG4mIzQzO2VuZGlmXG4mIzQzO1NBTl9MREZMQUdTXHQ/PSAkKFNBTl9DRkxBR1MpXG4mIzQzO1JFTEVBU0VcdFx0Pz1cbiYjNDM7T1BUX0ZMQUdTXHQ/PSAkKGlmICQoUkVMRUFTRSksLU8yLC1PMClcbiYjNDM7XG4mIzQzO0xJQkVMRl9DRkxBR1NcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1jZmxhZ3MgMlx1MDAzZS9kZXYvbnVsbClcbiYjNDM7TElCRUxGX0xJQlNcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1saWJzIDJcdTAwM2UvZGV2L251bGwgfHwgZWNobyAtbGVsZilcbiYjNDM7XG4mIzQzO1NLSVBfRE9DU1x0Pz1cbiYjNDM7U0tJUF9MTFZNXHQ/PVxuJiM0MztTS0lQX0xJQkJGRFx0Pz1cbiYjNDM7U0tJUF9DUllQVE9cdD89XG4mIzQzO1xuJiM0MzsjIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxuJiM0MzsjIGJlbmNobWFyayBjb21waWxhdGlvbiBmYWlsdXJlIGlzIGZhdGFsLiBTZXQgdG8gMCB0byB0b2xlcmF0ZSBmYWlsdXJlc1xuJiM0MzsjIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLlxuJiM0MztCUEZfU1RSSUNUX0JVSUxEID89IDFcbiYjNDM7UEVSTUlTU0lWRSA6PSAkKGZpbHRlciAwLCQoQlBGX1NUUklDVF9CVUlMRCkpXG4mIzQzO1xuJiM0MzsjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgc3VmZml4OiBvbiBmYWlsdXJlLCByZW1vdmUgdGhlIHRhcmdldCwgZW1pdCBhXG4mIzQzOyMgU0tJUCBtYXJrZXIgYW5kIHJlcG9ydCBzdWNjZXNzIHNvIHRoZSByZXN0IG9mIHRoZSBidWlsZCBjb250aW51ZXMuXG4mIzQzOyMgJCgxKSAtIFNLSVAgdGFnIChCUEYsIFRFU1QsIEJFTkNILCBTS0VMLCBMSU5LLCAuLi4pXG4mIzQzOyMgJCgyKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldFxuJiM0MzsjICQoMykgLSBvcHRpb25hbCBub3RlIGFwcGVuZGVkIHRvIHRoZSBTS0lQIG1lc3NhZ2VcbiYjNDM7c2tpcF9vbl9mYWlsID0gJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgJChSTSkgJEAgJCgyKTsgXFxcbiYjNDM7XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLSQoMSkmIzM5OyAmIzM5OyQobm90ZGlyICRAKSQoaWYgJCgzKSwgJCgzKSkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgfSlcbiYjNDM7XG4mIzQzOyMgS2VybmVsIHRlc3QgbW9kdWxlczsgVEVTVF9LTU9EUz0gb24gdGhlIGNvbW1hbmQgbGluZSBkaXNhYmxlcyB0aGVtLlxuJiM0MztURVNUX0tNT0RTID89IGJwZl90ZXN0bW9kLmtvIGJwZl90ZXN0X25vX2NmaS5rbyBicGZfdGVzdF9tb2RvcmRlcl94LmtvIFxcXG4mIzQzO1x0YnBmX3Rlc3RfbW9kb3JkZXJfeS5rbyBicGZfdGVzdF9ycXNwaW5sb2NrLmtvXG4mIzQzO1RFU1RfS01PRF9UQVJHRVRTID0gJChhZGRwcmVmaXggJChPVVRQVVQpLywkKFRFU1RfS01PRFMpKVxuJiM0MztcbiYjNDM7IyBPdXRwdXQtdHJlZSBsYXlvdXQuIERlZmluZWQgYmVmb3JlIENPTU1PTl9DRkxBR1Mgb24gcHVycG9zZTogQ0ZMQUdTXG4mIzQzOyMgYmVsb3cgaXMgZXhwYW5kZWQgaW1tZWRpYXRlbHkgYW5kIHJlZmVyZW5jZXMgJChJTkNMVURFX0RJUikuXG4mIzQzO1NDUkFUQ0hfRElSIDo9ICQoT1VUUFVUKS90b29sc1xuJiM0MztCVUlMRF9ESVIgOj0gJChTQ1JBVENIX0RJUikvYnVpbGRcbiYjNDM7SU5DTFVERV9ESVIgOj0gJChTQ1JBVENIX0RJUikvaW5jbHVkZVxuJiM0MztCUEZPQkogOj0gJChCVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYVxuJiM0MztpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4mIzQzO0hPU1RfQlVJTERfRElSXHRcdDo9ICQoQlVJTERfRElSKS9ob3N0XG4mIzQzO0hPU1RfU0NSQVRDSF9ESVJcdDo9ICQoT1VUUFVUKS9ob3N0LXRvb2xzXG4mIzQzO0hPU1RfSU5DTFVERV9ESVJcdDo9ICQoSE9TVF9TQ1JBVENIX0RJUikvaW5jbHVkZVxuJiM0MztlbHNlXG4mIzQzO0hPU1RfQlVJTERfRElSXHRcdDo9ICQoQlVJTERfRElSKVxuJiM0MztIT1NUX1NDUkFUQ0hfRElSXHQ6PSAkKFNDUkFUQ0hfRElSKVxuJiM0MztIT1NUX0lOQ0xVREVfRElSXHQ6PSAkKElOQ0xVREVfRElSKVxuJiM0MztlbmRpZlxuJiM0MztIT1NUX0JQRk9CSiA6PSAkKEhPU1RfQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcbiYjNDM7UkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHNcbiYjNDM7XG4mIzQzO0RFRkFVTFRfQlBGVE9PTCA6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxuJiM0MztpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4mIzQzO0NST1NTX0JQRlRPT0wgOj0gJChTQ1JBVENIX0RJUikvc2Jpbi9icGZ0b29sXG4mIzQzO1RSVU5ORVJfQlBGVE9PTCA6PSAkKENST1NTX0JQRlRPT0wpXG4mIzQzO1VTRV9CT09UU1RSQVAgOj1cbiYjNDM7ZWxzZVxuJiM0MztUUlVOTkVSX0JQRlRPT0wgOj0gJChERUZBVUxUX0JQRlRPT0wpXG4mIzQzO1VTRV9CT09UU1RSQVAgOj0gYm9vdHN0cmFwL1xuJiM0MztlbmRpZlxuJiM0MztCUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKVxuJiM0MztcbiYjNDM7Q09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMVx0XHRcdFxcXG4mIzQzO1x0ICAtV2FsbCAtV2Vycm9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXHRcdFx0XHRcXFxuJiM0MztcdCAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZVx0XHRcdFx0XHRcXFxuJiM0MztcdCAgJChHRU5GTEFHUykgJChTQU5fQ0ZMQUdTKSAkKExJQkVMRl9DRkxBR1MpXHRcdFx0XFxcbiYjNDM7XHQgIC1JJChDVVJESVIpIC1JJChJTkNMVURFX0RJUikgLUkkKEdFTkRJUikgLUkkKExJQkRJUilcdFx0XFxcbiYjNDM7XHQgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVClcdFxcXG4mIzQzO1x0ICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXG4mIzQzO0xERkxBR1MgJiM0Mzs9ICQoU0FOX0xERkxBR1MpXG4mIzQzO0xETElCUyAmIzQzOz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkXG4mIzQzO1xuJiM0MztQQ0FQX0NGTEFHU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGxpYnBjYXAgMlx1MDAzZS9kZXYvbnVsbCBcdTAwMjZcdTAwMjYgZWNobyBcJiMzNDstRFRSQUZGSUNfTU9OSVRPUj0xXCYjMzQ7KVxuJiM0MztQQ0FQX0xJQlNcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGlicGNhcCAyXHUwMDNlL2Rldi9udWxsKVxuJiM0MztMRExJQlMgJiM0Mzs9ICQoUENBUF9MSUJTKVxuJiM0MzsjIFByZXBlbmQgcmF0aGVyIHRoYW4gYXBwZW5kOiB0aGUgaW5jbHVkZS1zZWFyY2ggb3JkZXIgbXVzdCBzdGF5XG4mIzQzOyMgXCYjMzQ7JChDT01NT05fQ0ZMQUdTKSBmaXJzdCwgbGliLm1rIGFkZGl0aW9ucyBhZnRlclwmIzM0OyByZWdhcmRsZXNzIG9mIHdoZXRoZXJcbiYjNDM7IyBsaWIubWsgd2FzIGluY2x1ZGVkIGJlZm9yZSB0aGlzIGZpbGUgKHRvcCBsZXZlbCkgb3Igbm90IGF0IGFsbCAocnVubmVyKS5cbiYjNDM7Q0ZMQUdTIDo9ICQoQ09NTU9OX0NGTEFHUykgJChQQ0FQX0NGTEFHUykgJChDRkxBR1MpXG4mIzQzO1xuJiM0MztpZm5lcSAoJChMTFZNKSwpXG4mIzQzOyMgU2lsZW5jZSBzb21lIHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgd2l0aCBjbGFuZ1xuJiM0MztDRkxBR1MgJiM0Mzs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudFxuJiM0MztlbmRpZlxuJiM0MztcbiYjNDM7IyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMiYjNDM7KVxuJiM0MztDTEFOR19IQVNfQVJFTkFfQVNBTiA6PSAkKHNoZWxsIGVjaG8gJiMzOTtpbnQgeDsmIzM5OyB8IFxcXG4mIzQzO1x0JChDTEFORykgLS10YXJnZXQ9YnBmIC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MgXFxcbiYjNDM7XHQtbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcXFxuJiM0MztcdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlx1MDAzZS9kZXYvbnVsbCBcdTAwMjZcdTAwMjYgZWNobyAxKVxuJiM0MztpZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKVxuJiM0MztDRkxBR1MgJiM0Mzs9IC1ESEFTX0JQRl9BUkVOQV9BU0FOXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MztWTUxJTlVYX0JURl9QQVRIUyA/PSAkKGlmICQoTyksJChPKS92bWxpbnV4KVx0XHRcdFx0XFxcbiYjNDM7XHRcdCAgICAgJChpZiAkKEtCVUlMRF9PVVRQVVQpLCQoS0JVSUxEX09VVFBVVCkvdm1saW51eClcdFxcXG4mIzQzO1x0XHQgICAgIC4uLy4uLy4uLy4uL3ZtbGludXhcdFx0XHRcdFxcXG4mIzQzO1x0XHQgICAgIC9zeXMva2VybmVsL2J0Zi92bWxpbnV4XHRcdFx0XHRcXFxuJiM0MztcdFx0ICAgICAvYm9vdC92bWxpbnV4LSQoc2hlbGwgdW5hbWUgLXIpXG4mIzQzO1ZNTElOVVhfQlRGID89ICQoYWJzcGF0aCAkKGZpcnN0d29yZCAkKHdpbGRjYXJkICQoVk1MSU5VWF9CVEZfUEFUSFMpKSkpXG4mIzQzO2lmZXEgKCQoVk1MSU5VWF9CVEYpLClcbiYjNDM7JChlcnJvciBDYW5ub3QgZmluZCBhIHZtbGludXggZm9yIFZNTElOVVhfQlRGIGF0IGFueSBvZiBcJiMzNDskKFZNTElOVVhfQlRGX1BBVEhTKVwmIzM0OylcbiYjNDM7ZW5kaWZcbiYjNDM7XG4mIzQzOyMgR2V0IENsYW5nJiMzOTtzIGRlZmF1bHQgaW5jbHVkZXMgb24gdGhpcyBzeXN0ZW0sIGFzIG9wcG9zZWQgdG8gdGhvc2Ugc2VlbiBieVxuJiM0MzsjICYjMzk7LS10YXJnZXQ9YnBmJiMzOTsuIFRoaXMgZml4ZXMgXCYjMzQ7bWlzc2luZ1wmIzM0OyBmaWxlcyBvbiBzb21lIGFyY2hpdGVjdHVyZXMvZGlzdHJvcyxcbiYjNDM7IyBzdWNoIGFzIGFzbS9ieXRlb3JkZXIuaCwgYXNtL3NvY2tldC5oLCBhc20vc29ja2lvcy5oLCBzeXMvY2RlZnMuaCBldGMuXG4mIzQzOyNcbiYjNDM7IyBVc2UgJiMzOTstaWRpcmFmdGVyJiMzOTs6IERvbiYjMzk7dCBpbnRlcmZlcmUgd2l0aCBpbmNsdWRlIG1lY2hhbmljcyBleGNlcHQgd2hlcmUgdGhlXG4mIzQzOyMgYnVpbGQgd291bGQgaGF2ZSBmYWlsZWQgYW55d2F5cy5cbiYjNDM7ZGVmaW5lIGdldF9zeXNfaW5jbHVkZXNcbiYjNDM7JChzaGVsbCAkKDEpICQoMikgLXYgLUUgLSBcdTAwM2MvZGV2L251bGwgMlx1MDAzZVx1MDAyNjEgXFxcbiYjNDM7XHR8IHNlZCAtbiAmIzM5Oy9cdTAwM2MuLi5cdTAwM2Ugc2VhcmNoIHN0YXJ0cyBoZXJlOi8sL0VuZCBvZiBzZWFyY2ggbGlzdC4veyBzfCBcXCgvLipcXCl8LWlkaXJhZnRlciBcXDF8cCB9JiMzOTspIFxcXG4mIzQzOyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX3Jpc2N2X3hsZW4gJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKFwmIzM0Oy1EX19yaXNjdl94bGVuPSVkIC1EX19CSVRTX1BFUl9MT05HPSVkXCYjMzQ7LCAkJDMsICQkMyl9JiMzOTspIFxcXG4mIzQzOyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX2xvb25nYXJjaF9ncmxlbiAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoXCYjMzQ7LURfX0JJVFNfUEVSX0xPTkc9JWRcJiMzNDssICQkMyl9JiMzOTspIFxcXG4mIzQzOyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgLUUgJiMzOTtNSVBTKEVMfEVCKXxfTUlQU19TWihQVFJ8TE9ORykgfF9NSVBTX1NJTSB8X0FCSShPMzJ8TjMyfDY0KSAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoXCYjMzQ7LUQlcz0lcyBcJiMzNDssICQkMiwgJCQzKX0mIzM5OylcbiYjNDM7ZW5kZWZcbiYjNDM7XG4mIzQzOyMgRGV0ZXJtaW5lIHRhcmdldCBlbmRpYW5uZXNzLlxuJiM0MztJU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgXFxcbiYjNDM7XHRcdFx0Z3JlcCAmIzM5O2RlZmluZSBfX0JZVEVfT1JERVJfXyBfX09SREVSX0xJVFRMRV9FTkRJQU5fXyYjMzk7KVxuJiM0MztNRU5ESUFOIDo9ICQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKVxuJiM0MztCUEZfVEFSR0VUX0VORElBTiA6PSAkKGlmICQoSVNfTElUVExFX0VORElBTiksLS10YXJnZXQ9YnBmZWwsLS10YXJnZXQ9YnBmZWIpXG4mIzQzO1xuJiM0MztpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4mIzQzO0NMQU5HX1RBUkdFVF9BUkNIID0gLS10YXJnZXQ9JChub3RkaXIgJChDUk9TU19DT01QSUxFOiUtPSUpKVxuJiM0MztlbmRpZlxuJiM0MztcbiYjNDM7Q0xBTkdfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLCQoQ0xBTkcpLCQoQ0xBTkdfVEFSR0VUX0FSQ0gpKVxuJiM0MztCUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXHRcXFxuJiM0MztcdCAgICAgLUkkKElOQ0xVREVfRElSKSAtSSQoQ1VSRElSKSAtSSQoQVBJRElSKVx0XHRcdFxcXG4mIzQzO1x0ICAgICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXHRcdFx0XHRcXFxuJiM0MztcdCAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKVx0XHRcdFxcXG4mIzQzO1x0ICAgICAtc3RkPWdudTExXHRcdCBcdFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIFx0XHRcdFx0XHRcXFxuJiM0MztcdCAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWdcdFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgIC1mbXMtZXh0ZW5zaW9uc1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0ICAgICAtV25vLWNvbXBhcmUtZGlzdGluY3QtcG9pbnRlci10eXBlc1x0XHRcdFxcXG4mIzQzO1x0ICAgICAtV25vLWluaXRpYWxpemVyLW92ZXJyaWRlc1x0XHRcdFx0XHRcXFxuJiM0MztcdCAgICAgI1xuJiM0MzsjIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZVxuJiM0MztcbiYjNDM7Q0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXG4mIzQzO1xuJiM0MzsjIFNpZ25pbmcga2V5L2NlcnQgc2hhcmVkIGJ5IHRoZSBzaWduZWQgbGlnaHQgc2tlbGV0b25zIGFuZCB0ZXN0X3Byb2dzLlxuJiM0MztWRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXG4mIzQzO1ZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0LmhcbiYjNDM7VkVSSUZJQ0FUSU9OX0NFUlQgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LmRlclxuJiM0MztQUklWQVRFX0tFWSA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkucGVtXG4mIzQzO1xuJiM0MzsjIGxpYmFyZW5hIHNrZWxldG9ucywgYnVpbHQgYnkgdGhlIGxpYmFyZW5hLyBzdWItbWFrZSAoZHJpdmVuIGJ5IHRoZSB0b3BcbiYjNDM7IyBsZXZlbCBNYWtlZmlsZSk7IHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzIGRlcGVuZCBvbiB0aGUgaGVhZGVycy5cbiYjNDM7TElCQVJFTkFfU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYS5za2VsLmhcbiYjNDM7aWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcbiYjNDM7TElCQVJFTkFfQVNBTl9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hX2FzYW4uc2tlbC5oXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MztpZm5lcSAoJChWKSwxKVxuJiM0MztzdWJtYWtlX2V4dHJhcyA6PSBmZWF0dXJlX2Rpc3BsYXk9MFxuJiM0MztlbmRpZlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXIgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjRjNThjYzUxZjI1MTRlXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyXG5AQCAtMCwwICYjNDM7MSwzMTMgQEBcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjXG4mIzQzOyMgQnVpbGQgb25lIEJQRiB0ZXN0LXJ1bm5lciBpbnN0YW5jZTogdGVzdF9wcm9ncywgb25lIG9mIGl0cyBmbGF2b3JzXG4mIzQzOyMgKG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYyksIG9yIHRlc3RfbWFwcy5cbiYjNDM7I1xuJiM0MzsjIEVhY2ggaW5zdGFuY2UgaXMgYW4gaW5kZXBlbmRlbnQgc3ViLW1ha2Ugd2l0aCBpdHMgb3duIG91dHB1dCBkaXJlY3RvcnksXG4mIzQzOyMgc28gZXZlcnl0aGluZyBoZXJlIGlzIHdyaXR0ZW4gaW4gcGxhaW4gbWFrZSAtIG5vICQkLWVzY2FwaW5nLCBubyBldmFsLFxuJiM0MzsjIG5vIHBlci1mbGF2b3IgZ3VhcmRzLiBUaGlzIGZpbGUgaXMgYWx3YXlzIGludm9rZWQgYnkgdGhlIG1haW4gTWFrZWZpbGUsXG4mIzQzOyMgbmV2ZXIgZGlyZWN0bHk6IGFsbCBzaGFyZWQgcHJlcmVxdWlzaXRlcyAobGliYnBmLCBicGZ0b29sLCB2bWxpbnV4LmgsXG4mIzQzOyMgdmVyaXN0YXQsIGhlbHBlciBvYmplY3RzLCBzaWduaW5nIGtleSwgZ2VuZXJhdGVkIHRlc3RzLmgsIGV4dHJhXG4mIzQzOyMgYmluYXJpZXMpIGFyZSBidWlsdCBieSB0aGUgbWFpbiBNYWtlZmlsZSAqYmVmb3JlKiB0aGlzIG9uZSBydW5zIGFuZCBhcmVcbiYjNDM7IyByZWZlcmVuY2VkIGJlbG93IGFzIHBsYWluIGZpbGVzLlxuJiM0MzsjXG4mIzQzOyMgUGFyYW1ldGVycyAoYWxsIHBhc3NlZCBvbiB0aGUgc3ViLW1ha2UgY29tbWFuZCBsaW5lKTpcbiYjNDM7IyAgIE9VVFBVVCAgICAgIGFic29sdXRlIHBhdGggb2YgdGhlIHNlbGZ0ZXN0cyBvdXRwdXQgZGlyZWN0b3J5XG4mIzQzOyMgICBSVU5ORVIgICAgICBiYXNlIGJpbmFyeSBuYW1lOiB0ZXN0X3Byb2dzIHwgdGVzdF9tYXBzXG4mIzQzOyMgICBGTEFWT1IgICAgICBmbGF2b3Igc3VmZml4OiBlbXB0eSB8IG5vX2FsdTMyIHwgY3B1djQgfCBicGZfZ2NjXG4mIzQzOyMgICBURVNUU19ESVIgICBkaXJlY3Rvcnkgd2l0aCB0aGUgdGVzdCBzb3VyY2VzOiBwcm9nX3Rlc3RzIHwgbWFwX3Rlc3RzXG4mIzQzOyMgICBCUEZfQlVJTEQgICBob3cgdG8gYnVpbGQgcHJvZ3MvKi5jIEJQRiBvYmplY3RzOiBjbGFuZyB8IGdjYyB8IG5vbmVcbiYjNDM7IyAgIEJQRl9NQ1BVICAgIGNsYW5nIC1tY3B1PSB2YWx1ZTogdjIgfCB2MyB8IHY0XG4mIzQzOyMgICBCUEZfREVGSU5FUyBleHRyYSBkZWZpbmVzIGZvciBCUEYgb2JqZWN0cyAoZS5nLiAtREVOQUJMRV9BVE9NSUNTX1RFU1RTKVxuJiM0MzsjICAgQ0MgICAgICAgICAgQyBjb21waWxlciAoYXMgcmVzb2x2ZWQgYnkgbGliLm1rIGluIHRoZSBtYWluIE1ha2VmaWxlKVxuJiM0MzsjICAgTExWTV9DRkxBR1MvTExWTV9MRExJQlMvTExWTV9MREZMQUdTXG4mIzQzOyMgICAgICAgICAgICAgICByZXN1bHRzIG9mIHRoZSB0b3AtbGV2ZWwgTExWTSBmZWF0dXJlIHByb2JlXG4mIzQzO1xuJiM0MztpbmNsdWRlIC4uLy4uLy4uL2J1aWxkL0J1aWxkLmluY2x1ZGVcbiYjNDM7aW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2hcbiYjNDM7aW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmluY2x1ZGVcbiYjNDM7XG4mIzQzOyMgU2FtZSBtZXNzYWdlIGhlbHBlcnMgYXMgLi4vbGliLm1rLCB3aGljaCBvbmx5IHRoZSB0b3AgbGV2ZWwgaW5jbHVkZXMuXG4mIzQzO2lmZXEgKCQoViksMSlcbiYjNDM7USA9XG4mIzQzO21zZyA9XG4mIzQzO2Vsc2VcbiYjNDM7USA9IEBcbiYjNDM7bXNnID0gQHByaW50ZiAmIzM5OyAgJS04cyVzICVzJXNcXG4mIzM5OyBcJiMzNDskKDEpXCYjMzQ7IFwmIzM0OyQoaWYgJCgyKSwgWyQoMildKVwmIzM0OyBcJiMzNDskKG5vdGRpciAkKDMpKVwmIzM0OyBcJiMzNDskKGlmICQoNCksICQoNCkpXCYjMzQ7O1xuJiM0MztNQUtFRkxBR1MgJiM0Mzs9IC0tbm8tcHJpbnQtZGlyZWN0b3J5XG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MztpbmNsdWRlIE1ha2VmaWxlLmJ1aWxkdmFyc1xuJiM0MztcbiYjNDM7IyBLZWVwIGluIHN5bmMgd2l0aCB0aGUgQ0ZMQUdTL0xERkxBR1MgYWRkaXRpb25zIGluIC4uL2xpYi5tay5cbiYjNDM7Q0ZMQUdTICYjNDM7PSAtRF9HTlVfU09VUkNFPVxuJiM0MztDRkxBR1MgJiM0Mzs9IC1JJChzcmN0cmVlKS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0c1xuJiM0MztDRkxBR1MgJiM0Mzs9ICQoVVNFUkNGTEFHUylcbiYjNDM7TERGTEFHUyAmIzQzOz0gJChVU0VSTERGTEFHUylcbiYjNDM7aWZuZXEgKCQoTExWTSksKVxuJiM0MztDRkxBR1MgJiM0Mzs9IC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyXG4mIzQzO0NGTEFHUyAmIzQzOz0gLVduby1nbnUtdmFyaWFibGUtc2l6ZWQtdHlwZS1ub3QtYXQtZW5kXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MztCSU5BUlkgOj0gJChSVU5ORVIpJChpZiAkKEZMQVZPUiksLSQoRkxBVk9SKSlcbiYjNDM7UkRJUiAgIDo9ICQoT1VUUFVUKSQoaWYgJChGTEFWT1IpLC8kKEZMQVZPUikpXG4mIzQzO1xuJiM0MzthbGw6ICQoT1VUUFVUKS8kKEJJTkFSWSlcbiYjNDM7LlBIT05ZOiBhbGxcbiYjNDM7XG4mIzQzOyMgRGVsZXRlIHBhcnRpYWxseSB1cGRhdGVkIChjb3JydXB0ZWQpIGZpbGVzIG9uIGVycm9yXG4mIzQzOy5ERUxFVEVfT05fRVJST1I6XG4mIzQzO1xuJiM0MzsjIFBlcm1pc3NpdmUgc2tpcC1vbi1mYWlsdXJlIG9mIGluZGl2aWR1YWwgdGVzdHMgYXBwbGllcyB0byB0ZXN0X3Byb2dzIGFuZFxuJiM0MzsjIGl0cyBmbGF2b3JzIG9ubHk7IHRlc3RfbWFwcyB1c2VzIHN0cm9uZyBjcm9zcy1vYmplY3QgcmVmZXJlbmNlcyBhbmQga2VlcHNcbiYjNDM7IyBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBCUEZfU1RSSUNUX0JVSUxEPTAuXG4mIzQzO1BFUk1JU1NJVkVfVEVTVFMgOj0gJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzLCQoUlVOTkVSKSksJChQRVJNSVNTSVZFKSlcbiYjNDM7XG4mIzQzOyQoUkRJUik6XG4mIzQzO1x0JChjYWxsIG1zZyxNS0RJUiwsJEApXG4mIzQzO1x0JChRKW1rZGlyIC1wICRAXG4mIzQzO1xuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MzsjIFBlci1ydW5uZXIgc291cmNlc1xuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MztcbiYjNDM7aWZlcSAoJChSVU5ORVIpLHRlc3RfcHJvZ3MpXG4mIzQzO0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9wcm9ncy5jIGNncm91cF9oZWxwZXJzLmMgdHJhY2VfaGVscGVycy5jXHRcdFxcXG4mIzQzO1x0XHQgbmV0d29ya19oZWxwZXJzLmMgdGVzdGluZ19oZWxwZXJzLmMgYnRmX2hlbHBlcnMuY1x0XFxcbiYjNDM7XHRcdCBjYXBfaGVscGVycy5jIHVucHJpdl9oZWxwZXJzLmMgc3lzY3RsX2hlbHBlcnMuY1x0XFxcbiYjNDM7XHRcdCBuZXRsaW5rX2hlbHBlcnMuYyBqaXRfZGlzYXNtX2hlbHBlcnMuYyBpb19oZWxwZXJzLmNcdFxcXG4mIzQzO1x0XHQgdGVzdF9sb2FkZXIuYyB4c2suYyBkaXNhc20uYyBkaXNhc21faGVscGVycy5jXHRcdFxcXG4mIzQzO1x0XHQganNvbl93cml0ZXIuYyBicGZ0b29sX2hlbHBlcnMuYyB1c2R0XzEuYyB1c2R0XzIuY1xuJiM0MztMSUJfU09VUkNFUyA6PSBmaW5kX2JpdC5jXG4mIzQzO0VYVFJBX0hEUlMgOj0gZmxvd19kaXNzZWN0b3JfbG9hZC5oIGlwX2NoZWNrX2RlZnJhZ19mcmFncy5oXHRcdFxcXG4mIzQzO1x0ICAgICAgJChWRVJJRllfU0lHX0hEUikgJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTClcbiYjNDM7RVhUUkFfRklMRVMgOj0gJChPVVRQVVQpL3VyYW5kb21fcmVhZCAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvXHRcXFxuJiM0MztcdCAgICAgICAkKE9VVFBVVCkveGRwX3N5bnByb3h5ICQoT1VUUFVUKS9zaWduLWZpbGVcdFx0XFxcbiYjNDM7XHQgICAgICAgJChPVVRQVVQpL3Vwcm9iZV9tdWx0aVx0XHRcdFx0XHRcXFxuJiM0MztcdCAgICAgICAkKFRFU1RfS01PRF9UQVJHRVRTKVx0XHRcdFx0XHRcXFxuJiM0MztcdCAgICAgICBpbWFfc2V0dXAuc2ggJChWRVJJRllfU0lHX1NFVFVQKVx0XHRcdFx0XFxcbiYjNDM7XHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKVx0XHRcdFxcXG4mIzQzO1x0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubylcbiYjNDM7ZW5kaWZcbiYjNDM7XG4mIzQzO2lmZXEgKCQoUlVOTkVSKSx0ZXN0X21hcHMpXG4mIzQzO0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9tYXBzLmMgdGVzdGluZ19oZWxwZXJzLmNcbiYjNDM7ZW5kaWZcbiYjNDM7XG4mIzQzOyMgTm90ZSBvbiB0aGUgdW5mbGF2b3JlZCBydW5uZXJzLCB3aGljaCBzaGFyZSAkKE9VVFBVVCkgd2l0aCB0aGUgbWFpblxuJiM0MzsjIE1ha2VmaWxlOiBoZWxwZXIgb2JqZWN0cyB0aGUgbWFpbiBNYWtlZmlsZSBhbHNvIHVzZXMgKGFuZCBsaXN0cyBpbiB0aGVcbiYjNDM7IyBydW5uZXIgcHJlcmVxdWlzaXRlcykgYXJlIGFscmVhZHkgYnVpbHQgYW5kIGZyZXNoIHdoZW4gYSBydW5uZXIgc3RhcnRzLFxuJiM0MzsjIHNvIHRoZSBydWxlcyBiZWxvdyBmaW5kIHRoZW0gdXAgdG8gZGF0ZSBhbmQgbmV2ZXIgd3JpdGUgdGhlbS5cbiYjNDM7XG4mIzQzO1RFU1RTX0hEUiA6PSAkKFRFU1RTX0RJUikvdGVzdHMuaFxuJiM0MztcbiYjNDM7VEVTVF9TUkNTICA6PSAkKG5vdGRpciAkKHdpbGRjYXJkICQoVEVTVFNfRElSKS8qLmMpKVxuJiM0MztURVNUX09CSlMgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS50ZXN0Lm8sJChURVNUX1NSQ1MpKVxuJiM0MztURVNUX0RFUFMgIDo9ICQoVEVTVF9PQkpTOi5vPS5kKVxuJiM0MztFWFRSQV9PQkpTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5vLCQoZmlsdGVyICUuYywkKEVYVFJBX1NPVVJDRVMpKSlcbiYjNDM7TElCX09CSlMgICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubywkKExJQl9TT1VSQ0VTKSlcbiYjNDM7XG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzOyMgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9uc1xuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MztcbiYjNDM7aWZuZXEgKCQoQlBGX0JVSUxEKSxub25lKVxuJiM0MztcbiYjNDM7QlBGX1NSQ1MgOj0gJChub3RkaXIgJCh3aWxkY2FyZCBwcm9ncy8qLmMpKVxuJiM0MztCUEZfT0JKUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUuYnBmLm8sJChCUEZfU1JDUykpXG4mIzQzO1xuJiM0MzsjIFdoaWNoIHRlc3RzIHdhbnQgYSBsaWdodCBza2VsZXRvbiBpcyBkZXJpdmVkIGZyb20gdGhlIHRlc3Qgc291cmNlc1xuJiM0MzsjIHRoZW1zZWx2ZXM6IGFuICYjMzk7I2luY2x1ZGUgXCYjMzQ7Zm9vLmxza2VsLmhcJiMzNDsmIzM5OyBsaW5lIGlzIHRoZSBzaW5nbGUgc291cmNlIG9mXG4mIzQzOyMgdHJ1dGguIFRlc3RzIHRoYXQgaW5jbHVkZSBib3RoIGZvby5za2VsLmggYW5kIGZvby5sc2tlbC5oIGdldCBib3RoLlxuJiM0Mztza2VsX2luY2x1ZGVzID0gJChzaGVsbCBncmVwIC1yaG9FICYjMzk7XCYjMzQ7W2EtekEtWjAtOV9dJiM0MztcXC4kKDEpXCYjMzQ7JiMzOTsgcHJvZ190ZXN0cyBiZW5jaHMgbWFwX3Rlc3RzICouYyAqLmNwcCAyXHUwMDNlL2Rldi9udWxsKVxuJiM0MztMU0tFTF9CQVNFUyA6PSAkKHNvcnQgJChwYXRzdWJzdCBcJiMzNDslLmxza2VsLmhcJiMzNDssJSwkKGNhbGwgc2tlbF9pbmNsdWRlcyxsc2tlbC5oKSkpXG4mIzQzO1NLRUxfREVNQU5ERUQgOj0gJChzb3J0ICQocGF0c3Vic3QgXCYjMzQ7JS5za2VsLmhcJiMzNDssJSwkKGNhbGwgc2tlbF9pbmNsdWRlcyxza2VsLmgpKSlcbiYjNDM7XG4mIzQzOyMgU2lnbmluZyBpcyBub3QgZXhwcmVzc2VkIGluIHRoZSBpbmNsdWRlLCBzbyB0aGUgc2lnbmVkIHN1YnNldCBzdGF5c1xuJiM0MzsjIGV4cGxpY2l0LlxuJiM0MztMU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0IGZleGl0X3Rlc3QgYXRvbWljc1xuJiM0MztcbiYjNDM7IyBCUEYgb2JqZWN0cyB0aGF0IGNhbm5vdCBoYXZlIGEgcmVndWxhciBza2VsZXRvbiwgcGx1cyBsc2tlbC1vbmx5IHRlc3RzXG4mIzQzOyMgKGxpZ2h0LXNrZWxldG9uIHVzZXJzIHdob3NlIHNvdXJjZXMgbmV2ZXIgaW5jbHVkZSB0aGUgLnNrZWwuaCBmb3JtKS5cbiYjNDM7U0tFTF9CTEFDS0xJU1QgOj0gYnRmX18lIHRlc3RfcGlubmluZ19pbnZhbGlkLmMgdGVzdF9za19hc3NpZ24uYyBcXFxuJiM0MztcdFx0ICAkKGFkZHN1ZmZpeCAuYywkKGZpbHRlci1vdXQgJChTS0VMX0RFTUFOREVEKSwkKExTS0VMX0JBU0VTKSkpXG4mIzQzO1xuJiM0MzsjIFNrZWxldG9ucyBtYWRlIGJ5IGxpbmtpbmcgbXVsdGlwbGUgQlBGIG9iamVjdHMgdG9nZXRoZXIuIFRoZSAlLWRlcHNcbiYjNDM7IyBtYXBwaW5nIGlzIHRoZSBvbmx5IGhhbmQtbWFpbnRhaW5lZCBtZXRhZGF0YTogaXQgY2Fubm90IGJlIGRlcml2ZWQgZnJvbVxuJiM0MzsjIHRoZSBzb3VyY2VzLlxuJiM0Mzt0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vXG4mIzQzO2xpbmtlZF9mdW5jcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfZnVuY3MxLmJwZi5vIGxpbmtlZF9mdW5jczIuYnBmLm9cbiYjNDM7bGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYub1xuJiM0MztsaW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vXG4mIzQzOyMgSW4gdGhlIHN1YnNrZWxldG9uIGNhc2UsIHdlIHdhbnQgdGhlIHRlc3Rfc3Vic2tlbGV0b25fbGliLnN1YnNrZWwuaCBmaWxlXG4mIzQzOyMgYnV0IHRoYXQmIzM5O3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi5cbiYjNDM7dGVzdF9zdWJza2VsZXRvbi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbi5icGYub1xuJiM0Mzt0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm9cbiYjNDM7dGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vXG4mIzQzO3RyYWNpbmdfbXVsdGkuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuJiM0Mzt0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaF9tb2R1bGUuYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuJiM0Mzt0cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuJiM0Mzt0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9zZXNzaW9uX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4mIzQzO1xuJiM0MztMSU5LRURfU0tFTFMgOj0gdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaCBsaW5rZWRfZnVuY3Muc2tlbC5oXHRcdFxcXG4mIzQzO1x0XHRsaW5rZWRfdmFycy5za2VsLmggbGlua2VkX21hcHMuc2tlbC5oXHRcdFx0XFxcbiYjNDM7XHRcdHRlc3Rfc3Vic2tlbGV0b24uc2tlbC5oIHRlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaFx0XFxcbiYjNDM7XHRcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcdFx0XHRcXFxuJiM0MztcdFx0dHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oXHRcdFx0XHRcXFxuJiM0MztcdFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oXHRcdFx0XHRcXFxuJiM0MztcdFx0dHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaFxuJiM0MztMSU5LRURfQlBGX1NSQ1MgOj0gJChwYXRzdWJzdCAlLmJwZi5vLCUuYywkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKSlcbiYjNDM7XG4mIzQzO1NLRUxTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5za2VsLmgsXHRcdFx0XHRcXFxuJiM0MztcdCAgICQoZmlsdGVyLW91dCAkKFNLRUxfQkxBQ0tMSVNUKSAkKExJTktFRF9CUEZfU1JDUyksJChCUEZfU1JDUykpKVxuJiM0MztMU0tFTFNfSCAgICAgICAgOj0gJChwYXRzdWJzdCAlLCQoUkRJUikvJS5sc2tlbC5oLCQoZmlsdGVyLW91dCAkKExTS0VMU19TSUdORUQpLCQoTFNLRUxfQkFTRVMpKSlcbiYjNDM7TFNLRUxTX1NJR05FRF9IIDo9ICQocGF0c3Vic3QgJSwkKFJESVIpLyUubHNrZWwuaCwkKExTS0VMU19TSUdORUQpKVxuJiM0MztMSU5LRURfU0tFTFNfSCAgOj0gJChhZGRwcmVmaXggJChSRElSKS8sJChMSU5LRURfU0tFTFMpKVxuJiM0MztBTExfU0tFTFMgOj0gJChTS0VMUykgJChMU0tFTFNfSCkgJChMU0tFTFNfU0lHTkVEX0gpICQoTElOS0VEX1NLRUxTX0gpXG4mIzQzO1xuJiM0MztIRUFERVJTX0ZPUl9CUEZfT0JKUyA6PSAkKHdpbGRjYXJkICQoQlBGRElSKS8qLmJwZi5oKVx0XHRcdFxcXG4mIzQzO1x0XHRcdCQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKVx0XFxcbiYjNDM7XHRcdFx0JChhZGRwcmVmaXggJChCUEZESVIpLyxcdGJwZl9jb3JlX3JlYWQuaFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRicGZfZW5kaWFuLmhcdFx0XFxcbiYjNDM7XHRcdFx0XHRcdFx0YnBmX2hlbHBlcnMuaFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRicGZfdHJhY2luZy5oKVxuJiM0MztcbiYjNDM7IyBQZXItc291cmNlIEJQRiBjb21waWxhdGlvbiBmbGFnIG92ZXJyaWRlcyAoJFx1MDAzYy1DRkxBR1MgLyAkXHUwMDNjLSQoRkxBVk9SKS1DRkxBR1MpLlxuJiM0MzsjIEdDQyBjYW5ub3QgZGlzYWJsZSBcJiMzNDtkZWNsYXJhdGlvbiBvZiBhbm9ueW1vdXMgc3RydWN0IGluIHBhcmFtZXRlciBsaXN0XCYjMzQ7XG4mIzQzOyMgd2FybmluZ3MgdHJpZ2dlcmVkIGJ5IHRoZXNlICh0ZWNobmljYWxseSBsZWdhbCkgdGVzdCBwcm9ncmFtcy5cbiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX2JpdGZpZWxkcy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcbiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX25hbWVzcGFjaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuJiM0Mztwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfcGFja2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcbiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhZGRpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4mIzQzO3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9zeW50YXguYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4mIzQzO1xuJiM0MztpZmVxICgkKEJQRl9CVUlMRCksZ2NjKVxuJiM0MztCUEZfQ0NfTVNHIDo9IEdDQy1CUEZcbiYjNDM7IyBOb3RlOiBzeXMgaW5jbHVkZXMgY29tZSBmcm9tIHRoZSAqaG9zdCogZ2NjLCBub3QgJChCUEZfR0NDKSAtIGJwZi1nY2MmIzM5O3NcbiYjNDM7IyBvd24gc2VhcmNoIHBhdGggbGFja3MgdGhlIGhvc3QmIzM5O3MgYXNtLWdlbmVyaWMvIGhlYWRlcnMuIENvbXB1dGVkIG9uY2VcbiYjNDM7IyBoZXJlOiBicGZfY2MgYmVsb3cgaXMgZGVmZXJyZWQgYW5kIGV4cGFuZHMgcGVyIGNvbXBpbGVkIG9iamVjdC5cbiYjNDM7R0NDX1NZU19JTkNMVURFUyA6PSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcyxnY2MsKVxuJiM0MzticGZfY2MgPSAkKEJQRl9HQ0MpICQoQlBGX0NGTEFHUykgJChHQ0NfU1lTX0lOQ0xVREVTKVx0XHRcdFxcXG4mIzQzO1x0ICQoQlBGX0RFRklORVMpICQoJFx1MDAzYy1DRkxBR1MpICQoJFx1MDAzYy0kKEZMQVZPUiktQ0ZMQUdTKVx0XHRcXFxuJiM0MztcdCAtREJQRl9OT19QUkVTRVJWRV9BQ0NFU1NfSU5ERVggLVduby1hdHRyaWJ1dGVzIC1PMiAtYyAkXHUwMDNjIC1vICRAXG4mIzQzO2Vsc2VcbiYjNDM7QlBGX0NDX01TRyA6PSBDTE5HLUJQRlxuJiM0MzticGZfY2MgPSAkKENMQU5HKSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKSAkKEJQRl9ERUZJTkVTKVx0XHRcXFxuJiM0MztcdCAkKCRcdTAwM2MtQ0ZMQUdTKSAkKCRcdTAwM2MtJChGTEFWT1IpLUNGTEFHUylcdFx0XHRcdFxcXG4mIzQzO1x0IC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkXHUwMDNjIC1tY3B1PSQoQlBGX01DUFUpIC1vICRAXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MzskKEJQRl9PQkpTKTogJChSRElSKS8lLmJwZi5vOiBwcm9ncy8lLmMgcHJvZ3MvKi5oXHRcdFx0XFxcbiYjNDM7XHQgICAgICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKVx0XHRcXFxuJiM0MztcdCAgICAgfCAkKFJESVIpICQoQlBGT0JKKVxuJiM0MztcdCQoY2FsbCBtc2csJChCUEZfQ0NfTVNHKSwkKEJJTkFSWSksJEApXG4mIzQzO1x0JChRKSQoYnBmX2NjKSAkKGNhbGwgc2tpcF9vbl9mYWlsLEJQRilcbiYjNDM7XG4mIzQzOyMgZ2VuX2JwZl9za2VsLnNoIHBpY2tzIHRoZSBicGZ0b29sIGJpbmFyeSB1cCBmcm9tIHRoZSBlbnZpcm9ubWVudC5cbiYjNDM7ZXhwb3J0IEJQRlRPT0xcbiYjNDM7R0VOX1NLRUwgOj0gLi9nZW5fYnBmX3NrZWwuc2hcbiYjNDM7XG4mIzQzOyQoU0tFTFMpOiAkKFJESVIpLyUuc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKSB8ICQoUkRJUilcbiYjNDM7XHQkKFEpJChHRU5fU0tFTCkgLS10YWcgJiMzOTskKEJJTkFSWSkmIzM5OyAtLW5hbWUgJCogLS1pbmZpeCBsaW5rZWRcdFxcXG4mIzQzO1x0XHQtLXNrZWwgJEAgLS1zdWJza2VsICQoQDouc2tlbC5oPS5zdWJza2VsLmgpICRcdTAwM2NcdFx0XFxcbiYjNDM7XHRcdCQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTCwkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSlcbiYjNDM7XG4mIzQzOyQoTFNLRUxTX0gpOiAkKFJESVIpLyUubHNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkgfCAkKFJESVIpXG4mIzQzO1x0JChRKSQoR0VOX1NLRUwpIC0tdGFnICYjMzk7JChCSU5BUlkpJiMzOTsgLS1uYW1lICQqX2xza2VsIC0taW5maXggbGxpbmtlZCBcXFxuJiM0MztcdFx0LS1sc2tlbCAtLXNrZWwgJEAgJFx1MDAzYyAkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwpXG4mIzQzO1xuJiM0MzskKExTS0VMU19TSUdORURfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKVx0XFxcbiYjNDM7XHRcdCAgICAkKFBSSVZBVEVfS0VZKSAkKFZFUklGSUNBVElPTl9DRVJUKSB8ICQoUkRJUilcbiYjNDM7XHQkKFEpJChHRU5fU0tFTCkgLS10YWcgJiMzOTskKEJJTkFSWSkgKHNpZ25lZCkmIzM5OyAtLW5hbWUgJCpfbHNrZWxcdFxcXG4mIzQzO1x0XHQtLWluZml4IGxsaW5rZWRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0LS1zaWduICYjMzk7LVMgLWsgJChQUklWQVRFX0tFWSkgLWkgJChWRVJJRklDQVRJT05fQ0VSVCkmIzM5O1x0XFxcbiYjNDM7XHRcdC0tc2tlbCAkQCAkXHUwMDNjICQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTClcbiYjNDM7XG4mIzQzOy5TRUNPTkRFWFBBTlNJT046XG4mIzQzOyQoTElOS0VEX1NLRUxTX0gpOiAkKFJESVIpLyUuc2tlbC5oOiAkJChhZGRwcmVmaXggJChSRElSKS8sJCQoJCQqLnNrZWwuaC1kZXBzKSkgXFxcbiYjNDM7XHRcdCAgICQoQlBGVE9PTCkgfCAkKFJESVIpXG4mIzQzO1x0JChRKSQoR0VOX1NLRUwpIC0tdGFnICYjMzk7JChCSU5BUlkpJiMzOTsgLS1uYW1lICQqIC0taW5maXggbGlua2VkXHRcXFxuJiM0MztcdFx0LS1za2VsICRAIC0tc3Vic2tlbCAkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKVx0XHRcXFxuJiM0MztcdFx0JChhZGRwcmVmaXggJChSRElSKS8sJCgkKi5za2VsLmgtZGVwcykpXHRcdFx0XFxcbiYjNDM7XHRcdCQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTCwkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSlcbiYjNDM7XG4mIzQzO2VuZGlmICMgQlBGX0JVSUxEICE9IG5vbmVcbiYjNDM7XG4mIzQzOy5QSE9OWTogc2tlbHNcbiYjNDM7c2tlbHM6ICQoQUxMX1NLRUxTKVxuJiM0MztcbiYjNDM7IyBXaGVuIHRoZSBjb21waWxlciBnZW5lcmF0ZXMgYSAlLmQgZmlsZSwgb25seSBza2VsIGJhc2VuYW1lcyAobm90IGZ1bGxcbiYjNDM7IyBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciB0aGUgY29ycmVzcG9uZGluZyAlLm8gZmlsZS5cbiYjNDM7IyBUaGUgdnBhdGggZGlyZWN0aXZlcyBpbnN0cnVjdCBtYWtlIHRvIGFsc28gc2VhcmNoIGZvciBza2VsIGZpbGVzIGluXG4mIzQzOyMgJChSRElSKSBpZiB0aGV5IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkuXG4mIzQzO3ZwYXRoICUuc2tlbC5oICQoUkRJUilcbiYjNDM7dnBhdGggJS5sc2tlbC5oICQoUkRJUilcbiYjNDM7dnBhdGggJS5zdWJza2VsLmggJChSRElSKVxuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBUZXN0IG9iamVjdHMgYW5kIHJ1bm5lciBiaW5hcnlcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzOyQoUkRJUikvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiAkKFJFU09MVkVfQlRGSURTKSAkKFJESVIpL2J0Zl9kYXRhLmJwZi5vXG4mIzQzOyQoUkRJUikvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiBwcml2YXRlIFRFU1RfTkVFRFNfQlRGSURTID0gMVxuJiM0MztcbiYjNDM7IyBDb21waWxlIGluZGl2aWR1YWwgdGVzdCBmaWxlcy5cbiYjNDM7IyBOb3RlOiB3ZSBjZCBpbnRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0c1xuJiM0MzsjIGFyZSBmb3VuZC4gVGhlICUudGVzdC5kIGRlcGVuZGVuY3kgZmlsZXMgYXJlIGEgc2lkZSBlZmZlY3Qgb2YgdGhlIC1NTURcbiYjNDM7IyBiZWxvdzsgdGhlIHNlcGFyYXRlIG5vLXJlY2lwZSBydWxlIGZvciB0aGVtIG9yZGVycyB0aGUgZmlyc3RcbiYjNDM7IyBjb21waWxhdGlvbiBhZnRlciBza2VsZXRvbiBnZW5lcmF0aW9uIGFuZCByZS1vcmRlcnMgdGVzdCBvYmplY3RcbiYjNDM7IyBjb21waWxhdGlvbiB3aGVuIGhlYWRlcnMgY2hhbmdlLlxuJiM0MzskKFRFU1RfT0JKUyk6ICQoUkRJUikvJS50ZXN0Lm86ICQoVEVTVFNfRElSKS8lLmMgfCAkKFJESVIpLyUudGVzdC5kXG4mIzQzO1x0JChjYWxsIG1zZyxURVNULU9CSiwkKEJJTkFSWSksJEApXG4mIzQzO1x0JChRKShjZCAkKEBEKSBcdTAwMjZcdTAwMjYgJChDQykgLUkuICQoQ0ZMQUdTKSAtTU1EIC1NVCAkQCAtYyAkKENVUkRJUikvJFx1MDAzYyAtbyAkKEBGKSkgXFxcbiYjNDM7XHRcdCQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKGNhbGwgc2tpcF9vbl9mYWlsLFRFU1QpKVxuJiM0MztcdCQoaWYgJChURVNUX05FRURTX0JURklEUyksXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQkKFEpaWYgWyAtZiAkQCBdOyB0aGVuXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQkKGlmICQoZmlsdGVyIDEsJChWKSksdHJ1ZSxwcmludGYgJiMzOTsgICUtOHMlcyAlc1xcbiYjMzk7IFwmIzM0O0JURklEU1wmIzM0OyBcJiMzNDsgWyQoQklOQVJZKV1cJiMzNDsgXCYjMzQ7JChub3RkaXIgJEApXCYjMzQ7KTsgXFxcbiYjNDM7XHRcdCQoUkVTT0xWRV9CVEZJRFMpIC0tYnRmICQoUkRJUikvYnRmX2RhdGEuYnBmLm8gJEA7XHRcXFxuJiM0MztcdFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJEAuQlRGX2lkcyAkQDtcdFx0XFxcbiYjNDM7XHRcdGZpKVxuJiM0MztcbiYjNDM7JChURVNUX0RFUFMpOiAkKFJESVIpLyUudGVzdC5kOiAkKFRFU1RTX0RJUikvJS5jICQoRVhUUkFfSERSUykgJChCUEZPQkopIFxcXG4mIzQzO1x0ICAgICAgfCAkKFJESVIpICQoQUxMX1NLRUxTKVxuJiM0MztcbiYjNDM7aW5jbHVkZSAkKHdpbGRjYXJkICQoVEVTVF9ERVBTKSlcbiYjNDM7XG4mIzQzOyQoUkRJUikvaml0X2Rpc2FzbV9oZWxwZXJzLm86IENGTEFHUyAmIzQzOz0gJChMTFZNX0NGTEFHUylcbiYjNDM7XG4mIzQzOyQoRVhUUkFfT0JKUyk6ICQoUkRJUikvJS5vOiAlLmMgJChFWFRSQV9IRFJTKSAkKFRFU1RTX0hEUikgJChCUEZPQkopIHwgJChSRElSKVxuJiM0MztcdCQoY2FsbCBtc2csRVhULU9CSiwkKEJJTkFSWSksJEApXG4mIzQzO1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkXHUwMDNjIC1vICRAXG4mIzQzO1xuJiM0MzskKExJQl9PQkpTKTogJChSRElSKS8lLm86ICQoVE9PTFNESVIpL2xpYi8lLmMgfCAkKFJESVIpXG4mIzQzO1x0JChjYWxsIG1zZyxMSUItT0JKLCQoQklOQVJZKSwkQClcbiYjNDM7XHQkKFEpJChDQykgJChDRkxBR1MpIC1jICRcdTAwM2MgLW8gJEBcbiYjNDM7XG4mIzQzOyMgTm9uLWZsYXZvcmVkIGluLXNyY3RyZWUgYnVpbGRzIHJlY2VpdmUgc3BlY2lhbCB0cmVhdG1lbnQsIGluIHBhcnRpY3VsYXJcbiYjNDM7IyB3ZSBkbyBub3QgbmVlZCB0byBjb3B5IGV4dHJhIHJlc291cmNlcyAoc2VlIGUuZy4gdGVzdF9idGZfZHVtcF9jYXNlKCkpLlxuJiM0MzsuUEhPTlk6IGV4dHJhc1xuJiM0MztleHRyYXM6ICQoaWYgJChQRVJNSVNTSVZFKSwkKHdpbGRjYXJkICQoRVhUUkFfRklMRVMpKSwkKEVYVFJBX0ZJTEVTKSkgfCAkKFJESVIpXG4mIzQzO2lmbmVxICgkKEZMQVZPUik6JChPVVRQVVQpLDokKENVUkRJUikpXG4mIzQzO2lmbmVxICgkKHN0cmlwICQoRVhUUkFfRklMRVMpKSwpXG4mIzQzO1x0JChjYWxsIG1zZyxFWFQtQ09QWSwkKEJJTkFSWSksJChub3RkaXIgJChFWFRSQV9GSUxFUykpKVxuJiM0MztcdCQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJChFWFRSQV9GSUxFUykgJChSRElSKS9cbiYjNDM7ZW5kaWZcbiYjNDM7ZW5kaWZcbiYjNDM7XG4mIzQzOyMgSW4gcGVybWlzc2l2ZSBtb2RlLCBsaW5rIHdoYXRldmVyIHRlc3Qgb2JqZWN0cyB3ZXJlIHN1Y2Nlc3NmdWxseSBidWlsdFxuJiM0MzsjICh0aGVpciBjb21waWxhdGlvbiBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpOyB0aGUgd2lsZGNhcmQgaW4gdGhlIHJlY2lwZVxuJiM0MzsjIHBpY2tzIHVwIHRoZSBzdXJ2aXZvcnMgYXQgbGluayB0aW1lLlxuJiM0MzsjIFByZXJlcXVpc2l0ZSBvcmRlciBpcyBhbHNvIGxpbmsgb3JkZXIgKHRlc3Qgb2JqZWN0cywgZXh0cmEgb2JqZWN0cyxcbiYjNDM7IyBsaWJicGYsIGxpYiBvYmplY3RzKS5cbiYjNDM7JChPVVRQVVQpLyQoQklOQVJZKTogJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCwkKFRFU1RfT0JKUykpXHRcdFxcXG4mIzQzO1x0XHQgICAgICQoRVhUUkFfT0JKUykgJChCUEZPQkopICQoTElCX09CSlMpXHRcdFxcXG4mIzQzO1x0XHQgICAgICQoVFJVTk5FUl9CUEZUT09MKSAkKE9VVFBVVCkvdmVyaXN0YXRcdFx0XFxcbiYjNDM7XHRcdCAgICAgfCBleHRyYXMgJChCUEZfT0JKUylcdFx0XHRcdFxcXG4mIzQzO1x0XHQgICAgICQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKFRFU1RfT0JKUykpXG4mIzQzO1x0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuJiM0MztcdCQoUSkkKENDKSAkKENGTEFHUylcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0JChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKSlcdFxcXG4mIzQzO1x0XHQkKGZpbHRlciAlLmEgJS5vLCReKVx0XHRcdFx0XHRcXFxuJiM0MztcdFx0JChMRExJQlMpICQoTExWTV9MRExJQlMpICQoTERGTEFHUykgJChMTFZNX0xERkxBR1MpIC1vICRAXG4mIzQzO1x0JChRKWxuIC1zZiAkKGlmICQoRkxBVk9SKSwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFxcXG4mIzQzO1x0XHQgICAkKFJESVIpL2JwZnRvb2xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4wYjIzN2Y2Mzk2N2RkNlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaFxuQEAgLTAsMCAmIzQzOzEsOTcgQEBcbiYjNDM7IyEvYmluL2Jhc2hcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjXG4mIzQzOyMgTGluayBCUEYgb2JqZWN0IGZpbGUocykgd2l0aCBcJiMzNDticGZ0b29sIGdlbiBvYmplY3RcJiMzNDsgYW5kIGdlbmVyYXRlIGFcbiYjNDM7IyBza2VsZXRvbiAob3IgbGlnaHQgc2tlbGV0b24pIGhlYWRlciBmcm9tIHRoZSByZXN1bHQuXG4mIzQzOyNcbiYjNDM7IyBVc2FnZTpcbiYjNDM7IyAgIEJQRlRPT0w9XHUwMDNjYnBmdG9vbFx1MDAzZSBnZW5fYnBmX3NrZWwuc2ggLS1uYW1lIE5BTUUgLS1za2VsIE9VVCBbb3B0aW9uc10gT0JKLi4uXG4mIzQzOyNcbiYjNDM7IyAgIC0tbmFtZSBOQU1FICAgICAgIHNrZWxldG9uIG9iamVjdCBuYW1lIChcJiMzNDtuYW1lIE5BTUVcJiMzNDsgZm9yIGJwZnRvb2wpXG4mIzQzOyMgICAtLXNrZWwgT1VUICAgICAgICBvdXRwdXQgaGVhZGVyIChcJiMzNDtmb28uc2tlbC5oXCYjMzQ7IG9yIFwmIzM0O2Zvby5sc2tlbC5oXCYjMzQ7KVxuJiM0MzsjICAgLS1zdWJza2VsIE9VVCAgICAgYWxzbyBnZW5lcmF0ZSBhIHN1YnNrZWxldG9uIGhlYWRlciBpbnRvIE9VVFxuJiM0MzsjICAgLS1sc2tlbCAgICAgICAgICAgZ2VuZXJhdGUgYSBsaWdodCBza2VsZXRvbiAoYnBmdG9vbCBnZW4gc2tlbGV0b24gLUwpXG4mIzQzOyMgICAtLXNpZ24gJiMzOTtBUkdTJiMzOTsgICAgIGV4dHJhIFwmIzM0O2dlbiBza2VsZXRvblwmIzM0OyBhcmdzIGZvciBzaWduaW5nICgtUyAtayAuLiAtaSAuLilcbiYjNDM7IyAgIC0tdGFnIFRBRyAgICAgICAgIGJ1aWxkLWxvZyB0YWcsIGUuZy4gXCYjMzQ7dGVzdF9wcm9ncy1ub19hbHUzMlwmIzM0O1xuJiM0MzsjICAgLS1pbmZpeCBTVFIgICAgICAgaW50ZXJtZWRpYXRlIGZpbGUgaW5maXggKGRlZmF1bHQ6IGxpbmtlZCkuIENhbGxlcnNcbiYjNDM7IyAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRpbmcgYm90aCBhIC5za2VsLmggYW5kIGEgLmxza2VsLmggZnJvbSB0aGVcbiYjNDM7IyAgICAgICAgICAgICAgICAgICAgIHNhbWUgLmJwZi5vIE1VU1QgdXNlIGRpc3RpbmN0IGluZml4ZXMsIG9yIHBhcmFsbGVsXG4mIzQzOyMgICAgICAgICAgICAgICAgICAgICBidWlsZHMgcmFjZSBvbiB0aGUgaW50ZXJtZWRpYXRlIGZpbGVzLlxuJiM0MzsjICAgLS1uby1kZXRlcm1pbmlzbS1jaGVja1xuJiM0MzsjICAgICAgICAgICAgICAgICAgICAgbGluayB0aGUgaW5wdXRzIG9uY2UgaW5zdGVhZCBvZiB0aHJlZSB0aW1lcy5cbiYjNDM7IyAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQgdGhlIG9iamVjdCBpcyByZS1saW5rZWQgdHdpY2UgbW9yZSBhbmRcbiYjNDM7IyAgICAgICAgICAgICAgICAgICAgIHRoZSAybmQgYW5kIDNyZCByZXN1bHRzIGNvbXBhcmVkLCBhcyBhIHJlZ3Jlc3Npb25cbiYjNDM7IyAgICAgICAgICAgICAgICAgICAgIHRlc3QgZm9yIHRoZSBkZXRlcm1pbmlzbSBvZiBcJiMzNDticGZ0b29sIGdlbiBvYmplY3RcJiMzNDsuXG4mIzQzOyNcbiYjNDM7IyBUaGUgYnBmdG9vbCBiaW5hcnkgaXMgdGFrZW4gZnJvbSAkQlBGVE9PTCAoZGVmYXVsdDogYnBmdG9vbCBmcm9tIFBBVEgpLlxuJiM0MzsjIE9uIGZhaWx1cmUgYWxsIG91dHB1dHMgYW5kIGludGVybWVkaWF0ZXMgYXJlIHJlbW92ZWQgYW5kIHRoZSBzY3JpcHRcbiYjNDM7IyBleGl0cyBub24temVybzsgcGVybWlzc2l2ZS1tb2RlIHNraXBwaW5nIGlzIHRoZSBjYWxsZXImIzM5O3MgYnVzaW5lc3NcbiYjNDM7IyAoc2VlIHNraXBfb25fZmFpbCBpbiBNYWtlZmlsZS5idWlsZHZhcnMpLlxuJiM0MztcbiYjNDM7c2V0IC11XG4mIzQzO1xuJiM0MzticGZ0b29sPSR7QlBGVE9PTDotYnBmdG9vbH1cbiYjNDM7bmFtZT0mIzM5OyYjMzk7IHNrZWw9JiMzOTsmIzM5OyBzdWJza2VsPSYjMzk7JiMzOTsgdGFnPSYjMzk7JiMzOTsgc2lnbl9hcmdzPSYjMzk7JiMzOTsgaW5maXg9bGlua2VkXG4mIzQzO2xza2VsPTAgZGV0X2NoZWNrPTFcbiYjNDM7XG4mIzQzO3doaWxlIFsgJCMgLWd0IDAgXTsgZG9cbiYjNDM7XHRjYXNlIFwmIzM0OyQxXCYjMzQ7IGluXG4mIzQzO1x0LS1uYW1lKVx0XHRuYW1lPSQyOyBzaGlmdCAyIDs7XG4mIzQzO1x0LS1za2VsKVx0XHRza2VsPSQyOyBzaGlmdCAyIDs7XG4mIzQzO1x0LS1zdWJza2VsKVx0c3Vic2tlbD0kMjsgc2hpZnQgMiA7O1xuJiM0MztcdC0tdGFnKVx0XHR0YWc9JDI7IHNoaWZ0IDIgOztcbiYjNDM7XHQtLWluZml4KVx0aW5maXg9JDI7IHNoaWZ0IDIgOztcbiYjNDM7XHQtLXNpZ24pXHRcdHNpZ25fYXJncz0kMjsgc2hpZnQgMiA7O1xuJiM0MztcdC0tbHNrZWwpXHRsc2tlbD0xOyBzaGlmdCA7O1xuJiM0MztcdC0tbm8tZGV0ZXJtaW5pc20tY2hlY2spIGRldF9jaGVjaz0wOyBzaGlmdCA7O1xuJiM0MztcdC0tKVx0XHRzaGlmdDsgYnJlYWsgOztcbiYjNDM7XHQtKilcdFx0ZWNobyBcJiMzNDskMDogdW5rbm93biBvcHRpb246ICQxXCYjMzQ7IFx1MDAzZVx1MDAyNjI7IGV4aXQgMSA7O1xuJiM0MztcdCopXHRcdGJyZWFrIDs7XG4mIzQzO1x0ZXNhY1xuJiM0Mztkb25lXG4mIzQzO1xuJiM0MztpZiBbIC16IFwmIzM0OyRuYW1lXCYjMzQ7IF0gfHwgWyAteiBcJiMzNDskc2tlbFwmIzM0OyBdIHx8IFsgJCMgLWVxIDAgXTsgdGhlblxuJiM0MztcdGVjaG8gXCYjMzQ7dXNhZ2U6ICQwIC0tbmFtZSBOQU1FIC0tc2tlbCBPVVQgW29wdGlvbnNdIE9CSi4uLlwmIzM0OyBcdTAwM2VcdTAwMjYyXG4mIzQzO1x0ZXhpdCAxXG4mIzQzO2ZpXG4mIzQzO1xuJiM0MztiYXNlPSR7c2tlbCUuc2tlbC5ofVxuJiM0MztiYXNlPSR7YmFzZSUubHNrZWwuaH1cbiYjNDM7dDE9JGJhc2UuJHtpbmZpeH0xLm9cbiYjNDM7dDI9JGJhc2UuJHtpbmZpeH0yLm9cbiYjNDM7dDM9JGJhc2UuJHtpbmZpeH0zLm9cbiYjNDM7XG4mIzQzO2ZhaWwoKSB7XG4mIzQzO1x0cm0gLWYgXCYjMzQ7JHNrZWxcJiMzNDsgJHtzdWJza2VsOiYjNDM7XCYjMzQ7JHN1YnNrZWxcJiMzNDt9IFwmIzM0OyR0MVwmIzM0OyBcJiMzNDskdDJcJiMzNDsgXCYjMzQ7JHQzXCYjMzQ7XG4mIzQzO1x0ZXhpdCAxXG4mIzQzO31cbiYjNDM7XG4mIzQzO2lmIFsgJCMgLWd0IDEgXTsgdGhlblxuJiM0MztcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O0xJTkstQlBGJiMzOTsgXCYjMzQ7JHt0YWc6JiM0MztbJHRhZ10gfSQoYmFzZW5hbWUgXCYjMzQ7JGJhc2VcJiMzNDspLmJwZi5vXCYjMzQ7IFx1MDAzZVx1MDAyNjJcbiYjNDM7ZmlcbiYjNDM7cHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyBcJiMzNDske3RhZzomIzQzO1skdGFnXSB9JChiYXNlbmFtZSBcJiMzNDskc2tlbFwmIzM0OylcJiMzNDsgXHUwMDNlXHUwMDI2MlxuJiM0MztcbiYjNDM7XCYjMzQ7JGJwZnRvb2xcJiMzNDsgZ2VuIG9iamVjdCBcJiMzNDskdDFcJiMzNDsgXCYjMzQ7JEBcJiMzNDsgfHwgZmFpbFxuJiM0MztmaW5hbD0kdDFcbiYjNDM7aWYgWyBcJiMzNDskZGV0X2NoZWNrXCYjMzQ7IC1lcSAxIF07IHRoZW5cbiYjNDM7XHRcJiMzNDskYnBmdG9vbFwmIzM0OyBnZW4gb2JqZWN0IFwmIzM0OyR0MlwmIzM0OyBcJiMzNDskdDFcJiMzNDsgfHwgZmFpbFxuJiM0MztcdFwmIzM0OyRicGZ0b29sXCYjMzQ7IGdlbiBvYmplY3QgXCYjMzQ7JHQzXCYjMzQ7IFwmIzM0OyR0MlwmIzM0OyB8fCBmYWlsXG4mIzQzO1x0aWYgISBjbXAgLXMgXCYjMzQ7JHQyXCYjMzQ7IFwmIzM0OyR0M1wmIzM0OzsgdGhlblxuJiM0MztcdFx0ZWNobyBcJiMzNDskMDogYnBmdG9vbCBnZW4gb2JqZWN0IGlzIG5vdCBkZXRlcm1pbmlzdGljIGZvciAkc2tlbFwmIzM0OyBcdTAwM2VcdTAwMjYyXG4mIzQzO1x0XHRmYWlsXG4mIzQzO1x0ZmlcbiYjNDM7XHRmaW5hbD0kdDNcbiYjNDM7ZmlcbiYjNDM7XG4mIzQzO2ZsYWdzPVxuJiM0MztbIFwmIzM0OyRsc2tlbFwmIzM0OyAtZXEgMSBdIFx1MDAyNlx1MDAyNiBmbGFncz0tTFxuJiM0MzsjICRzaWduX2FyZ3MgaW50ZW50aW9uYWxseSB1bnF1b3RlZDogaXQgaXMgYSBsaXN0IG9mIGJwZnRvb2wgYXJndW1lbnRzXG4mIzQzOyMgc2hlbGxjaGVjayBkaXNhYmxlPVNDMjA4NlxuJiM0MztcJiMzNDskYnBmdG9vbFwmIzM0OyBnZW4gc2tlbGV0b24gJHNpZ25fYXJncyAkZmxhZ3MgXCYjMzQ7JGZpbmFsXCYjMzQ7IG5hbWUgXCYjMzQ7JG5hbWVcJiMzNDsgXHUwMDNlIFwmIzM0OyRza2VsXCYjMzQ7IHx8IGZhaWxcbiYjNDM7XG4mIzQzO2lmIFsgLW4gXCYjMzQ7JHN1YnNrZWxcJiMzNDsgXTsgdGhlblxuJiM0MztcdFwmIzM0OyRicGZ0b29sXCYjMzQ7IGdlbiBzdWJza2VsZXRvbiBcJiMzNDskZmluYWxcJiMzNDsgbmFtZSBcJiMzNDskbmFtZVwmIzM0OyBcdTAwM2UgXCYjMzQ7JHN1YnNrZWxcJiMzNDsgfHwgZmFpbFxuJiM0MztmaVxuJiM0MztcbiYjNDM7cm0gLWYgXCYjMzQ7JHQxXCYjMzQ7IFwmIzM0OyR0MlwmIzM0OyBcJiMzNDskdDNcJiMzNDtcbiYjNDM7ZXhpdCAwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTM6Mjk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGJ1aWxkIHN5c3RlbSBmb3IgQlBGIHNlbGZ0ZXN0cyAoTWFrZWZpbGVzIGFuZCBhIHNoZWxsIHNjcmlwdCkuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwZTBjYTkwYmI3ZmEzNzNlYzhmN2U0ZmYxNzY0ZjgxZWFiY2NhOTY2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjIgMTM6Mjk6MjEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUKaW5kZXggYjY0MmVlNDg5ZWE2NDAuLmEzYWI1MjVmN2RmYWJiIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlCkBAIC0xLDk2ICYjNDM7MSw0NCBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyMKJiM0MzsjIEJQRiBzZWxmdGVzdHMgYnVpbGQuCiYjNDM7IwomIzQzOyMgVGhlIGJ1aWxkIGlzIHNwbGl0IGluIHR3byBsYXllcnM6CiYjNDM7IwomIzQzOyMgICBNYWtlZmlsZSAodGhpcyBmaWxlKQomIzQzOyMgICAgICAgRXZlcnl0aGluZyB0aGF0IGV4aXN0cyBvbmNlOiBrbm9icyBhbmQgdG9vbGNoYWluIHNldHVwLCBsaWJicGYgLwomIzQzOyMgICAgICAgYnBmdG9vbCAvIHJlc29sdmVfYnRmaWRzIHN1Yi1idWlsZHMsIHZtbGludXguaCwgc2lnbmluZyBrZXlzLAomIzQzOyMgICAgICAgZ2VuZXJhdGVkIHRlc3RzLmggaGVhZGVycywgc2hhcmVkIGhlbHBlciBvYmplY3RzLCBzdGFuZGFsb25lIHRlc3QKJiM0MzsjICAgICAgIGJpbmFyaWVzIChiZW5jaCwgdmVyaXN0YXQsIHRlc3RfdmVyaWZpZXIsIHhzayosIC4uLiksIGtlcm5lbCB0ZXN0CiYjNDM7IyAgICAgICBtb2R1bGVzLCBkb2NzLCBhbmQgdGhlIGtzZWxmdGVzdCBsaWIubWsgcnVuL2luc3RhbGwvY2xlYW4KJiM0MzsjICAgICAgIGNvbnRyYWN0LgomIzQzOyMKJiM0MzsjICAgTWFrZWZpbGUucnVubmVyCiYjNDM7IyAgICAgICBPbmUgdGVzdC1ydW5uZXIgaW5zdGFuY2UgKHRlc3RfcHJvZ3MsIHRlc3RfcHJvZ3MtJmx0O2ZsYXZvciZndDssCiYjNDM7IyAgICAgICB0ZXN0X21hcHMpOiBCUEYgb2JqZWN0cywgc2tlbGV0b24gaGVhZGVycywgdGVzdCBvYmplY3RzIGFuZCB0aGUKJiM0MzsjICAgICAgIGZpbmFsIHJ1bm5lciBiaW5hcnkuIEludm9rZWQgZnJvbSBoZXJlIG9uY2UgcGVyIGluc3RhbmNlOyBlYWNoCiYjNDM7IyAgICAgICBpbnZvY2F0aW9uIGlzIGFuIGluZGVwZW5kZW50IHNpbmdsZS1mbGF2b3IgbmFtZXNwYWNlLCBzbyB0aGUKJiM0MzsjICAgICAgIHJ1bm5lciBpcyBwbGFpbiBtYWtlIHdpdGhvdXQgJCQtZXNjYXBpbmcgb3IgZXZhbC4KJiM0MzsjCiYjNDM7IyAgIGdlbl9icGZfc2tlbC5zaAomIzQzOyMgICAgICAgTGlua3MgQlBGIG9iamVjdHMgdmlhIGJwZnRvb2wgYW5kIGdlbmVyYXRlcyAobGlnaHQpIHNrZWxldG9uczsKJiM0MzsjICAgICAgIG9uZSBzY3JpcHQgaW5zdGVhZCBvZiBmb3VyIG5lYXItaWRlbnRpY2FsIG1ha2UgcmVjaXBlcy4KJiM0MzsjCiYjNDM7IyBTaGFyZWQgZGVmaW5pdGlvbnMgKHBhdGhzLCBmbGFncywgcGVybWlzc2l2ZS1tb2RlIGhlbHBlcnMpIGxpdmUgaW4KJiM0MzsjIE1ha2VmaWxlLmJ1aWxkdmFycywgaW5jbHVkZWQgYnkgYm90aCBsYXllcnMuCiYjNDM7CiBpbmNsdWRlIC4uLy4uLy4uL2J1aWxkL0J1aWxkLmluY2x1ZGUKIGluY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5hcmNoCiBpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZQogCi1DWFggPz0gJChDUk9TU19DT01QSUxFKWcmIzQzOyYjNDM7Ci1PQkpDT1BZID89ICQoQ1JPU1NfQ09NUElMRSlvYmpjb3B5Ci0KLUNVUkRJUiA6PSAkKGFic3BhdGggLikKLVRPT0xTRElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLikKLUxJQkRJUiA6PSAkKFRPT0xTRElSKS9saWIKLUJQRkRJUiA6PSAkKExJQkRJUikvYnBmCi1UT09MU0lOQ0RJUiA6PSAkKFRPT0xTRElSKS9pbmNsdWRlCi1UT09MU0FSQ0hJTkNESVIgOj0gJChUT09MU0RJUikvYXJjaC8kKFNSQ0FSQ0gpL2luY2x1ZGUKLUJQRlRPT0xESVIgOj0gJChUT09MU0RJUikvYnBmL2JwZnRvb2wKLUFQSURJUiA6PSAkKFRPT0xTSU5DRElSKS91YXBpCi1pZm5lcSAoJChPKSwpCi1HRU5ESVIgOj0gJChPKS9pbmNsdWRlL2dlbmVyYXRlZAotZWxzZQotR0VORElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLi8uLi9pbmNsdWRlL2dlbmVyYXRlZCkKLWVuZGlmCi1HRU5IRFIgOj0gJChHRU5ESVIpL2F1dG9jb25mLmgKLVBLR19DT05GSUcgPz0gJChDUk9TU19DT01QSUxFKXBrZy1jb25maWcKLQotaWZuZXEgKCQod2lsZGNhcmQgJChHRU5IRFIpKSwpCi0gIEdFTkZMQUdTIDo9IC1ESEFWRV9HRU5IRFIKJiM0MzsjIFRoZXNlIHByb2JlcyBnYXRlIHRoZSBmbGF2b3IgbGlzdCwgd2hpY2ggbXVzdCBiZSBmaW5hbCBiZWZvcmUgbGliLm1rIGlzCiYjNDM7IyBpbmNsdWRlZDsga2VlcCB2YWx1ZXMgY29uc2lzdGVudCB3aXRoIE1ha2VmaWxlLmJ1aWxkdmFycy4KJiM0MztpZmVxICgkKG9yaWdpbiBCUEZfR0NDKSx1bmRlZmluZWQpCiYjNDM7QlBGX0dDQyA6PSAkKHNoZWxsIGNvbW1hbmQgLXYgYnBmLWdjYzspCiBlbmRpZgotCi1CUEZfR0NDCQk/PSAkKHNoZWxsIGNvbW1hbmQgLXYgYnBmLWdjYzspCi1pZmRlZiBBU0FOCi1TQU5fQ0ZMQUdTIAk/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIKLWVsc2UKLVNBTl9DRkxBR1MJPz0KLWVuZGlmCi1TQU5fTERGTEFHUwk/PSAkKFNBTl9DRkxBR1MpCi1SRUxFQVNFCQk/PQotT1BUX0ZMQUdTCT89ICQoaWYgJChSRUxFQVNFKSwtTzIsLU8wKQotCi1MSUJFTEZfQ0ZMQUdTCTo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1jZmxhZ3MgMiZndDsvZGV2L251bGwpCi1MSUJFTEZfTElCUwk6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyJmd0Oy9kZXYvbnVsbCB8fCBlY2hvIC1sZWxmKQotCi1TS0lQX0RPQ1MJPz0KLVNLSVBfTExWTQk/PQotU0tJUF9MSUJCRkQJPz0KLVNLSVBfQ1JZUFRPCT89Ci0KLSMgV2hlbiBCUEZfU1RSSUNUX0JVSUxEIGlzIDEsIGFueSBCUEYgb2JqZWN0LCBza2VsZXRvbiwgdGVzdCBvYmplY3QsIG9yCi0jIGJlbmNobWFyayBjb21waWxhdGlvbiBmYWlsdXJlIGlzIGZhdGFsLiBTZXQgdG8gMCB0byB0b2xlcmF0ZSBmYWlsdXJlcwotIyBhbmQgY29udGludWUgYnVpbGRpbmcgdGhlIHJlbWFpbmluZyB0ZXN0cy4KLUJQRl9TVFJJQ1RfQlVJTEQgPz0gMQotUEVSTUlTU0lWRSA6PSAkKGZpbHRlciAwLCQoQlBGX1NUUklDVF9CVUlMRCkpCi0KLWlmZXEgKCQoc3JjdHJlZSksKQotc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChDVVJESVIpKSkKLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKQotc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpCi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSkKLWVuZGlmCi0KLUNPTU1PTl9DRkxBR1MgPSAtZyAkKE9QVF9GTEFHUykgLXJkeW5hbWljIC1zdGQ9Z251MTEJCQkJXAotCSAgLVdhbGwgLVdlcnJvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlcgkJCQlcCi0JICAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlCQkJCQlcCi0JICAkKEdFTkZMQUdTKSAkKFNBTl9DRkxBR1MpICQoTElCRUxGX0NGTEFHUykJCQlcCi0JICAtSSQoQ1VSRElSKSAtSSQoSU5DTFVERV9ESVIpIC1JJChHRU5ESVIpIC1JJChMSUJESVIpCQlcCi0JICAtSSQoVE9PTFNJTkNESVIpIC1JJChUT09MU0FSQ0hJTkNESVIpIC1JJChBUElESVIpIC1JJChPVVRQVVQpCVwKLQkgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUKLUxERkxBR1MgJiM0Mzs9ICQoU0FOX0xERkxBR1MpCi1MRExJQlMgJiM0Mzs9ICQoTElCRUxGX0xJQlMpIC1seiAtbHJ0IC1scHRocmVhZAotCi1QQ0FQX0NGTEFHUwk6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlicGNhcCAyJmd0Oy9kZXYvbnVsbCAmYW1wOyZhbXA7IGVjaG8gJiMzNDstRFRSQUZGSUNfTU9OSVRPUj0xJiMzNDspCi1QQ0FQX0xJQlMJOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBsaWJwY2FwIDImZ3Q7L2Rldi9udWxsKQotTERMSUJTICYjNDM7PSAkKFBDQVBfTElCUykKLUNGTEFHUyAmIzQzOz0gJChDT01NT05fQ0ZMQUdTKSAkKFBDQVBfQ0ZMQUdTKQotCi0jIFNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgdXNlIExMVk0gbGlicmFyaWVzCi1qaXRfZGlzYXNtX2hlbHBlcnMuYy1DRkxBR1MgPSAkKExMVk1fQ0ZMQUdTKQotCi1pZm5lcSAoJChMTFZNKSwpCi0jIFNpbGVuY2Ugc29tZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHdpdGggY2xhbmcKLUNGTEFHUyAmIzQzOz0gLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50Ci1lbmRpZgotCi0jIENoZWNrIHdoZXRoZXIgYnBmIGNwdT12NCBpcyBzdXBwb3J0ZWQgb3Igbm90IGJ5IGNsYW5nCiBpZm5lcSAoJChzaGVsbCAkKENMQU5HKSAtLXRhcmdldD1icGYgLW1jcHU9aGVscCAyJmd0OyZhbXA7MSB8IGdyZXAgJiMzOTt2NCYjMzk7KSwpCiBDTEFOR19DUFVWNCA6PSAxCiBlbmRpZgogCi0jIENoZWNrIHdoZXRoZXIgY2xhbmcgc3VwcG9ydHMgQlBGIGFkZHJlc3Mgc2FuaXRpemVyIChyZXF1aXJlcyBMTFZNIDIyJiM0MzspCi1DTEFOR19IQVNfQVJFTkFfQVNBTiA6PSAkKHNoZWxsIGVjaG8gJiMzOTtpbnQgeDsmIzM5OyB8IFwKLQkkKENMQU5HKSAtLXRhcmdldD1icGYgLWZzYW5pdGl6ZT1rZXJuZWwtYWRkcmVzcyBcCi0JLW1sbHZtIC1hc2FuLXNoYWRvdy1hZGRyLXNwYWNlPTEgXAotCS14IGMgLWMgLSAtbyAvZGV2L251bGwgMiZndDsvZGV2L251bGwgJmFtcDsmYW1wOyBlY2hvIDEpCi0KICMgT3JkZXIgY29ycmVzcG9uZCB0byAmIzM5O21ha2UgcnVuX3Rlc3RzJiMzOTsgb3JkZXIKIFRFU1RfR0VOX1BST0dTID0gdGVzdF92ZXJpZmllciB0ZXN0X3RhZyB0ZXN0X21hcHMgdGVzdF9scnVfbWFwIHRlc3RfcHJvZ3MgXAogCXRlc3Rfc29ja21hcCBcCkBAIC0xMDIsMTYgJiM0Mzs1MCw2IEBAIFRFU1RfSU5TVF9TVUJESVJTIDo9IG5vX2FsdTMyCiBpZm5lcSAoJChCUEZfR0NDKSwpCiBURVNUX0dFTl9QUk9HUyAmIzQzOz0gdGVzdF9wcm9ncy1icGZfZ2NjCiBURVNUX0lOU1RfU1VCRElSUyAmIzQzOz0gYnBmX2djYwotCi0jIFRoZSBmb2xsb3dpbmcgdGVzdHMgY29udGFpbiBDIGNvZGUgdGhhdCwgYWx0aG91Z2ggdGVjaG5pY2FsbHkgbGVnYWwsCi0jIHRyaWdnZXJzIEdDQyB3YXJuaW5ncyB0aGF0IGNhbm5vdCBiZSBkaXNhYmxlZDogZGVjbGFyYXRpb24gb2YKLSMgYW5vbnltb3VzIHN0cnVjdCB0eXBlcyBpbiBmdW5jdGlvbiBwYXJhbWV0ZXIgbGlzdHMuCi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfYml0ZmllbGRzLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvcgotcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX25hbWVzcGFjaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvcgotcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhY2tpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfcGFkZGluZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3IKLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9zeW50YXguYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCi0KIGVuZGlmCiAKIGlmbmVxICgkKENMQU5HX0NQVVY0KSwpCkBAIC0xMzIsMTAgJiM0Mzs3MCw2IEBAIFRFU1RfUFJPR1MgOj0gdGVzdF9rbW9kLnNoIFwKIFRFU1RfUFJPR1NfRVhURU5ERUQgOj0gXAogCWltYV9zZXR1cC5zaCB2ZXJpZnlfc2lnX3NldHVwLnNoCiAKLVRFU1RfS01PRFMgOj0gYnBmX3Rlc3Rtb2Qua28gYnBmX3Rlc3Rfbm9fY2ZpLmtvIGJwZl90ZXN0X21vZG9yZGVyX3gua28gXAotCWJwZl90ZXN0X21vZG9yZGVyX3kua28gYnBmX3Rlc3RfcnFzcGlubG9jay5rbwotVEVTVF9LTU9EX1RBUkdFVFMgPSAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLCQoVEVTVF9LTU9EUykpCi0KICMgQ29tcGlsZSBidXQgbm90IHBhcnQgb2YgJiMzOTttYWtlIHJ1bl90ZXN0cyYjMzk7CiBURVNUX0dFTl9QUk9HU19FWFRFTkRFRCA9IFwKIAliZW5jaCBcCkBAIC0xNDgsMTEgJiM0Mzs4MiwxMCBAQCBURVNUX0dFTl9QUk9HU19FWFRFTkRFRCA9IFwKIAl4ZHBfc3lucHJveHkgXAogCXhza3hjZWl2ZXIKIAotVEVTVF9HRU5fRklMRVMgJiM0Mzs9ICQoVEVTVF9LTU9EUykgbGlidXJhbmRvbV9yZWFkLnNvIHVyYW5kb21fcmVhZCBzaWduLWZpbGUgdXByb2JlX211bHRpCiYjNDM7VEVTVF9LTU9EUyA/PSBicGZfdGVzdG1vZC5rbyBicGZfdGVzdF9ub19jZmkua28gYnBmX3Rlc3RfbW9kb3JkZXJfeC5rbyBcCiYjNDM7CWJwZl90ZXN0X21vZG9yZGVyX3kua28gYnBmX3Rlc3RfcnFzcGlubG9jay5rbwogCi1pZm5lcSAoJChWKSwxKQotc3VibWFrZV9leHRyYXMgOj0gZmVhdHVyZV9kaXNwbGF5PTAKLWVuZGlmCiYjNDM7VEVTVF9HRU5fRklMRVMgJiM0Mzs9ICQoVEVTVF9LTU9EUykgbGlidXJhbmRvbV9yZWFkLnNvIHVyYW5kb21fcmVhZCBzaWduLWZpbGUgdXByb2JlX211bHRpCiAKICMgb3ZlcnJpZGUgbGliLm1rJiMzOTtzIGRlZmF1bHQgcnVsZXMKIE9WRVJSSURFX1RBUkdFVFMgOj0gMQpAQCAtMTcxLDcgJiM0MzsxMDQsNyBAQCBlbmRlZgogaW5jbHVkZSAuLi9saWIubWsKIAogTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyA6PSBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHMKLUNIRUNLX0ZFQVQgOj0gJChmaWx0ZXItb3V0ICQoTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyksJChvciAkKE1BS0VDTURHT0FMUyksICYjMzQ7bm9uZSYjMzQ7KSkKJiM0MztDSEVDS19GRUFUIDo9ICQoZmlsdGVyLW91dCAkKE5PTl9DSEVDS19GRUFUX1RBUkdFVFMpLCQob3IgJChNQUtFQ01ER09BTFMpLGFsbCkpCiBpZm5lcSAoJChDSEVDS19GRUFUKSwpCiBGRUFUVVJFX1VTRVIgOj0gLnNlbGZ0ZXN0cwogRkVBVFVSRV9URVNUUyA6PSBsbHZtCkBAIC0xODgsNiAmIzQzOzEyMSw4IEBAIG92ZXJyaWRlIE9VVFBVVCA6PSAkKHBhdHN1YnN0ICUvLCUsJChPVVRQVVQpKQogZW5kaWYKIGVuZGlmCiAKJiM0MztpbmNsdWRlIE1ha2VmaWxlLmJ1aWxkdmFycwomIzQzOwogaWZuZXEgKCQoU0tJUF9MTFZNKSwxKQogaWZlcSAoJChmZWF0dXJlLWxsdm0pLDEpCiAgIExMVk1fQ0ZMQUdTICAmIzQzOz0gLURIQVZFX0xMVk1fU1VQUE9SVApAQCAtMjEzLDM2ICYjNDM7MTQ4LDExIEBAIGlmZXEgKCQoZmVhdHVyZS1sbHZtKSwxKQogZW5kaWYKIGVuZGlmCiAKLVNDUkFUQ0hfRElSIDo9ICQoT1VUUFVUKS90b29scwotQlVJTERfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2J1aWxkCi1JTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlCi1CUEZPQkogOj0gJChCVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYQotaWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKQotSE9TVF9CVUlMRF9ESVIJCTo9ICQoQlVJTERfRElSKS9ob3N0Ci1IT1NUX1NDUkFUQ0hfRElSCTo9ICQoT1VUUFVUKS9ob3N0LXRvb2xzCi1IT1NUX0lOQ0xVREVfRElSCTo9ICQoSE9TVF9TQ1JBVENIX0RJUikvaW5jbHVkZQotZWxzZQotSE9TVF9CVUlMRF9ESVIJCTo9ICQoQlVJTERfRElSKQotSE9TVF9TQ1JBVENIX0RJUgk6PSAkKFNDUkFUQ0hfRElSKQotSE9TVF9JTkNMVURFX0RJUgk6PSAkKElOQ0xVREVfRElSKQotZW5kaWYKLUhPU1RfQlBGT0JKIDo9ICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYQotUkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHMKLVZNTElOVVhfQlRGX1BBVEhTID89ICQoaWYgJChPKSwkKE8pL3ZtbGludXgpCQkJCVwKLQkJICAgICAkKGlmICQoS0JVSUxEX09VVFBVVCksJChLQlVJTERfT1VUUFVUKS92bWxpbnV4KQlcCi0JCSAgICAgLi4vLi4vLi4vLi4vdm1saW51eAkJCQlcCi0JCSAgICAgL3N5cy9rZXJuZWwvYnRmL3ZtbGludXgJCQkJXAotCQkgICAgIC9ib290L3ZtbGludXgtJChzaGVsbCB1bmFtZSAtcikKLVZNTElOVVhfQlRGID89ICQoYWJzcGF0aCAkKGZpcnN0d29yZCAkKHdpbGRjYXJkICQoVk1MSU5VWF9CVEZfUEFUSFMpKSkpCi1pZmVxICgkKFZNTElOVVhfQlRGKSwpCi0kKGVycm9yIENhbm5vdCBmaW5kIGEgdm1saW51eCBmb3IgVk1MSU5VWF9CVEYgYXQgYW55IG9mICYjMzQ7JChWTUxJTlVYX0JURl9QQVRIUykmIzM0OykKLWVuZGlmCi0KICMgRGVmaW5lIHNpbXBsZSBhbmQgc2hvcnQgYG1ha2UgdGVzdF9wcm9nc2AsIGBtYWtlIHRlc3RfbWFwc2AsIGV0YyB0YXJnZXRzCiAjIHRvIGJ1aWxkIGluZGl2aWR1YWwgdGVzdHMuCiAjIE5PVEU6IFNlbWljb2xvbiBhdCB0aGUgZW5kIGlzIGNyaXRpY2FsIHRvIG92ZXJyaWRlIGxpYi5tayYjMzk7cyBkZWZhdWx0IHN0YXRpYwogIyBydWxlIGZvciBiaW5hcmllcy4KLSQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EUykJCQkJXAomIzQzOyQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EX1RBUkdFVFMpCQkJCVwKIAkgJChURVNUX0dFTl9QUk9HU19FWFRFTkRFRCkpOiAlOiAkKE9VVFBVVCkvJSA7CiAKICMgc29ydCByZW1vdmVzIGxpYmJwZiBkdXBsaWNhdGVzIHdoZW4gbm90IGNyb3NzLWJ1aWxkaW5nCkBAIC0yNTYsMTEgJiM0MzsxNjYsMTQgQEAgJChNQUtFX0RJUlMpOgogCiAkKE9VVFBVVCkvJS5vOiAlLmMKIAkkKGNhbGwgbXNnLENDLCwkQCkKLQkkKFEpJChDQykgJChDRkxBR1MpIC1jICQoZmlsdGVyICUuYywkXikgJChMRExJQlMpIC1vICRACiYjNDM7CSQoUSkkKENDKSAkKENGTEFHUykgLWMgJChmaWx0ZXIgJS5jLCReKSAtbyAkQAogCiYjNDM7IyBIZWFkZXJzIG1heSBhcHBlYXIgYW1vbmcgdGhlIHByZXJlcXVpc2l0ZXMgZm9yIGRlcGVuZGVuY3kgdHJhY2tpbmc7CiYjNDM7IyB0aGV5IG11c3Qgbm90IHJlYWNoIHRoZSBjbGFuZy9nY2MgY29tbWFuZCBsaW5lIChjbGFuZyB0cmVhdHMgYSBiYXJlIC5oCiYjNDM7IyBhcmd1bWVudCBhcyBhIHByZWNvbXBpbGVkLWhlYWRlciBqb2IgYW5kIHJlZnVzZXMgLW8pLgogJChPVVRQVVQpLyU6JS5jCiAJJChjYWxsIG1zZyxCSU5BUlksLCRAKQotCSQoUSkkKExJTksuYykgJF4gJChMRExJQlMpIC1vICRACiYjNDM7CSQoUSkkKExJTksuYykgJChmaWx0ZXItb3V0ICUuaCwkXikgJChMRExJQlMpIC1vICRACiAKICMgTExWTSYjMzk7cyBsZC5sbGQgZG9lc24mIzM5O3Qgc3VwcG9ydCBhbGwgdGhlIGFyY2hpdGVjdHVyZXMsIHNvIHVzZSBpdCBvbmx5IG9uIHg4NgogaWZlcSAoJChTUkNBUkNIKSwkKGZpbHRlciAkKFNSQ0FSQ0gpLHg4NiByaXNjdikpCkBAIC0yOTcsNiAmIzQzOzIxMCwxMyBAQCAkKE9VVFBVVCkvc2lnbi1maWxlOiAuLi8uLi8uLi8uLi9zY3JpcHRzL3NpZ24tZmlsZS5jCiAJCSAgJCZsdDsgLW8gJEAgXAogCQkgICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGliY3J5cHRvIDImZ3Q7IC9kZXYvbnVsbCB8fCBlY2hvIC1sY3J5cHRvKQogCiYjNDM7IyBMaW5raW5nIHVwcm9iZV9tdWx0aSBjYW4gZmFpbCBkdWUgdG8gcmVsb2NhdGlvbiBvdmVyZmxvd3Mgb24gbWlwcy4KJiM0MzskKE9VVFBVVCkvdXByb2JlX211bHRpOiBDRkxBR1MgJiM0Mzs9ICQoaWYgJChmaWx0ZXIgbWlwcywgJChBUkNIKSksLW14Z290KQomIzQzOyQoT1VUUFVUKS91cHJvYmVfbXVsdGk6IHVwcm9iZV9tdWx0aS5jIHVwcm9iZV9tdWx0aS5sZAomIzQzOwkkKGNhbGwgbXNnLEJJTkFSWSwsJEApCiYjNDM7CSQoUSkkKENDKSAkKENGTEFHUykgLVdsLC1ULHVwcm9iZV9tdWx0aS5sZCAtTzAgJChMREZMQUdTKSAJXAomIzQzOwkJJChmaWx0ZXItb3V0ICUubGQsJF4pICQoTERMSUJTKSAtbyAkQAomIzQzOwogIyBUaGlzIHNob3VsZCByZWFsbHkgYmUgYSBncm91cGVkIHRhcmdldCwgYnV0IG1ha2UgdmVyc2lvbnMgYmVmb3JlIDQuMyBkb24mIzM5O3QKICMgc3VwcG9ydCB0aGF0IGZvciByZWd1bGFyIHJ1bGVzLiBIb3dldmVyLCBwYXR0ZXJuIG1hdGNoaW5nIHJ1bGVzIGFyZSBpbXBsaWNpdGx5CiAjIHRyZWF0ZWQgYXMgZ3JvdXBlZCBldmVuIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgbWFrZSwgc28gYXMgYSB3b3JrYXJvdW5kLCB0aGUKQEAgLTMxMyw0MCAmIzQzOzIzMywxOCBAQCAkKFRFU1RfS01PRF9UQVJHRVRTKTogJChhZGRwcmVmaXggdGVzdF9rbW9kcy8sJChURVNUX0tNT0RTKSkKIAkkKGNhbGwgbXNnLE1PRCwsJEApCiAJJChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbIC1mIHRlc3Rfa21vZHMvJChARikgXTsgdGhlbiApY3AgdGVzdF9rbW9kcy8kKEBGKSAkQCQoaWYgJChQRVJNSVNTSVZFKSw7IGZpKQogCi0KLURFRkFVTFRfQlBGVE9PTCA6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbAotaWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKQotQ1JPU1NfQlBGVE9PTCA6PSAkKFNDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2wKLVRSVU5ORVJfQlBGVE9PTCA6PSAkKENST1NTX0JQRlRPT0wpCi1VU0VfQk9PVFNUUkFQIDo9ICYjMzQ7JiMzNDsKLWVsc2UKLVRSVU5ORVJfQlBGVE9PTCA6PSAkKERFRkFVTFRfQlBGVE9PTCkKLVVTRV9CT09UU1RSQVAgOj0gJiMzNDtib290c3RyYXAvJiMzNDsKLWVuZGlmCi0KIFRFU1RfR0VOX1BST0dTX0VYVEVOREVEICYjNDM7PSAkKFRSVU5ORVJfQlBGVE9PTCkKIAogJChURVNUX0dFTl9QUk9HUykgJChURVNUX0dFTl9QUk9HU19FWFRFTkRFRCk6ICQoQlBGT0JKKQogCi1URVNUSU5HX0hFTFBFUlMJOj0gJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vCi1DR1JPVVBfSEVMUEVSUwk6PSAkKE9VVFBVVCkvY2dyb3VwX2hlbHBlcnMubwotVU5QUklWX0hFTFBFUlMgIDo9ICQoT1VUUFVUKS91bnByaXZfaGVscGVycy5vCi1UUkFDRV9IRUxQRVJTCTo9ICQoT1VUUFVUKS90cmFjZV9oZWxwZXJzLm8KLUpTT05fV1JJVEVSCQk6PSAkKE9VVFBVVCkvanNvbl93cml0ZXIubwotQ0FQX0hFTFBFUlMJOj0gJChPVVRQVVQpL2NhcF9oZWxwZXJzLm8KLU5FVFdPUktfSEVMUEVSUyA6PSAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8KLQotJChPVVRQVVQpL3Rlc3Rfc29ja21hcDogJChDR1JPVVBfSEVMUEVSUykgJChURVNUSU5HX0hFTFBFUlMpCi0kKE9VVFBVVCkvdGVzdF90Y3Bub3RpZnlfdXNlcjogJChDR1JPVVBfSEVMUEVSUykgJChURVNUSU5HX0hFTFBFUlMpICQoVFJBQ0VfSEVMUEVSUykKLSQoT1VUUFVUKS90ZXN0X3NvY2tfZmllbGRzOiAkKENHUk9VUF9IRUxQRVJTKSAkKFRFU1RJTkdfSEVMUEVSUykKLSQoT1VUUFVUKS90ZXN0X3RhZzogJChURVNUSU5HX0hFTFBFUlMpCi0kKE9VVFBVVCkvdGVzdF9saXJjX21vZGUyX3VzZXI6ICQoVEVTVElOR19IRUxQRVJTKQotJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQ6ICQoVEVTVElOR19IRUxQRVJTKQotJChPVVRQVVQpL3Rlc3RfbWFwczogJChURVNUSU5HX0hFTFBFUlMpCi0kKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogJChURVNUSU5HX0hFTFBFUlMpICQoQ0FQX0hFTFBFUlMpICQoVU5QUklWX0hFTFBFUlMpCi0kKE9VVFBVVCkveHNrLm86ICQoQlBGT0JKKQotCi1CUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKQomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7IyBUb29sIHN1Yi1idWlsZHM6IGJwZnRvb2wgYW5kIGxpYmJwZiAoaG9zdCBhbmQsIHdoZW4gY3Jvc3MtY29tcGlsaW5nLAomIzQzOyMgdGFyZ2V0IHZhcmlhbnRzKSBhbmQgcmVzb2x2ZV9idGZpZHMuCiYjNDM7IwomIzQzOyMgTm90ZSB0aGUgZGVsaWJlcmF0ZSBhc3ltbWV0cnk6IHRoZSBob3N0IGxpYmJwZiBidWlsZHMgd2l0aG91dAomIzQzOyMgc2FuaXRpemVycyBhbmQgd2l0aCB0aGUgaG9zdCB0b29sY2hhaW4uCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsKICQoREVGQVVMVF9CUEZUT09MKTogJCh3aWxkY2FyZCAkKEJQRlRPT0xESVIpLyouW2NoXSAkKEJQRlRPT0xESVIpL01ha2VmaWxlKSAgICBcCiAJCSAgICAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL2JwZnRvb2wKIAkkKFEpJChNQUtFKSAkKHN1Ym1ha2VfZXh0cmFzKSAgLUMgJChCUEZUT09MRElSKQkJCSAgICAgICBcCkBAIC0zNzcsMjAgJiM0MzsyNzUsNiBAQCAkKENST1NTX0JQRlRPT0wpOiAkKHdpbGRjYXJkICQoQlBGVE9PTERJUikvKi5bY2hdICQoQlBGVE9PTERJUikvTWFrZWZpbGUpCVwKIAkJICAgIHByZWZpeD0gREVTVERJUj0kKFNDUkFUQ0hfRElSKS8gaW5zdGFsbC1iaW4KIGVuZGlmCiAKLWlmbmVxICgkKFNLSVBfRE9DUyksMSkKLWFsbDogZG9jcwotZW5kaWYKLQotZG9jczoKLQkkKFEpUlNUMk1BTl9PUFRTPSYjMzQ7LS1leGl0LXN0YXR1cz0xJiMzNDsgJChNQUtFKSAkKHN1Ym1ha2VfZXh0cmFzKQlcCi0JICAgICAgICAgICAgLWYgTWFrZWZpbGUuZG9jcwkJCQkJXAotCSAgICAgICAgICAgIHByZWZpeD0gT1VUUFVUPSQoT1VUUFVUKS8gREVTVERJUj0kKE9VVFBVVCkvICRACi0KLWRvY3MtY2xlYW46Ci0JJChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcykJCQkJCVwKLQkgICAgICAgICAgICAtZiBNYWtlZmlsZS5kb2NzCQkJCQlcCi0JICAgICAgICAgICAgcHJlZml4PSBPVVRQVVQ9JChPVVRQVVQpLyBERVNURElSPSQoT1VUUFVUKS8gJEAKLQogJChCUEZPQkopOiAkKHdpbGRjYXJkICQoQlBGRElSKS8qLltjaF0gJChCUEZESVIpL01ha2VmaWxlKQkJICAgICAgIFwKIAkgICAkKEFQSURJUikvbGludXgvYnBmLmgJCQkJCSAgICAgICBcCiAJICAgfCAkKEJVSUxEX0RJUikvbGliYnBmCkBAIC00MTIsMTkgJiM0MzsyOTYsNiBAQCAkKEhPU1RfQlBGT0JKKTogJCh3aWxkY2FyZCAkKEJQRkRJUikvKi5bY2hdICQoQlBGRElSKS9NYWtlZmlsZSkJCSAgICAgICBcCiAJCSAgICBERVNURElSPSQoSE9TVF9TQ1JBVENIX0RJUikvIHByZWZpeD0gYWxsIGluc3RhbGxfaGVhZGVycwogZW5kaWYKIAotIyB2bWxpbnV4LmggaXMgZmlyc3QgZHVtcGVkIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kIHRoZW4gY29tcGFyZWQgdG8KLSMgdGhlIHByZXZpb3VzIHZlcnNpb24uIFRoaXMgaGVscHMgdG8gYXZvaWQgdW5uZWNlc3NhcnkgcmUtYnVpbGRzIG9mCi0jICQoVFJVTk5FUl9CUEZfT0JKUykKLSQoSU5DTFVERV9ESVIpL3ZtbGludXguaDogJChWTUxJTlVYX0JURikgJChCUEZUT09MKSB8ICQoSU5DTFVERV9ESVIpCi1pZmVxICgkKFZNTElOVVhfSCksKQotCSQoY2FsbCBtc2csR0VOLCwkQCkKLQkkKFEpJChCUEZUT09MKSBidGYgZHVtcCBmaWxlICQoVk1MSU5VWF9CVEYpIGZvcm1hdCBjICZndDsgJChJTkNMVURFX0RJUikvLnZtbGludXguaC50bXAKLQkkKFEpY21wIC1zICQoSU5DTFVERV9ESVIpLy52bWxpbnV4LmgudG1wICRAIHx8IG12ICQoSU5DTFVERV9ESVIpLy52bWxpbnV4LmgudG1wICRACi1lbHNlCi0JJChjYWxsIG1zZyxDUCwsJEApCi0JJChRKWNwICYjMzQ7JChWTUxJTlVYX0gpJiMzNDsgJEAKLWVuZGlmCi0KICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzCVwKIAkJICAgICAgICQoVE9PTFNESVIpL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMJXAogCQkgICAgICAgJChUT09MU0RJUikvbGliL3JidHJlZS5jCQkJXApAQCAtNDM5LDM3NCAmIzQzOzMxMCwzOCBAQCAkKFJFU09MVkVfQlRGSURTKTogJChIT1NUX0JQRk9CSikgfCAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0ZmlkcwlcCiAJCUhPU1RQS0dfQ09ORklHPSYjMzk7JChQS0dfQ09ORklHKSYjMzk7IFwKIAkJT1VUUFVUPSQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzLyBCUEZPQko9JChIT1NUX0JQRk9CSikKIAotIyBHZXQgQ2xhbmcmIzM5O3MgZGVmYXVsdCBpbmNsdWRlcyBvbiB0aGlzIHN5c3RlbSwgYXMgb3Bwb3NlZCB0byB0aG9zZSBzZWVuIGJ5Ci0jICYjMzk7LS10YXJnZXQ9YnBmJiMzOTsuIFRoaXMgZml4ZXMgJiMzNDttaXNzaW5nJiMzNDsgZmlsZXMgb24gc29tZSBhcmNoaXRlY3R1cmVzL2Rpc3Ryb3MsCi0jIHN1Y2ggYXMgYXNtL2J5dGVvcmRlci5oLCBhc20vc29ja2V0LmgsIGFzbS9zb2NraW9zLmgsIHN5cy9jZGVmcy5oIGV0Yy4KLSMKLSMgVXNlICYjMzk7LWlkaXJhZnRlciYjMzk7OiBEb24mIzM5O3QgaW50ZXJmZXJlIHdpdGggaW5jbHVkZSBtZWNoYW5pY3MgZXhjZXB0IHdoZXJlIHRoZQotIyBidWlsZCB3b3VsZCBoYXZlIGZhaWxlZCBhbnl3YXlzLgotZGVmaW5lIGdldF9zeXNfaW5jbHVkZXMKLSQoc2hlbGwgJCgxKSAkKDIpIC12IC1FIC0gJmx0Oy9kZXYvbnVsbCAyJmd0OyZhbXA7MSBcCi0JfCBzZWQgLW4gJiMzOTsvJmx0Oy4uLiZndDsgc2VhcmNoIHN0YXJ0cyBoZXJlOi8sL0VuZCBvZiBzZWFyY2ggbGlzdC4veyBzfCBcKC8uKlwpfC1pZGlyYWZ0ZXIgXDF8cCB9JiMzOTspIFwKLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtICZsdDsvZGV2L251bGwgfCBncmVwICYjMzk7X19yaXNjdl94bGVuICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZigmIzM0Oy1EX19yaXNjdl94bGVuPSVkIC1EX19CSVRTX1BFUl9MT05HPSVkJiMzNDssICQkMywgJCQzKX0mIzM5OykgXAotJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX2xvb25nYXJjaF9ncmxlbiAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoJiMzNDstRF9fQklUU19QRVJfTE9ORz0lZCYjMzQ7LCAkJDMpfSYjMzk7KSBcCi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSAmbHQ7L2Rldi9udWxsIHwgZ3JlcCAtRSAmIzM5O01JUFMoRUx8RUIpfF9NSVBTX1NaKFBUUnxMT05HKSB8X01JUFNfU0lNIHxfQUJJKE8zMnxOMzJ8NjQpICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZigmIzM0Oy1EJXM9JXMgJiMzNDssICQkMiwgJCQzKX0mIzM5OykKLWVuZGVmCi0KLSMgRGV0ZXJtaW5lIHRhcmdldCBlbmRpYW5uZXNzLgotSVNfTElUVExFX0VORElBTiA6PSAkKHNoZWxsICQoQ0MpIC1kTSAtRSAtICZsdDsvZGV2L251bGwgfCBcCi0JCQlncmVwICYjMzk7ZGVmaW5lIF9fQllURV9PUkRFUl9fIF9fT1JERVJfTElUVExFX0VORElBTl9fJiMzOTspCi1NRU5ESUFOOj0kKGlmICQoSVNfTElUVExFX0VORElBTiksLW1saXR0bGUtZW5kaWFuLC1tYmlnLWVuZGlhbikKLUJQRl9UQVJHRVRfRU5ESUFOOj0kKGlmICQoSVNfTElUVExFX0VORElBTiksLS10YXJnZXQ9YnBmZWwsLS10YXJnZXQ9YnBmZWIpCi0KLWlmbmVxICgkKENST1NTX0NPTVBJTEUpLCkKLUNMQU5HX1RBUkdFVF9BUkNIID0gLS10YXJnZXQ9JChub3RkaXIgJChDUk9TU19DT01QSUxFOiUtPSUpKQotZW5kaWYKLQotQ0xBTkdfU1lTX0lOQ0xVREVTID0gJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsJChDTEFORyksJChDTEFOR19UQVJHRVRfQVJDSCkpCi1CUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pCVwKLQkgICAgIC1JJChJTkNMVURFX0RJUikgLUkkKENVUkRJUikgLUkkKEFQSURJUikJCQlcCi0JICAgICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlCQkJCVwKLQkgICAgIC1JJChhYnNwYXRoICQoT1VUUFVUKS8uLi91c3IvaW5jbHVkZSkJCQlcCi0JICAgICAtc3RkPWdudTExCQkgCQkJCQlcCi0JICAgICAtZm5vLXN0cmljdC1hbGlhc2luZyAJCQkJCVwKLQkgICAgIC1Xbm8tbWljcm9zb2Z0LWFub24tdGFnCQkJCQlcCi0JICAgICAtZm1zLWV4dGVuc2lvbnMJCQkJCQlcCi0JICAgICAtV25vLWNvbXBhcmUtZGlzdGluY3QtcG9pbnRlci10eXBlcwkJCVwKLQkgICAgIC1Xbm8taW5pdGlhbGl6ZXItb3ZlcnJpZGVzCQkJCQlcCi0JICAgICAjCi0jIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZQotCi1DTEFOR19DRkxBR1MgPSAkKENMQU5HX1NZU19JTkNMVURFUykKLQotJChPVVRQVVQpL3Rlc3RfbDRsYl9ub2lubGluZS5vOiBCUEZfQ0ZMQUdTICYjNDM7PSAtZm5vLWlubGluZQotJChPVVRQVVQpL3Rlc3RfeGRwX25vaW5saW5lLm86IEJQRl9DRkxBR1MgJiM0Mzs9IC1mbm8taW5saW5lCi0KLSQoT1VUUFVUKS9mbG93X2Rpc3NlY3Rvcl9sb2FkLm86IGZsb3dfZGlzc2VjdG9yX2xvYWQuaAotJChPVVRQVVQpL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLm86IGNncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmgKLQotIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIENsYW5nCi0jICQxIC0gaW5wdXQgLmMgZmlsZQotIyAkMiAtIG91dHB1dCAubyBmaWxlCi0jICQzIC0gQ0ZMQUdTCi0jICQ0IC0gYmluYXJ5IG5hbWUKLWRlZmluZSBDTEFOR19CUEZfQlVJTERfUlVMRQotCSQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpCi0JJChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12MyAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXAotCQkoJChSTSkgJDI7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1CUEYmIzM5OyAmIzM5OyQobm90ZGlyICQyKSYjMzk7IDEmZ3Q7JmFtcDsyKSkKLWVuZGVmCi0jIFNpbWlsYXIgdG8gQ0xBTkdfQlBGX0JVSUxEX1JVTEUsIGJ1dCB3aXRoIGRpc2FibGVkIGFsdTMyCi1kZWZpbmUgQ0xBTkdfTk9BTFUzMl9CUEZfQlVJTERfUlVMRQotCSQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpCi0JJChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12MiAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXAotCQkoJChSTSkgJDI7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1CUEYmIzM5OyAmIzM5OyQobm90ZGlyICQyKSYjMzk7IDEmZ3Q7JmFtcDsyKSkKLWVuZGVmCi0jIFNpbWlsYXIgdG8gQ0xBTkdfQlBGX0JVSUxEX1JVTEUsIGJ1dCB3aXRoIGNwdS12NAotZGVmaW5lIENMQU5HX0NQVVY0X0JQRl9CVUlMRF9SVUxFCi0JJChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMikKLQkkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXY0IC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcCi0JCSgkKFJNKSAkMjsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLUJQRiYjMzk7ICYjMzk7JChub3RkaXIgJDIpJiMzOTsgMSZndDsmYW1wOzIpKQotZW5kZWYKLSMgQnVpbGQgQlBGIG9iamVjdCB1c2luZyBHQ0MKLWRlZmluZSBHQ0NfQlBGX0JVSUxEX1JVTEUKLQkkKGNhbGwgbXNnLEdDQy1CUEYsJDQsJDIpCi0JJChRKSQoQlBGX0dDQykgJDMgLURCUEZfTk9fUFJFU0VSVkVfQUNDRVNTX0lOREVYIC1Xbm8tYXR0cmlidXRlcyAtTzIgLWMgJDEgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFwKLQkJKCQoUk0pICQyOyBwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtQlBGJiMzOTsgJiMzOTskKG5vdGRpciAkMikmIzM5OyAxJmd0OyZhbXA7MikpCi1lbmRlZgotCi1TS0VMX0JMQUNLTElTVCA6PSBidGZfXyUgdGVzdF9waW5uaW5nX2ludmFsaWQuYyB0ZXN0X3NrX2Fzc2lnbi5jCi0KLUxJTktFRF9TS0VMUyA6PSB0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oIGxpbmtlZF9mdW5jcy5za2VsLmgJCVwKLQkJbGlua2VkX3ZhcnMuc2tlbC5oIGxpbmtlZF9tYXBzLnNrZWwuaCAJCQlcCi0JCXRlc3Rfc3Vic2tlbGV0b24uc2tlbC5oIHRlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaAlcCi0JCXRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmgJCQlcCi0JCXRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaAkJCQlcCi0JCXRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaAkJCQlcCi0JCXRyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmgKLQotTFNLRUxTIDo9IGZleGl0X3NsZWVwLmMgdHJhY2VfcHJpbnRrLmMgdHJhY2VfdnByaW50ay5jIG1hcF9wdHJfa2Vybi5jIAlcCi0JY29yZV9rZXJuLmMgY29yZV9rZXJuX292ZXJmbG93LmMgdGVzdF9yaW5nYnVmLmMJCQlcCi0JdGVzdF9yaW5nYnVmX24uYyB0ZXN0X3JpbmdidWZfbWFwX2tleS5jIHRlc3RfcmluZ2J1Zl93cml0ZS5jICAgIFwKLQl0ZXN0X3JpbmdidWZfb3ZlcndyaXRlLmMKLQotTFNLRUxTX1NJR05FRCA6PSBmZW50cnlfdGVzdC5jIGZleGl0X3Rlc3QuYyBhdG9taWNzLmMKLQotIyBHZW5lcmF0ZSBib3RoIGxpZ2h0IHNrZWxldG9uIGFuZCBsaWJicGYgc2tlbGV0b24gZm9yIHRoZXNlCi1MU0tFTFNfRVhUUkEgOj0gdGVzdF9rc3ltc19tb2R1bGUuYyB0ZXN0X2tzeW1zX3dlYWsuYyBrZnVuY19jYWxsX3Rlc3QuYyBcCi0Ja2Z1bmNfY2FsbF90ZXN0X3N1YnByb2cuYwotU0tFTF9CTEFDS0xJU1QgJiM0Mzs9ICQkKExTS0VMUykgJCQoTFNLRUxTX1NJR05FRCkKLQotdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3RhdGljX2xpbmtlZDEuYnBmLm8gdGVzdF9zdGF0aWNfbGlua2VkMi5icGYubwotbGlua2VkX2Z1bmNzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9mdW5jczEuYnBmLm8gbGlua2VkX2Z1bmNzMi5icGYubwotbGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYubwotbGlua2VkX21hcHMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX21hcHMxLmJwZi5vIGxpbmtlZF9tYXBzMi5icGYubwotIyBJbiB0aGUgc3Vic2tlbGV0b24gY2FzZSwgd2Ugd2FudCB0aGUgdGVzdF9zdWJza2VsZXRvbl9saWIuc3Vic2tlbC5oIGZpbGUKLSMgYnV0IHRoYXQmIzM5O3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi4KLXRlc3Rfc3Vic2tlbGV0b24uc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b24uYnBmLm8KLXRlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubwotdGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vCi14c2tfeGRwX3Byb2dzLnNrZWwuaC1kZXBzIDo9IHhza194ZHBfcHJvZ3MuYnBmLm8KLXhkcF9od19tZXRhZGF0YS5za2VsLmgtZGVwcyA6PSB4ZHBfaHdfbWV0YWRhdGEuYnBmLm8KLXhkcF9mZWF0dXJlcy5za2VsLmgtZGVwcyA6PSB4ZHBfZmVhdHVyZXMuYnBmLm8KLXRyYWNpbmdfbXVsdGkuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYubwotdHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2hfbW9kdWxlLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm8KLXRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vCi10cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9zZXNzaW9uX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vCi0KLUxJTktFRF9CUEZfT0JKUyA6PSAkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKQotTElOS0VEX0JQRl9TUkNTIDo9ICQocGF0c3Vic3QgJS5icGYubywlLmMsJChMSU5LRURfQlBGX09CSlMpKQotCi1IRUFERVJTX0ZPUl9CUEZfT0JKUyA6PSAkKHdpbGRjYXJkICQoQlBGRElSKS8qLmJwZi5oKQkJXAotCQkJJCh3aWxkY2FyZCAkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZS8qLltjaF0pCVwKLQkJCSQoYWRkcHJlZml4ICQoQlBGRElSKS8sCWJwZl9jb3JlX3JlYWQuaAlcCi0JCQkgICAgICAgICAgICAgICAgICAgICAgICBicGZfZW5kaWFuLmgJXAotCQkJCQkJYnBmX2hlbHBlcnMuaAlcCi0JCQkgICAgICAgICAgICAgICAgICAgICAgICBicGZfdHJhY2luZy5oKQotCi0jIFNldCB1cCBleHRyYSBUUlVOTkVSX1hYWCAmIzM0O3RlbXBvcmFyeSYjMzQ7IHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQgKHJlbGllcyBvbgotIyAkZXZhbCgpKSBhbmQgcGFzcyBjb250cm9sIHRvIERFRklORV9URVNUX1JVTk5FUl9SVUxFUy4KLSMgUGFyYW1ldGVyczoKLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKQotIyAkMiAtIHRlc3QgcnVubmVyIGV4dHJhICYjMzQ7Zmxhdm9yJiMzNDsgKGUuZy4sIG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYywgZXRjKQotZGVmaW5lIERFRklORV9URVNUX1JVTk5FUgotCi1MU0tFTF9TSUdOIDo9IC1TIC1rICQoUFJJVkFURV9LRVkpIC1pICQoVkVSSUZJQ0FUSU9OX0NFUlQpCi1UUlVOTkVSX09VVFBVVCA6PSAkKE9VVFBVVCkkKGlmICQyLC8pJDIKLVRSVU5ORVJfQklOQVJZIDo9ICQxJChpZiAkMiwtKSQyCi1UUlVOTkVSX1RFU1RfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5vLAlcCi0JCQkJICQkKG5vdGRpciAkJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVFNfRElSKS8qLmMpKSkKLVRSVU5ORVJfRVhUUkFfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubywJCVwKLQkJCQkgJCQoZmlsdGVyICUuYywkKFRSVU5ORVJfRVhUUkFfU09VUkNFUykpKQotVFJVTk5FUl9MSUJfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubywJCVwKLQkJCQkgJCQoZmlsdGVyICUuYywkKFRSVU5ORVJfTElCX1NPVVJDRVMpKSkKLVRSVU5ORVJfRVhUUkFfSERSUyA6PSAkJChmaWx0ZXIgJS5oLCQoVFJVTk5FUl9FWFRSQV9TT1VSQ0VTKSkKLVRSVU5ORVJfVEVTVFNfSERSIDo9ICQoVFJVTk5FUl9URVNUU19ESVIpL3Rlc3RzLmgKLVRSVU5ORVJfQlBGX1NSQ1MgOj0gJCQobm90ZGlyICQkKHdpbGRjYXJkICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8qLmMpKQotVFJVTk5FUl9CUEZfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUuYnBmLm8sICQkKFRSVU5ORVJfQlBGX1NSQ1MpKQotVFJVTk5FUl9CUEZfU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLnNrZWwuaCwJXAotCQkJCSAkJChmaWx0ZXItb3V0ICQoU0tFTF9CTEFDS0xJU1QpICQoTElOS0VEX0JQRl9TUkNTKSxcCi0JCQkJCSAgICAgICAkJChUUlVOTkVSX0JQRl9TUkNTKSkpCi1UUlVOTkVSX0JQRl9MU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmxza2VsLmgsICQkKExTS0VMUykgJCQoTFNLRUxTX0VYVFJBKSkKLVRSVU5ORVJfQlBGX1NLRUxTX0xJTktFRCA6PSAkJChhZGRwcmVmaXggJCQoVFJVTk5FUl9PVVRQVVQpLywkKExJTktFRF9TS0VMUykpCi1UUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5sc2tlbC5oLCAkJChMU0tFTFNfU0lHTkVEKSkKLVRFU1RfR0VOX0ZJTEVTICYjNDM7PSAkJChUUlVOTkVSX0JQRl9PQkpTKQotCi0jIEV2YWx1YXRlIHJ1bGVzIG5vdyB3aXRoIGV4dHJhIFRSVU5ORVJfWFhYIHZhcmlhYmxlcyBhYm92ZSBhbHJlYWR5IGRlZmluZWQKLSQkKGV2YWwgJCQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMsJDEsJDIpKQotCi1lbmRlZgotCi0jIFVzaW5nIFRSVU5ORVJfWFhYIHZhcmlhYmxlcywgcHJvdmlkZWQgYnkgY2FsbGVycyBvZiBERUZJTkVfVEVTVF9SVU5ORVIgYW5kCi0jIHNldCB1cCBieSBERUZJTkVfVEVTVF9SVU5ORVIgaXRzZWxmLCBjcmVhdGUgdGVzdCBydW5uZXIgYnVpbGQgcnVsZXMgd2l0aDoKLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKQotIyAkMiAtIHRlc3QgcnVubmVyIGV4dHJhICYjMzQ7Zmxhdm9yJiMzNDsgKGUuZy4sIG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYywgZXRjKQotZGVmaW5lIERFRklORV9URVNUX1JVTk5FUl9SVUxFUwotCi0jIFBlcm1pc3NpdmUgYnVpbGQgYmVoYXZpb3VyIChza2lwLW9uLWZhaWx1cmUgY29tcGlsZSwgcGFydGlhbC1saW5rKSBvbmx5Ci0jIGFwcGxpZXMgdG8gdGVzdF9wcm9ncyBhbmQgaXRzIGZsYXZvcnM7IHJ1bm5lcnMgdGhhdCB1c2Ugc3Ryb25nIGNyb3NzLW9iamVjdAotIyByZWZlcmVuY2VzIChlLmcuIHRlc3RfbWFwcykga2VlcCBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBwZXJtaXNzaXZlLgotIyBUaGUgY2hlY2sgaXMgaW5saW5lZCBwZXItcnVubmVyIHNvICQxIGlzIHN1YnN0aXR1dGVkIGF0ICQoY2FsbCkgdGltZSBhbmQKLSMgdGhlIHJlc3VsdCBpcyBiYWtlZCBpbnRvIGVhY2ggcnVsZSYjMzk7cyByZWNpcGUuCi0KLWlmZXEgKCQoJChUUlVOTkVSX09VVFBVVCktZGlyKSwpCi0kKFRSVU5ORVJfT1VUUFVUKS1kaXIgOj0geQotJChUUlVOTkVSX09VVFBVVCk6Ci0JJCQoY2FsbCBtc2csTUtESVIsLCQkQCkKLQkkKFEpbWtkaXIgLXAgJCRACi1lbmRpZgotCi0jIGVuc3VyZSB3ZSBzZXQgdXAgQlBGIG9iamVjdHMgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZSBmb3IgYSBnaXZlbgotIyBpbnB1dC9vdXRwdXQgZGlyZWN0b3J5IGNvbWJpbmF0aW9uCi1pZmVxICgkKCQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKSQoaWYgJDIsLSkkMi1icGZvYmpzKSwpCi0kKFRSVU5ORVJfQlBGX1BST0dTX0RJUikkKGlmICQyLC0pJDItYnBmb2JqcyA6PSB5Ci0kKFRSVU5ORVJfQlBGX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLmJwZi5vOgkJCQlcCi0JCSAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyUuYwkJCVwKLQkJICAgICAkKFRSVU5ORVJfQlBGX1BST0dTX0RJUikvKi5oCQkJXAotCQkgICAgICQkKElOQ0xVREVfRElSKS92bWxpbnV4LmgJCQkJXAotCQkgICAgICQoSEVBREVSU19GT1JfQlBGX09CSlMpCQkJCVwKLQkJICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpICQkKEJQRk9CSikKLQkkJChjYWxsICQoVFJVTk5FUl9CUEZfQlVJTERfUlVMRSksJCQmbHQ7LCQkQCwJCQlcCi0JCQkJCSAgJChUUlVOTkVSX0JQRl9DRkxBR1MpICAgICAgICAgXAotCQkJCQkgICQkKCQkJmx0Oy1DRkxBR1MpCQlcCi0JCQkJCSAgJCQoJCQmbHQ7LSQyLUNGTEFHUyksJChUUlVOTkVSX0JJTkFSWSkpCi0KLSQoVFJVTk5FUl9CUEZfU0tFTFMpOiAlLnNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVCkKLQkkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJCZsdDsgXTsgdGhlbgkJCVwKLQkJJCQoUk0pICQkQCAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCk7CQkJXAotCQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCQlleGl0IDA7CQkJCQkJCVwKLQlmaTspCQkJCQkJCQlcCi0JcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJCgmbHQ7Oi5vPS5saW5rZWQxLm8pICQkJmx0OyAmYW1wOyZhbXA7CQlcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJCgmbHQ7Oi5vPS5saW5rZWQyLm8pICQkKCZsdDs6Lm89LmxpbmtlZDEubykgJmFtcDsmYW1wOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJCgmbHQ7Oi5vPS5saW5rZWQzLm8pICQkKCZsdDs6Lm89LmxpbmtlZDIubykgJmFtcDsmYW1wOyBcCi0JZGlmZiAkJCgmbHQ7Oi5vPS5saW5rZWQyLm8pICQkKCZsdDs6Lm89LmxpbmtlZDMubykgJmFtcDsmYW1wOwkJXAotCSQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkJCgmbHQ7Oi5vPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKCZsdDs6LmJwZi5vPSkpICZndDsgJCRAICZhbXA7JmFtcDsgXAotCSQkKEJQRlRPT0wpIGdlbiBzdWJza2VsZXRvbiAkJCgmbHQ7Oi5vPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKCZsdDs6LmJwZi5vPSkpICZndDsgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFwKLQkJJCQoUk0pICQkQCAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCk7IFwKLQkJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQl9KSAmYW1wOyZhbXA7IFwKLQlybSAtZiAkJCgmbHQ7Oi5vPS5saW5rZWQxLm8pICQkKCZsdDs6Lm89LmxpbmtlZDIubykgJCQoJmx0Ozoubz0ubGlua2VkMy5vKQotCi0kKFRSVU5ORVJfQlBGX0xTS0VMUyk6ICUubHNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVCkKLQkkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJCZsdDsgXTsgdGhlbgkJCVwKLQkJJCQoUk0pICQkQDsJCQkJCQlcCi0JCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JCWV4aXQgMDsJCQkJCQkJXAotCWZpOykJCQkJCQkJCVwKLQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O0dFTi1TS0VMJiMzOTsgJiMzOTtbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKCZsdDs6Lm89LmxsaW5rZWQxLm8pICQkJmx0OyAmYW1wOyZhbXA7CQlcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJCgmbHQ7Oi5vPS5sbGlua2VkMi5vKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMS5vKSAmYW1wOyZhbXA7IFwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKCZsdDs6Lm89LmxsaW5rZWQzLm8pICQkKCZsdDs6Lm89LmxsaW5rZWQyLm8pICZhbXA7JmFtcDsgXAotCWRpZmYgJCQoJmx0Ozoubz0ubGxpbmtlZDIubykgJCQoJmx0Ozoubz0ubGxpbmtlZDMubykgJmFtcDsmYW1wOwkJXAotCSQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAtTCAkJCgmbHQ7Oi5vPS5sbGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJCgmbHQ7Oi5icGYubz1fbHNrZWwpKSAmZ3Q7ICQkQCAkKGlmICQoUEVSTUlTU0lWRSksfHwgeyBcCi0JCSQkKFJNKSAkJEA7IFwKLQkJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQl9KSAmYW1wOyZhbXA7IFwKLQlybSAtZiAkJCgmbHQ7Oi5vPS5sbGlua2VkMS5vKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMi5vKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMy5vKQotCi0kKFRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpCi0JJChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbICEgLWYgJCQmbHQ7IF07IHRoZW4JCQlcCi0JCSQkKFJNKSAkJEA7CQkJCQkJXAotCQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCQlleGl0IDA7CQkJCQkJCVwKLQlmaTspCQkJCQkJCQlcCi0JcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpIChzaWduZWQpXSAkJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJCgmbHQ7Oi5vPS5sbGlua2VkMS5vKSAkJCZsdDsgJmFtcDsmYW1wOwkJXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoJmx0Ozoubz0ubGxpbmtlZDIubykgJCQoJmx0Ozoubz0ubGxpbmtlZDEubykgJmFtcDsmYW1wOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJCgmbHQ7Oi5vPS5sbGlua2VkMy5vKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMi5vKSAmYW1wOyZhbXA7IFwKLQlkaWZmICQkKCZsdDs6Lm89LmxsaW5rZWQyLm8pICQkKCZsdDs6Lm89LmxsaW5rZWQzLm8pICZhbXA7JmFtcDsJCVwKLQkkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJChMU0tFTF9TSUdOKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJCgmbHQ7Oi5icGYubz1fbHNrZWwpKSAmZ3Q7ICQkQCAkKGlmICQoUEVSTUlTU0lWRSksfHwgeyBcCi0JCSQkKFJNKSAkJEA7IFwKLQkJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQl9KSAmYW1wOyZhbXA7IFwKLQlybSAtZiAkJCgmbHQ7Oi5vPS5sbGlua2VkMS5vKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMi5vKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMy5vKQotCi0kKExJTktFRF9CUEZfT0JKUyk6ICU6ICQoVFJVTk5FUl9PVVRQVVQpLyUKLQotIyAuU0VDT05ERVhQQU5TSU9OIGhlcmUgYWxsb3dzIHRvIGNvcnJlY3RseSBleHBhbmQgJS1kZXBzIHZhcmlhYmxlcyBhcyBwcmVyZXF1aXNpdGVzCi0uU0VDT05ERVhQQU5TSU9OOgotJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpOiAkKFRSVU5ORVJfT1VUUFVUKS8lOiAkJCQkKCUtZGVwcykgJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpCi0JJChRKSQoaWYgJChQRVJNSVNTSVZFKSxmb3IgZiBpbiAkJChhZGRwcmVmaXggJChUUlVOTkVSX09VVFBVVCkvLCQkKCQkKEBGKS1kZXBzKSk7IGRvIFwKLQkJaWYgWyAhIC1mICQkJCRmIF07IHRoZW4JCQkJCQlcCi0JCQkkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTsJCVwKLQkJCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JCQlleGl0IDA7CQkJCQkJCVwKLQkJZmk7CQkJCQkJCQlcCi0JZG9uZTspCQkJCQkJCQkJXAotCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7TElOSy1CUEYmIzM5OyAmIzM5O1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkKEA6LnNrZWwuaD0uYnBmLm8pKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoYWRkcHJlZml4ICQoVFJVTk5FUl9PVVRQVVQpLywkJCgkJChARiktZGVwcykpICZhbXA7JmFtcDsgXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSAmYW1wOyZhbXA7IFwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgJmFtcDsmYW1wOyBcCi0JZGlmZiAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pICZhbXA7JmFtcDsJXAotCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyAmIzM5O1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MiAmYW1wOyZhbXA7IFwKLQkkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKEA6LnNrZWwuaD0pKSAmZ3Q7ICQkQCAmYW1wOyZhbXA7IFwKLQkkJChCUEZUT09MKSBnZW4gc3Vic2tlbGV0b24gJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKEA6LnNrZWwuaD0pKSAmZ3Q7ICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSAkKGlmICQoUEVSTUlTU0lWRSksfHwgeyBcCi0JCSQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpOwkJCVwKLQkJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQl9KSAmYW1wOyZhbXA7CQkJCQkJCQkJXAotCXJtIC1mICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pCi0KLSMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdAotIyBmdWxsIHBhdGhzKSBhcmUgc3BlY2lmaWVkIGFzIHByZXJlcXVpc2l0ZXMgZm9yIGNvcnJlc3BvbmRpbmcgJS5vCi0jIGZpbGUuIHZwYXRoIGRpcmVjdGl2ZXMgYmVsb3cgaW5zdHJ1Y3QgbWFrZSB0byBzZWFyY2ggZm9yIHNrZWwgZmlsZXMKLSMgaW4gVFJVTk5FUl9PVVRQVVQsIGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50IGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeS4KLXZwYXRoICUuc2tlbC5oICQoVFJVTk5FUl9PVVRQVVQpCi12cGF0aCAlLmxza2VsLmggJChUUlVOTkVSX09VVFBVVCkKLXZwYXRoICUuc3Vic2tlbC5oICQoVFJVTk5FUl9PVVRQVVQpCi0KJiM0MztpZm5lcSAoJChTS0lQX0RPQ1MpLDEpCiYjNDM7YWxsOiBkb2NzCiBlbmRpZgogCi0jIGVuc3VyZSB3ZSBzZXQgdXAgdGVzdHMuaCBoZWFkZXIgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZQotaWZlcSAoJCgkKFRSVU5ORVJfVEVTVFNfRElSKS10ZXN0cy1oZHIpLCkKLSQoVFJVTk5FUl9URVNUU19ESVIpLXRlc3RzLWhkciA6PSB5Ci0kKFRSVU5ORVJfVEVTVFNfSERSKTogJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jCi0JJCQoY2FsbCBtc2csVEVTVC1IRFIsJChUUlVOTkVSX0JJTkFSWSksJCRAKQotCSQkKHNoZWxsIChlY2hvICYjMzk7LyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8mIzM5OzsJCQkJCVwKLQkJICBzZWQgLW4gLUUgJiMzOTtzL152b2lkIChzZXJpYWxfKT90ZXN0XyhbYS16QS1aMC05X10mIzQzOylcKCh2b2lkKT9cKS4qL0RFRklORV9URVNUKFwyKS9wJiMzOTsJXAotCQkJJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jIHwgc29ydCA7CVwKLQkJICkgJmd0OyAkJEApCi1lbmRpZgomIzQzO2RvY3M6CiYjNDM7CSQoUSlSU1QyTUFOX09QVFM9JiMzNDstLWV4aXQtc3RhdHVzPTEmIzM0OyAkKE1BS0UpICQoc3VibWFrZV9leHRyYXMpCVwKJiM0MzsJICAgICAgICAgICAgLWYgTWFrZWZpbGUuZG9jcwkJCQkJXAomIzQzOwkgICAgICAgICAgICBwcmVmaXg9IE9VVFBVVD0kKE9VVFBVVCkvIERFU1RESVI9JChPVVRQVVQpLyAkQAogCi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86ICQoUkVTT0xWRV9CVEZJRFMpICQoVFJVTk5FUl9PVVRQVVQpL2J0Zl9kYXRhLmJwZi5vCi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86IHByaXZhdGUgVEVTVF9ORUVEU19CVEZJRFMgPSAxCi0KLSMgY29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXMKLSMgTm90ZTogd2UgY2QgaW50byBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0IGlzIGZvdW5kCi0kKFRSVU5ORVJfVEVTVF9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0Lm86CQkJXAotCQkgICAgICAkKFRSVU5ORVJfVEVTVFNfRElSKS8lLmMJCQkJXAotCQkgICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kCi0JJCQoY2FsbCBtc2csVEVTVC1PQkosJChUUlVOTkVSX0JJTkFSWSksJCRAKQotCSQoUSkoY2QgJCQoQEQpICZhbXA7JmFtcDsgJCQoQ0MpIC1JLiAkJChDRkxBR1MpIC1NTUQgLU1UICQkQCAtYyAkKENVUkRJUikvJCQmbHQ7ICQkKExETElCUykgLW8gJCQoQEYpKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksfHwgXAotCQkoJChSTSkgJCRAOyBwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtVEVTVCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MikpKQotCSQkKGlmICQkKFRFU1RfTkVFRFNfQlRGSURTKSwJCQkJCQlcCi0JCSQoUSlpZiBbIC1mICQkQCBdOyB0aGVuCQkJCQkJXAotCQkkKGlmICQoZmlsdGVyIDEsJChWKSksdHJ1ZSxwcmludGYgJiMzOTsgICUtOHMlcyAlc1xuJiMzOTsgJiMzNDtCVEZJRFMmIzM0OyAmIzM0OyBbJChUUlVOTkVSX0JJTkFSWSldJiMzNDsgJiMzNDskJChub3RkaXIgJCRAKSYjMzQ7KTsgXAotCQkkKFJFU09MVkVfQlRGSURTKSAtLWJ0ZiAkKFRSVU5ORVJfT1VUUFVUKS9idGZfZGF0YS5icGYubyAkJEA7CVwKLQkJJChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJCRALkJURl9pZHMgJCRAOwkJXAotCQlmaSkKLQotJChUUlVOTkVSX1RFU1RfT0JKUzoubz0uZCk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kOgkJCVwKLQkJCSAgICAkKFRSVU5ORVJfVEVTVFNfRElSKS8lLmMJCQlcCi0JCQkgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpCQkJXAotCQkJICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKQkJXAotCQkJICAgICQoVFJVTk5FUl9CUEZfU0tFTFMpCQkJXAotCQkJICAgICQoVFJVTk5FUl9CUEZfTFNLRUxTKQkJCVwKLQkJCSAgICAkKFRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQpCQlcCi0JCQkgICAgJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpCi0KLWlmZXEgKCQoZmlsdGVyIGNsZWFuIGRvY3MtY2xlYW4gZW1pdF90ZXN0cywkKE1BS0VDTURHT0FMUykpLCkKLWluY2x1ZGUgJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKSkKLWVuZGlmCiYjNDM7ZG9jcy1jbGVhbjoKJiM0MzsJJChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcykJCQkJCVwKJiM0MzsJICAgICAgICAgICAgLWYgTWFrZWZpbGUuZG9jcwkJCQkJXAomIzQzOwkgICAgICAgICAgICBwcmVmaXg9IE9VVFBVVD0kKE9VVFBVVCkvIERFU1RESVI9JChPVVRQVVQpLyAkQAogCi0jIGFkZCBwZXIgZXh0cmEgb2JqIENGR0xBR1MgZGVmaW5pdGlvbnMKLSQoZm9yZWFjaCBOLCQocGF0c3Vic3QgJChUUlVOTkVSX09VVFBVVCkvJS5vLCUsJChUUlVOTkVSX0VYVFJBX09CSlMpKSwJXAotCSQoZXZhbCAkKFRSVU5ORVJfT1VUUFVUKS8kKE4pLm86IENGTEFHUyAmIzQzOz0gJCgkKE4pLmMtQ0ZMQUdTKSkpCi0KLSQoVFJVTk5FUl9FWFRSQV9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5vOgkJCQlcCi0JCSAgICAgICAlLmMJCQkJCQlcCi0JCSAgICAgICAkKFRSVU5ORVJfRVhUUkFfSERSUykJCQkJXAotCQkgICAgICAgJChWRVJJRllfU0lHX0hEUikJCQkJXAotCQkgICAgICAgJChUUlVOTkVSX1RFU1RTX0hEUikJCQkJXAotCQkgICAgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpCi0JJCQoY2FsbCBtc2csRVhULU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApCi0JJChRKSQkKENDKSAkJChDRkxBR1MpIC1jICQkJmx0OyAkJChMRExJQlMpIC1vICQkQAotCi0kKFRSVU5ORVJfTElCX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLm86JChUT09MU0RJUikvbGliLyUuYwotCSQkKGNhbGwgbXNnLExJQi1PQkosJChUUlVOTkVSX0JJTkFSWSksJCRAKQotCSQoUSkkJChDQykgJCQoQ0ZMQUdTKSAtYyAkJCZsdDsgJCQoTERMSUJTKSAtbyAkJEAKLQotIyBub24tZmxhdm9yZWQgaW4tc3JjdHJlZSBidWlsZHMgcmVjZWl2ZSBzcGVjaWFsIHRyZWF0bWVudCwgaW4gcGFydGljdWxhciwgd2UKLSMgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKQotJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzOiAkKFRSVU5ORVJfRVhUUkFfRklMRVMpIHwgJChUUlVOTkVSX09VVFBVVCkKLWlmbmVxICgkMjokKE9VVFBVVCksOiQoc2hlbGwgcHdkKSkKLQkkJChjYWxsIG1zZyxFWFQtQ09QWSwkKFRSVU5ORVJfQklOQVJZKSwkKFRSVU5ORVJfRVhUUkFfRklMRVMpKQotCSQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJCReICQoVFJVTk5FUl9PVVRQVVQpLwomIzQzOyMgdm1saW51eC5oIGlzIGZpcnN0IGR1bXBlZCB0byBhIHRlbXBvcmFyeSBmaWxlIGFuZCB0aGVuIGNvbXBhcmVkIHRvCiYjNDM7IyB0aGUgcHJldmlvdXMgdmVyc2lvbi4gVGhpcyBoZWxwcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZS1idWlsZHMgb2YKJiM0MzsjIEJQRiBvYmplY3RzLgomIzQzOyQoSU5DTFVERV9ESVIpL3ZtbGludXguaDogJChWTUxJTlVYX0JURikgJChCUEZUT09MKSB8ICQoSU5DTFVERV9ESVIpCiYjNDM7aWZlcSAoJChWTUxJTlVYX0gpLCkKJiM0MzsJJChjYWxsIG1zZyxHRU4sLCRAKQomIzQzOwkkKFEpJChCUEZUT09MKSBidGYgZHVtcCBmaWxlICQoVk1MSU5VWF9CVEYpIGZvcm1hdCBjICZndDsgJChJTkNMVURFX0RJUikvLnZtbGludXguaC50bXAKJiM0MzsJJChRKWNtcCAtcyAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcCAkQCB8fCBtdiAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcCAkQAomIzQzO2Vsc2UKJiM0MzsJJChjYWxsIG1zZyxDUCwsJEApCiYjNDM7CSQoUSljcCAmIzM0OyQoVk1MSU5VWF9IKSYjMzQ7ICRACiBlbmRpZgogCi0jIHNvbWUgWC50ZXN0Lm8gZmlsZXMgaGF2ZSBydW50aW1lIGRlcGVuZGVuY2llcyBvbiBZLmJwZi5vIGZpbGVzCi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6IHwgJChUUlVOTkVSX0JQRl9PQkpTKQotCi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6ICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTKSksJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKQlcCi0JCQkgICAgICQoVFJVTk5FUl9FWFRSQV9PQkpTKSAkJChCUEZPQkopCQlcCi0JCQkgICAgICQoVFJVTk5FUl9MSUJfT0JKUykJCQlcCi0JCQkgICAgICQoVFJVTk5FUl9CUEZUT09MKQkJCQlcCi0JCQkgICAgICQoT1VUUFVUKS92ZXJpc3RhdAkJCQlcCi0JCQkgICAgIHwgJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzCQkJXAotCQkJICAgICAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJChUUlVOTkVSX1RFU1RfT0JKUykpKQotCSQkKGNhbGwgbXNnLEJJTkFSWSwsJCRAKQotCSQoUSkkJChDQykgJCQoQ0ZMQUdTKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQoZmlsdGVyICUuYSAlLm8sJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpICQkKGZpbHRlci1vdXQgJChUUlVOTkVSX1RFU1RfT0JKUyksJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSkgJCQoTERMSUJTKSAkJChMTFZNX0xETElCUykgJCQoTERGTEFHUykgJCQoTExWTV9MREZMQUdTKSAtbyAkJEAKLQkkKFEpbG4gLXNmICQoaWYgJDIsLi4sLikvdG9vbHMvYnVpbGQvYnBmdG9vbC8kKFVTRV9CT09UU1RSQVApYnBmdG9vbCBcCi0JCSAgICQoT1VUUFVUKS8kKGlmICQyLCQyLylicGZ0b29sCi0KLWVuZGVmCi0KLVZFUklGWV9TSUdfU0VUVVAgOj0gJChDVVJESVIpL3ZlcmlmeV9zaWdfc2V0dXAuc2gKLVZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0LmgKLVZFUklGSUNBVElPTl9DRVJUICAgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LmRlcgotUFJJVkFURV9LRVkgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LnBlbQotCi0kKFZFUklGSUNBVElPTl9DRVJUKSAkKFBSSVZBVEVfS0VZKTogJChWRVJJRllfU0lHX1NFVFVQKQomIzQzOyMgT25lIGdlbmtleSBydW4gcHJvZHVjZXMgYm90aCBmaWxlcy4gQSBwbGFpbiB0d28tdGFyZ2V0IHJ1bGUgaXMgbm90CiYjNDM7IyBncm91cGVkIC0gdW5kZXIgLWogbWFrZSB3b3VsZCBydW4gZ2Vua2V5IHR3aWNlIGNvbmN1cnJlbnRseSBhbmQgdGhlCiYjNDM7IyBvcGVuc3NsIGludm9jYXRpb25zIHJhY2U7IHRoZSBwYXR0ZXJuIGZvcm0gaXMgaW1wbGljaXRseSBncm91cGVkIGV2ZW4KJiM0MzsjIHdpdGggbWFrZSAmbHQ7IDQuMyAoc2FtZSB3b3JrYXJvdW5kIGFzIHRoZSB0ZXN0X2ttb2RzIHJ1bGUpLgomIzQzOyQoQlVJTERfRElSKS8lLnBlbSAkKEJVSUxEX0RJUikvJS5kZXI6ICQoVkVSSUZZX1NJR19TRVRVUCkKIAkkKFEpbWtkaXIgLXAgJChCVUlMRF9ESVIpCiAJJChRKSQoVkVSSUZZX1NJR19TRVRVUCkgZ2Vua2V5ICQoQlVJTERfRElSKQogCkBAIC04MzUsMTE2ICYjNDM7MzcwLDE4MyBAQCBMSUJBUkVOQV9CUEZfREVQUyA6PSAkKHdpbGRjYXJkIGxpYmFyZW5hL01ha2VmaWxlCQlcCiAJCQkJIGxpYmFyZW5hL3NlbGZ0ZXN0cy8qCQlcCiAJCQkJIGxpYmFyZW5hLyouYnBmLm8pCiAKLUxJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oCi0KICQoTElCQVJFTkFfU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CUEZfREVQUykKIAkmIzQzOyQoTUFLRSkgLUMgbGliYXJlbmEgbGliYXJlbmEuc2tlbC5oICQoTElCQVJFTkFfTUFLRV9BUkdTKQogCi1pZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKQotTElCQVJFTkFfQVNBTl9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hX2FzYW4uc2tlbC5oCi1DRkxBR1MgJiM0Mzs9IC1ESEFTX0JQRl9BUkVOQV9BU0FOCiYjNDM7bGliYXJlbmE6ICQoTElCQVJFTkFfU0tFTCkKIAomIzQzO2lmbmVxICgkKENMQU5HX0hBU19BUkVOQV9BU0FOKSwpCiAkKExJQkFSRU5BX0FTQU5fU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CUEZfREVQUykKIAkmIzQzOyQoTUFLRSkgLUMgbGliYXJlbmEgbGliYXJlbmFfYXNhbi5za2VsLmggJChMSUJBUkVOQV9NQUtFX0FSR1MpCiYjNDM7CiYjNDM7bGliYXJlbmFfYXNhbjogJChMSUJBUkVOQV9BU0FOX1NLRUwpCiBlbmRpZgogCi0jIERlZmluZSB0ZXN0X3Byb2dzIHRlc3QgcnVubmVyLgotVFJVTk5FUl9URVNUU19ESVIgOj0gcHJvZ190ZXN0cwotVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzCi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9wcm9ncy5jCQlcCi0JCQkgY2dyb3VwX2hlbHBlcnMuYwlcCi0JCQkgdHJhY2VfaGVscGVycy5jCVwKLQkJCSBuZXR3b3JrX2hlbHBlcnMuYwlcCi0JCQkgdGVzdGluZ19oZWxwZXJzLmMJXAotCQkJIGJ0Zl9oZWxwZXJzLmMJCVwKLQkJCSBjYXBfaGVscGVycy5jCQlcCi0JCQkgdW5wcml2X2hlbHBlcnMuYyAJXAotCQkJIHN5c2N0bF9oZWxwZXJzLmMJXAotCQkJIG5ldGxpbmtfaGVscGVycy5jCVwKLQkJCSBqaXRfZGlzYXNtX2hlbHBlcnMuYwlcCi0JCQkgaW9faGVscGVycy5jCQlcCi0JCQkgdGVzdF9sb2FkZXIuYwkJXAotCQkJIHhzay5jCQkJXAotCQkJIGRpc2FzbS5jCQlcCi0JCQkgZGlzYXNtX2hlbHBlcnMuYwlcCi0JCQkganNvbl93cml0ZXIuYyAJCVwKLQkJCSAkKFZFUklGWV9TSUdfSERSKQkJXAotCQkJIGZsb3dfZGlzc2VjdG9yX2xvYWQuaAlcCi0JCQkgaXBfY2hlY2tfZGVmcmFnX2ZyYWdzLmgJXAotCQkJIGJwZnRvb2xfaGVscGVycy5jCVwKLQkJCSB1c2R0XzEuYyB1c2R0XzIuYwlcCi0JCQkgJChMSUJBUkVOQV9TS0VMKQlcCi0JCQkgJChMSUJBUkVOQV9BU0FOX1NLRUwpCi1UUlVOTkVSX0xJQl9TT1VSQ0VTIDo9IGZpbmRfYml0LmMKLVRSVU5ORVJfRVhUUkFfRklMRVMgOj0gJChPVVRQVVQpL3VyYW5kb21fcmVhZAkJCQlcCi0JCSAgICAgICAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvCQkJXAotCQkgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eQkJCQlcCi0JCSAgICAgICAkKE9VVFBVVCkvc2lnbi1maWxlCQkJCVwKLQkJICAgICAgICQoT1VUUFVUKS91cHJvYmVfbXVsdGkJCQkJXAotCQkgICAgICAgJChURVNUX0tNT0RfVEFSR0VUUykJCQkJXAotCQkgICAgICAgaW1hX3NldHVwLnNoIAkJCQkJXAotCQkgICAgICAgJChWRVJJRllfU0lHX1NFVFVQKQkJCQlcCi0JCSAgICAgICAkKHdpbGRjYXJkIHByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV8qLmMpCQlcCi0JCSAgICAgICAkKHdpbGRjYXJkIHByb2dzLyouYnBmLm8pCi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX0JQRl9CVUlMRF9SVUxFCi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykgLURFTkFCTEVfQVRPTUlDU19URVNUUwotJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncykpCi0KLSMgRGVmaW5lIHRlc3RfcHJvZ3Mtbm9fYWx1MzIgdGVzdCBydW5uZXIuCi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX05PQUxVMzJfQlBGX0JVSUxEX1JVTEUKLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKQotJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxub19hbHUzMikpCi0KLSMgRGVmaW5lIHRlc3RfcHJvZ3MtY3B1djQgdGVzdCBydW5uZXIuCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsjIEdlbmVyYXRlZCB0ZXN0IGxpc3QgaGVhZGVycwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7CiYjNDM7ZGVmaW5lIGdlbl90ZXN0c19oZHIKJiM0MzsJJChjYWxsIG1zZyxURVNULUhEUiwsJEApCiYjNDM7CSQoUSkoZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7CQlcCiYjNDM7CSAgICAgc2VkIC1uIC1FICYjMzk7cy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dJiM0MzspXCgodm9pZCk/XCkuKi9ERUZJTkVfVEVTVChcMikvcCYjMzk7IFwKJiM0MzsJCSQoQEQpLyouYyB8IHNvcnQpICZndDsgJEAKJiM0MztlbmRlZgomIzQzOwomIzQzO3Byb2dfdGVzdHMvdGVzdHMuaDogJCh3aWxkY2FyZCBwcm9nX3Rlc3RzLyouYykKJiM0MzsJJChnZW5fdGVzdHNfaGRyKQomIzQzOwomIzQzO21hcF90ZXN0cy90ZXN0cy5oOiAkKHdpbGRjYXJkIG1hcF90ZXN0cy8qLmMpCiYjNDM7CSQoZ2VuX3Rlc3RzX2hkcikKJiM0MzsKJiM0Mzt2ZXJpZmllci90ZXN0cy5oOiB2ZXJpZmllci8qLmMKJiM0MzsJJChRKSggY2QgdmVyaWZpZXIvOyBcCiYjNDM7CSAgICAgIGVjaG8gJiMzOTsvKiBHZW5lcmF0ZWQgaGVhZGVyLCBkbyBub3QgZWRpdCAqLyYjMzk7OyBcCiYjNDM7CSAgICAgIGVjaG8gJiMzOTsjaWZkZWYgRklMTF9BUlJBWSYjMzk7OyBcCiYjNDM7CSAgICAgIGxzICouYyAyJmd0OyAvZGV2L251bGwgfCBzZWQgLWUgJiMzOTtzQFwoLipcKUAjaW5jbHVkZSBcJiMzNDtcMVwmIzM0O0AmIzM5OzsgXAomIzQzOwkgICAgICBlY2hvICYjMzk7I2VuZGlmJiMzOTsgXAomIzQzOwkgICAgKSAmZ3Q7IHZlcmlmaWVyL3Rlc3RzLmgKJiM0MzsKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgU2hhcmVkIGhlbHBlciBvYmplY3RzLCB1c2VkIGJ5IHRoZSBzdGFuZGFsb25lIGJpbmFyaWVzIGJlbG93IGFuZCAoYXMKJiM0MzsjIHByZWJ1aWx0IGlucHV0cykgYnkgdGhlIHVuZmxhdm9yZWQgdGVzdF9wcm9ncyBydW5uZXIuCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsKJiM0MzsjIFNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgdXNlIExMVk0gbGlicmFyaWVzCiYjNDM7JChPVVRQVVQpL2ppdF9kaXNhc21faGVscGVycy5vOiBDRkxBR1MgJiM0Mzs9ICQoTExWTV9DRkxBR1MpCiYjNDM7CiYjNDM7SEVMUEVSX09CSlMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyx0ZXN0aW5nX2hlbHBlcnMubyBjZ3JvdXBfaGVscGVycy5vIFwKJiM0MzsJICAgICAgIHRyYWNlX2hlbHBlcnMubyBuZXR3b3JrX2hlbHBlcnMubyBqc29uX3dyaXRlci5vCQlcCiYjNDM7CSAgICAgICBjYXBfaGVscGVycy5vIHVucHJpdl9oZWxwZXJzLm8gdXNkdF8xLm8gdXNkdF8yLm8geHNrLm8pCiYjNDM7CiYjNDM7IyAkKEJQRlRPT0wpIGlzIGEgcHJlcmVxdWlzaXRlIGJlY2F1c2UgaXRzIHN1Yi1tYWtlIGlzIHdoYXQgaW5zdGFsbHMKJiM0MzsjIGxpYmJwZiYjMzk7cyBpbnRlcm5hbCBoZWFkZXJzIChicGYvaGFzaG1hcC5oLCBicGYvbGliYnBmX2ludGVybmFsLmgpIGludG8KJiM0MzsjICQoSU5DTFVERV9ESVIpOyB3aXRob3V0IGl0LCBoZWxwZXJzIGluY2x1ZGluZyB0aG9zZSBoZWFkZXJzIHJhY2UgdGhlCiYjNDM7IyBpbnN0YWxsIGFuZCBjYW4gc2lsZW50bHkgcGljayB1cCB0aGUgc291cmNlLXRyZWUgY29waWVzIGluc3RlYWQuCiYjNDM7JChIRUxQRVJfT0JKUyk6IGZsb3dfZGlzc2VjdG9yX2xvYWQuaCBpcF9jaGVja19kZWZyYWdfZnJhZ3MuaAkJXAomIzQzOwkJJChWRVJJRllfU0lHX0hEUikgcHJvZ190ZXN0cy90ZXN0cy5oICQoQlBGT0JKKSAkKEJQRlRPT0wpCiYjNDM7CiYjNDM7JChPVVRQVVQpL3Rlc3Rfc29ja21hcDogJChPVVRQVVQpL2Nncm91cF9oZWxwZXJzLm8gJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vCiYjNDM7JChPVVRQVVQpL3Rlc3RfdGNwbm90aWZ5X3VzZXI6ICQoT1VUUFVUKS9jZ3JvdXBfaGVscGVycy5vCQlcCiYjNDM7CQkJICAgICAgICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMubwkJXAomIzQzOwkJCSAgICAgICAkKE9VVFBVVCkvdHJhY2VfaGVscGVycy5vCiYjNDM7JChPVVRQVVQpL3Rlc3RfdGFnOiAkKE9VVFBVVCkvdGVzdGluZ19oZWxwZXJzLm8KJiM0MzskKE9VVFBVVCkvdGVzdF9saXJjX21vZGUyX3VzZXI6ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMubwomIzQzOyQoT1VUUFVUKS9mbG93X2Rpc3NlY3Rvcl9sb2FkOiBmbG93X2Rpc3NlY3Rvcl9sb2FkLmggJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vCiYjNDM7CiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsjIFRlc3QgcnVubmVyIGluc3RhbmNlcywgb25lIHN1Yi1tYWtlIGVhY2ggKHNlZSBNYWtlZmlsZS5ydW5uZXIpLgomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7CiYjNDM7IyBUaGUgTExWTSBmZWF0dXJlLXByb2JlIHJlc3VsdHMgYXJlIGV4cG9ydGVkIHRvIHRoZSBydW5uZXIgc3ViLW1ha2VzLgomIzQzOyMgQ0MgaXMgcGFzc2VkIGV4cGxpY2l0bHkgaW5zdGVhZDogZXhwb3J0aW5nIGl0IHdvdWxkIGFsc28gbGVhayBsaWIubWsmIzM5O3MKJiM0MzsjIENDIGludG8gdGhlIGxpYmJwZi9icGZ0b29sL3Jlc29sdmVfYnRmaWRzIHN1Yi1idWlsZHMsIHdoaWNoIGNvbXB1dGUKJiM0MzsjIHRoZWlyIG93bi4KJiM0MztleHBvcnQgTExWTV9DRkxBR1MgTExWTV9MRExJQlMgTExWTV9MREZMQUdTCiYjNDM7CiYjNDM7UlVOTkVSX01BS0UgOj0gJChNQUtFKSAtZiBNYWtlZmlsZS5ydW5uZXIgT1VUUFVUPSQoT1VUUFVUKSBDQz0mIzM5OyQoQ0MpJiMzOTsKJiM0MzsKJiM0MzsjIEV2ZXJ5dGhpbmcgYSBydW5uZXIgaW5zdGFuY2UgcmVmZXJlbmNlcyBidXQgZG9lcyBub3Qga25vdyBob3cgdG8gYnVpbGQuCiYjNDM7UlVOTkVSX1BSRVJFUVMgOj0gJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoQlBGT0JKKSAkKEJQRlRPT0wpCQlcCiYjNDM7CQkgICQoVFJVTk5FUl9CUEZUT09MKSAkKFJFU09MVkVfQlRGSURTKQkJCVwKJiM0MzsJCSAgJChPVVRQVVQpL3ZlcmlzdGF0CQkJCQlcCiYjNDM7CQkgICQoVkVSSUZZX1NJR19IRFIpICQoUFJJVkFURV9LRVkpICQoVkVSSUZJQ0FUSU9OX0NFUlQpCVwKJiM0MzsJCSAgJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTCkJCVwKJiM0MzsJCSAgcHJvZ190ZXN0cy90ZXN0cy5oCQkJCQlcCiYjNDM7CQkgICQoSEVMUEVSX09CSlMpCQkJCQlcCiYjNDM7CQkgICQoT1VUUFVUKS91cmFuZG9tX3JlYWQgJChPVVRQVVQpL2xpYnVyYW5kb21fcmVhZC5zbwlcCiYjNDM7CQkgICQoT1VUUFVUKS94ZHBfc3lucHJveHkgJChPVVRQVVQpL3NpZ24tZmlsZQkJXAomIzQzOwkJICAkKE9VVFBVVCkvdXByb2JlX211bHRpICQoVEVTVF9LTU9EX1RBUkdFVFMpCiYjNDM7CiYjNDM7Rk9SQ0U6CiYjNDM7CiYjNDM7IyBUaGUgZGVmYXVsdCBmbGF2b3ImIzM5O3Mgc2tlbGV0b25zIGFyZSBhbHNvIGlucHV0cyBvZiBiZW5jaCwgdGVzdF9tYXBzLAomIzQzOyMgeHNreGNlaXZlciwgeGRwXyogYW5kIHRlc3RfY3BwOyAmIzM0O2RlZmF1bHQtc2tlbHMmIzM0OyBidWlsZHMganVzdCB0aG9zZQomIzQzOyMgd2l0aG91dCB0aGUgdGVzdF9wcm9ncyB0ZXN0IG9iamVjdHMgYW5kIGJpbmFyeS4KJiM0MzsuUEhPTlk6IGRlZmF1bHQtc2tlbHMKJiM0MztkZWZhdWx0LXNrZWxzOiAkKFJVTk5FUl9QUkVSRVFTKQomIzQzOwkmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9IFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFwKJiM0MzsJCUJQRl9CVUlMRD1jbGFuZyBCUEZfTUNQVT12MyBCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTIHNrZWxzCiYjNDM7CiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3M6ICQoUlVOTkVSX1BSRVJFUVMpIGRlZmF1bHQtc2tlbHMgRk9SQ0UKJiM0MzsJJiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPSBURVNUU19ESVI9cHJvZ190ZXN0cyBcCiYjNDM7CQlCUEZfQlVJTEQ9Y2xhbmcgQlBGX01DUFU9djMgQlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUUwomIzQzOwomIzQzOyQoT1VUUFVUKS90ZXN0X3Byb2dzLW5vX2FsdTMyOiAkKFJVTk5FUl9QUkVSRVFTKSBGT1JDRQomIzQzOwkmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9bm9fYWx1MzIgVEVTVFNfRElSPXByb2dfdGVzdHMgXAomIzQzOwkJQlBGX0JVSUxEPWNsYW5nIEJQRl9NQ1BVPXYyCiYjNDM7CiBpZm5lcSAoJChDTEFOR19DUFVWNCksKQotVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19DUFVWNF9CUEZfQlVJTERfUlVMRQotVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFMKLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MsY3B1djQpKQomIzQzOyQoT1VUUFVUKS90ZXN0X3Byb2dzLWNwdXY0OiAkKFJVTk5FUl9QUkVSRVFTKSBGT1JDRQomIzQzOwkmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9Y3B1djQgVEVTVFNfRElSPXByb2dfdGVzdHMgXAomIzQzOwkJQlBGX0JVSUxEPWNsYW5nIEJQRl9NQ1BVPXY0IEJQRl9ERUZJTkVTPS1ERU5BQkxFX0FUT01JQ1NfVEVTVFMKIGVuZGlmCiAKLSMgRGVmaW5lIHRlc3RfcHJvZ3MgQlBGLUdDQy1mbGF2b3JlZCB0ZXN0IHJ1bm5lci4KIGlmbmVxICgkKEJQRl9HQ0MpLCkKLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gR0NDX0JQRl9CVUlMRF9SVUxFCi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcyxnY2MsKQotJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxicGZfZ2NjKSkKLWVuZGlmCi0KLSMgRGVmaW5lIHRlc3RfbWFwcyB0ZXN0IHJ1bm5lci4KLVRSVU5ORVJfVEVTVFNfRElSIDo9IG1hcF90ZXN0cwotVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzCi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9tYXBzLmMKLVRSVU5ORVJfTElCX1NPVVJDRVMgOj0KLVRSVU5ORVJfRVhUUkFfRklMRVMgOj0KLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gJCQoZXJyb3Igbm8gQlBGIG9iamVjdHMgc2hvdWxkIGJlIGJ1aWx0KQotVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9Ci0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X21hcHMpKQotCi0jIERlZmluZSB0ZXN0X3ZlcmlmaWVyIHRlc3QgcnVubmVyLgotIyBJdCBpcyBtdWNoIHNpbXBsZXIgdGhhbiB0ZXN0X21hcHMvdGVzdF9wcm9ncyBhbmQgc3VmZmljaWVudGx5IGRpZmZlcmVudCBmcm9tCi0jIHRoZW0gKGUuZy4sIHRlc3QuaCBpcyB1c2luZyBjb21wbGV0ZWx5IHBhdHRlcm4pLCB0aGF0IGl0JiMzOTtzIHdvcnRoIGp1c3QKLSMgZXhwbGljaXRseSBkZWZpbmluZyBhbGwgdGhlIHJ1bGVzIGV4cGxpY2l0bHkuCi12ZXJpZmllci90ZXN0cy5oOiB2ZXJpZmllci8qLmMKLQkkKHNoZWxsICggY2QgdmVyaWZpZXIvOyBcCi0JCSAgZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7IFwKLQkJICBlY2hvICYjMzk7I2lmZGVmIEZJTExfQVJSQVkmIzM5OzsgXAotCQkgIGxzICouYyAyJmd0OyAvZGV2L251bGwgfCBzZWQgLWUgJiMzOTtzQFwoLipcKUAjaW5jbHVkZSBcJiMzNDtcMVwmIzM0O0AmIzM5OzsgXAotCQkgIGVjaG8gJiMzOTsjZW5kaWYmIzM5OyBcCi0JCSkgJmd0OyB2ZXJpZmllci90ZXN0cy5oKQotJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6IHRlc3RfdmVyaWZpZXIuYyB2ZXJpZmllci90ZXN0cy5oICQoQlBGT0JKKSB8ICQoT1VUUFVUKQomIzQzOyQoT1VUUFVUKS90ZXN0X3Byb2dzLWJwZl9nY2M6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFCiYjNDM7CSYjNDM7JChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1icGZfZ2NjIFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFwKJiM0MzsJCUJQRl9CVUlMRD1nY2MKJiM0MztlbmRpZgomIzQzOwomIzQzOyMgdGVzdF9tYXBzIGNvbXBpbGVzIG1hcF90ZXN0cy8qLmMgYWdhaW5zdCB0aGUgZGVmYXVsdCBmbGF2b3ImIzM5O3Mgc2tlbGV0b25zCiYjNDM7JChPVVRQVVQpL3Rlc3RfbWFwczogJChSVU5ORVJfUFJFUkVRUykgbWFwX3Rlc3RzL3Rlc3RzLmggZGVmYXVsdC1za2VscyBGT1JDRQomIzQzOwkmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9tYXBzIEZMQVZPUj0gVEVTVFNfRElSPW1hcF90ZXN0cyBcCiYjNDM7CQlCUEZfQlVJTEQ9bm9uZQomIzQzOwomIzQzOyMgRGVmYXVsdC1mbGF2b3IgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9ucyBjb25zdW1lZCBieSB0YXJnZXRzIGluIHRoaXMKJiM0MzsjIE1ha2VmaWxlIChhbmQgYnkgbGliLm1rJiMzOTtzIGluc3RhbGwgcnVsZSkgYXJlIHByb2R1Y2VkIGJ5IHRoZSBydW5uZXIKJiM0MzsjIHN1Yi1tYWtlIGFib3ZlOyB0aGUgZW1wdHkgcmVjaXBlIHBsdXMgdGhlIG9yZGVyLW9ubHkgcHJlcmVxdWlzaXRlCiYjNDM7IyBtYWtlcyB0aGVtIGF2YWlsYWJsZSBoZXJlIHdpdGhvdXQgZHVwbGljYXRpbmcgdGhlIHJ1bm5lciYjMzk7cyBydWxlcy4KJiM0MztERUZBVUxUX0JQRl9PQkpTIDo9ICQocGF0c3Vic3QgcHJvZ3MvJS5jLCQoT1VUUFVUKS8lLmJwZi5vLCQod2lsZGNhcmQgcHJvZ3MvKi5jKSkKJiM0MztURVNUX0dFTl9GSUxFUyAmIzQzOz0gJChERUZBVUxUX0JQRl9PQkpTKQomIzQzOwomIzQzO0JFTkNIX1NLRUxTIDo9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sCQkJCQlcCiYjNDM7CSAgICAgICB0ZXN0X292ZXJoZWFkLnNrZWwuaCB0cmlnZ2VyX2JlbmNoLnNrZWwuaAkJXAomIzQzOwkgICAgICAgcmluZ2J1Zl9iZW5jaC5za2VsLmggcGVyZmJ1Zl9iZW5jaC5za2VsLmgJCVwKJiM0MzsJICAgICAgIGJsb29tX2ZpbHRlcl9iZW5jaC5za2VsLmggYnBmX2xvb3BfYmVuY2guc2tlbC5oCQlcCiYjNDM7CSAgICAgICBzdHJuY21wX2JlbmNoLnNrZWwuaCBicGZfaGFzaG1hcF9mdWxsX3VwZGF0ZV9iZW5jaC5za2VsLmhcCiYjNDM7CSAgICAgICBsb2NhbF9zdG9yYWdlX2JlbmNoLnNrZWwuaAkJCQlcCiYjNDM7CSAgICAgICBsb2NhbF9zdG9yYWdlX3JjdV90YXNrc190cmFjZV9iZW5jaC5za2VsLmgJCVwKJiM0MzsJICAgICAgIGJlbmNoX2xvY2FsX3N0b3JhZ2VfY3JlYXRlLnNrZWwuaAkJCVwKJiM0MzsJICAgICAgIGJwZl9oYXNobWFwX2xvb2t1cC5za2VsLmggaHRhYl9tZW1fYmVuY2guc2tlbC5oCQlcCiYjNDM7CSAgICAgICBjcnlwdG9fYmVuY2guc2tlbC5oIGJlbmNoX3NvY2ttYXBfcHJvZy5za2VsLmgJCVwKJiM0MzsJICAgICAgIGxwbV90cmllX2JlbmNoLnNrZWwuaCBscG1fdHJpZV9tYXAuc2tlbC5oCQlcCiYjNDM7CSAgICAgICBicGZfbm9wX2JlbmNoLnNrZWwuaCB4ZHBfbGJfYmVuY2guc2tlbC5oKQomIzQzO1RPUF9TS0VMUyA6PSAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLHhza194ZHBfcHJvZ3Muc2tlbC5oCQlcCiYjNDM7CSAgICAgeGRwX2h3X21ldGFkYXRhLnNrZWwuaCB4ZHBfZmVhdHVyZXMuc2tlbC5oCQkJXAomIzQzOwkgICAgIHRlc3RfY29yZV9leHRlcm4uc2tlbC5oKSAkKEJFTkNIX1NLRUxTKQomIzQzOwomIzQzOyMgRW1wdHktcmVjaXBlIGRlbGVnYXRpb246ICYjMzQ7ZGVmYXVsdC1za2VscyYjMzQ7IChyZSlidWlsZHMgdGhlIGZpbGUgdmlhIHRoZQomIzQzOyMgcnVubmVyIHN1Yi1tYWtlLCBhZnRlciB3aGljaCBtYWtlIHJlLXN0YXRzIHRoZSB0YXJnZXQsIHNvIGRlcGVuZGVudHMKJiM0MzsjIHNlZSBmcmVzaCB0aW1lc3RhbXBzIHdpdGhpbiB0aGUgc2FtZSBpbnZvY2F0aW9uLiBEZXBlbmRlbnRzIHN0aWxsCiYjNDM7IyByZWJ1aWxkIG9uIG10aW1lIG9ubHkgLSB0aGUgcGhvbnkgcHJlcmVxdWlzaXRlIGRvZXMgbm90IGNhc2NhZGUuCiYjNDM7JChERUZBVUxUX0JQRl9PQkpTKSAkKFRPUF9TS0VMUyk6IGRlZmF1bHQtc2tlbHMgOwomIzQzOwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7IyBTdGFuZGFsb25lIHRlc3QgYmluYXJpZXMKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzOyMgdGVzdF92ZXJpZmllciBpcyBtdWNoIHNpbXBsZXIgdGhhbiB0ZXN0X21hcHMvdGVzdF9wcm9ncyBhbmQKJiM0MzsjIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgZnJvbSB0aGVtIChlLmcuLCBpdHMgdGVzdHMuaCB1c2VzIGEgY29tcGxldGVseQomIzQzOyMgZGlmZmVyZW50IHBhdHRlcm4pLCB0aGF0IGl0JiMzOTtzIHdvcnRoIGp1c3QgZGVmaW5pbmcgaXRzIHJ1bGVzIGV4cGxpY2l0bHkuCiYjNDM7JChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6IHRlc3RfdmVyaWZpZXIuYyB2ZXJpZmllci90ZXN0cy5oICQoQlBGT0JKKQlcCiYjNDM7CQkJICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMubwkJCVwKJiM0MzsJCQkgJChPVVRQVVQpL2NhcF9oZWxwZXJzLm8JCQlcCiYjNDM7CQkJICQoT1VUUFVUKS91bnByaXZfaGVscGVycy5vCiAJJChjYWxsIG1zZyxCSU5BUlksLCRAKQogCSQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQAogCiAjIEluY2x1ZGUgZmluZF9iaXQuYyB0byBjb21waWxlIHhza3hjZWl2ZXIuCiBFWFRSQV9TUkMgOj0gJChUT09MU0RJUikvbGliL2ZpbmRfYml0LmMgcHJvZ190ZXN0cy90ZXN0X3hzay5jIHByb2dfdGVzdHMvdGVzdF94c2suaAotJChPVVRQVVQpL3hza3hjZWl2ZXI6ICQoRVhUUkFfU1JDKSB4c2t4Y2VpdmVyLmMgeHNreGNlaXZlci5oICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hza194ZHBfcHJvZ3Muc2tlbC5oICQoQlBGT0JKKSB8ICQoT1VUUFVUKQomIzQzOyQoT1VUUFVUKS94c2t4Y2VpdmVyOiAkKEVYVFJBX1NSQykgeHNreGNlaXZlci5jIHhza3hjZWl2ZXIuaCAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hzay5vICQoT1VUUFVUKS94c2tfeGRwX3Byb2dzLnNrZWwuaCAkKEJQRk9CSikKIAkkKGNhbGwgbXNnLEJJTkFSWSwsJEApCiAJJChRKSQoQ0MpICQoQ0ZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuYywkXikgJChMRExJQlMpIC1vICRACiAKLSQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGE6IHhkcF9od19tZXRhZGF0YS5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YS5za2VsLmggfCAkKE9VVFBVVCkKJiM0MzskKE9VVFBVVCkveGRwX2h3X21ldGFkYXRhOiB4ZHBfaHdfbWV0YWRhdGEuYyAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hzay5vICQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGEuc2tlbC5oCiAJJChjYWxsIG1zZyxCSU5BUlksLCRAKQogCSQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQAogCi0kKE9VVFBVVCkveGRwX2ZlYXR1cmVzOiB4ZHBfZmVhdHVyZXMuYyAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hkcF9mZWF0dXJlcy5za2VsLmggfCAkKE9VVFBVVCkKJiM0MzskKE9VVFBVVCkveGRwX2ZlYXR1cmVzOiB4ZHBfZmVhdHVyZXMuYyAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hkcF9mZWF0dXJlcy5za2VsLmgKIAkkKGNhbGwgbXNnLEJJTkFSWSwsJEApCiAJJChRKSQoQ0MpICQoQ0ZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuYywkXikgJChMRExJQlMpIC1vICRACiAKQEAgLTk1NiwxMSAmIzQzOzU1OCwxOCBAQCAkKE9VVFBVVCkvdGVzdF9jcHA6IHRlc3RfY3BwLmNwcCAkKE9VVFBVVCkvdGVzdF9jb3JlX2V4dGVybi5za2VsLmggJChCUEZPQkopCiAJJChjYWxsIG1zZyxDWFgsLCRAKQogCSQoUSkkKENYWCkgJChDWFhGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmNwcCwkXikgJChMRExJQlMpIC1vICRACiAKLSMgQmVuY2htYXJrIHJ1bm5lcgotJChPVVRQVVQpL2JlbmNoXyUubzogYmVuY2hzL2JlbmNoXyUuYyBiZW5jaC5oICQoQlBGT0JKKQomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7IyBCZW5jaG1hcmsgcnVubmVyLiBUaGUgYmVuY2htYXJrIGxpc3QgaXMgZGVmaW5lZCBieSB0aGUgZmlsZXMgaW4KJiM0MzsjIGJlbmNocy86IGV2ZXJ5IGJlbmNocy9iZW5jaF8qLmMgaXMgY29tcGlsZWQgYW5kIGxpbmtlZCBpbi4KJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzO0JFTkNIX09CSlMgOj0gJChzb3J0ICQocGF0c3Vic3QgYmVuY2hzLyUuYywkKE9VVFBVVCkvJS5vLCQod2lsZGNhcmQgYmVuY2hzL2JlbmNoXyouYykpKQomIzQzOwomIzQzOyQoT1VUUFVUKS9iZW5jaF8lLm86IGJlbmNocy9iZW5jaF8lLmMgYmVuY2guaCAkKEJQRk9CSikgfCBkZWZhdWx0LXNrZWxzCiAJJChjYWxsIG1zZyxDQywsJEApCi0JJChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFwKLQkJKCQoUk0pICRAOyBwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtQkVOQ0gmIzM5OyAmIzM5OyQobm90ZGlyICRAKSYjMzk7IDEmZ3Q7JmFtcDsyKSkKJiM0MzsJJChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAtbyAkQCAkKGNhbGwgc2tpcF9vbl9mYWlsLEJFTkNIKQomIzQzOwomIzQzOyMgYmVuY2htYXJrLXNwZWNpZmljIGdlbmVyYXRlZC1za2VsZXRvbiBkZXBlbmRlbmNpZXMKICQoT1VUUFVUKS9iZW5jaF9yZW5hbWUubzogJChPVVRQVVQpL3Rlc3Rfb3ZlcmhlYWQuc2tlbC5oCiAkKE9VVFBVVCkvYmVuY2hfdHJpZ2dlci5vOiAkKE9VVFBVVCkvdHJpZ2dlcl9iZW5jaC5za2VsLmgKICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vOiAkKE9VVFBVVCkvcmluZ2J1Zl9iZW5jaC5za2VsLmggXApAQCAtOTgwLDM3ICYjNDM7NTg5LDE5IEBAICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubzogJChPVVRQVVQpL2xwbV90cmllX2JlbmNoLnNrZWwuaCAkKE9VVFBVVCkvbHBtX3RyCiAkKE9VVFBVVCkvYmVuY2hfYnBmX25vcC5vOiAkKE9VVFBVVCkvYnBmX25vcF9iZW5jaC5za2VsLmggYmVuY2hfYnBmX3RpbWluZy5oCiAkKE9VVFBVVCkvYmVuY2hfeGRwX2xiLm86ICQoT1VUUFVUKS94ZHBfbGJfYmVuY2guc2tlbC5oIGJlbmNoX2JwZl90aW1pbmcuaAogJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubzogYmVuY2hfYnBmX3RpbWluZy5oCiYjNDM7CiAkKE9VVFBVVCkvYmVuY2gubzogYmVuY2guaCB0ZXN0aW5nX2hlbHBlcnMuaCAkKEJQRk9CSikKICQoT1VUUFVUKS9iZW5jaDogTERMSUJTICYjNDM7PSAtbG0KLSQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXAotCQkgJChURVNUSU5HX0hFTFBFUlMpIFwKLQkJICQoVFJBQ0VfSEVMUEVSUykgXAotCQkgJChDR1JPVVBfSEVMUEVSUykgXAotCQkgJChPVVRQVVQpL2JlbmNoX2NvdW50Lm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX3JlbmFtZS5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF90cmlnZ2VyLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX3JpbmdidWZzLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2Jsb29tX2ZpbHRlcl9tYXAubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfYnBmX2xvb3AubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX2NyZWF0ZS5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9odGFiX21lbS5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9icGZfY3J5cHRvLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX3NvY2ttYXAubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfbHBtX3RyaWVfbWFwLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfYnBmX25vcC5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF94ZHBfbGIubyBcCi0JCSAkKE9VVFBVVCkvdXNkdF8xLm8gXAotCQkgJChPVVRQVVQpL3VzZHRfMi5vIFwKLQkJICMKJiM0MzskKE9VVFBVVCkvYmVuY2g6ICQoT1VUUFVUKS9iZW5jaC5vCQlcCiYjNDM7CQkgJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vCVwKJiM0MzsJCSAkKE9VVFBVVCkvdHJhY2VfaGVscGVycy5vCVwKJiM0MzsJCSAkKE9VVFBVVCkvY2dyb3VwX2hlbHBlcnMubwlcCiYjNDM7CQkgJChPVVRQVVQpL3VzZHRfMS5vCQlcCiYjNDM7CQkgJChPVVRQVVQpL3VzZHRfMi5vCQlcCiYjNDM7CQkgJChCRU5DSF9PQkpTKQogCSQoY2FsbCBtc2csQklOQVJZLCwkQCkKLQkkKFEpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChmaWx0ZXIgJS5hICUubywkXikgJChMRExJQlMpIC1vICRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcCi0JCSgkKFJNKSAkQDsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLUxJTksmIzM5OyAmIzM5OyQobm90ZGlyICRAKSAoc29tZSBiZW5jaG1hcmtzIG1heSBoYXZlIGJlZW4gc2tpcHBlZCkmIzM5OyAxJmd0OyZhbXA7MikpCiYjNDM7CSQoUSkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKGZpbHRlciAlLmEgJS5vLCReKSAkKExETElCUykgLW8gJEAgXAomIzQzOwkJJChjYWxsIHNraXBfb25fZmFpbCxMSU5LLCwoc29tZSBiZW5jaG1hcmtzIG1heSBoYXZlIGJlZW4gc2tpcHBlZCkpCiAKICMgVGhpcyB3b3JrcyBhcm91bmQgR0NDIHdhcm5pbmcgYWJvdXQgc25wcmludGYgdHJ1bmNhdGluZyBzdHJpbmdzIGxpa2U6CiAjCkBAIC0xMDIyLDEzICYjNDM7NjEzLDYgQEAgJChPVVRQVVQpL3ZlcmlzdGF0OiAkKE9VVFBVVCkvdmVyaXN0YXQubwogCSQoY2FsbCBtc2csQklOQVJZLCwkQCkKIAkkKFEpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChmaWx0ZXIgJS5hICUubywkXikgJChMRExJQlMpIC1vICRACiAKLSMgTGlua2luZyB1cHJvYmVfbXVsdGkgY2FuIGZhaWwgZHVlIHRvIHJlbG9jYXRpb24gb3ZlcmZsb3dzIG9uIG1pcHMuCi0kKE9VVFBVVCkvdXByb2JlX211bHRpOiBDRkxBR1MgJiM0Mzs9ICQoaWYgJChmaWx0ZXIgbWlwcywgJChBUkNIKSksLW14Z290KQotJChPVVRQVVQpL3Vwcm9iZV9tdWx0aTogdXByb2JlX211bHRpLmMgdXByb2JlX211bHRpLmxkCi0JJChjYWxsIG1zZyxCSU5BUlksLCRAKQotCSQoUSkkKENDKSAkKENGTEFHUykgLVdsLC1ULHVwcm9iZV9tdWx0aS5sZCAtTzAgJChMREZMQUdTKSAJXAotCQkkKGZpbHRlci1vdXQgJS5sZCwkXikgJChMRExJQlMpIC1vICRACi0KIEVYVFJBX0NMRUFOIDo9ICQoU0NSQVRDSF9ESVIpICQoSE9TVF9TQ1JBVENIX0RJUikJCQlcCiAJcHJvZ190ZXN0cy90ZXN0cy5oIG1hcF90ZXN0cy90ZXN0cy5oIHZlcmlmaWVyL3Rlc3RzLmgJCVwKIAlmZWF0dXJlIGJwZnRvb2wgJChURVNUX0tNT0RfVEFSR0VUUykJCQkJXApAQCAtMTAzOCw3ICYjNDM7NjIyLDcgQEAgRVhUUkFfQ0xFQU4gOj0gJChTQ1JBVENIX0RJUikgJChIT1NUX1NDUkFUQ0hfRElSKQkJCVwKIAkJCSAgICAgICBsaWJ1cmFuZG9tX3JlYWQuc28pCQkJXAogCSQoT1VUUFVUKS9GRUFUVVJFLURVTVAuc2VsZnRlc3RzCiAKLS5QSE9OWTogZG9jcyBkb2NzLWNsZWFuCiYjNDM7LlBIT05ZOiBkb2NzIGRvY3MtY2xlYW4gbGliYXJlbmEgbGliYXJlbmFfYXNhbgogCiAjIERlbGV0ZSBwYXJ0aWFsbHkgdXBkYXRlZCAoY29ycnVwdGVkKSBmaWxlcyBvbiBlcnJvcgogLkRFTEVURV9PTl9FUlJPUjoKQEAgLTEwNjIsOSAmIzQzOzY0NiwzIEBAIG92ZXJyaWRlIGRlZmluZSBJTlNUQUxMX1JVTEUKIAkJCSQoSU5TVEFMTF9QQVRIKS8kJERJUjsJCQkJICBcCiAJZG9uZQogZW5kZWYKLQotbGliYXJlbmE6ICQoTElCQVJFTkFfU0tFTCkKLQotaWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLCkKLWxpYmFyZW5hX2FzYW46ICQoTElCQVJFTkFfQVNBTl9TS0VMKQotZW5kaWYKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lYTk3NWZlZWYwMTM2ZgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnMKQEAgLTAsMCAmIzQzOzEsMjA0IEBACiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyMKJiM0MzsjIFNoYXJlZCB0b29sY2hhaW4sIHBhdGggYW5kIGZsYWcgZGVmaW5pdGlvbnMgZm9yIHRoZSBCUEYgc2VsZnRlc3RzIGJ1aWxkLgomIzQzOyMgSW5jbHVkZWQgYnkgYm90aCBNYWtlZmlsZSAodGhlIHRvcCBsZXZlbCkgYW5kIE1ha2VmaWxlLnJ1bm5lciAob25lCiYjNDM7IyB0ZXN0LXJ1bm5lciBpbnN0YW5jZSkuCiYjNDM7IwomIzQzOyMgUmVxdWlyZW1lbnRzIGF0IGluY2x1ZGUgdGltZToKJiM0MzsjICAgLSAkKE9VVFBVVCkgaXMgc2V0IHRvIGFuIGFic29sdXRlIHBhdGgKJiM0MzsjICAgLSB0b29scy9idWlsZC9CdWlsZC5pbmNsdWRlLCB0b29scy9zY3JpcHRzL01ha2VmaWxlLmFyY2ggYW5kCiYjNDM7IyAgICAgdG9vbHMvc2NyaXB0cy9NYWtlZmlsZS5pbmNsdWRlIGhhdmUgYmVlbiBpbmNsdWRlZCAoZm9yIFNSQ0FSQ0ggZXRjLikKJiM0MzsKJiM0MztDWFggPz0gJChDUk9TU19DT01QSUxFKWcmIzQzOyYjNDM7CiYjNDM7UEtHX0NPTkZJRyA/PSAkKENST1NTX0NPTVBJTEUpcGtnLWNvbmZpZwomIzQzOwomIzQzO1RPT0xTRElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLikKJiM0MztMSUJESVIgOj0gJChUT09MU0RJUikvbGliCiYjNDM7QlBGRElSIDo9ICQoTElCRElSKS9icGYKJiM0MztUT09MU0lOQ0RJUiA6PSAkKFRPT0xTRElSKS9pbmNsdWRlCiYjNDM7VE9PTFNBUkNISU5DRElSIDo9ICQoVE9PTFNESVIpL2FyY2gvJChTUkNBUkNIKS9pbmNsdWRlCiYjNDM7QlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbAomIzQzO0FQSURJUiA6PSAkKFRPT0xTSU5DRElSKS91YXBpCiYjNDM7aWZuZXEgKCQoTyksKQomIzQzO0dFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkCiYjNDM7ZWxzZQomIzQzO0dFTkRJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4vaW5jbHVkZS9nZW5lcmF0ZWQpCiYjNDM7ZW5kaWYKJiM0MztHRU5IRFIgOj0gJChHRU5ESVIpL2F1dG9jb25mLmgKJiM0MzsKJiM0MztpZm5lcSAoJCh3aWxkY2FyZCAkKEdFTkhEUikpLCkKJiM0MzsgIEdFTkZMQUdTIDo9IC1ESEFWRV9HRU5IRFIKJiM0MztlbmRpZgomIzQzOwomIzQzO2lmZXEgKCQoc3JjdHJlZSksKQomIzQzO3NyY3RyZWUgOj0gJChhYnNwYXRoIC4uLy4uLy4uLy4uKQomIzQzO2VuZGlmCiYjNDM7CiYjNDM7IyBJbW1lZGlhdGUgKHdpdGggYW4gb3ZlcnJpZGUtcHJlc2VydmluZyBndWFyZCk6IGEgcGxhaW4gPz0gc3RheXMKJiM0MzsjIHJlY3Vyc2l2ZWx5IGV4cGFuZGVkIGFuZCB3b3VsZCByZS1ydW4gJiMzOTtjb21tYW5kIC12JiMzOTsgb24gZXZlcnkgZXhwYW5zaW9uLgomIzQzO2lmZXEgKCQob3JpZ2luIEJQRl9HQ0MpLHVuZGVmaW5lZCkKJiM0MztCUEZfR0NDCQk6PSAkKHNoZWxsIGNvbW1hbmQgLXYgYnBmLWdjYzspCiYjNDM7ZW5kaWYKJiM0MztpZmRlZiBBU0FOCiYjNDM7U0FOX0NGTEFHUwk/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIKJiM0MztlbHNlCiYjNDM7U0FOX0NGTEFHUwk/PQomIzQzO2VuZGlmCiYjNDM7U0FOX0xERkxBR1MJPz0gJChTQU5fQ0ZMQUdTKQomIzQzO1JFTEVBU0UJCT89CiYjNDM7T1BUX0ZMQUdTCT89ICQoaWYgJChSRUxFQVNFKSwtTzIsLU8wKQomIzQzOwomIzQzO0xJQkVMRl9DRkxBR1MJOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWNmbGFncyAyJmd0Oy9kZXYvbnVsbCkKJiM0MztMSUJFTEZfTElCUwk6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyJmd0Oy9kZXYvbnVsbCB8fCBlY2hvIC1sZWxmKQomIzQzOwomIzQzO1NLSVBfRE9DUwk/PQomIzQzO1NLSVBfTExWTQk/PQomIzQzO1NLSVBfTElCQkZECT89CiYjNDM7U0tJUF9DUllQVE8JPz0KJiM0MzsKJiM0MzsjIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvcgomIzQzOyMgYmVuY2htYXJrIGNvbXBpbGF0aW9uIGZhaWx1cmUgaXMgZmF0YWwuIFNldCB0byAwIHRvIHRvbGVyYXRlIGZhaWx1cmVzCiYjNDM7IyBhbmQgY29udGludWUgYnVpbGRpbmcgdGhlIHJlbWFpbmluZyB0ZXN0cy4KJiM0MztCUEZfU1RSSUNUX0JVSUxEID89IDEKJiM0MztQRVJNSVNTSVZFIDo9ICQoZmlsdGVyIDAsJChCUEZfU1RSSUNUX0JVSUxEKSkKJiM0MzsKJiM0MzsjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgc3VmZml4OiBvbiBmYWlsdXJlLCByZW1vdmUgdGhlIHRhcmdldCwgZW1pdCBhCiYjNDM7IyBTS0lQIG1hcmtlciBhbmQgcmVwb3J0IHN1Y2Nlc3Mgc28gdGhlIHJlc3Qgb2YgdGhlIGJ1aWxkIGNvbnRpbnVlcy4KJiM0MzsjICQoMSkgLSBTS0lQIHRhZyAoQlBGLCBURVNULCBCRU5DSCwgU0tFTCwgTElOSywgLi4uKQomIzQzOyMgJCgyKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldAomIzQzOyMgJCgzKSAtIG9wdGlvbmFsIG5vdGUgYXBwZW5kZWQgdG8gdGhlIFNLSVAgbWVzc2FnZQomIzQzO3NraXBfb25fZmFpbCA9ICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7ICQoUk0pICRAICQoMik7IFwKJiM0MzsJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLSQoMSkmIzM5OyAmIzM5OyQobm90ZGlyICRAKSQoaWYgJCgzKSwgJCgzKSkmIzM5OyAxJmd0OyZhbXA7MjsgfSkKJiM0MzsKJiM0MzsjIEtlcm5lbCB0ZXN0IG1vZHVsZXM7IFRFU1RfS01PRFM9IG9uIHRoZSBjb21tYW5kIGxpbmUgZGlzYWJsZXMgdGhlbS4KJiM0MztURVNUX0tNT0RTID89IGJwZl90ZXN0bW9kLmtvIGJwZl90ZXN0X25vX2NmaS5rbyBicGZfdGVzdF9tb2RvcmRlcl94LmtvIFwKJiM0MzsJYnBmX3Rlc3RfbW9kb3JkZXJfeS5rbyBicGZfdGVzdF9ycXNwaW5sb2NrLmtvCiYjNDM7VEVTVF9LTU9EX1RBUkdFVFMgPSAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLCQoVEVTVF9LTU9EUykpCiYjNDM7CiYjNDM7IyBPdXRwdXQtdHJlZSBsYXlvdXQuIERlZmluZWQgYmVmb3JlIENPTU1PTl9DRkxBR1Mgb24gcHVycG9zZTogQ0ZMQUdTCiYjNDM7IyBiZWxvdyBpcyBleHBhbmRlZCBpbW1lZGlhdGVseSBhbmQgcmVmZXJlbmNlcyAkKElOQ0xVREVfRElSKS4KJiM0MztTQ1JBVENIX0RJUiA6PSAkKE9VVFBVVCkvdG9vbHMKJiM0MztCVUlMRF9ESVIgOj0gJChTQ1JBVENIX0RJUikvYnVpbGQKJiM0MztJTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlCiYjNDM7QlBGT0JKIDo9ICQoQlVJTERfRElSKS9saWJicGYvbGliYnBmLmEKJiM0MztpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpCiYjNDM7SE9TVF9CVUlMRF9ESVIJCTo9ICQoQlVJTERfRElSKS9ob3N0CiYjNDM7SE9TVF9TQ1JBVENIX0RJUgk6PSAkKE9VVFBVVCkvaG9zdC10b29scwomIzQzO0hPU1RfSU5DTFVERV9ESVIJOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9pbmNsdWRlCiYjNDM7ZWxzZQomIzQzO0hPU1RfQlVJTERfRElSCQk6PSAkKEJVSUxEX0RJUikKJiM0MztIT1NUX1NDUkFUQ0hfRElSCTo9ICQoU0NSQVRDSF9ESVIpCiYjNDM7SE9TVF9JTkNMVURFX0RJUgk6PSAkKElOQ0xVREVfRElSKQomIzQzO2VuZGlmCiYjNDM7SE9TVF9CUEZPQkogOj0gJChIT1NUX0JVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hCiYjNDM7UkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHMKJiM0MzsKJiM0MztERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2wKJiM0MztpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpCiYjNDM7Q1JPU1NfQlBGVE9PTCA6PSAkKFNDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2wKJiM0MztUUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKQomIzQzO1VTRV9CT09UU1RSQVAgOj0KJiM0MztlbHNlCiYjNDM7VFJVTk5FUl9CUEZUT09MIDo9ICQoREVGQVVMVF9CUEZUT09MKQomIzQzO1VTRV9CT09UU1RSQVAgOj0gYm9vdHN0cmFwLwomIzQzO2VuZGlmCiYjNDM7QlBGVE9PTCA/PSAkKERFRkFVTFRfQlBGVE9PTCkKJiM0MzsKJiM0MztDT01NT05fQ0ZMQUdTID0gLWcgJChPUFRfRkxBR1MpIC1yZHluYW1pYyAtc3RkPWdudTExCQkJXAomIzQzOwkgIC1XYWxsIC1XZXJyb3IgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIJCQkJXAomIzQzOwkgIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUJCQkJCVwKJiM0MzsJICAkKEdFTkZMQUdTKSAkKFNBTl9DRkxBR1MpICQoTElCRUxGX0NGTEFHUykJCQlcCiYjNDM7CSAgLUkkKENVUkRJUikgLUkkKElOQ0xVREVfRElSKSAtSSQoR0VORElSKSAtSSQoTElCRElSKQkJXAomIzQzOwkgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVCkJXAomIzQzOwkgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUKJiM0MztMREZMQUdTICYjNDM7PSAkKFNBTl9MREZMQUdTKQomIzQzO0xETElCUyAmIzQzOz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkCiYjNDM7CiYjNDM7UENBUF9DRkxBR1MJOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGxpYnBjYXAgMiZndDsvZGV2L251bGwgJmFtcDsmYW1wOyBlY2hvICYjMzQ7LURUUkFGRklDX01PTklUT1I9MSYjMzQ7KQomIzQzO1BDQVBfTElCUwk6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYnBjYXAgMiZndDsvZGV2L251bGwpCiYjNDM7TERMSUJTICYjNDM7PSAkKFBDQVBfTElCUykKJiM0MzsjIFByZXBlbmQgcmF0aGVyIHRoYW4gYXBwZW5kOiB0aGUgaW5jbHVkZS1zZWFyY2ggb3JkZXIgbXVzdCBzdGF5CiYjNDM7IyAmIzM0OyQoQ09NTU9OX0NGTEFHUykgZmlyc3QsIGxpYi5tayBhZGRpdGlvbnMgYWZ0ZXImIzM0OyByZWdhcmRsZXNzIG9mIHdoZXRoZXIKJiM0MzsjIGxpYi5tayB3YXMgaW5jbHVkZWQgYmVmb3JlIHRoaXMgZmlsZSAodG9wIGxldmVsKSBvciBub3QgYXQgYWxsIChydW5uZXIpLgomIzQzO0NGTEFHUyA6PSAkKENPTU1PTl9DRkxBR1MpICQoUENBUF9DRkxBR1MpICQoQ0ZMQUdTKQomIzQzOwomIzQzO2lmbmVxICgkKExMVk0pLCkKJiM0MzsjIFNpbGVuY2Ugc29tZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHdpdGggY2xhbmcKJiM0MztDRkxBR1MgJiM0Mzs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudAomIzQzO2VuZGlmCiYjNDM7CiYjNDM7IyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMiYjNDM7KQomIzQzO0NMQU5HX0hBU19BUkVOQV9BU0FOIDo9ICQoc2hlbGwgZWNobyAmIzM5O2ludCB4OyYjMzk7IHwgXAomIzQzOwkkKENMQU5HKSAtLXRhcmdldD1icGYgLWZzYW5pdGl6ZT1rZXJuZWwtYWRkcmVzcyBcCiYjNDM7CS1tbGx2bSAtYXNhbi1zaGFkb3ctYWRkci1zcGFjZT0xIFwKJiM0MzsJLXggYyAtYyAtIC1vIC9kZXYvbnVsbCAyJmd0Oy9kZXYvbnVsbCAmYW1wOyZhbXA7IGVjaG8gMSkKJiM0MztpZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKQomIzQzO0NGTEFHUyAmIzQzOz0gLURIQVNfQlBGX0FSRU5BX0FTQU4KJiM0MztlbmRpZgomIzQzOwomIzQzO1ZNTElOVVhfQlRGX1BBVEhTID89ICQoaWYgJChPKSwkKE8pL3ZtbGludXgpCQkJCVwKJiM0MzsJCSAgICAgJChpZiAkKEtCVUlMRF9PVVRQVVQpLCQoS0JVSUxEX09VVFBVVCkvdm1saW51eCkJXAomIzQzOwkJICAgICAuLi8uLi8uLi8uLi92bWxpbnV4CQkJCVwKJiM0MzsJCSAgICAgL3N5cy9rZXJuZWwvYnRmL3ZtbGludXgJCQkJXAomIzQzOwkJICAgICAvYm9vdC92bWxpbnV4LSQoc2hlbGwgdW5hbWUgLXIpCiYjNDM7Vk1MSU5VWF9CVEYgPz0gJChhYnNwYXRoICQoZmlyc3R3b3JkICQod2lsZGNhcmQgJChWTUxJTlVYX0JURl9QQVRIUykpKSkKJiM0MztpZmVxICgkKFZNTElOVVhfQlRGKSwpCiYjNDM7JChlcnJvciBDYW5ub3QgZmluZCBhIHZtbGludXggZm9yIFZNTElOVVhfQlRGIGF0IGFueSBvZiAmIzM0OyQoVk1MSU5VWF9CVEZfUEFUSFMpJiMzNDspCiYjNDM7ZW5kaWYKJiM0MzsKJiM0MzsjIEdldCBDbGFuZyYjMzk7cyBkZWZhdWx0IGluY2x1ZGVzIG9uIHRoaXMgc3lzdGVtLCBhcyBvcHBvc2VkIHRvIHRob3NlIHNlZW4gYnkKJiM0MzsjICYjMzk7LS10YXJnZXQ9YnBmJiMzOTsuIFRoaXMgZml4ZXMgJiMzNDttaXNzaW5nJiMzNDsgZmlsZXMgb24gc29tZSBhcmNoaXRlY3R1cmVzL2Rpc3Ryb3MsCiYjNDM7IyBzdWNoIGFzIGFzbS9ieXRlb3JkZXIuaCwgYXNtL3NvY2tldC5oLCBhc20vc29ja2lvcy5oLCBzeXMvY2RlZnMuaCBldGMuCiYjNDM7IwomIzQzOyMgVXNlICYjMzk7LWlkaXJhZnRlciYjMzk7OiBEb24mIzM5O3QgaW50ZXJmZXJlIHdpdGggaW5jbHVkZSBtZWNoYW5pY3MgZXhjZXB0IHdoZXJlIHRoZQomIzQzOyMgYnVpbGQgd291bGQgaGF2ZSBmYWlsZWQgYW55d2F5cy4KJiM0MztkZWZpbmUgZ2V0X3N5c19pbmNsdWRlcwomIzQzOyQoc2hlbGwgJCgxKSAkKDIpIC12IC1FIC0gJmx0Oy9kZXYvbnVsbCAyJmd0OyZhbXA7MSBcCiYjNDM7CXwgc2VkIC1uICYjMzk7LyZsdDsuLi4mZ3Q7IHNlYXJjaCBzdGFydHMgaGVyZTovLC9FbmQgb2Ygc2VhcmNoIGxpc3QuL3sgc3wgXCgvLipcKXwtaWRpcmFmdGVyIFwxfHAgfSYjMzk7KSBcCiYjNDM7JChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX3Jpc2N2X3hsZW4gJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKCYjMzQ7LURfX3Jpc2N2X3hsZW49JWQgLURfX0JJVFNfUEVSX0xPTkc9JWQmIzM0OywgJCQzLCAkJDMpfSYjMzk7KSBcCiYjNDM7JChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX2xvb25nYXJjaF9ncmxlbiAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoJiMzNDstRF9fQklUU19QRVJfTE9ORz0lZCYjMzQ7LCAkJDMpfSYjMzk7KSBcCiYjNDM7JChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IGdyZXAgLUUgJiMzOTtNSVBTKEVMfEVCKXxfTUlQU19TWihQVFJ8TE9ORykgfF9NSVBTX1NJTSB8X0FCSShPMzJ8TjMyfDY0KSAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoJiMzNDstRCVzPSVzICYjMzQ7LCAkJDIsICQkMyl9JiMzOTspCiYjNDM7ZW5kZWYKJiM0MzsKJiM0MzsjIERldGVybWluZSB0YXJnZXQgZW5kaWFubmVzcy4KJiM0MztJU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IFwKJiM0MzsJCQlncmVwICYjMzk7ZGVmaW5lIF9fQllURV9PUkRFUl9fIF9fT1JERVJfTElUVExFX0VORElBTl9fJiMzOTspCiYjNDM7TUVORElBTiA6PSAkKGlmICQoSVNfTElUVExFX0VORElBTiksLW1saXR0bGUtZW5kaWFuLC1tYmlnLWVuZGlhbikKJiM0MztCUEZfVEFSR0VUX0VORElBTiA6PSAkKGlmICQoSVNfTElUVExFX0VORElBTiksLS10YXJnZXQ9YnBmZWwsLS10YXJnZXQ9YnBmZWIpCiYjNDM7CiYjNDM7aWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKQomIzQzO0NMQU5HX1RBUkdFVF9BUkNIID0gLS10YXJnZXQ9JChub3RkaXIgJChDUk9TU19DT01QSUxFOiUtPSUpKQomIzQzO2VuZGlmCiYjNDM7CiYjNDM7Q0xBTkdfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLCQoQ0xBTkcpLCQoQ0xBTkdfVEFSR0VUX0FSQ0gpKQomIzQzO0JQRl9DRkxBR1MgPSAtZyAtV2FsbCAtV2Vycm9yIC1EX19UQVJHRVRfQVJDSF8kKFNSQ0FSQ0gpICQoTUVORElBTikJXAomIzQzOwkgICAgIC1JJChJTkNMVURFX0RJUikgLUkkKENVUkRJUikgLUkkKEFQSURJUikJCQlcCiYjNDM7CSAgICAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZQkJCQlcCiYjNDM7CSAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKQkJCVwKJiM0MzsJICAgICAtc3RkPWdudTExCQkgCQkJCQlcCiYjNDM7CSAgICAgLWZuby1zdHJpY3QtYWxpYXNpbmcgCQkJCQlcCiYjNDM7CSAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWcJCQkJCVwKJiM0MzsJICAgICAtZm1zLWV4dGVuc2lvbnMJCQkJCQlcCiYjNDM7CSAgICAgLVduby1jb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXMJCQlcCiYjNDM7CSAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXMJCQkJCVwKJiM0MzsJICAgICAjCiYjNDM7IyBUT0RPOiBlbmFibGUgbWUgLVdzaWduLWNvbXBhcmUKJiM0MzsKJiM0MztDTEFOR19DRkxBR1MgPSAkKENMQU5HX1NZU19JTkNMVURFUykKJiM0MzsKJiM0MzsjIFNpZ25pbmcga2V5L2NlcnQgc2hhcmVkIGJ5IHRoZSBzaWduZWQgbGlnaHQgc2tlbGV0b25zIGFuZCB0ZXN0X3Byb2dzLgomIzQzO1ZFUklGWV9TSUdfU0VUVVAgOj0gJChDVVJESVIpL3ZlcmlmeV9zaWdfc2V0dXAuc2gKJiM0MztWRVJJRllfU0lHX0hEUiA6PSB2ZXJpZmljYXRpb25fY2VydC5oCiYjNDM7VkVSSUZJQ0FUSU9OX0NFUlQgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LmRlcgomIzQzO1BSSVZBVEVfS0VZIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5wZW0KJiM0MzsKJiM0MzsjIGxpYmFyZW5hIHNrZWxldG9ucywgYnVpbHQgYnkgdGhlIGxpYmFyZW5hLyBzdWItbWFrZSAoZHJpdmVuIGJ5IHRoZSB0b3AKJiM0MzsjIGxldmVsIE1ha2VmaWxlKTsgdGVzdF9wcm9ncyBhbmQgaXRzIGZsYXZvcnMgZGVwZW5kIG9uIHRoZSBoZWFkZXJzLgomIzQzO0xJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oCiYjNDM7aWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLCkKJiM0MztMSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmgKJiM0MztlbmRpZgomIzQzOwomIzQzO2lmbmVxICgkKFYpLDEpCiYjNDM7c3VibWFrZV9leHRyYXMgOj0gZmVhdHVyZV9kaXNwbGF5PTAKJiM0MztlbmRpZgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnJ1bm5lciBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjRjNThjYzUxZjI1MTRlCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnJ1bm5lcgpAQCAtMCwwICYjNDM7MSwzMTMgQEAKJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7IwomIzQzOyMgQnVpbGQgb25lIEJQRiB0ZXN0LXJ1bm5lciBpbnN0YW5jZTogdGVzdF9wcm9ncywgb25lIG9mIGl0cyBmbGF2b3JzCiYjNDM7IyAobm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjKSwgb3IgdGVzdF9tYXBzLgomIzQzOyMKJiM0MzsjIEVhY2ggaW5zdGFuY2UgaXMgYW4gaW5kZXBlbmRlbnQgc3ViLW1ha2Ugd2l0aCBpdHMgb3duIG91dHB1dCBkaXJlY3RvcnksCiYjNDM7IyBzbyBldmVyeXRoaW5nIGhlcmUgaXMgd3JpdHRlbiBpbiBwbGFpbiBtYWtlIC0gbm8gJCQtZXNjYXBpbmcsIG5vIGV2YWwsCiYjNDM7IyBubyBwZXItZmxhdm9yIGd1YXJkcy4gVGhpcyBmaWxlIGlzIGFsd2F5cyBpbnZva2VkIGJ5IHRoZSBtYWluIE1ha2VmaWxlLAomIzQzOyMgbmV2ZXIgZGlyZWN0bHk6IGFsbCBzaGFyZWQgcHJlcmVxdWlzaXRlcyAobGliYnBmLCBicGZ0b29sLCB2bWxpbnV4LmgsCiYjNDM7IyB2ZXJpc3RhdCwgaGVscGVyIG9iamVjdHMsIHNpZ25pbmcga2V5LCBnZW5lcmF0ZWQgdGVzdHMuaCwgZXh0cmEKJiM0MzsjIGJpbmFyaWVzKSBhcmUgYnVpbHQgYnkgdGhlIG1haW4gTWFrZWZpbGUgKmJlZm9yZSogdGhpcyBvbmUgcnVucyBhbmQgYXJlCiYjNDM7IyByZWZlcmVuY2VkIGJlbG93IGFzIHBsYWluIGZpbGVzLgomIzQzOyMKJiM0MzsjIFBhcmFtZXRlcnMgKGFsbCBwYXNzZWQgb24gdGhlIHN1Yi1tYWtlIGNvbW1hbmQgbGluZSk6CiYjNDM7IyAgIE9VVFBVVCAgICAgIGFic29sdXRlIHBhdGggb2YgdGhlIHNlbGZ0ZXN0cyBvdXRwdXQgZGlyZWN0b3J5CiYjNDM7IyAgIFJVTk5FUiAgICAgIGJhc2UgYmluYXJ5IG5hbWU6IHRlc3RfcHJvZ3MgfCB0ZXN0X21hcHMKJiM0MzsjICAgRkxBVk9SICAgICAgZmxhdm9yIHN1ZmZpeDogZW1wdHkgfCBub19hbHUzMiB8IGNwdXY0IHwgYnBmX2djYwomIzQzOyMgICBURVNUU19ESVIgICBkaXJlY3Rvcnkgd2l0aCB0aGUgdGVzdCBzb3VyY2VzOiBwcm9nX3Rlc3RzIHwgbWFwX3Rlc3RzCiYjNDM7IyAgIEJQRl9CVUlMRCAgIGhvdyB0byBidWlsZCBwcm9ncy8qLmMgQlBGIG9iamVjdHM6IGNsYW5nIHwgZ2NjIHwgbm9uZQomIzQzOyMgICBCUEZfTUNQVSAgICBjbGFuZyAtbWNwdT0gdmFsdWU6IHYyIHwgdjMgfCB2NAomIzQzOyMgICBCUEZfREVGSU5FUyBleHRyYSBkZWZpbmVzIGZvciBCUEYgb2JqZWN0cyAoZS5nLiAtREVOQUJMRV9BVE9NSUNTX1RFU1RTKQomIzQzOyMgICBDQyAgICAgICAgICBDIGNvbXBpbGVyIChhcyByZXNvbHZlZCBieSBsaWIubWsgaW4gdGhlIG1haW4gTWFrZWZpbGUpCiYjNDM7IyAgIExMVk1fQ0ZMQUdTL0xMVk1fTERMSUJTL0xMVk1fTERGTEFHUwomIzQzOyMgICAgICAgICAgICAgICByZXN1bHRzIG9mIHRoZSB0b3AtbGV2ZWwgTExWTSBmZWF0dXJlIHByb2JlCiYjNDM7CiYjNDM7aW5jbHVkZSAuLi8uLi8uLi9idWlsZC9CdWlsZC5pbmNsdWRlCiYjNDM7aW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2gKJiM0MztpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZQomIzQzOwomIzQzOyMgU2FtZSBtZXNzYWdlIGhlbHBlcnMgYXMgLi4vbGliLm1rLCB3aGljaCBvbmx5IHRoZSB0b3AgbGV2ZWwgaW5jbHVkZXMuCiYjNDM7aWZlcSAoJChWKSwxKQomIzQzO1EgPQomIzQzO21zZyA9CiYjNDM7ZWxzZQomIzQzO1EgPSBACiYjNDM7bXNnID0gQHByaW50ZiAmIzM5OyAgJS04cyVzICVzJXNcbiYjMzk7ICYjMzQ7JCgxKSYjMzQ7ICYjMzQ7JChpZiAkKDIpLCBbJCgyKV0pJiMzNDsgJiMzNDskKG5vdGRpciAkKDMpKSYjMzQ7ICYjMzQ7JChpZiAkKDQpLCAkKDQpKSYjMzQ7OwomIzQzO01BS0VGTEFHUyAmIzQzOz0gLS1uby1wcmludC1kaXJlY3RvcnkKJiM0MztlbmRpZgomIzQzOwomIzQzO2luY2x1ZGUgTWFrZWZpbGUuYnVpbGR2YXJzCiYjNDM7CiYjNDM7IyBLZWVwIGluIHN5bmMgd2l0aCB0aGUgQ0ZMQUdTL0xERkxBR1MgYWRkaXRpb25zIGluIC4uL2xpYi5tay4KJiM0MztDRkxBR1MgJiM0Mzs9IC1EX0dOVV9TT1VSQ0U9CiYjNDM7Q0ZMQUdTICYjNDM7PSAtSSQoc3JjdHJlZSkvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMKJiM0MztDRkxBR1MgJiM0Mzs9ICQoVVNFUkNGTEFHUykKJiM0MztMREZMQUdTICYjNDM7PSAkKFVTRVJMREZMQUdTKQomIzQzO2lmbmVxICgkKExMVk0pLCkKJiM0MztDRkxBR1MgJiM0Mzs9IC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyCiYjNDM7Q0ZMQUdTICYjNDM7PSAtV25vLWdudS12YXJpYWJsZS1zaXplZC10eXBlLW5vdC1hdC1lbmQKJiM0MztlbmRpZgomIzQzOwomIzQzO0JJTkFSWSA6PSAkKFJVTk5FUikkKGlmICQoRkxBVk9SKSwtJChGTEFWT1IpKQomIzQzO1JESVIgICA6PSAkKE9VVFBVVCkkKGlmICQoRkxBVk9SKSwvJChGTEFWT1IpKQomIzQzOwomIzQzO2FsbDogJChPVVRQVVQpLyQoQklOQVJZKQomIzQzOy5QSE9OWTogYWxsCiYjNDM7CiYjNDM7IyBEZWxldGUgcGFydGlhbGx5IHVwZGF0ZWQgKGNvcnJ1cHRlZCkgZmlsZXMgb24gZXJyb3IKJiM0MzsuREVMRVRFX09OX0VSUk9SOgomIzQzOwomIzQzOyMgUGVybWlzc2l2ZSBza2lwLW9uLWZhaWx1cmUgb2YgaW5kaXZpZHVhbCB0ZXN0cyBhcHBsaWVzIHRvIHRlc3RfcHJvZ3MgYW5kCiYjNDM7IyBpdHMgZmxhdm9ycyBvbmx5OyB0ZXN0X21hcHMgdXNlcyBzdHJvbmcgY3Jvc3Mtb2JqZWN0IHJlZmVyZW5jZXMgYW5kIGtlZXBzCiYjNDM7IyBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBCUEZfU1RSSUNUX0JVSUxEPTAuCiYjNDM7UEVSTUlTU0lWRV9URVNUUyA6PSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MsJChSVU5ORVIpKSwkKFBFUk1JU1NJVkUpKQomIzQzOwomIzQzOyQoUkRJUik6CiYjNDM7CSQoY2FsbCBtc2csTUtESVIsLCRAKQomIzQzOwkkKFEpbWtkaXIgLXAgJEAKJiM0MzsKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgUGVyLXJ1bm5lciBzb3VyY2VzCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsKJiM0MztpZmVxICgkKFJVTk5FUiksdGVzdF9wcm9ncykKJiM0MztFWFRSQV9TT1VSQ0VTIDo9IHRlc3RfcHJvZ3MuYyBjZ3JvdXBfaGVscGVycy5jIHRyYWNlX2hlbHBlcnMuYwkJXAomIzQzOwkJIG5ldHdvcmtfaGVscGVycy5jIHRlc3RpbmdfaGVscGVycy5jIGJ0Zl9oZWxwZXJzLmMJXAomIzQzOwkJIGNhcF9oZWxwZXJzLmMgdW5wcml2X2hlbHBlcnMuYyBzeXNjdGxfaGVscGVycy5jCVwKJiM0MzsJCSBuZXRsaW5rX2hlbHBlcnMuYyBqaXRfZGlzYXNtX2hlbHBlcnMuYyBpb19oZWxwZXJzLmMJXAomIzQzOwkJIHRlc3RfbG9hZGVyLmMgeHNrLmMgZGlzYXNtLmMgZGlzYXNtX2hlbHBlcnMuYwkJXAomIzQzOwkJIGpzb25fd3JpdGVyLmMgYnBmdG9vbF9oZWxwZXJzLmMgdXNkdF8xLmMgdXNkdF8yLmMKJiM0MztMSUJfU09VUkNFUyA6PSBmaW5kX2JpdC5jCiYjNDM7RVhUUkFfSERSUyA6PSBmbG93X2Rpc3NlY3Rvcl9sb2FkLmggaXBfY2hlY2tfZGVmcmFnX2ZyYWdzLmgJCVwKJiM0MzsJICAgICAgJChWRVJJRllfU0lHX0hEUikgJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTCkKJiM0MztFWFRSQV9GSUxFUyA6PSAkKE9VVFBVVCkvdXJhbmRvbV9yZWFkICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc28JXAomIzQzOwkgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eSAkKE9VVFBVVCkvc2lnbi1maWxlCQlcCiYjNDM7CSAgICAgICAkKE9VVFBVVCkvdXByb2JlX211bHRpCQkJCQlcCiYjNDM7CSAgICAgICAkKFRFU1RfS01PRF9UQVJHRVRTKQkJCQkJXAomIzQzOwkgICAgICAgaW1hX3NldHVwLnNoICQoVkVSSUZZX1NJR19TRVRVUCkJCQkJXAomIzQzOwkgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKQkJCVwKJiM0MzsJICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubykKJiM0MztlbmRpZgomIzQzOwomIzQzO2lmZXEgKCQoUlVOTkVSKSx0ZXN0X21hcHMpCiYjNDM7RVhUUkFfU09VUkNFUyA6PSB0ZXN0X21hcHMuYyB0ZXN0aW5nX2hlbHBlcnMuYwomIzQzO2VuZGlmCiYjNDM7CiYjNDM7IyBOb3RlIG9uIHRoZSB1bmZsYXZvcmVkIHJ1bm5lcnMsIHdoaWNoIHNoYXJlICQoT1VUUFVUKSB3aXRoIHRoZSBtYWluCiYjNDM7IyBNYWtlZmlsZTogaGVscGVyIG9iamVjdHMgdGhlIG1haW4gTWFrZWZpbGUgYWxzbyB1c2VzIChhbmQgbGlzdHMgaW4gdGhlCiYjNDM7IyBydW5uZXIgcHJlcmVxdWlzaXRlcykgYXJlIGFscmVhZHkgYnVpbHQgYW5kIGZyZXNoIHdoZW4gYSBydW5uZXIgc3RhcnRzLAomIzQzOyMgc28gdGhlIHJ1bGVzIGJlbG93IGZpbmQgdGhlbSB1cCB0byBkYXRlIGFuZCBuZXZlciB3cml0ZSB0aGVtLgomIzQzOwomIzQzO1RFU1RTX0hEUiA6PSAkKFRFU1RTX0RJUikvdGVzdHMuaAomIzQzOwomIzQzO1RFU1RfU1JDUyAgOj0gJChub3RkaXIgJCh3aWxkY2FyZCAkKFRFU1RTX0RJUikvKi5jKSkKJiM0MztURVNUX09CSlMgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS50ZXN0Lm8sJChURVNUX1NSQ1MpKQomIzQzO1RFU1RfREVQUyAgOj0gJChURVNUX09CSlM6Lm89LmQpCiYjNDM7RVhUUkFfT0JKUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubywkKGZpbHRlciAlLmMsJChFWFRSQV9TT1VSQ0VTKSkpCiYjNDM7TElCX09CSlMgICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubywkKExJQl9TT1VSQ0VTKSkKJiM0MzsKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9ucwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7CiYjNDM7aWZuZXEgKCQoQlBGX0JVSUxEKSxub25lKQomIzQzOwomIzQzO0JQRl9TUkNTIDo9ICQobm90ZGlyICQod2lsZGNhcmQgcHJvZ3MvKi5jKSkKJiM0MztCUEZfT0JKUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUuYnBmLm8sJChCUEZfU1JDUykpCiYjNDM7CiYjNDM7IyBXaGljaCB0ZXN0cyB3YW50IGEgbGlnaHQgc2tlbGV0b24gaXMgZGVyaXZlZCBmcm9tIHRoZSB0ZXN0IHNvdXJjZXMKJiM0MzsjIHRoZW1zZWx2ZXM6IGFuICYjMzk7I2luY2x1ZGUgJiMzNDtmb28ubHNrZWwuaCYjMzQ7JiMzOTsgbGluZSBpcyB0aGUgc2luZ2xlIHNvdXJjZSBvZgomIzQzOyMgdHJ1dGguIFRlc3RzIHRoYXQgaW5jbHVkZSBib3RoIGZvby5za2VsLmggYW5kIGZvby5sc2tlbC5oIGdldCBib3RoLgomIzQzO3NrZWxfaW5jbHVkZXMgPSAkKHNoZWxsIGdyZXAgLXJob0UgJiMzOTsmIzM0O1thLXpBLVowLTlfXSYjNDM7XC4kKDEpJiMzNDsmIzM5OyBwcm9nX3Rlc3RzIGJlbmNocyBtYXBfdGVzdHMgKi5jICouY3BwIDImZ3Q7L2Rldi9udWxsKQomIzQzO0xTS0VMX0JBU0VTIDo9ICQoc29ydCAkKHBhdHN1YnN0ICYjMzQ7JS5sc2tlbC5oJiMzNDssJSwkKGNhbGwgc2tlbF9pbmNsdWRlcyxsc2tlbC5oKSkpCiYjNDM7U0tFTF9ERU1BTkRFRCA6PSAkKHNvcnQgJChwYXRzdWJzdCAmIzM0OyUuc2tlbC5oJiMzNDssJSwkKGNhbGwgc2tlbF9pbmNsdWRlcyxza2VsLmgpKSkKJiM0MzsKJiM0MzsjIFNpZ25pbmcgaXMgbm90IGV4cHJlc3NlZCBpbiB0aGUgaW5jbHVkZSwgc28gdGhlIHNpZ25lZCBzdWJzZXQgc3RheXMKJiM0MzsjIGV4cGxpY2l0LgomIzQzO0xTS0VMU19TSUdORUQgOj0gZmVudHJ5X3Rlc3QgZmV4aXRfdGVzdCBhdG9taWNzCiYjNDM7CiYjNDM7IyBCUEYgb2JqZWN0cyB0aGF0IGNhbm5vdCBoYXZlIGEgcmVndWxhciBza2VsZXRvbiwgcGx1cyBsc2tlbC1vbmx5IHRlc3RzCiYjNDM7IyAobGlnaHQtc2tlbGV0b24gdXNlcnMgd2hvc2Ugc291cmNlcyBuZXZlciBpbmNsdWRlIHRoZSAuc2tlbC5oIGZvcm0pLgomIzQzO1NLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmMgXAomIzQzOwkJICAkKGFkZHN1ZmZpeCAuYywkKGZpbHRlci1vdXQgJChTS0VMX0RFTUFOREVEKSwkKExTS0VMX0JBU0VTKSkpCiYjNDM7CiYjNDM7IyBTa2VsZXRvbnMgbWFkZSBieSBsaW5raW5nIG11bHRpcGxlIEJQRiBvYmplY3RzIHRvZ2V0aGVyLiBUaGUgJS1kZXBzCiYjNDM7IyBtYXBwaW5nIGlzIHRoZSBvbmx5IGhhbmQtbWFpbnRhaW5lZCBtZXRhZGF0YTogaXQgY2Fubm90IGJlIGRlcml2ZWQgZnJvbQomIzQzOyMgdGhlIHNvdXJjZXMuCiYjNDM7dGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3RhdGljX2xpbmtlZDEuYnBmLm8gdGVzdF9zdGF0aWNfbGlua2VkMi5icGYubwomIzQzO2xpbmtlZF9mdW5jcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfZnVuY3MxLmJwZi5vIGxpbmtlZF9mdW5jczIuYnBmLm8KJiM0MztsaW5rZWRfdmFycy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfdmFyczEuYnBmLm8gbGlua2VkX3ZhcnMyLmJwZi5vCiYjNDM7bGlua2VkX21hcHMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX21hcHMxLmJwZi5vIGxpbmtlZF9tYXBzMi5icGYubwomIzQzOyMgSW4gdGhlIHN1YnNrZWxldG9uIGNhc2UsIHdlIHdhbnQgdGhlIHRlc3Rfc3Vic2tlbGV0b25fbGliLnN1YnNrZWwuaCBmaWxlCiYjNDM7IyBidXQgdGhhdCYjMzk7cyBjcmVhdGVkIGFzIGEgc2lkZS1lZmZlY3Qgb2YgdGhlIHNrZWwuaCBnZW5lcmF0aW9uLgomIzQzO3Rlc3Rfc3Vic2tlbGV0b24uc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b24uYnBmLm8KJiM0Mzt0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm8KJiM0Mzt0ZXN0X3VzZHQuc2tlbC5oLWRlcHMgOj0gdGVzdF91c2R0LmJwZi5vIHRlc3RfdXNkdF9tdWx0aXNwZWMuYnBmLm8KJiM0Mzt0cmFjaW5nX211bHRpLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm8KJiM0Mzt0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaF9tb2R1bGUuYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYubwomIzQzO3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vCiYjNDM7dHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfc2Vzc2lvbl9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYubwomIzQzOwomIzQzO0xJTktFRF9TS0VMUyA6PSB0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oIGxpbmtlZF9mdW5jcy5za2VsLmgJCVwKJiM0MzsJCWxpbmtlZF92YXJzLnNrZWwuaCBsaW5rZWRfbWFwcy5za2VsLmgJCQlcCiYjNDM7CQl0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmgJXAomIzQzOwkJdGVzdF91c2R0LnNrZWwuaCB0cmFjaW5nX211bHRpLnNrZWwuaAkJCVwKJiM0MzsJCXRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaAkJCQlcCiYjNDM7CQl0cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmgJCQkJXAomIzQzOwkJdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaAomIzQzO0xJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoZm9yZWFjaCBza2VsLCQoTElOS0VEX1NLRUxTKSwkKCQoc2tlbCktZGVwcykpKQomIzQzOwomIzQzO1NLRUxTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5za2VsLmgsCQkJCVwKJiM0MzsJICAgJChmaWx0ZXItb3V0ICQoU0tFTF9CTEFDS0xJU1QpICQoTElOS0VEX0JQRl9TUkNTKSwkKEJQRl9TUkNTKSkpCiYjNDM7TFNLRUxTX0ggICAgICAgIDo9ICQocGF0c3Vic3QgJSwkKFJESVIpLyUubHNrZWwuaCwkKGZpbHRlci1vdXQgJChMU0tFTFNfU0lHTkVEKSwkKExTS0VMX0JBU0VTKSkpCiYjNDM7TFNLRUxTX1NJR05FRF9IIDo9ICQocGF0c3Vic3QgJSwkKFJESVIpLyUubHNrZWwuaCwkKExTS0VMU19TSUdORUQpKQomIzQzO0xJTktFRF9TS0VMU19IICA6PSAkKGFkZHByZWZpeCAkKFJESVIpLywkKExJTktFRF9TS0VMUykpCiYjNDM7QUxMX1NLRUxTIDo9ICQoU0tFTFMpICQoTFNLRUxTX0gpICQoTFNLRUxTX1NJR05FRF9IKSAkKExJTktFRF9TS0VMU19IKQomIzQzOwomIzQzO0hFQURFUlNfRk9SX0JQRl9PQkpTIDo9ICQod2lsZGNhcmQgJChCUEZESVIpLyouYnBmLmgpCQkJXAomIzQzOwkJCSQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKQlcCiYjNDM7CQkJJChhZGRwcmVmaXggJChCUEZESVIpLywJYnBmX2NvcmVfcmVhZC5oCQlcCiYjNDM7CQkJCQkJYnBmX2VuZGlhbi5oCQlcCiYjNDM7CQkJCQkJYnBmX2hlbHBlcnMuaAkJXAomIzQzOwkJCQkJCWJwZl90cmFjaW5nLmgpCiYjNDM7CiYjNDM7IyBQZXItc291cmNlIEJQRiBjb21waWxhdGlvbiBmbGFnIG92ZXJyaWRlcyAoJCZsdDstQ0ZMQUdTIC8gJCZsdDstJChGTEFWT1IpLUNGTEFHUykuCiYjNDM7IyBHQ0MgY2Fubm90IGRpc2FibGUgJiMzNDtkZWNsYXJhdGlvbiBvZiBhbm9ueW1vdXMgc3RydWN0IGluIHBhcmFtZXRlciBsaXN0JiMzNDsKJiM0MzsjIHdhcm5pbmdzIHRyaWdnZXJlZCBieSB0aGVzZSAodGVjaG5pY2FsbHkgbGVnYWwpIHRlc3QgcHJvZ3JhbXMuCiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX2JpdGZpZWxkcy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3IKJiM0Mztwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfbmFtZXNwYWNpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhY2tpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhZGRpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3N5bnRheC5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3IKJiM0MzsKJiM0MztpZmVxICgkKEJQRl9CVUlMRCksZ2NjKQomIzQzO0JQRl9DQ19NU0cgOj0gR0NDLUJQRgomIzQzOyMgTm90ZTogc3lzIGluY2x1ZGVzIGNvbWUgZnJvbSB0aGUgKmhvc3QqIGdjYywgbm90ICQoQlBGX0dDQykgLSBicGYtZ2NjJiMzOTtzCiYjNDM7IyBvd24gc2VhcmNoIHBhdGggbGFja3MgdGhlIGhvc3QmIzM5O3MgYXNtLWdlbmVyaWMvIGhlYWRlcnMuIENvbXB1dGVkIG9uY2UKJiM0MzsjIGhlcmU6IGJwZl9jYyBiZWxvdyBpcyBkZWZlcnJlZCBhbmQgZXhwYW5kcyBwZXIgY29tcGlsZWQgb2JqZWN0LgomIzQzO0dDQ19TWVNfSU5DTFVERVMgOj0gJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsZ2NjLCkKJiM0MzticGZfY2MgPSAkKEJQRl9HQ0MpICQoQlBGX0NGTEFHUykgJChHQ0NfU1lTX0lOQ0xVREVTKQkJCVwKJiM0MzsJICQoQlBGX0RFRklORVMpICQoJCZsdDstQ0ZMQUdTKSAkKCQmbHQ7LSQoRkxBVk9SKS1DRkxBR1MpCQlcCiYjNDM7CSAtREJQRl9OT19QUkVTRVJWRV9BQ0NFU1NfSU5ERVggLVduby1hdHRyaWJ1dGVzIC1PMiAtYyAkJmx0OyAtbyAkQAomIzQzO2Vsc2UKJiM0MztCUEZfQ0NfTVNHIDo9IENMTkctQlBGCiYjNDM7YnBmX2NjID0gJChDTEFORykgJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykgJChCUEZfREVGSU5FUykJCVwKJiM0MzsJICQoJCZsdDstQ0ZMQUdTKSAkKCQmbHQ7LSQoRkxBVk9SKS1DRkxBR1MpCQkJCVwKJiM0MzsJIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkJmx0OyAtbWNwdT0kKEJQRl9NQ1BVKSAtbyAkQAomIzQzO2VuZGlmCiYjNDM7CiYjNDM7JChCUEZfT0JKUyk6ICQoUkRJUikvJS5icGYubzogcHJvZ3MvJS5jIHByb2dzLyouaAkJCVwKJiM0MzsJICAgICAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChIRUFERVJTX0ZPUl9CUEZfT0JKUykJCVwKJiM0MzsJICAgICB8ICQoUkRJUikgJChCUEZPQkopCiYjNDM7CSQoY2FsbCBtc2csJChCUEZfQ0NfTVNHKSwkKEJJTkFSWSksJEApCiYjNDM7CSQoUSkkKGJwZl9jYykgJChjYWxsIHNraXBfb25fZmFpbCxCUEYpCiYjNDM7CiYjNDM7IyBnZW5fYnBmX3NrZWwuc2ggcGlja3MgdGhlIGJwZnRvb2wgYmluYXJ5IHVwIGZyb20gdGhlIGVudmlyb25tZW50LgomIzQzO2V4cG9ydCBCUEZUT09MCiYjNDM7R0VOX1NLRUwgOj0gLi9nZW5fYnBmX3NrZWwuc2gKJiM0MzsKJiM0MzskKFNLRUxTKTogJChSRElSKS8lLnNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkgfCAkKFJESVIpCiYjNDM7CSQoUSkkKEdFTl9TS0VMKSAtLXRhZyAmIzM5OyQoQklOQVJZKSYjMzk7IC0tbmFtZSAkKiAtLWluZml4IGxpbmtlZAlcCiYjNDM7CQktLXNrZWwgJEAgLS1zdWJza2VsICQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQmbHQ7CQlcCiYjNDM7CQkkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpCiYjNDM7CiYjNDM7JChMU0tFTFNfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKSB8ICQoUkRJUikKJiM0MzsJJChRKSQoR0VOX1NLRUwpIC0tdGFnICYjMzk7JChCSU5BUlkpJiMzOTsgLS1uYW1lICQqX2xza2VsIC0taW5maXggbGxpbmtlZCBcCiYjNDM7CQktLWxza2VsIC0tc2tlbCAkQCAkJmx0OyAkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwpCiYjNDM7CiYjNDM7JChMU0tFTFNfU0lHTkVEX0gpOiAkKFJESVIpLyUubHNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkJXAomIzQzOwkJICAgICQoUFJJVkFURV9LRVkpICQoVkVSSUZJQ0FUSU9OX0NFUlQpIHwgJChSRElSKQomIzQzOwkkKFEpJChHRU5fU0tFTCkgLS10YWcgJiMzOTskKEJJTkFSWSkgKHNpZ25lZCkmIzM5OyAtLW5hbWUgJCpfbHNrZWwJXAomIzQzOwkJLS1pbmZpeCBsbGlua2VkCQkJCQkJXAomIzQzOwkJLS1zaWduICYjMzk7LVMgLWsgJChQUklWQVRFX0tFWSkgLWkgJChWRVJJRklDQVRJT05fQ0VSVCkmIzM5OwlcCiYjNDM7CQktLXNrZWwgJEAgJCZsdDsgJChjYWxsIHNraXBfb25fZmFpbCxTS0VMKQomIzQzOwomIzQzOy5TRUNPTkRFWFBBTlNJT046CiYjNDM7JChMSU5LRURfU0tFTFNfSCk6ICQoUkRJUikvJS5za2VsLmg6ICQkKGFkZHByZWZpeCAkKFJESVIpLywkJCgkJCouc2tlbC5oLWRlcHMpKSBcCiYjNDM7CQkgICAkKEJQRlRPT0wpIHwgJChSRElSKQomIzQzOwkkKFEpJChHRU5fU0tFTCkgLS10YWcgJiMzOTskKEJJTkFSWSkmIzM5OyAtLW5hbWUgJCogLS1pbmZpeCBsaW5rZWQJXAomIzQzOwkJLS1za2VsICRAIC0tc3Vic2tlbCAkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKQkJXAomIzQzOwkJJChhZGRwcmVmaXggJChSRElSKS8sJCgkKi5za2VsLmgtZGVwcykpCQkJXAomIzQzOwkJJChjYWxsIHNraXBfb25fZmFpbCxTS0VMLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKQomIzQzOwomIzQzO2VuZGlmICMgQlBGX0JVSUxEICE9IG5vbmUKJiM0MzsKJiM0MzsuUEhPTlk6IHNrZWxzCiYjNDM7c2tlbHM6ICQoQUxMX1NLRUxTKQomIzQzOwomIzQzOyMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdCBmdWxsCiYjNDM7IyBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciB0aGUgY29ycmVzcG9uZGluZyAlLm8gZmlsZS4KJiM0MzsjIFRoZSB2cGF0aCBkaXJlY3RpdmVzIGluc3RydWN0IG1ha2UgdG8gYWxzbyBzZWFyY2ggZm9yIHNrZWwgZmlsZXMgaW4KJiM0MzsjICQoUkRJUikgaWYgdGhleSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LgomIzQzO3ZwYXRoICUuc2tlbC5oICQoUkRJUikKJiM0Mzt2cGF0aCAlLmxza2VsLmggJChSRElSKQomIzQzO3ZwYXRoICUuc3Vic2tlbC5oICQoUkRJUikKJiM0MzsKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgVGVzdCBvYmplY3RzIGFuZCBydW5uZXIgYmluYXJ5CiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsKJiM0MzskKFJESVIpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogJChSRVNPTFZFX0JURklEUykgJChSRElSKS9idGZfZGF0YS5icGYubwomIzQzOyQoUkRJUikvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiBwcml2YXRlIFRFU1RfTkVFRFNfQlRGSURTID0gMQomIzQzOwomIzQzOyMgQ29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXMuCiYjNDM7IyBOb3RlOiB3ZSBjZCBpbnRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0cwomIzQzOyMgYXJlIGZvdW5kLiBUaGUgJS50ZXN0LmQgZGVwZW5kZW5jeSBmaWxlcyBhcmUgYSBzaWRlIGVmZmVjdCBvZiB0aGUgLU1NRAomIzQzOyMgYmVsb3c7IHRoZSBzZXBhcmF0ZSBuby1yZWNpcGUgcnVsZSBmb3IgdGhlbSBvcmRlcnMgdGhlIGZpcnN0CiYjNDM7IyBjb21waWxhdGlvbiBhZnRlciBza2VsZXRvbiBnZW5lcmF0aW9uIGFuZCByZS1vcmRlcnMgdGVzdCBvYmplY3QKJiM0MzsjIGNvbXBpbGF0aW9uIHdoZW4gaGVhZGVycyBjaGFuZ2UuCiYjNDM7JChURVNUX09CSlMpOiAkKFJESVIpLyUudGVzdC5vOiAkKFRFU1RTX0RJUikvJS5jIHwgJChSRElSKS8lLnRlc3QuZAomIzQzOwkkKGNhbGwgbXNnLFRFU1QtT0JKLCQoQklOQVJZKSwkQCkKJiM0MzsJJChRKShjZCAkKEBEKSAmYW1wOyZhbXA7ICQoQ0MpIC1JLiAkKENGTEFHUykgLU1NRCAtTVQgJEAgLWMgJChDVVJESVIpLyQmbHQ7IC1vICQoQEYpKSBcCiYjNDM7CQkkKGlmICQoUEVSTUlTU0lWRV9URVNUUyksJChjYWxsIHNraXBfb25fZmFpbCxURVNUKSkKJiM0MzsJJChpZiAkKFRFU1RfTkVFRFNfQlRGSURTKSwJCQkJCVwKJiM0MzsJCSQoUSlpZiBbIC1mICRAIF07IHRoZW4JCQkJCVwKJiM0MzsJCSQoaWYgJChmaWx0ZXIgMSwkKFYpKSx0cnVlLHByaW50ZiAmIzM5OyAgJS04cyVzICVzXG4mIzM5OyAmIzM0O0JURklEUyYjMzQ7ICYjMzQ7IFskKEJJTkFSWSldJiMzNDsgJiMzNDskKG5vdGRpciAkQCkmIzM0Oyk7IFwKJiM0MzsJCSQoUkVTT0xWRV9CVEZJRFMpIC0tYnRmICQoUkRJUikvYnRmX2RhdGEuYnBmLm8gJEA7CVwKJiM0MzsJCSQoUkVTT0xWRV9CVEZJRFMpIC0tcGF0Y2hfYnRmaWRzICRALkJURl9pZHMgJEA7CQlcCiYjNDM7CQlmaSkKJiM0MzsKJiM0MzskKFRFU1RfREVQUyk6ICQoUkRJUikvJS50ZXN0LmQ6ICQoVEVTVFNfRElSKS8lLmMgJChFWFRSQV9IRFJTKSAkKEJQRk9CSikgXAomIzQzOwkgICAgICB8ICQoUkRJUikgJChBTExfU0tFTFMpCiYjNDM7CiYjNDM7aW5jbHVkZSAkKHdpbGRjYXJkICQoVEVTVF9ERVBTKSkKJiM0MzsKJiM0MzskKFJESVIpL2ppdF9kaXNhc21faGVscGVycy5vOiBDRkxBR1MgJiM0Mzs9ICQoTExWTV9DRkxBR1MpCiYjNDM7CiYjNDM7JChFWFRSQV9PQkpTKTogJChSRElSKS8lLm86ICUuYyAkKEVYVFJBX0hEUlMpICQoVEVTVFNfSERSKSAkKEJQRk9CSikgfCAkKFJESVIpCiYjNDM7CSQoY2FsbCBtc2csRVhULU9CSiwkKEJJTkFSWSksJEApCiYjNDM7CSQoUSkkKENDKSAkKENGTEFHUykgLWMgJCZsdDsgLW8gJEAKJiM0MzsKJiM0MzskKExJQl9PQkpTKTogJChSRElSKS8lLm86ICQoVE9PTFNESVIpL2xpYi8lLmMgfCAkKFJESVIpCiYjNDM7CSQoY2FsbCBtc2csTElCLU9CSiwkKEJJTkFSWSksJEApCiYjNDM7CSQoUSkkKENDKSAkKENGTEFHUykgLWMgJCZsdDsgLW8gJEAKJiM0MzsKJiM0MzsjIE5vbi1mbGF2b3JlZCBpbi1zcmN0cmVlIGJ1aWxkcyByZWNlaXZlIHNwZWNpYWwgdHJlYXRtZW50LCBpbiBwYXJ0aWN1bGFyCiYjNDM7IyB3ZSBkbyBub3QgbmVlZCB0byBjb3B5IGV4dHJhIHJlc291cmNlcyAoc2VlIGUuZy4gdGVzdF9idGZfZHVtcF9jYXNlKCkpLgomIzQzOy5QSE9OWTogZXh0cmFzCiYjNDM7ZXh0cmFzOiAkKGlmICQoUEVSTUlTU0lWRSksJCh3aWxkY2FyZCAkKEVYVFJBX0ZJTEVTKSksJChFWFRSQV9GSUxFUykpIHwgJChSRElSKQomIzQzO2lmbmVxICgkKEZMQVZPUik6JChPVVRQVVQpLDokKENVUkRJUikpCiYjNDM7aWZuZXEgKCQoc3RyaXAgJChFWFRSQV9GSUxFUykpLCkKJiM0MzsJJChjYWxsIG1zZyxFWFQtQ09QWSwkKEJJTkFSWSksJChub3RkaXIgJChFWFRSQV9GSUxFUykpKQomIzQzOwkkKFEpcnN5bmMgLWFxICQoaWYgJChQRVJNSVNTSVZFKSwtLWlnbm9yZS1taXNzaW5nLWFyZ3MpICQoRVhUUkFfRklMRVMpICQoUkRJUikvCiYjNDM7ZW5kaWYKJiM0MztlbmRpZgomIzQzOwomIzQzOyMgSW4gcGVybWlzc2l2ZSBtb2RlLCBsaW5rIHdoYXRldmVyIHRlc3Qgb2JqZWN0cyB3ZXJlIHN1Y2Nlc3NmdWxseSBidWlsdAomIzQzOyMgKHRoZWlyIGNvbXBpbGF0aW9uIG1heSBoYXZlIGJlZW4gc2tpcHBlZCk7IHRoZSB3aWxkY2FyZCBpbiB0aGUgcmVjaXBlCiYjNDM7IyBwaWNrcyB1cCB0aGUgc3Vydml2b3JzIGF0IGxpbmsgdGltZS4KJiM0MzsjIFByZXJlcXVpc2l0ZSBvcmRlciBpcyBhbHNvIGxpbmsgb3JkZXIgKHRlc3Qgb2JqZWN0cywgZXh0cmEgb2JqZWN0cywKJiM0MzsjIGxpYmJwZiwgbGliIG9iamVjdHMpLgomIzQzOyQoT1VUUFVUKS8kKEJJTkFSWSk6ICQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwsJChURVNUX09CSlMpKQkJXAomIzQzOwkJICAgICAkKEVYVFJBX09CSlMpICQoQlBGT0JKKSAkKExJQl9PQkpTKQkJXAomIzQzOwkJICAgICAkKFRSVU5ORVJfQlBGVE9PTCkgJChPVVRQVVQpL3ZlcmlzdGF0CQlcCiYjNDM7CQkgICAgIHwgZXh0cmFzICQoQlBGX09CSlMpCQkJCVwKJiM0MzsJCSAgICAgJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQoVEVTVF9PQkpTKSkKJiM0MzsJJChjYWxsIG1zZyxCSU5BUlksLCRAKQomIzQzOwkkKFEpJChDQykgJChDRkxBR1MpCQkJCQkJXAomIzQzOwkJJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKSkJXAomIzQzOwkJJChmaWx0ZXIgJS5hICUubywkXikJCQkJCVwKJiM0MzsJCSQoTERMSUJTKSAkKExMVk1fTERMSUJTKSAkKExERkxBR1MpICQoTExWTV9MREZMQUdTKSAtbyAkQAomIzQzOwkkKFEpbG4gLXNmICQoaWYgJChGTEFWT1IpLC4uLC4pL3Rvb2xzL2J1aWxkL2JwZnRvb2wvJChVU0VfQk9PVFNUUkFQKWJwZnRvb2wgXAomIzQzOwkJICAgJChSRElSKS9icGZ0b29sCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMC4uMGIyMzdmNjM5NjdkZDYKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoCkBAIC0wLDAgJiM0MzsxLDk3IEBACiYjNDM7IyEvYmluL2Jhc2gKJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7IwomIzQzOyMgTGluayBCUEYgb2JqZWN0IGZpbGUocykgd2l0aCAmIzM0O2JwZnRvb2wgZ2VuIG9iamVjdCYjMzQ7IGFuZCBnZW5lcmF0ZSBhCiYjNDM7IyBza2VsZXRvbiAob3IgbGlnaHQgc2tlbGV0b24pIGhlYWRlciBmcm9tIHRoZSByZXN1bHQuCiYjNDM7IwomIzQzOyMgVXNhZ2U6CiYjNDM7IyAgIEJQRlRPT0w9Jmx0O2JwZnRvb2wmZ3Q7IGdlbl9icGZfc2tlbC5zaCAtLW5hbWUgTkFNRSAtLXNrZWwgT1VUIFtvcHRpb25zXSBPQkouLi4KJiM0MzsjCiYjNDM7IyAgIC0tbmFtZSBOQU1FICAgICAgIHNrZWxldG9uIG9iamVjdCBuYW1lICgmIzM0O25hbWUgTkFNRSYjMzQ7IGZvciBicGZ0b29sKQomIzQzOyMgICAtLXNrZWwgT1VUICAgICAgICBvdXRwdXQgaGVhZGVyICgmIzM0O2Zvby5za2VsLmgmIzM0OyBvciAmIzM0O2Zvby5sc2tlbC5oJiMzNDspCiYjNDM7IyAgIC0tc3Vic2tlbCBPVVQgICAgIGFsc28gZ2VuZXJhdGUgYSBzdWJza2VsZXRvbiBoZWFkZXIgaW50byBPVVQKJiM0MzsjICAgLS1sc2tlbCAgICAgICAgICAgZ2VuZXJhdGUgYSBsaWdodCBza2VsZXRvbiAoYnBmdG9vbCBnZW4gc2tlbGV0b24gLUwpCiYjNDM7IyAgIC0tc2lnbiAmIzM5O0FSR1MmIzM5OyAgICAgZXh0cmEgJiMzNDtnZW4gc2tlbGV0b24mIzM0OyBhcmdzIGZvciBzaWduaW5nICgtUyAtayAuLiAtaSAuLikKJiM0MzsjICAgLS10YWcgVEFHICAgICAgICAgYnVpbGQtbG9nIHRhZywgZS5nLiAmIzM0O3Rlc3RfcHJvZ3Mtbm9fYWx1MzImIzM0OwomIzQzOyMgICAtLWluZml4IFNUUiAgICAgICBpbnRlcm1lZGlhdGUgZmlsZSBpbmZpeCAoZGVmYXVsdDogbGlua2VkKS4gQ2FsbGVycwomIzQzOyMgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW5nIGJvdGggYSAuc2tlbC5oIGFuZCBhIC5sc2tlbC5oIGZyb20gdGhlCiYjNDM7IyAgICAgICAgICAgICAgICAgICAgIHNhbWUgLmJwZi5vIE1VU1QgdXNlIGRpc3RpbmN0IGluZml4ZXMsIG9yIHBhcmFsbGVsCiYjNDM7IyAgICAgICAgICAgICAgICAgICAgIGJ1aWxkcyByYWNlIG9uIHRoZSBpbnRlcm1lZGlhdGUgZmlsZXMuCiYjNDM7IyAgIC0tbm8tZGV0ZXJtaW5pc20tY2hlY2sKJiM0MzsjICAgICAgICAgICAgICAgICAgICAgbGluayB0aGUgaW5wdXRzIG9uY2UgaW5zdGVhZCBvZiB0aHJlZSB0aW1lcy4KJiM0MzsjICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCB0aGUgb2JqZWN0IGlzIHJlLWxpbmtlZCB0d2ljZSBtb3JlIGFuZAomIzQzOyMgICAgICAgICAgICAgICAgICAgICB0aGUgMm5kIGFuZCAzcmQgcmVzdWx0cyBjb21wYXJlZCwgYXMgYSByZWdyZXNzaW9uCiYjNDM7IyAgICAgICAgICAgICAgICAgICAgIHRlc3QgZm9yIHRoZSBkZXRlcm1pbmlzbSBvZiAmIzM0O2JwZnRvb2wgZ2VuIG9iamVjdCYjMzQ7LgomIzQzOyMKJiM0MzsjIFRoZSBicGZ0b29sIGJpbmFyeSBpcyB0YWtlbiBmcm9tICRCUEZUT09MIChkZWZhdWx0OiBicGZ0b29sIGZyb20gUEFUSCkuCiYjNDM7IyBPbiBmYWlsdXJlIGFsbCBvdXRwdXRzIGFuZCBpbnRlcm1lZGlhdGVzIGFyZSByZW1vdmVkIGFuZCB0aGUgc2NyaXB0CiYjNDM7IyBleGl0cyBub24temVybzsgcGVybWlzc2l2ZS1tb2RlIHNraXBwaW5nIGlzIHRoZSBjYWxsZXImIzM5O3MgYnVzaW5lc3MKJiM0MzsjIChzZWUgc2tpcF9vbl9mYWlsIGluIE1ha2VmaWxlLmJ1aWxkdmFycykuCiYjNDM7CiYjNDM7c2V0IC11CiYjNDM7CiYjNDM7YnBmdG9vbD0ke0JQRlRPT0w6LWJwZnRvb2x9CiYjNDM7bmFtZT0mIzM5OyYjMzk7IHNrZWw9JiMzOTsmIzM5OyBzdWJza2VsPSYjMzk7JiMzOTsgdGFnPSYjMzk7JiMzOTsgc2lnbl9hcmdzPSYjMzk7JiMzOTsgaW5maXg9bGlua2VkCiYjNDM7bHNrZWw9MCBkZXRfY2hlY2s9MQomIzQzOwomIzQzO3doaWxlIFsgJCMgLWd0IDAgXTsgZG8KJiM0MzsJY2FzZSAmIzM0OyQxJiMzNDsgaW4KJiM0MzsJLS1uYW1lKQkJbmFtZT0kMjsgc2hpZnQgMiA7OwomIzQzOwktLXNrZWwpCQlza2VsPSQyOyBzaGlmdCAyIDs7CiYjNDM7CS0tc3Vic2tlbCkJc3Vic2tlbD0kMjsgc2hpZnQgMiA7OwomIzQzOwktLXRhZykJCXRhZz0kMjsgc2hpZnQgMiA7OwomIzQzOwktLWluZml4KQlpbmZpeD0kMjsgc2hpZnQgMiA7OwomIzQzOwktLXNpZ24pCQlzaWduX2FyZ3M9JDI7IHNoaWZ0IDIgOzsKJiM0MzsJLS1sc2tlbCkJbHNrZWw9MTsgc2hpZnQgOzsKJiM0MzsJLS1uby1kZXRlcm1pbmlzbS1jaGVjaykgZGV0X2NoZWNrPTA7IHNoaWZ0IDs7CiYjNDM7CS0tKQkJc2hpZnQ7IGJyZWFrIDs7CiYjNDM7CS0qKQkJZWNobyAmIzM0OyQwOiB1bmtub3duIG9wdGlvbjogJDEmIzM0OyAmZ3Q7JmFtcDsyOyBleGl0IDEgOzsKJiM0MzsJKikJCWJyZWFrIDs7CiYjNDM7CWVzYWMKJiM0Mztkb25lCiYjNDM7CiYjNDM7aWYgWyAteiAmIzM0OyRuYW1lJiMzNDsgXSB8fCBbIC16ICYjMzQ7JHNrZWwmIzM0OyBdIHx8IFsgJCMgLWVxIDAgXTsgdGhlbgomIzQzOwllY2hvICYjMzQ7dXNhZ2U6ICQwIC0tbmFtZSBOQU1FIC0tc2tlbCBPVVQgW29wdGlvbnNdIE9CSi4uLiYjMzQ7ICZndDsmYW1wOzIKJiM0MzsJZXhpdCAxCiYjNDM7ZmkKJiM0MzsKJiM0MztiYXNlPSR7c2tlbCUuc2tlbC5ofQomIzQzO2Jhc2U9JHtiYXNlJS5sc2tlbC5ofQomIzQzO3QxPSRiYXNlLiR7aW5maXh9MS5vCiYjNDM7dDI9JGJhc2UuJHtpbmZpeH0yLm8KJiM0Mzt0Mz0kYmFzZS4ke2luZml4fTMubwomIzQzOwomIzQzO2ZhaWwoKSB7CiYjNDM7CXJtIC1mICYjMzQ7JHNrZWwmIzM0OyAke3N1YnNrZWw6JiM0MzsmIzM0OyRzdWJza2VsJiMzNDt9ICYjMzQ7JHQxJiMzNDsgJiMzNDskdDImIzM0OyAmIzM0OyR0MyYjMzQ7CiYjNDM7CWV4aXQgMQomIzQzO30KJiM0MzsKJiM0MztpZiBbICQjIC1ndCAxIF07IHRoZW4KJiM0MzsJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtMSU5LLUJQRiYjMzk7ICYjMzQ7JHt0YWc6JiM0MztbJHRhZ10gfSQoYmFzZW5hbWUgJiMzNDskYmFzZSYjMzQ7KS5icGYubyYjMzQ7ICZndDsmYW1wOzIKJiM0MztmaQomIzQzO3ByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyAmIzM0OyR7dGFnOiYjNDM7WyR0YWddIH0kKGJhc2VuYW1lICYjMzQ7JHNrZWwmIzM0OykmIzM0OyAmZ3Q7JmFtcDsyCiYjNDM7CiYjNDM7JiMzNDskYnBmdG9vbCYjMzQ7IGdlbiBvYmplY3QgJiMzNDskdDEmIzM0OyAmIzM0OyRAJiMzNDsgfHwgZmFpbAomIzQzO2ZpbmFsPSR0MQomIzQzO2lmIFsgJiMzNDskZGV0X2NoZWNrJiMzNDsgLWVxIDEgXTsgdGhlbgomIzQzOwkmIzM0OyRicGZ0b29sJiMzNDsgZ2VuIG9iamVjdCAmIzM0OyR0MiYjMzQ7ICYjMzQ7JHQxJiMzNDsgfHwgZmFpbAomIzQzOwkmIzM0OyRicGZ0b29sJiMzNDsgZ2VuIG9iamVjdCAmIzM0OyR0MyYjMzQ7ICYjMzQ7JHQyJiMzNDsgfHwgZmFpbAomIzQzOwlpZiAhIGNtcCAtcyAmIzM0OyR0MiYjMzQ7ICYjMzQ7JHQzJiMzNDs7IHRoZW4KJiM0MzsJCWVjaG8gJiMzNDskMDogYnBmdG9vbCBnZW4gb2JqZWN0IGlzIG5vdCBkZXRlcm1pbmlzdGljIGZvciAkc2tlbCYjMzQ7ICZndDsmYW1wOzIKJiM0MzsJCWZhaWwKJiM0MzsJZmkKJiM0MzsJZmluYWw9JHQzCiYjNDM7ZmkKJiM0MzsKJiM0MztmbGFncz0KJiM0MztbICYjMzQ7JGxza2VsJiMzNDsgLWVxIDEgXSAmYW1wOyZhbXA7IGZsYWdzPS1MCiYjNDM7IyAkc2lnbl9hcmdzIGludGVudGlvbmFsbHkgdW5xdW90ZWQ6IGl0IGlzIGEgbGlzdCBvZiBicGZ0b29sIGFyZ3VtZW50cwomIzQzOyMgc2hlbGxjaGVjayBkaXNhYmxlPVNDMjA4NgomIzQzOyYjMzQ7JGJwZnRvb2wmIzM0OyBnZW4gc2tlbGV0b24gJHNpZ25fYXJncyAkZmxhZ3MgJiMzNDskZmluYWwmIzM0OyBuYW1lICYjMzQ7JG5hbWUmIzM0OyAmZ3Q7ICYjMzQ7JHNrZWwmIzM0OyB8fCBmYWlsCiYjNDM7CiYjNDM7aWYgWyAtbiAmIzM0OyRzdWJza2VsJiMzNDsgXTsgdGhlbgomIzQzOwkmIzM0OyRicGZ0b29sJiMzNDsgZ2VuIHN1YnNrZWxldG9uICYjMzQ7JGZpbmFsJiMzNDsgbmFtZSAmIzM0OyRuYW1lJiMzNDsgJmd0OyAmIzM0OyRzdWJza2VsJiMzNDsgfHwgZmFpbAomIzQzO2ZpCiYjNDM7CiYjNDM7cm0gLWYgJiMzNDskdDEmIzM0OyAmIzM0OyR0MiYjMzQ7ICYjMzQ7JHQzJiMzNDsKJiM0MztleGl0IDAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTM6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEzNjgKCQkJCQkJCW91dHB1dDogNjQKCQkJCQkJCXRob3VnaHRzOiAyNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBUaGlzIEJQRiBTZWxmdGVzdHMgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggaGVyZSwgYW5kIGl0JiMzOTtzIGFsbCBhYm91dCByZWZhY3RvcmluZyB0aGUgYnVpbGQgc3lzdGVtIGZvciB0aGUgQlBGIHNlbGZ0ZXN0cy4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBtZXNzaW5nIHdpdGggdGhlIGBNYWtlZmlsZWAgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBUaGV5JiMzOTtyZSBzcGxpdHRpbmcgaXQgdXAgaW50byBgTWFrZWZpbGUuYnVpbGR2YXJzYCwgYE1ha2VmaWxlLnJ1bm5lcmAsIGFuZCBhZGRpbmcgYGdlbl9icGZfc2tlbC5zaGAuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgYXBwcm9hY2ggZm9yIGNvbXBsZXggYnVpbGQgc3lzdGVtczsgaXQgbWFrZXMgdGhpbmdzIG1vcmUgb3JnYW5pemVkIGFuZCBwb3RlbnRpYWxseSBzcGVlZHMgdXAgcGFyYWxsZWwgYnVpbGRzLCB3aGljaCBJIGFwcHJlY2lhdGUuCgpJJiMzOTt2ZSB0YWtlbiBhIGNsb3NlIGxvb2ssIGFuZCBjb25maXJtZWQgdGhhdCB0aGUgY2hhbmdlcyBhcmUgaXNvbGF0ZWQgdG8gdGhpcyB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLiBJdCBkb2VzbiYjMzk7dCB0b3VjaCBhbnkgY29yZSBrZXJuZWwgY29kZSwgYW55IGRyaXZlcnMsIG9yIGFueXRoaW5nIGFyY2hpdGVjdHVyZS1zcGVjaWZpYy4gSXQmIzM5O3Mgc3RyaWN0bHkgYWJvdXQgaG93IHRoZSB0ZXN0cyB0aGVtc2VsdmVzIGFyZSBidWlsdCBhbmQgcnVuLgoKVGhlcmVmb3JlLCBnaXZlbiB0aGF0IGl0JiMzOTtzIGp1c3QgYnVpbGQgc3lzdGVtIGNoYW5nZXMgZm9yIHNlbGZ0ZXN0cywgSSYjMzk7bSBnb2luZyB0byBmbGFnIHRoaXMgYXMgbm90IGJlaW5nIHJlbGV2YW50IGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDEzOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgYnVpbGQgc3lzdGVtIGZvciBCUEYgc2VsZnRlc3RzIChNYWtlZmlsZXMgYW5kIGEgc2hlbGwgc2NyaXB0KS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGJ1aWxkIHN5c3RlbSBmb3IgQlBGIHNlbGZ0ZXN0cyAoTWFrZWZpbGVzIGFuZCBhIHNoZWxsIHNjcmlwdCkuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjJUMTM6Mjk6MjMuNTQ3NDM3NDA5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ4MTgxMDI1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgYnVpbGQgc3lzdGVtIGZvciBCUEYgc2VsZnRlc3RzIChNYWtlZmlsZXMgYW5kIGEgc2hlbGwgc2NyaXB0KS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEzOjI5OjIzLjU0NzQ0Mzk0OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODEwNDcyMzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGUwY2E5MGJiN2ZhMzczZWM4ZjdlNGZmMTc2NGY4MWVhYmNjYTk2NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAyMiAxMzoyOToyMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcXG5pbmRleCBiNjQyZWU0ODllYTY0MC4uYTNhYjUyNWY3ZGZhYmIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXFxuQEAgLTEsOTYgKzEsNDQgQEBcXG4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjXFxuKyMgQlBGIHNlbGZ0ZXN0cyBidWlsZC5cXG4rI1xcbisjIFRoZSBidWlsZCBpcyBzcGxpdCBpbiB0d28gbGF5ZXJzOlxcbisjXFxuKyMgICBNYWtlZmlsZSAodGhpcyBmaWxlKVxcbisjICAgICAgIEV2ZXJ5dGhpbmcgdGhhdCBleGlzdHMgb25jZToga25vYnMgYW5kIHRvb2xjaGFpbiBzZXR1cCwgbGliYnBmIC9cXG4rIyAgICAgICBicGZ0b29sIC8gcmVzb2x2ZV9idGZpZHMgc3ViLWJ1aWxkcywgdm1saW51eC5oLCBzaWduaW5nIGtleXMsXFxuKyMgICAgICAgZ2VuZXJhdGVkIHRlc3RzLmggaGVhZGVycywgc2hhcmVkIGhlbHBlciBvYmplY3RzLCBzdGFuZGFsb25lIHRlc3RcXG4rIyAgICAgICBiaW5hcmllcyAoYmVuY2gsIHZlcmlzdGF0LCB0ZXN0X3ZlcmlmaWVyLCB4c2sqLCAuLi4pLCBrZXJuZWwgdGVzdFxcbisjICAgICAgIG1vZHVsZXMsIGRvY3MsIGFuZCB0aGUga3NlbGZ0ZXN0IGxpYi5tayBydW4vaW5zdGFsbC9jbGVhblxcbisjICAgICAgIGNvbnRyYWN0LlxcbisjXFxuKyMgICBNYWtlZmlsZS5ydW5uZXJcXG4rIyAgICAgICBPbmUgdGVzdC1ydW5uZXIgaW5zdGFuY2UgKHRlc3RfcHJvZ3MsIHRlc3RfcHJvZ3MtXFx1MDAzY2ZsYXZvclxcdTAwM2UsXFxuKyMgICAgICAgdGVzdF9tYXBzKTogQlBGIG9iamVjdHMsIHNrZWxldG9uIGhlYWRlcnMsIHRlc3Qgb2JqZWN0cyBhbmQgdGhlXFxuKyMgICAgICAgZmluYWwgcnVubmVyIGJpbmFyeS4gSW52b2tlZCBmcm9tIGhlcmUgb25jZSBwZXIgaW5zdGFuY2U7IGVhY2hcXG4rIyAgICAgICBpbnZvY2F0aW9uIGlzIGFuIGluZGVwZW5kZW50IHNpbmdsZS1mbGF2b3IgbmFtZXNwYWNlLCBzbyB0aGVcXG4rIyAgICAgICBydW5uZXIgaXMgcGxhaW4gbWFrZSB3aXRob3V0ICQkLWVzY2FwaW5nIG9yIGV2YWwuXFxuKyNcXG4rIyAgIGdlbl9icGZfc2tlbC5zaFxcbisjICAgICAgIExpbmtzIEJQRiBvYmplY3RzIHZpYSBicGZ0b29sIGFuZCBnZW5lcmF0ZXMgKGxpZ2h0KSBza2VsZXRvbnM7XFxuKyMgICAgICAgb25lIHNjcmlwdCBpbnN0ZWFkIG9mIGZvdXIgbmVhci1pZGVudGljYWwgbWFrZSByZWNpcGVzLlxcbisjXFxuKyMgU2hhcmVkIGRlZmluaXRpb25zIChwYXRocywgZmxhZ3MsIHBlcm1pc3NpdmUtbW9kZSBoZWxwZXJzKSBsaXZlIGluXFxuKyMgTWFrZWZpbGUuYnVpbGR2YXJzLCBpbmNsdWRlZCBieSBib3RoIGxheWVycy5cXG4rXFxuIGluY2x1ZGUgLi4vLi4vLi4vYnVpbGQvQnVpbGQuaW5jbHVkZVxcbiBpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuYXJjaFxcbiBpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZVxcbiBcXG4tQ1hYID89ICQoQ1JPU1NfQ09NUElMRSlnKytcXG4tT0JKQ09QWSA/PSAkKENST1NTX0NPTVBJTEUpb2JqY29weVxcbi1cXG4tQ1VSRElSIDo9ICQoYWJzcGF0aCAuKVxcbi1UT09MU0RJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4pXFxuLUxJQkRJUiA6PSAkKFRPT0xTRElSKS9saWJcXG4tQlBGRElSIDo9ICQoTElCRElSKS9icGZcXG4tVE9PTFNJTkNESVIgOj0gJChUT09MU0RJUikvaW5jbHVkZVxcbi1UT09MU0FSQ0hJTkNESVIgOj0gJChUT09MU0RJUikvYXJjaC8kKFNSQ0FSQ0gpL2luY2x1ZGVcXG4tQlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbFxcbi1BUElESVIgOj0gJChUT09MU0lOQ0RJUikvdWFwaVxcbi1pZm5lcSAoJChPKSwpXFxuLUdFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkXFxuLWVsc2VcXG4tR0VORElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLi8uLi9pbmNsdWRlL2dlbmVyYXRlZClcXG4tZW5kaWZcXG4tR0VOSERSIDo9ICQoR0VORElSKS9hdXRvY29uZi5oXFxuLVBLR19DT05GSUcgPz0gJChDUk9TU19DT01QSUxFKXBrZy1jb25maWdcXG4tXFxuLWlmbmVxICgkKHdpbGRjYXJkICQoR0VOSERSKSksKVxcbi0gIEdFTkZMQUdTIDo9IC1ESEFWRV9HRU5IRFJcXG4rIyBUaGVzZSBwcm9iZXMgZ2F0ZSB0aGUgZmxhdm9yIGxpc3QsIHdoaWNoIG11c3QgYmUgZmluYWwgYmVmb3JlIGxpYi5tayBpc1xcbisjIGluY2x1ZGVkOyBrZWVwIHZhbHVlcyBjb25zaXN0ZW50IHdpdGggTWFrZWZpbGUuYnVpbGR2YXJzLlxcbitpZmVxICgkKG9yaWdpbiBCUEZfR0NDKSx1bmRlZmluZWQpXFxuK0JQRl9HQ0MgOj0gJChzaGVsbCBjb21tYW5kIC12IGJwZi1nY2M7KVxcbiBlbmRpZlxcbi1cXG4tQlBGX0dDQ1xcdFxcdD89ICQoc2hlbGwgY29tbWFuZCAtdiBicGYtZ2NjOylcXG4taWZkZWYgQVNBTlxcbi1TQU5fQ0ZMQUdTIFxcdD89IC1mc2FuaXRpemU9YWRkcmVzcyAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclxcbi1lbHNlXFxuLVNBTl9DRkxBR1NcXHQ/PVxcbi1lbmRpZlxcbi1TQU5fTERGTEFHU1xcdD89ICQoU0FOX0NGTEFHUylcXG4tUkVMRUFTRVxcdFxcdD89XFxuLU9QVF9GTEFHU1xcdD89ICQoaWYgJChSRUxFQVNFKSwtTzIsLU8wKVxcbi1cXG4tTElCRUxGX0NGTEFHU1xcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1jZmxhZ3MgMlxcdTAwM2UvZGV2L251bGwpXFxuLUxJQkVMRl9MSUJTXFx0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWxpYnMgMlxcdTAwM2UvZGV2L251bGwgfHwgZWNobyAtbGVsZilcXG4tXFxuLVNLSVBfRE9DU1xcdD89XFxuLVNLSVBfTExWTVxcdD89XFxuLVNLSVBfTElCQkZEXFx0Pz1cXG4tU0tJUF9DUllQVE9cXHQ/PVxcbi1cXG4tIyBXaGVuIEJQRl9TVFJJQ1RfQlVJTEQgaXMgMSwgYW55IEJQRiBvYmplY3QsIHNrZWxldG9uLCB0ZXN0IG9iamVjdCwgb3JcXG4tIyBiZW5jaG1hcmsgY29tcGlsYXRpb24gZmFpbHVyZSBpcyBmYXRhbC4gU2V0IHRvIDAgdG8gdG9sZXJhdGUgZmFpbHVyZXNcXG4tIyBhbmQgY29udGludWUgYnVpbGRpbmcgdGhlIHJlbWFpbmluZyB0ZXN0cy5cXG4tQlBGX1NUUklDVF9CVUlMRCA/PSAxXFxuLVBFUk1JU1NJVkUgOj0gJChmaWx0ZXIgMCwkKEJQRl9TVFJJQ1RfQlVJTEQpKVxcbi1cXG4taWZlcSAoJChzcmN0cmVlKSwpXFxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoQ1VSRElSKSkpXFxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcXG4tc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpXFxuLWVuZGlmXFxuLVxcbi1DT01NT05fQ0ZMQUdTID0gLWcgJChPUFRfRkxBR1MpIC1yZHluYW1pYyAtc3RkPWdudTExXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHQgIC1XYWxsIC1XZXJyb3IgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAkKEdFTkZMQUdTKSAkKFNBTl9DRkxBR1MpICQoTElCRUxGX0NGTEFHUylcXHRcXHRcXHRcXFxcXFxuLVxcdCAgLUkkKENVUkRJUikgLUkkKElOQ0xVREVfRElSKSAtSSQoR0VORElSKSAtSSQoTElCRElSKVxcdFxcdFxcXFxcXG4tXFx0ICAtSSQoVE9PTFNJTkNESVIpIC1JJChUT09MU0FSQ0hJTkNESVIpIC1JJChBUElESVIpIC1JJChPVVRQVVQpXFx0XFxcXFxcbi1cXHQgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcXG4tTERGTEFHUyArPSAkKFNBTl9MREZMQUdTKVxcbi1MRExJQlMgKz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkXFxuLVxcbi1QQ0FQX0NGTEFHU1xcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJwY2FwIDJcXHUwMDNlL2Rldi9udWxsIFxcdTAwMjZcXHUwMDI2IGVjaG8gXFxcIi1EVFJBRkZJQ19NT05JVE9SPTFcXFwiKVxcbi1QQ0FQX0xJQlNcXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYnBjYXAgMlxcdTAwM2UvZGV2L251bGwpXFxuLUxETElCUyArPSAkKFBDQVBfTElCUylcXG4tQ0ZMQUdTICs9ICQoQ09NTU9OX0NGTEFHUykgJChQQ0FQX0NGTEFHUylcXG4tXFxuLSMgU29tZSB1dGlsaXR5IGZ1bmN0aW9ucyB1c2UgTExWTSBsaWJyYXJpZXNcXG4taml0X2Rpc2FzbV9oZWxwZXJzLmMtQ0ZMQUdTID0gJChMTFZNX0NGTEFHUylcXG4tXFxuLWlmbmVxICgkKExMVk0pLClcXG4tIyBTaWxlbmNlIHNvbWUgd2FybmluZ3Mgd2hlbiBjb21waWxlZCB3aXRoIGNsYW5nXFxuLUNGTEFHUyArPSAtV25vLXVudXNlZC1jb21tYW5kLWxpbmUtYXJndW1lbnRcXG4tZW5kaWZcXG4tXFxuLSMgQ2hlY2sgd2hldGhlciBicGYgY3B1PXY0IGlzIHN1cHBvcnRlZCBvciBub3QgYnkgY2xhbmdcXG4gaWZuZXEgKCQoc2hlbGwgJChDTEFORykgLS10YXJnZXQ9YnBmIC1tY3B1PWhlbHAgMlxcdTAwM2VcXHUwMDI2MSB8IGdyZXAgJ3Y0JyksKVxcbiBDTEFOR19DUFVWNCA6PSAxXFxuIGVuZGlmXFxuIFxcbi0jIENoZWNrIHdoZXRoZXIgY2xhbmcgc3VwcG9ydHMgQlBGIGFkZHJlc3Mgc2FuaXRpemVyIChyZXF1aXJlcyBMTFZNIDIyKylcXG4tQ0xBTkdfSEFTX0FSRU5BX0FTQU4gOj0gJChzaGVsbCBlY2hvICdpbnQgeDsnIHwgXFxcXFxcbi1cXHQkKENMQU5HKSAtLXRhcmdldD1icGYgLWZzYW5pdGl6ZT1rZXJuZWwtYWRkcmVzcyBcXFxcXFxuLVxcdC1tbGx2bSAtYXNhbi1zaGFkb3ctYWRkci1zcGFjZT0xIFxcXFxcXG4tXFx0LXggYyAtYyAtIC1vIC9kZXYvbnVsbCAyXFx1MDAzZS9kZXYvbnVsbCBcXHUwMDI2XFx1MDAyNiBlY2hvIDEpXFxuLVxcbiAjIE9yZGVyIGNvcnJlc3BvbmQgdG8gJ21ha2UgcnVuX3Rlc3RzJyBvcmRlclxcbiBURVNUX0dFTl9QUk9HUyA9IHRlc3RfdmVyaWZpZXIgdGVzdF90YWcgdGVzdF9tYXBzIHRlc3RfbHJ1X21hcCB0ZXN0X3Byb2dzIFxcXFxcXG4gXFx0dGVzdF9zb2NrbWFwIFxcXFxcXG5AQCAtMTAyLDE2ICs1MCw2IEBAIFRFU1RfSU5TVF9TVUJESVJTIDo9IG5vX2FsdTMyXFxuIGlmbmVxICgkKEJQRl9HQ0MpLClcXG4gVEVTVF9HRU5fUFJPR1MgKz0gdGVzdF9wcm9ncy1icGZfZ2NjXFxuIFRFU1RfSU5TVF9TVUJESVJTICs9IGJwZl9nY2NcXG4tXFxuLSMgVGhlIGZvbGxvd2luZyB0ZXN0cyBjb250YWluIEMgY29kZSB0aGF0LCBhbHRob3VnaCB0ZWNobmljYWxseSBsZWdhbCxcXG4tIyB0cmlnZ2VycyBHQ0Mgd2FybmluZ3MgdGhhdCBjYW5ub3QgYmUgZGlzYWJsZWQ6IGRlY2xhcmF0aW9uIG9mXFxuLSMgYW5vbnltb3VzIHN0cnVjdCB0eXBlcyBpbiBmdW5jdGlvbiBwYXJhbWV0ZXIgbGlzdHMuXFxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9uYW1lc3BhY2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhY2tpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2Vfc3ludGF4LmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbi1cXG4gZW5kaWZcXG4gXFxuIGlmbmVxICgkKENMQU5HX0NQVVY0KSwpXFxuQEAgLTEzMiwxMCArNzAsNiBAQCBURVNUX1BST0dTIDo9IHRlc3Rfa21vZC5zaCBcXFxcXFxuIFRFU1RfUFJPR1NfRVhURU5ERUQgOj0gXFxcXFxcbiBcXHRpbWFfc2V0dXAuc2ggdmVyaWZ5X3NpZ19zZXR1cC5zaFxcbiBcXG4tVEVTVF9LTU9EUyA6PSBicGZfdGVzdG1vZC5rbyBicGZfdGVzdF9ub19jZmkua28gYnBmX3Rlc3RfbW9kb3JkZXJfeC5rbyBcXFxcXFxuLVxcdGJwZl90ZXN0X21vZG9yZGVyX3kua28gYnBmX3Rlc3RfcnFzcGlubG9jay5rb1xcbi1URVNUX0tNT0RfVEFSR0VUUyA9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sJChURVNUX0tNT0RTKSlcXG4tXFxuICMgQ29tcGlsZSBidXQgbm90IHBhcnQgb2YgJ21ha2UgcnVuX3Rlc3RzJ1xcbiBURVNUX0dFTl9QUk9HU19FWFRFTkRFRCA9IFxcXFxcXG4gXFx0YmVuY2ggXFxcXFxcbkBAIC0xNDgsMTEgKzgyLDEwIEBAIFRFU1RfR0VOX1BST0dTX0VYVEVOREVEID0gXFxcXFxcbiBcXHR4ZHBfc3lucHJveHkgXFxcXFxcbiBcXHR4c2t4Y2VpdmVyXFxuIFxcbi1URVNUX0dFTl9GSUxFUyArPSAkKFRFU1RfS01PRFMpIGxpYnVyYW5kb21fcmVhZC5zbyB1cmFuZG9tX3JlYWQgc2lnbi1maWxlIHVwcm9iZV9tdWx0aVxcbitURVNUX0tNT0RTID89IGJwZl90ZXN0bW9kLmtvIGJwZl90ZXN0X25vX2NmaS5rbyBicGZfdGVzdF9tb2RvcmRlcl94LmtvIFxcXFxcXG4rXFx0YnBmX3Rlc3RfbW9kb3JkZXJfeS5rbyBicGZfdGVzdF9ycXNwaW5sb2NrLmtvXFxuIFxcbi1pZm5lcSAoJChWKSwxKVxcbi1zdWJtYWtlX2V4dHJhcyA6PSBmZWF0dXJlX2Rpc3BsYXk9MFxcbi1lbmRpZlxcbitURVNUX0dFTl9GSUxFUyArPSAkKFRFU1RfS01PRFMpIGxpYnVyYW5kb21fcmVhZC5zbyB1cmFuZG9tX3JlYWQgc2lnbi1maWxlIHVwcm9iZV9tdWx0aVxcbiBcXG4gIyBvdmVycmlkZSBsaWIubWsncyBkZWZhdWx0IHJ1bGVzXFxuIE9WRVJSSURFX1RBUkdFVFMgOj0gMVxcbkBAIC0xNzEsNyArMTA0LDcgQEAgZW5kZWZcXG4gaW5jbHVkZSAuLi9saWIubWtcXG4gXFxuIE5PTl9DSEVDS19GRUFUX1RBUkdFVFMgOj0gY2xlYW4gZG9jcy1jbGVhbiBlbWl0X3Rlc3RzXFxuLUNIRUNLX0ZFQVQgOj0gJChmaWx0ZXItb3V0ICQoTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyksJChvciAkKE1BS0VDTURHT0FMUyksIFxcXCJub25lXFxcIikpXFxuK0NIRUNLX0ZFQVQgOj0gJChmaWx0ZXItb3V0ICQoTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyksJChvciAkKE1BS0VDTURHT0FMUyksYWxsKSlcXG4gaWZuZXEgKCQoQ0hFQ0tfRkVBVCksKVxcbiBGRUFUVVJFX1VTRVIgOj0gLnNlbGZ0ZXN0c1xcbiBGRUFUVVJFX1RFU1RTIDo9IGxsdm1cXG5AQCAtMTg4LDYgKzEyMSw4IEBAIG92ZXJyaWRlIE9VVFBVVCA6PSAkKHBhdHN1YnN0ICUvLCUsJChPVVRQVVQpKVxcbiBlbmRpZlxcbiBlbmRpZlxcbiBcXG4raW5jbHVkZSBNYWtlZmlsZS5idWlsZHZhcnNcXG4rXFxuIGlmbmVxICgkKFNLSVBfTExWTSksMSlcXG4gaWZlcSAoJChmZWF0dXJlLWxsdm0pLDEpXFxuICAgTExWTV9DRkxBR1MgICs9IC1ESEFWRV9MTFZNX1NVUFBPUlRcXG5AQCAtMjEzLDM2ICsxNDgsMTEgQEAgaWZlcSAoJChmZWF0dXJlLWxsdm0pLDEpXFxuIGVuZGlmXFxuIGVuZGlmXFxuIFxcbi1TQ1JBVENIX0RJUiA6PSAkKE9VVFBVVCkvdG9vbHNcXG4tQlVJTERfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2J1aWxkXFxuLUlOQ0xVREVfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2luY2x1ZGVcXG4tQlBGT0JKIDo9ICQoQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcXG4taWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxcbi1IT1NUX0JVSUxEX0RJUlxcdFxcdDo9ICQoQlVJTERfRElSKS9ob3N0XFxuLUhPU1RfU0NSQVRDSF9ESVJcXHQ6PSAkKE9VVFBVVCkvaG9zdC10b29sc1xcbi1IT1NUX0lOQ0xVREVfRElSXFx0Oj0gJChIT1NUX1NDUkFUQ0hfRElSKS9pbmNsdWRlXFxuLWVsc2VcXG4tSE9TVF9CVUlMRF9ESVJcXHRcXHQ6PSAkKEJVSUxEX0RJUilcXG4tSE9TVF9TQ1JBVENIX0RJUlxcdDo9ICQoU0NSQVRDSF9ESVIpXFxuLUhPU1RfSU5DTFVERV9ESVJcXHQ6PSAkKElOQ0xVREVfRElSKVxcbi1lbmRpZlxcbi1IT1NUX0JQRk9CSiA6PSAkKEhPU1RfQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcXG4tUkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHNcXG4tVk1MSU5VWF9CVEZfUEFUSFMgPz0gJChpZiAkKE8pLCQoTykvdm1saW51eClcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgJChpZiAkKEtCVUlMRF9PVVRQVVQpLCQoS0JVSUxEX09VVFBVVCkvdm1saW51eClcXHRcXFxcXFxuLVxcdFxcdCAgICAgLi4vLi4vLi4vLi4vdm1saW51eFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAvc3lzL2tlcm5lbC9idGYvdm1saW51eFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAvYm9vdC92bWxpbnV4LSQoc2hlbGwgdW5hbWUgLXIpXFxuLVZNTElOVVhfQlRGID89ICQoYWJzcGF0aCAkKGZpcnN0d29yZCAkKHdpbGRjYXJkICQoVk1MSU5VWF9CVEZfUEFUSFMpKSkpXFxuLWlmZXEgKCQoVk1MSU5VWF9CVEYpLClcXG4tJChlcnJvciBDYW5ub3QgZmluZCBhIHZtbGludXggZm9yIFZNTElOVVhfQlRGIGF0IGFueSBvZiBcXFwiJChWTUxJTlVYX0JURl9QQVRIUylcXFwiKVxcbi1lbmRpZlxcbi1cXG4gIyBEZWZpbmUgc2ltcGxlIGFuZCBzaG9ydCBgbWFrZSB0ZXN0X3Byb2dzYCwgYG1ha2UgdGVzdF9tYXBzYCwgZXRjIHRhcmdldHNcXG4gIyB0byBidWlsZCBpbmRpdmlkdWFsIHRlc3RzLlxcbiAjIE5PVEU6IFNlbWljb2xvbiBhdCB0aGUgZW5kIGlzIGNyaXRpY2FsIHRvIG92ZXJyaWRlIGxpYi5taydzIGRlZmF1bHQgc3RhdGljXFxuICMgcnVsZSBmb3IgYmluYXJpZXMuXFxuLSQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EUylcXHRcXHRcXHRcXHRcXFxcXFxuKyQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EX1RBUkdFVFMpXFx0XFx0XFx0XFx0XFxcXFxcbiBcXHQgJChURVNUX0dFTl9QUk9HU19FWFRFTkRFRCkpOiAlOiAkKE9VVFBVVCkvJSA7XFxuIFxcbiAjIHNvcnQgcmVtb3ZlcyBsaWJicGYgZHVwbGljYXRlcyB3aGVuIG5vdCBjcm9zcy1idWlsZGluZ1xcbkBAIC0yNTYsMTEgKzE2NiwxNCBAQCAkKE1BS0VfRElSUyk6XFxuIFxcbiAkKE9VVFBVVCkvJS5vOiAlLmNcXG4gXFx0JChjYWxsIG1zZyxDQywsJEApXFxuLVxcdCQoUSkkKENDKSAkKENGTEFHUykgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEBcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkKGZpbHRlciAlLmMsJF4pIC1vICRAXFxuIFxcbisjIEhlYWRlcnMgbWF5IGFwcGVhciBhbW9uZyB0aGUgcHJlcmVxdWlzaXRlcyBmb3IgZGVwZW5kZW5jeSB0cmFja2luZztcXG4rIyB0aGV5IG11c3Qgbm90IHJlYWNoIHRoZSBjbGFuZy9nY2MgY29tbWFuZCBsaW5lIChjbGFuZyB0cmVhdHMgYSBiYXJlIC5oXFxuKyMgYXJndW1lbnQgYXMgYSBwcmVjb21waWxlZC1oZWFkZXIgam9iIGFuZCByZWZ1c2VzIC1vKS5cXG4gJChPVVRQVVQpLyU6JS5jXFxuIFxcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcXG4tXFx0JChRKSQoTElOSy5jKSAkXiAkKExETElCUykgLW8gJEBcXG4rXFx0JChRKSQoTElOSy5jKSAkKGZpbHRlci1vdXQgJS5oLCReKSAkKExETElCUykgLW8gJEBcXG4gXFxuICMgTExWTSdzIGxkLmxsZCBkb2Vzbid0IHN1cHBvcnQgYWxsIHRoZSBhcmNoaXRlY3R1cmVzLCBzbyB1c2UgaXQgb25seSBvbiB4ODZcXG4gaWZlcSAoJChTUkNBUkNIKSwkKGZpbHRlciAkKFNSQ0FSQ0gpLHg4NiByaXNjdikpXFxuQEAgLTI5Nyw2ICsyMTAsMTMgQEAgJChPVVRQVVQpL3NpZ24tZmlsZTogLi4vLi4vLi4vLi4vc2NyaXB0cy9zaWduLWZpbGUuY1xcbiBcXHRcXHQgICRcXHUwMDNjIC1vICRAIFxcXFxcXG4gXFx0XFx0ICAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYmNyeXB0byAyXFx1MDAzZSAvZGV2L251bGwgfHwgZWNobyAtbGNyeXB0bylcXG4gXFxuKyMgTGlua2luZyB1cHJvYmVfbXVsdGkgY2FuIGZhaWwgZHVlIHRvIHJlbG9jYXRpb24gb3ZlcmZsb3dzIG9uIG1pcHMuXFxuKyQoT1VUUFVUKS91cHJvYmVfbXVsdGk6IENGTEFHUyArPSAkKGlmICQoZmlsdGVyIG1pcHMsICQoQVJDSCkpLC1teGdvdClcXG4rJChPVVRQVVQpL3Vwcm9iZV9tdWx0aTogdXByb2JlX211bHRpLmMgdXByb2JlX211bHRpLmxkXFxuK1xcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtV2wsLVQsdXByb2JlX211bHRpLmxkIC1PMCAkKExERkxBR1MpIFxcdFxcXFxcXG4rXFx0XFx0JChmaWx0ZXItb3V0ICUubGQsJF4pICQoTERMSUJTKSAtbyAkQFxcbitcXG4gIyBUaGlzIHNob3VsZCByZWFsbHkgYmUgYSBncm91cGVkIHRhcmdldCwgYnV0IG1ha2UgdmVyc2lvbnMgYmVmb3JlIDQuMyBkb24ndFxcbiAjIHN1cHBvcnQgdGhhdCBmb3IgcmVndWxhciBydWxlcy4gSG93ZXZlciwgcGF0dGVybiBtYXRjaGluZyBydWxlcyBhcmUgaW1wbGljaXRseVxcbiAjIHRyZWF0ZWQgYXMgZ3JvdXBlZCBldmVuIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgbWFrZSwgc28gYXMgYSB3b3JrYXJvdW5kLCB0aGVcXG5AQCAtMzEzLDQwICsyMzMsMTggQEAgJChURVNUX0tNT0RfVEFSR0VUUyk6ICQoYWRkcHJlZml4IHRlc3Rfa21vZHMvLCQoVEVTVF9LTU9EUykpXFxuIFxcdCQoY2FsbCBtc2csTU9ELCwkQClcXG4gXFx0JChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbIC1mIHRlc3Rfa21vZHMvJChARikgXTsgdGhlbiApY3AgdGVzdF9rbW9kcy8kKEBGKSAkQCQoaWYgJChQRVJNSVNTSVZFKSw7IGZpKVxcbiBcXG4tXFxuLURFRkFVTFRfQlBGVE9PTCA6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxcbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXFxuLUNST1NTX0JQRlRPT0wgOj0gJChTQ1JBVENIX0RJUikvc2Jpbi9icGZ0b29sXFxuLVRSVU5ORVJfQlBGVE9PTCA6PSAkKENST1NTX0JQRlRPT0wpXFxuLVVTRV9CT09UU1RSQVAgOj0gXFxcIlxcXCJcXG4tZWxzZVxcbi1UUlVOTkVSX0JQRlRPT0wgOj0gJChERUZBVUxUX0JQRlRPT0wpXFxuLVVTRV9CT09UU1RSQVAgOj0gXFxcImJvb3RzdHJhcC9cXFwiXFxuLWVuZGlmXFxuLVxcbiBURVNUX0dFTl9QUk9HU19FWFRFTkRFRCArPSAkKFRSVU5ORVJfQlBGVE9PTClcXG4gXFxuICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQpOiAkKEJQRk9CSilcXG4gXFxuLVRFU1RJTkdfSEVMUEVSU1xcdDo9ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xcbi1DR1JPVVBfSEVMUEVSU1xcdDo9ICQoT1VUUFVUKS9jZ3JvdXBfaGVscGVycy5vXFxuLVVOUFJJVl9IRUxQRVJTICA6PSAkKE9VVFBVVCkvdW5wcml2X2hlbHBlcnMub1xcbi1UUkFDRV9IRUxQRVJTXFx0Oj0gJChPVVRQVVQpL3RyYWNlX2hlbHBlcnMub1xcbi1KU09OX1dSSVRFUlxcdFxcdDo9ICQoT1VUUFVUKS9qc29uX3dyaXRlci5vXFxuLUNBUF9IRUxQRVJTXFx0Oj0gJChPVVRQVVQpL2NhcF9oZWxwZXJzLm9cXG4tTkVUV09SS19IRUxQRVJTIDo9ICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMub1xcbi1cXG4tJChPVVRQVVQpL3Rlc3Rfc29ja21hcDogJChDR1JPVVBfSEVMUEVSUykgJChURVNUSU5HX0hFTFBFUlMpXFxuLSQoT1VUUFVUKS90ZXN0X3RjcG5vdGlmeV91c2VyOiAkKENHUk9VUF9IRUxQRVJTKSAkKFRFU1RJTkdfSEVMUEVSUykgJChUUkFDRV9IRUxQRVJTKVxcbi0kKE9VVFBVVCkvdGVzdF9zb2NrX2ZpZWxkczogJChDR1JPVVBfSEVMUEVSUykgJChURVNUSU5HX0hFTFBFUlMpXFxuLSQoT1VUUFVUKS90ZXN0X3RhZzogJChURVNUSU5HX0hFTFBFUlMpXFxuLSQoT1VUUFVUKS90ZXN0X2xpcmNfbW9kZTJfdXNlcjogJChURVNUSU5HX0hFTFBFUlMpXFxuLSQoT1VUUFVUKS9mbG93X2Rpc3NlY3Rvcl9sb2FkOiAkKFRFU1RJTkdfSEVMUEVSUylcXG4tJChPVVRQVVQpL3Rlc3RfbWFwczogJChURVNUSU5HX0hFTFBFUlMpXFxuLSQoT1VUUFVUKS90ZXN0X3ZlcmlmaWVyOiAkKFRFU1RJTkdfSEVMUEVSUykgJChDQVBfSEVMUEVSUykgJChVTlBSSVZfSEVMUEVSUylcXG4tJChPVVRQVVQpL3hzay5vOiAkKEJQRk9CSilcXG4tXFxuLUJQRlRPT0wgPz0gJChERUZBVUxUX0JQRlRPT0wpXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgVG9vbCBzdWItYnVpbGRzOiBicGZ0b29sIGFuZCBsaWJicGYgKGhvc3QgYW5kLCB3aGVuIGNyb3NzLWNvbXBpbGluZyxcXG4rIyB0YXJnZXQgdmFyaWFudHMpIGFuZCByZXNvbHZlX2J0Zmlkcy5cXG4rI1xcbisjIE5vdGUgdGhlIGRlbGliZXJhdGUgYXN5bW1ldHJ5OiB0aGUgaG9zdCBsaWJicGYgYnVpbGRzIHdpdGhvdXRcXG4rIyBzYW5pdGl6ZXJzIGFuZCB3aXRoIHRoZSBob3N0IHRvb2xjaGFpbi5cXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rXFxuICQoREVGQVVMVF9CUEZUT09MKTogJCh3aWxkY2FyZCAkKEJQRlRPT0xESVIpLyouW2NoXSAkKEJQRlRPT0xESVIpL01ha2VmaWxlKSAgICBcXFxcXFxuIFxcdFxcdCAgICAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL2JwZnRvb2xcXG4gXFx0JChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcykgIC1DICQoQlBGVE9PTERJUilcXHRcXHRcXHQgICAgICAgXFxcXFxcbkBAIC0zNzcsMjAgKzI3NSw2IEBAICQoQ1JPU1NfQlBGVE9PTCk6ICQod2lsZGNhcmQgJChCUEZUT09MRElSKS8qLltjaF0gJChCUEZUT09MRElSKS9NYWtlZmlsZSlcXHRcXFxcXFxuIFxcdFxcdCAgICBwcmVmaXg9IERFU1RESVI9JChTQ1JBVENIX0RJUikvIGluc3RhbGwtYmluXFxuIGVuZGlmXFxuIFxcbi1pZm5lcSAoJChTS0lQX0RPQ1MpLDEpXFxuLWFsbDogZG9jc1xcbi1lbmRpZlxcbi1cXG4tZG9jczpcXG4tXFx0JChRKVJTVDJNQU5fT1BUUz1cXFwiLS1leGl0LXN0YXR1cz0xXFxcIiAkKE1BS0UpICQoc3VibWFrZV9leHRyYXMpXFx0XFxcXFxcbi1cXHQgICAgICAgICAgICAtZiBNYWtlZmlsZS5kb2NzXFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHQgICAgICAgICAgICBwcmVmaXg9IE9VVFBVVD0kKE9VVFBVVCkvIERFU1RESVI9JChPVVRQVVQpLyAkQFxcbi1cXG4tZG9jcy1jbGVhbjpcXG4tXFx0JChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcylcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgICAgICAgIC1mIE1ha2VmaWxlLmRvY3NcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgICAgICAgIHByZWZpeD0gT1VUUFVUPSQoT1VUUFVUKS8gREVTVERJUj0kKE9VVFBVVCkvICRAXFxuLVxcbiAkKEJQRk9CSik6ICQod2lsZGNhcmQgJChCUEZESVIpLyouW2NoXSAkKEJQRkRJUikvTWFrZWZpbGUpXFx0XFx0ICAgICAgIFxcXFxcXG4gXFx0ICAgJChBUElESVIpL2xpbnV4L2JwZi5oXFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXFxcXG4gXFx0ICAgfCAkKEJVSUxEX0RJUikvbGliYnBmXFxuQEAgLTQxMiwxOSArMjk2LDYgQEAgJChIT1NUX0JQRk9CSik6ICQod2lsZGNhcmQgJChCUEZESVIpLyouW2NoXSAkKEJQRkRJUikvTWFrZWZpbGUpXFx0XFx0ICAgICAgIFxcXFxcXG4gXFx0XFx0ICAgIERFU1RESVI9JChIT1NUX1NDUkFUQ0hfRElSKS8gcHJlZml4PSBhbGwgaW5zdGFsbF9oZWFkZXJzXFxuIGVuZGlmXFxuIFxcbi0jIHZtbGludXguaCBpcyBmaXJzdCBkdW1wZWQgdG8gYSB0ZW1wb3JhcnkgZmlsZSBhbmQgdGhlbiBjb21wYXJlZCB0b1xcbi0jIHRoZSBwcmV2aW91cyB2ZXJzaW9uLiBUaGlzIGhlbHBzIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHJlLWJ1aWxkcyBvZlxcbi0jICQoVFJVTk5FUl9CUEZfT0JKUylcXG4tJChJTkNMVURFX0RJUikvdm1saW51eC5oOiAkKFZNTElOVVhfQlRGKSAkKEJQRlRPT0wpIHwgJChJTkNMVURFX0RJUilcXG4taWZlcSAoJChWTUxJTlVYX0gpLClcXG4tXFx0JChjYWxsIG1zZyxHRU4sLCRAKVxcbi1cXHQkKFEpJChCUEZUT09MKSBidGYgZHVtcCBmaWxlICQoVk1MSU5VWF9CVEYpIGZvcm1hdCBjIFxcdTAwM2UgJChJTkNMVURFX0RJUikvLnZtbGludXguaC50bXBcXG4tXFx0JChRKWNtcCAtcyAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcCAkQCB8fCBtdiAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcCAkQFxcbi1lbHNlXFxuLVxcdCQoY2FsbCBtc2csQ1AsLCRAKVxcbi1cXHQkKFEpY3AgXFxcIiQoVk1MSU5VWF9IKVxcXCIgJEBcXG4tZW5kaWZcXG4tXFxuICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzXFx0XFxcXFxcbiBcXHRcXHQgICAgICAgJChUT09MU0RJUikvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uY1xcdFxcXFxcXG4gXFx0XFx0ICAgICAgICQoVE9PTFNESVIpL2xpYi9yYnRyZWUuY1xcdFxcdFxcdFxcXFxcXG5AQCAtNDM5LDM3NCArMzEwLDM4IEBAICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzXFx0XFxcXFxcbiBcXHRcXHRIT1NUUEtHX0NPTkZJRz0nJChQS0dfQ09ORklHKScgXFxcXFxcbiBcXHRcXHRPVVRQVVQ9JChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvIEJQRk9CSj0kKEhPU1RfQlBGT0JKKVxcbiBcXG4tIyBHZXQgQ2xhbmcncyBkZWZhdWx0IGluY2x1ZGVzIG9uIHRoaXMgc3lzdGVtLCBhcyBvcHBvc2VkIHRvIHRob3NlIHNlZW4gYnlcXG4tIyAnLS10YXJnZXQ9YnBmJy4gVGhpcyBmaXhlcyBcXFwibWlzc2luZ1xcXCIgZmlsZXMgb24gc29tZSBhcmNoaXRlY3R1cmVzL2Rpc3Ryb3MsXFxuLSMgc3VjaCBhcyBhc20vYnl0ZW9yZGVyLmgsIGFzbS9zb2NrZXQuaCwgYXNtL3NvY2tpb3MuaCwgc3lzL2NkZWZzLmggZXRjLlxcbi0jXFxuLSMgVXNlICctaWRpcmFmdGVyJzogRG9uJ3QgaW50ZXJmZXJlIHdpdGggaW5jbHVkZSBtZWNoYW5pY3MgZXhjZXB0IHdoZXJlIHRoZVxcbi0jIGJ1aWxkIHdvdWxkIGhhdmUgZmFpbGVkIGFueXdheXMuXFxuLWRlZmluZSBnZXRfc3lzX2luY2x1ZGVzXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC12IC1FIC0gXFx1MDAzYy9kZXYvbnVsbCAyXFx1MDAzZVxcdTAwMjYxIFxcXFxcXG4tXFx0fCBzZWQgLW4gJy9cXHUwMDNjLi4uXFx1MDAzZSBzZWFyY2ggc3RhcnRzIGhlcmU6LywvRW5kIG9mIHNlYXJjaCBsaXN0Li97IHN8IFxcXFwoLy4qXFxcXCl8LWlkaXJhZnRlciBcXFxcMXxwIH0nKSBcXFxcXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFxcdTAwM2MvZGV2L251bGwgfCBncmVwICdfX3Jpc2N2X3hsZW4gJyB8IGF3ayAne3ByaW50ZihcXFwiLURfX3Jpc2N2X3hsZW49JWQgLURfX0JJVFNfUEVSX0xPTkc9JWRcXFwiLCAkJDMsICQkMyl9JykgXFxcXFxcbi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19sb29uZ2FyY2hfZ3JsZW4gJyB8IGF3ayAne3ByaW50ZihcXFwiLURfX0JJVFNfUEVSX0xPTkc9JWRcXFwiLCAkJDMpfScpIFxcXFxcXG4tJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgLUUgJ01JUFMoRUx8RUIpfF9NSVBTX1NaKFBUUnxMT05HKSB8X01JUFNfU0lNIHxfQUJJKE8zMnxOMzJ8NjQpICcgfCBhd2sgJ3twcmludGYoXFxcIi1EJXM9JXMgXFxcIiwgJCQyLCAkJDMpfScpXFxuLWVuZGVmXFxuLVxcbi0jIERldGVybWluZSB0YXJnZXQgZW5kaWFubmVzcy5cXG4tSVNfTElUVExFX0VORElBTiA6PSAkKHNoZWxsICQoQ0MpIC1kTSAtRSAtIFxcdTAwM2MvZGV2L251bGwgfCBcXFxcXFxuLVxcdFxcdFxcdGdyZXAgJ2RlZmluZSBfX0JZVEVfT1JERVJfXyBfX09SREVSX0xJVFRMRV9FTkRJQU5fXycpXFxuLU1FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKVxcbi1CUEZfVEFSR0VUX0VORElBTjo9JChpZiAkKElTX0xJVFRMRV9FTkRJQU4pLC0tdGFyZ2V0PWJwZmVsLC0tdGFyZ2V0PWJwZmViKVxcbi1cXG4taWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxcbi1DTEFOR19UQVJHRVRfQVJDSCA9IC0tdGFyZ2V0PSQobm90ZGlyICQoQ1JPU1NfQ09NUElMRTolLT0lKSlcXG4tZW5kaWZcXG4tXFxuLUNMQU5HX1NZU19JTkNMVURFUyA9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLCQoQ0xBTkcpLCQoQ0xBTkdfVEFSR0VUX0FSQ0gpKVxcbi1CUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXFx0XFxcXFxcbi1cXHQgICAgIC1JJChJTkNMVURFX0RJUikgLUkkKENVUkRJUikgLUkkKEFQSURJUilcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAgICAtSSQoYWJzcGF0aCAkKE9VVFBVVCkvLi4vdXNyL2luY2x1ZGUpXFx0XFx0XFx0XFxcXFxcbi1cXHQgICAgIC1zdGQ9Z251MTFcXHRcXHQgXFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHQgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAgICAtV25vLW1pY3Jvc29mdC1hbm9uLXRhZ1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAgICAtZm1zLWV4dGVuc2lvbnNcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgLVduby1jb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXNcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXNcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgI1xcbi0jIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZVxcbi1cXG4tQ0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXFxuLVxcbi0kKE9VVFBVVCkvdGVzdF9sNGxiX25vaW5saW5lLm86IEJQRl9DRkxBR1MgKz0gLWZuby1pbmxpbmVcXG4tJChPVVRQVVQpL3Rlc3RfeGRwX25vaW5saW5lLm86IEJQRl9DRkxBR1MgKz0gLWZuby1pbmxpbmVcXG4tXFxuLSQoT1VUUFVUKS9mbG93X2Rpc3NlY3Rvcl9sb2FkLm86IGZsb3dfZGlzc2VjdG9yX2xvYWQuaFxcbi0kKE9VVFBVVCkvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MubzogY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFxcbi1cXG4tIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIENsYW5nXFxuLSMgJDEgLSBpbnB1dCAuYyBmaWxlXFxuLSMgJDIgLSBvdXRwdXQgLm8gZmlsZVxcbi0jICQzIC0gQ0ZMQUdTXFxuLSMgJDQgLSBiaW5hcnkgbmFtZVxcbi1kZWZpbmUgQ0xBTkdfQlBGX0JVSUxEX1JVTEVcXG4tXFx0JChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMilcXG4tXFx0JChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12MyAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcXFxcbi1cXHRcXHQoJChSTSkgJDI7IHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1CUEYnICckKG5vdGRpciAkMiknIDFcXHUwMDNlXFx1MDAyNjIpKVxcbi1lbmRlZlxcbi0jIFNpbWlsYXIgdG8gQ0xBTkdfQlBGX0JVSUxEX1JVTEUsIGJ1dCB3aXRoIGRpc2FibGVkIGFsdTMyXFxuLWRlZmluZSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFXFxuLVxcdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXFxuLVxcdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djIgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXFxcXG4tXFx0XFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4tZW5kZWZcXG4tIyBTaW1pbGFyIHRvIENMQU5HX0JQRl9CVUlMRF9SVUxFLCBidXQgd2l0aCBjcHUtdjRcXG4tZGVmaW5lIENMQU5HX0NQVVY0X0JQRl9CVUlMRF9SVUxFXFxuLVxcdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXFxuLVxcdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djQgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXFxcXG4tXFx0XFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4tZW5kZWZcXG4tIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIEdDQ1xcbi1kZWZpbmUgR0NDX0JQRl9CVUlMRF9SVUxFXFxuLVxcdCQoY2FsbCBtc2csR0NDLUJQRiwkNCwkMilcXG4tXFx0JChRKSQoQlBGX0dDQykgJDMgLURCUEZfTk9fUFJFU0VSVkVfQUNDRVNTX0lOREVYIC1Xbm8tYXR0cmlidXRlcyAtTzIgLWMgJDEgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXFxcXG4tXFx0XFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4tZW5kZWZcXG4tXFxuLVNLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmNcXG4tXFxuLUxJTktFRF9TS0VMUyA6PSB0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oIGxpbmtlZF9mdW5jcy5za2VsLmhcXHRcXHRcXFxcXFxuLVxcdFxcdGxpbmtlZF92YXJzLnNrZWwuaCBsaW5rZWRfbWFwcy5za2VsLmggXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHR0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmhcXHRcXFxcXFxuLVxcdFxcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdHRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHR0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oXFxuLVxcbi1MU0tFTFMgOj0gZmV4aXRfc2xlZXAuYyB0cmFjZV9wcmludGsuYyB0cmFjZV92cHJpbnRrLmMgbWFwX3B0cl9rZXJuLmMgXFx0XFxcXFxcbi1cXHRjb3JlX2tlcm4uYyBjb3JlX2tlcm5fb3ZlcmZsb3cuYyB0ZXN0X3JpbmdidWYuY1xcdFxcdFxcdFxcXFxcXG4tXFx0dGVzdF9yaW5nYnVmX24uYyB0ZXN0X3JpbmdidWZfbWFwX2tleS5jIHRlc3RfcmluZ2J1Zl93cml0ZS5jICAgIFxcXFxcXG4tXFx0dGVzdF9yaW5nYnVmX292ZXJ3cml0ZS5jXFxuLVxcbi1MU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0LmMgZmV4aXRfdGVzdC5jIGF0b21pY3MuY1xcbi1cXG4tIyBHZW5lcmF0ZSBib3RoIGxpZ2h0IHNrZWxldG9uIGFuZCBsaWJicGYgc2tlbGV0b24gZm9yIHRoZXNlXFxuLUxTS0VMU19FWFRSQSA6PSB0ZXN0X2tzeW1zX21vZHVsZS5jIHRlc3Rfa3N5bXNfd2Vhay5jIGtmdW5jX2NhbGxfdGVzdC5jIFxcXFxcXG4tXFx0a2Z1bmNfY2FsbF90ZXN0X3N1YnByb2cuY1xcbi1TS0VMX0JMQUNLTElTVCArPSAkJChMU0tFTFMpICQkKExTS0VMU19TSUdORUQpXFxuLVxcbi10ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vXFxuLWxpbmtlZF9mdW5jcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfZnVuY3MxLmJwZi5vIGxpbmtlZF9mdW5jczIuYnBmLm9cXG4tbGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYub1xcbi1saW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vXFxuLSMgSW4gdGhlIHN1YnNrZWxldG9uIGNhc2UsIHdlIHdhbnQgdGhlIHRlc3Rfc3Vic2tlbGV0b25fbGliLnN1YnNrZWwuaCBmaWxlXFxuLSMgYnV0IHRoYXQncyBjcmVhdGVkIGFzIGEgc2lkZS1lZmZlY3Qgb2YgdGhlIHNrZWwuaCBnZW5lcmF0aW9uLlxcbi10ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXFxuLXRlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYub1xcbi10ZXN0X3VzZHQuc2tlbC5oLWRlcHMgOj0gdGVzdF91c2R0LmJwZi5vIHRlc3RfdXNkdF9tdWx0aXNwZWMuYnBmLm9cXG4teHNrX3hkcF9wcm9ncy5za2VsLmgtZGVwcyA6PSB4c2tfeGRwX3Byb2dzLmJwZi5vXFxuLXhkcF9od19tZXRhZGF0YS5za2VsLmgtZGVwcyA6PSB4ZHBfaHdfbWV0YWRhdGEuYnBmLm9cXG4teGRwX2ZlYXR1cmVzLnNrZWwuaC1kZXBzIDo9IHhkcF9mZWF0dXJlcy5icGYub1xcbi10cmFjaW5nX211bHRpLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cXG4tdHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2hfbW9kdWxlLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cXG4tdHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cXG4tdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfc2Vzc2lvbl9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xcbi1cXG4tTElOS0VEX0JQRl9PQkpTIDo9ICQoZm9yZWFjaCBza2VsLCQoTElOS0VEX1NLRUxTKSwkKCQoc2tlbCktZGVwcykpXFxuLUxJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoTElOS0VEX0JQRl9PQkpTKSlcXG4tXFxuLUhFQURFUlNfRk9SX0JQRl9PQkpTIDo9ICQod2lsZGNhcmQgJChCUEZESVIpLyouYnBmLmgpXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQkKHdpbGRjYXJkICQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlLyouW2NoXSlcXHRcXFxcXFxuLVxcdFxcdFxcdCQoYWRkcHJlZml4ICQoQlBGRElSKS8sXFx0YnBmX2NvcmVfcmVhZC5oXFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgICAgICAgICAgICAgICAgICAgICBicGZfZW5kaWFuLmhcXHRcXFxcXFxuLVxcdFxcdFxcdFxcdFxcdFxcdGJwZl9oZWxwZXJzLmhcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl90cmFjaW5nLmgpXFxuLVxcbi0jIFNldCB1cCBleHRyYSBUUlVOTkVSX1hYWCBcXFwidGVtcG9yYXJ5XFxcIiB2YXJpYWJsZXMgaW4gdGhlIGVudmlyb25tZW50IChyZWxpZXMgb25cXG4tIyAkZXZhbCgpKSBhbmQgcGFzcyBjb250cm9sIHRvIERFRklORV9URVNUX1JVTk5FUl9SVUxFUy5cXG4tIyBQYXJhbWV0ZXJzOlxcbi0jICQxIC0gdGVzdCBydW5uZXIgYmFzZSBiaW5hcnkgbmFtZSAoZS5nLiwgdGVzdF9wcm9ncylcXG4tIyAkMiAtIHRlc3QgcnVubmVyIGV4dHJhIFxcXCJmbGF2b3JcXFwiIChlLmcuLCBub19hbHUzMiwgY3B1djQsIGJwZl9nY2MsIGV0YylcXG4tZGVmaW5lIERFRklORV9URVNUX1JVTk5FUlxcbi1cXG4tTFNLRUxfU0lHTiA6PSAtUyAtayAkKFBSSVZBVEVfS0VZKSAtaSAkKFZFUklGSUNBVElPTl9DRVJUKVxcbi1UUlVOTkVSX09VVFBVVCA6PSAkKE9VVFBVVCkkKGlmICQyLC8pJDJcXG4tVFJVTk5FUl9CSU5BUlkgOj0gJDEkKGlmICQyLC0pJDJcXG4tVFJVTk5FUl9URVNUX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QubyxcXHRcXFxcXFxuLVxcdFxcdFxcdFxcdCAkJChub3RkaXIgJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jKSkpXFxuLVRSVU5ORVJfRVhUUkFfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubyxcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdFxcdCAkJChmaWx0ZXIgJS5jLCQoVFJVTk5FUl9FWFRSQV9TT1VSQ0VTKSkpXFxuLVRSVU5ORVJfTElCX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLm8sXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHRcXHQgJCQoZmlsdGVyICUuYywkKFRSVU5ORVJfTElCX1NPVVJDRVMpKSlcXG4tVFJVTk5FUl9FWFRSQV9IRFJTIDo9ICQkKGZpbHRlciAlLmgsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKVxcbi1UUlVOTkVSX1RFU1RTX0hEUiA6PSAkKFRSVU5ORVJfVEVTVFNfRElSKS90ZXN0cy5oXFxuLVRSVU5ORVJfQlBGX1NSQ1MgOj0gJCQobm90ZGlyICQkKHdpbGRjYXJkICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8qLmMpKVxcbi1UUlVOTkVSX0JQRl9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5icGYubywgJCQoVFJVTk5FUl9CUEZfU1JDUykpXFxuLVRSVU5ORVJfQlBGX1NLRUxTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5za2VsLmgsXFx0XFxcXFxcbi1cXHRcXHRcXHRcXHQgJCQoZmlsdGVyLW91dCAkKFNLRUxfQkxBQ0tMSVNUKSAkKExJTktFRF9CUEZfU1JDUyksXFxcXFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgICAgJCQoVFJVTk5FUl9CUEZfU1JDUykpKVxcbi1UUlVOTkVSX0JQRl9MU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmxza2VsLmgsICQkKExTS0VMUykgJCQoTFNLRUxTX0VYVFJBKSlcXG4tVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEIDo9ICQkKGFkZHByZWZpeCAkJChUUlVOTkVSX09VVFBVVCkvLCQoTElOS0VEX1NLRUxTKSlcXG4tVFJVTk5FUl9CUEZfTFNLRUxTX1NJR05FRCA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubHNrZWwuaCwgJCQoTFNLRUxTX1NJR05FRCkpXFxuLVRFU1RfR0VOX0ZJTEVTICs9ICQkKFRSVU5ORVJfQlBGX09CSlMpXFxuLVxcbi0jIEV2YWx1YXRlIHJ1bGVzIG5vdyB3aXRoIGV4dHJhIFRSVU5ORVJfWFhYIHZhcmlhYmxlcyBhYm92ZSBhbHJlYWR5IGRlZmluZWRcXG4tJCQoZXZhbCAkJChjYWxsIERFRklORV9URVNUX1JVTk5FUl9SVUxFUywkMSwkMikpXFxuLVxcbi1lbmRlZlxcbi1cXG4tIyBVc2luZyBUUlVOTkVSX1hYWCB2YXJpYWJsZXMsIHByb3ZpZGVkIGJ5IGNhbGxlcnMgb2YgREVGSU5FX1RFU1RfUlVOTkVSIGFuZFxcbi0jIHNldCB1cCBieSBERUZJTkVfVEVTVF9SVU5ORVIgaXRzZWxmLCBjcmVhdGUgdGVzdCBydW5uZXIgYnVpbGQgcnVsZXMgd2l0aDpcXG4tIyAkMSAtIHRlc3QgcnVubmVyIGJhc2UgYmluYXJ5IG5hbWUgKGUuZy4sIHRlc3RfcHJvZ3MpXFxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcXFwiZmxhdm9yXFxcIiAoZS5nLiwgbm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjLCBldGMpXFxuLWRlZmluZSBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVNcXG4tXFxuLSMgUGVybWlzc2l2ZSBidWlsZCBiZWhhdmlvdXIgKHNraXAtb24tZmFpbHVyZSBjb21waWxlLCBwYXJ0aWFsLWxpbmspIG9ubHlcXG4tIyBhcHBsaWVzIHRvIHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzOyBydW5uZXJzIHRoYXQgdXNlIHN0cm9uZyBjcm9zcy1vYmplY3RcXG4tIyByZWZlcmVuY2VzIChlLmcuIHRlc3RfbWFwcykga2VlcCBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBwZXJtaXNzaXZlLlxcbi0jIFRoZSBjaGVjayBpcyBpbmxpbmVkIHBlci1ydW5uZXIgc28gJDEgaXMgc3Vic3RpdHV0ZWQgYXQgJChjYWxsKSB0aW1lIGFuZFxcbi0jIHRoZSByZXN1bHQgaXMgYmFrZWQgaW50byBlYWNoIHJ1bGUncyByZWNpcGUuXFxuLVxcbi1pZmVxICgkKCQoVFJVTk5FUl9PVVRQVVQpLWRpciksKVxcbi0kKFRSVU5ORVJfT1VUUFVUKS1kaXIgOj0geVxcbi0kKFRSVU5ORVJfT1VUUFVUKTpcXG4tXFx0JCQoY2FsbCBtc2csTUtESVIsLCQkQClcXG4tXFx0JChRKW1rZGlyIC1wICQkQFxcbi1lbmRpZlxcbi1cXG4tIyBlbnN1cmUgd2Ugc2V0IHVwIEJQRiBvYmplY3RzIGdlbmVyYXRpb24gcnVsZSBqdXN0IG9uY2UgZm9yIGEgZ2l2ZW5cXG4tIyBpbnB1dC9vdXRwdXQgZGlyZWN0b3J5IGNvbWJpbmF0aW9uXFxuLWlmZXEgKCQoJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMpLClcXG4tJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMgOj0geVxcbi0kKFRSVU5ORVJfQlBGX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLmJwZi5vOlxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAkKFRSVU5ORVJfQlBGX1BST0dTX0RJUikvJS5jXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8qLmhcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgJCQoSU5DTFVERV9ESVIpL3ZtbGludXguaFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpICQkKEJQRk9CSilcXG4tXFx0JCQoY2FsbCAkKFRSVU5ORVJfQlBGX0JVSUxEX1JVTEUpLCQkXFx1MDAzYywkJEAsXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHRcXHRcXHQgICQoVFJVTk5FUl9CUEZfQ0ZMQUdTKSAgICAgICAgIFxcXFxcXG4tXFx0XFx0XFx0XFx0XFx0ICAkJCgkJFxcdTAwM2MtQ0ZMQUdTKVxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0XFx0XFx0ICAkJCgkJFxcdTAwM2MtJDItQ0ZMQUdTKSwkKFRSVU5ORVJfQklOQVJZKSlcXG4tXFxuLSQoVFJVTk5FUl9CUEZfU0tFTFMpOiAlLnNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVClcXG4tXFx0JChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbICEgLWYgJCRcXHUwMDNjIF07IHRoZW5cXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1xcdFxcdFxcdFxcXFxcXG4tXFx0XFx0cHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVxcdTAwM2VcXHUwMDI2MjsgXFxcXFxcbi1cXHRcXHRleGl0IDA7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRmaTspXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ0dFTi1TS0VMJyAnWyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKScgMVxcdTAwM2VcXHUwMDI2MjsgXFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFxcdTAwM2M6Lm89LmxpbmtlZDEubykgJCRcXHUwMDNjIFxcdTAwMjZcXHUwMDI2XFx0XFx0XFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFxcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGlua2VkMS5vKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXFx1MDAzYzoubz0ubGlua2VkMy5vKSAkJChcXHUwMDNjOi5vPS5saW5rZWQyLm8pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0ZGlmZiAkJChcXHUwMDNjOi5vPS5saW5rZWQyLm8pICQkKFxcdTAwM2M6Lm89LmxpbmtlZDMubykgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkJChcXHUwMDNjOi5vPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFxcdTAwM2M6LmJwZi5vPSkpIFxcdTAwM2UgJCRAIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIHN1YnNrZWxldG9uICQkKFxcdTAwM2M6Lm89LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXFx1MDAzYzouYnBmLm89KSkgXFx1MDAzZSAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCkgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXFxcXFxcbi1cXHRcXHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTsgXFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdH0pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0cm0gLWYgJCQoXFx1MDAzYzoubz0ubGlua2VkMS5vKSAkJChcXHUwMDNjOi5vPS5saW5rZWQyLm8pICQkKFxcdTAwM2M6Lm89LmxpbmtlZDMubylcXG4tXFxuLSQoVFJVTk5FUl9CUEZfTFNLRUxTKTogJS5sc2tlbC5oOiAlLmJwZi5vICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1cXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFxcdTAwM2MgXTsgdGhlblxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0JCQoUk0pICQkQDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0XFx0ZXhpdCAwO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0Zmk7KVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0cHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJFxcdTAwM2MgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDEubykgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQzLm8pICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQyLm8pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0ZGlmZiAkJChcXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcXHUwMDNjOi5vPS5sbGlua2VkMy5vKSBcXHUwMDI2XFx1MDAyNlxcdFxcdFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uIC1MICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFxcdTAwM2M6LmJwZi5vPV9sc2tlbCkpIFxcdTAwM2UgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXFxcXG4tXFx0XFx0JCQoUk0pICQkQDsgXFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdH0pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0cm0gLWYgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDEubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDMubylcXG4tXFxuLSQoVFJVTk5FUl9CUEZfTFNLRUxTX1NJR05FRCk6ICUubHNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVClcXG4tXFx0JChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbICEgLWYgJCRcXHUwMDNjIF07IHRoZW5cXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCQkKFJNKSAkJEA7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdFxcdGV4aXQgMDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdGZpOylcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnR0VOLVNLRUwnICdbJChUUlVOTkVSX0JJTkFSWSkgKHNpZ25lZCldICQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDEubykgJCRcXHUwMDNjIFxcdTAwMjZcXHUwMDI2XFx0XFx0XFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQxLm8pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcXHUwMDNjOi5vPS5sbGlua2VkMy5vKSAkJChcXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdGRpZmYgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDMubykgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkKExTS0VMX1NJR04pICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFxcdTAwM2M6LmJwZi5vPV9sc2tlbCkpIFxcdTAwM2UgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXFxcXG4tXFx0XFx0JCQoUk0pICQkQDsgXFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdH0pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0cm0gLWYgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDEubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDMubylcXG4tXFxuLSQoTElOS0VEX0JQRl9PQkpTKTogJTogJChUUlVOTkVSX09VVFBVVCkvJVxcbi1cXG4tIyAuU0VDT05ERVhQQU5TSU9OIGhlcmUgYWxsb3dzIHRvIGNvcnJlY3RseSBleHBhbmQgJS1kZXBzIHZhcmlhYmxlcyBhcyBwcmVyZXF1aXNpdGVzXFxuLS5TRUNPTkRFWFBBTlNJT046XFxuLSQoVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEKTogJChUUlVOTkVSX09VVFBVVCkvJTogJCQkJCglLWRlcHMpICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1cXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGZvciBmIGluICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKTsgZG8gXFxcXFxcbi1cXHRcXHRpZiBbICEgLWYgJCQkJGYgXTsgdGhlblxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0JCQoUk0pICQkQCAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCk7XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdFxcdFxcdGV4aXQgMDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdGZpO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ZG9uZTspXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ0xJTkstQlBGJyAnWyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCQoQDouc2tlbC5oPS5icGYubykpJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoQDouc2tlbC5oPS5saW5rZWQxLm8pICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdGRpZmYgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSBcXHUwMDI2XFx1MDAyNlxcdFxcXFxcXG4tXFx0cHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjIgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKEA6LnNrZWwuaD0pKSBcXHUwMDNlICQkQCBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBzdWJza2VsZXRvbiAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoQDouc2tlbC5oPSkpIFxcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXFxcXG4tXFx0XFx0JCQoUk0pICQkQCAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCk7XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdH0pIFxcdTAwMjZcXHUwMDI2XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRybSAtZiAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKVxcbi1cXG4tIyBXaGVuIHRoZSBjb21waWxlciBnZW5lcmF0ZXMgYSAlLmQgZmlsZSwgb25seSBza2VsIGJhc2VuYW1lcyAobm90XFxuLSMgZnVsbCBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciBjb3JyZXNwb25kaW5nICUub1xcbi0jIGZpbGUuIHZwYXRoIGRpcmVjdGl2ZXMgYmVsb3cgaW5zdHJ1Y3QgbWFrZSB0byBzZWFyY2ggZm9yIHNrZWwgZmlsZXNcXG4tIyBpbiBUUlVOTkVSX09VVFBVVCwgaWYgdGhleSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5Llxcbi12cGF0aCAlLnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxcbi12cGF0aCAlLmxza2VsLmggJChUUlVOTkVSX09VVFBVVClcXG4tdnBhdGggJS5zdWJza2VsLmggJChUUlVOTkVSX09VVFBVVClcXG4tXFxuK2lmbmVxICgkKFNLSVBfRE9DUyksMSlcXG4rYWxsOiBkb2NzXFxuIGVuZGlmXFxuIFxcbi0jIGVuc3VyZSB3ZSBzZXQgdXAgdGVzdHMuaCBoZWFkZXIgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZVxcbi1pZmVxICgkKCQoVFJVTk5FUl9URVNUU19ESVIpLXRlc3RzLWhkciksKVxcbi0kKFRSVU5ORVJfVEVTVFNfRElSKS10ZXN0cy1oZHIgOj0geVxcbi0kKFRSVU5ORVJfVEVTVFNfSERSKTogJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jXFxuLVxcdCQkKGNhbGwgbXNnLFRFU1QtSERSLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcXG4tXFx0JCQoc2hlbGwgKGVjaG8gJy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJztcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgc2VkIC1uIC1FICdzL152b2lkIChzZXJpYWxfKT90ZXN0XyhbYS16QS1aMC05X10rKVxcXFwoKHZvaWQpP1xcXFwpLiovREVGSU5FX1RFU1QoXFxcXDIpL3AnXFx0XFxcXFxcbi1cXHRcXHRcXHQkKFRSVU5ORVJfVEVTVFNfRElSKS8qLmMgfCBzb3J0IDtcXHRcXFxcXFxuLVxcdFxcdCApIFxcdTAwM2UgJCRAKVxcbi1lbmRpZlxcbitkb2NzOlxcbitcXHQkKFEpUlNUMk1BTl9PUFRTPVxcXCItLWV4aXQtc3RhdHVzPTFcXFwiICQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcylcXHRcXFxcXFxuK1xcdCAgICAgICAgICAgIC1mIE1ha2VmaWxlLmRvY3NcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgICAgICAgIHByZWZpeD0gT1VUUFVUPSQoT1VUUFVUKS8gREVTVERJUj0kKE9VVFBVVCkvICRAXFxuIFxcbi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86ICQoUkVTT0xWRV9CVEZJRFMpICQoVFJVTk5FUl9PVVRQVVQpL2J0Zl9kYXRhLmJwZi5vXFxuLSQoVFJVTk5FUl9PVVRQVVQpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogcHJpdmF0ZSBURVNUX05FRURTX0JURklEUyA9IDFcXG4tXFxuLSMgY29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXNcXG4tIyBOb3RlOiB3ZSBjZCBpbnRvIG91dHB1dCBkaXJlY3RvcnkgdG8gZW5zdXJlIGVtYmVkZGVkIEJQRiBvYmplY3QgaXMgZm91bmRcXG4tJChUUlVOTkVSX1RFU1RfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5vOlxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kXFxuLVxcdCQkKGNhbGwgbXNnLFRFU1QtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcXG4tXFx0JChRKShjZCAkJChARCkgXFx1MDAyNlxcdTAwMjYgJCQoQ0MpIC1JLiAkJChDRkxBR1MpIC1NTUQgLU1UICQkQCAtYyAkKENVUkRJUikvJCRcXHUwMDNjICQkKExETElCUykgLW8gJCQoQEYpKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcXFxcbi1cXHRcXHQoJChSTSkgJCRAOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtVEVTVCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyKSkpXFxuLVxcdCQkKGlmICQkKFRFU1RfTkVFRFNfQlRGSURTKSxcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCQoUSlpZiBbIC1mICQkQCBdOyB0aGVuXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQkKGlmICQoZmlsdGVyIDEsJChWKSksdHJ1ZSxwcmludGYgJyAgJS04cyVzICVzXFxcXG4nIFxcXCJCVEZJRFNcXFwiIFxcXCIgWyQoVFJVTk5FUl9CSU5BUlkpXVxcXCIgXFxcIiQkKG5vdGRpciAkJEApXFxcIik7IFxcXFxcXG4tXFx0XFx0JChSRVNPTFZFX0JURklEUykgLS1idGYgJChUUlVOTkVSX09VVFBVVCkvYnRmX2RhdGEuYnBmLm8gJCRAO1xcdFxcXFxcXG4tXFx0XFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJCRALkJURl9pZHMgJCRAO1xcdFxcdFxcXFxcXG4tXFx0XFx0ZmkpXFxuLVxcbi0kKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKTogJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0LmQ6XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJChUUlVOTkVSX0JQRl9TS0VMUylcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAkKFRSVU5ORVJfQlBGX0xTS0VMUylcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAkKFRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQpXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpXFxuLVxcbi1pZmVxICgkKGZpbHRlciBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHMsJChNQUtFQ01ER09BTFMpKSwpXFxuLWluY2x1ZGUgJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKSlcXG4tZW5kaWZcXG4rZG9jcy1jbGVhbjpcXG4rXFx0JChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcylcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgICAgICAgIC1mIE1ha2VmaWxlLmRvY3NcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgICAgICAgIHByZWZpeD0gT1VUUFVUPSQoT1VUUFVUKS8gREVTVERJUj0kKE9VVFBVVCkvICRAXFxuIFxcbi0jIGFkZCBwZXIgZXh0cmEgb2JqIENGR0xBR1MgZGVmaW5pdGlvbnNcXG4tJChmb3JlYWNoIE4sJChwYXRzdWJzdCAkKFRSVU5ORVJfT1VUUFVUKS8lLm8sJSwkKFRSVU5ORVJfRVhUUkFfT0JKUykpLFxcdFxcXFxcXG4tXFx0JChldmFsICQoVFJVTk5FUl9PVVRQVVQpLyQoTikubzogQ0ZMQUdTICs9ICQoJChOKS5jLUNGTEFHUykpKVxcbi1cXG4tJChUUlVOTkVSX0VYVFJBX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLm86XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJS5jXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJChWRVJJRllfU0lHX0hEUilcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKFRSVU5ORVJfVEVTVFNfSERSKVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1cXHQkJChjYWxsIG1zZyxFWFQtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcXG4tXFx0JChRKSQkKENDKSAkJChDRkxBR1MpIC1jICQkXFx1MDAzYyAkJChMRExJQlMpIC1vICQkQFxcbi1cXG4tJChUUlVOTkVSX0xJQl9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5vOiQoVE9PTFNESVIpL2xpYi8lLmNcXG4tXFx0JCQoY2FsbCBtc2csTElCLU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXFxuLVxcdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAtYyAkJFxcdTAwM2MgJCQoTERMSUJTKSAtbyAkJEBcXG4tXFxuLSMgbm9uLWZsYXZvcmVkIGluLXNyY3RyZWUgYnVpbGRzIHJlY2VpdmUgc3BlY2lhbCB0cmVhdG1lbnQsIGluIHBhcnRpY3VsYXIsIHdlXFxuLSMgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKVxcbi0kKFRSVU5ORVJfQklOQVJZKS1leHRyYXM6ICQoVFJVTk5FUl9FWFRSQV9GSUxFUykgfCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1pZm5lcSAoJDI6JChPVVRQVVQpLDokKHNoZWxsIHB3ZCkpXFxuLVxcdCQkKGNhbGwgbXNnLEVYVC1DT1BZLCQoVFJVTk5FUl9CSU5BUlkpLCQoVFJVTk5FUl9FWFRSQV9GSUxFUykpXFxuLVxcdCQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJCReICQoVFJVTk5FUl9PVVRQVVQpL1xcbisjIHZtbGludXguaCBpcyBmaXJzdCBkdW1wZWQgdG8gYSB0ZW1wb3JhcnkgZmlsZSBhbmQgdGhlbiBjb21wYXJlZCB0b1xcbisjIHRoZSBwcmV2aW91cyB2ZXJzaW9uLiBUaGlzIGhlbHBzIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHJlLWJ1aWxkcyBvZlxcbisjIEJQRiBvYmplY3RzLlxcbiskKElOQ0xVREVfRElSKS92bWxpbnV4Lmg6ICQoVk1MSU5VWF9CVEYpICQoQlBGVE9PTCkgfCAkKElOQ0xVREVfRElSKVxcbitpZmVxICgkKFZNTElOVVhfSCksKVxcbitcXHQkKGNhbGwgbXNnLEdFTiwsJEApXFxuK1xcdCQoUSkkKEJQRlRPT0wpIGJ0ZiBkdW1wIGZpbGUgJChWTUxJTlVYX0JURikgZm9ybWF0IGMgXFx1MDAzZSAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcFxcbitcXHQkKFEpY21wIC1zICQoSU5DTFVERV9ESVIpLy52bWxpbnV4LmgudG1wICRAIHx8IG12ICQoSU5DTFVERV9ESVIpLy52bWxpbnV4LmgudG1wICRAXFxuK2Vsc2VcXG4rXFx0JChjYWxsIG1zZyxDUCwsJEApXFxuK1xcdCQoUSljcCBcXFwiJChWTUxJTlVYX0gpXFxcIiAkQFxcbiBlbmRpZlxcbiBcXG4tIyBzb21lIFgudGVzdC5vIGZpbGVzIGhhdmUgcnVudGltZSBkZXBlbmRlbmNpZXMgb24gWS5icGYubyBmaWxlc1xcbi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6IHwgJChUUlVOTkVSX0JQRl9PQkpTKVxcbi1cXG4tJChPVVRQVVQpLyQoVFJVTk5FUl9CSU5BUlkpOiAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSlcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgJChUUlVOTkVSX0VYVFJBX09CSlMpICQkKEJQRk9CSilcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgJChUUlVOTkVSX0xJQl9PQkpTKVxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICAkKFRSVU5ORVJfQlBGVE9PTClcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgJChPVVRQVVQpL3ZlcmlzdGF0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgIHwgJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSkpXFxuLVxcdCQkKGNhbGwgbXNnLEJJTkFSWSwsJCRAKVxcbi1cXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLCQkKGZpbHRlciAlLmEgJS5vLCQkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUX09CSlMpKSAkJChmaWx0ZXItb3V0ICQoVFJVTk5FUl9URVNUX09CSlMpLCQkXikpLCQkKGZpbHRlciAlLmEgJS5vLCQkXikpLCQkKGZpbHRlciAlLmEgJS5vLCQkXikpICQkKExETElCUykgJCQoTExWTV9MRExJQlMpICQkKExERkxBR1MpICQkKExMVk1fTERGTEFHUykgLW8gJCRAXFxuLVxcdCQoUSlsbiAtc2YgJChpZiAkMiwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFxcXFxcXG4tXFx0XFx0ICAgJChPVVRQVVQpLyQoaWYgJDIsJDIvKWJwZnRvb2xcXG4tXFxuLWVuZGVmXFxuLVxcbi1WRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXFxuLVZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0LmhcXG4tVkVSSUZJQ0FUSU9OX0NFUlQgICA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkuZGVyXFxuLVBSSVZBVEVfS0VZIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5wZW1cXG4tXFxuLSQoVkVSSUZJQ0FUSU9OX0NFUlQpICQoUFJJVkFURV9LRVkpOiAkKFZFUklGWV9TSUdfU0VUVVApXFxuKyMgT25lIGdlbmtleSBydW4gcHJvZHVjZXMgYm90aCBmaWxlcy4gQSBwbGFpbiB0d28tdGFyZ2V0IHJ1bGUgaXMgbm90XFxuKyMgZ3JvdXBlZCAtIHVuZGVyIC1qIG1ha2Ugd291bGQgcnVuIGdlbmtleSB0d2ljZSBjb25jdXJyZW50bHkgYW5kIHRoZVxcbisjIG9wZW5zc2wgaW52b2NhdGlvbnMgcmFjZTsgdGhlIHBhdHRlcm4gZm9ybSBpcyBpbXBsaWNpdGx5IGdyb3VwZWQgZXZlblxcbisjIHdpdGggbWFrZSBcXHUwMDNjIDQuMyAoc2FtZSB3b3JrYXJvdW5kIGFzIHRoZSB0ZXN0X2ttb2RzIHJ1bGUpLlxcbiskKEJVSUxEX0RJUikvJS5wZW0gJChCVUlMRF9ESVIpLyUuZGVyOiAkKFZFUklGWV9TSUdfU0VUVVApXFxuIFxcdCQoUSlta2RpciAtcCAkKEJVSUxEX0RJUilcXG4gXFx0JChRKSQoVkVSSUZZX1NJR19TRVRVUCkgZ2Vua2V5ICQoQlVJTERfRElSKVxcbiBcXG5AQCAtODM1LDExNiArMzcwLDE4MyBAQCBMSUJBUkVOQV9CUEZfREVQUyA6PSAkKHdpbGRjYXJkIGxpYmFyZW5hL01ha2VmaWxlXFx0XFx0XFxcXFxcbiBcXHRcXHRcXHRcXHQgbGliYXJlbmEvc2VsZnRlc3RzLypcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdCBsaWJhcmVuYS8qLmJwZi5vKVxcbiBcXG4tTElCQVJFTkFfU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYS5za2VsLmhcXG4tXFxuICQoTElCQVJFTkFfU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CUEZfREVQUylcXG4gXFx0KyQoTUFLRSkgLUMgbGliYXJlbmEgbGliYXJlbmEuc2tlbC5oICQoTElCQVJFTkFfTUFLRV9BUkdTKVxcbiBcXG4taWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcXG4tTElCQVJFTkFfQVNBTl9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hX2FzYW4uc2tlbC5oXFxuLUNGTEFHUyArPSAtREhBU19CUEZfQVJFTkFfQVNBTlxcbitsaWJhcmVuYTogJChMSUJBUkVOQV9TS0VMKVxcbiBcXG4raWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcXG4gJChMSUJBUkVOQV9BU0FOX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQlBGX0RFUFMpXFxuIFxcdCskKE1BS0UpIC1DIGxpYmFyZW5hIGxpYmFyZW5hX2FzYW4uc2tlbC5oICQoTElCQVJFTkFfTUFLRV9BUkdTKVxcbitcXG4rbGliYXJlbmFfYXNhbjogJChMSUJBUkVOQV9BU0FOX1NLRUwpXFxuIGVuZGlmXFxuIFxcbi0jIERlZmluZSB0ZXN0X3Byb2dzIHRlc3QgcnVubmVyLlxcbi1UUlVOTkVSX1RFU1RTX0RJUiA6PSBwcm9nX3Rlc3RzXFxuLVRSVU5ORVJfQlBGX1BST0dTX0RJUiA6PSBwcm9nc1xcbi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9wcm9ncy5jXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgY2dyb3VwX2hlbHBlcnMuY1xcdFxcXFxcXG4tXFx0XFx0XFx0IHRyYWNlX2hlbHBlcnMuY1xcdFxcXFxcXG4tXFx0XFx0XFx0IG5ldHdvcmtfaGVscGVycy5jXFx0XFxcXFxcbi1cXHRcXHRcXHQgdGVzdGluZ19oZWxwZXJzLmNcXHRcXFxcXFxuLVxcdFxcdFxcdCBidGZfaGVscGVycy5jXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgY2FwX2hlbHBlcnMuY1xcdFxcdFxcXFxcXG4tXFx0XFx0XFx0IHVucHJpdl9oZWxwZXJzLmMgXFx0XFxcXFxcbi1cXHRcXHRcXHQgc3lzY3RsX2hlbHBlcnMuY1xcdFxcXFxcXG4tXFx0XFx0XFx0IG5ldGxpbmtfaGVscGVycy5jXFx0XFxcXFxcbi1cXHRcXHRcXHQgaml0X2Rpc2FzbV9oZWxwZXJzLmNcXHRcXFxcXFxuLVxcdFxcdFxcdCBpb19oZWxwZXJzLmNcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCB0ZXN0X2xvYWRlci5jXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgeHNrLmNcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCBkaXNhc20uY1xcdFxcdFxcXFxcXG4tXFx0XFx0XFx0IGRpc2FzbV9oZWxwZXJzLmNcXHRcXFxcXFxuLVxcdFxcdFxcdCBqc29uX3dyaXRlci5jIFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICQoVkVSSUZZX1NJR19IRFIpXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgZmxvd19kaXNzZWN0b3JfbG9hZC5oXFx0XFxcXFxcbi1cXHRcXHRcXHQgaXBfY2hlY2tfZGVmcmFnX2ZyYWdzLmhcXHRcXFxcXFxuLVxcdFxcdFxcdCBicGZ0b29sX2hlbHBlcnMuY1xcdFxcXFxcXG4tXFx0XFx0XFx0IHVzZHRfMS5jIHVzZHRfMi5jXFx0XFxcXFxcbi1cXHRcXHRcXHQgJChMSUJBUkVOQV9TS0VMKVxcdFxcXFxcXG4tXFx0XFx0XFx0ICQoTElCQVJFTkFfQVNBTl9TS0VMKVxcbi1UUlVOTkVSX0xJQl9TT1VSQ0VTIDo9IGZpbmRfYml0LmNcXG4tVFJVTk5FUl9FWFRSQV9GSUxFUyA6PSAkKE9VVFBVVCkvdXJhbmRvbV9yZWFkXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJChPVVRQVVQpL2xpYnVyYW5kb21fcmVhZC5zb1xcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQoT1VUUFVUKS94ZHBfc3lucHJveHlcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKE9VVFBVVCkvc2lnbi1maWxlXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJChPVVRQVVQpL3Vwcm9iZV9tdWx0aVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQoVEVTVF9LTU9EX1RBUkdFVFMpXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgaW1hX3NldHVwLnNoIFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQoVkVSSUZZX1NJR19TRVRVUClcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKHdpbGRjYXJkIHByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV8qLmMpXFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy8qLmJwZi5vKVxcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX0JQRl9CVUlMRF9SVUxFXFxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKSAtREVOQUJMRV9BVE9NSUNTX1RFU1RTXFxuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MpKVxcbi1cXG4tIyBEZWZpbmUgdGVzdF9wcm9ncy1ub19hbHUzMiB0ZXN0IHJ1bm5lci5cXG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFXFxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKVxcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzLG5vX2FsdTMyKSlcXG4tXFxuLSMgRGVmaW5lIHRlc3RfcHJvZ3MtY3B1djQgdGVzdCBydW5uZXIuXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgR2VuZXJhdGVkIHRlc3QgbGlzdCBoZWFkZXJzXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK1xcbitkZWZpbmUgZ2VuX3Rlc3RzX2hkclxcbitcXHQkKGNhbGwgbXNnLFRFU1QtSERSLCwkQClcXG4rXFx0JChRKShlY2hvICcvKiBHZW5lcmF0ZWQgaGVhZGVyLCBkbyBub3QgZWRpdCAqLyc7XFx0XFx0XFxcXFxcbitcXHQgICAgIHNlZCAtbiAtRSAncy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dKylcXFxcKCh2b2lkKT9cXFxcKS4qL0RFRklORV9URVNUKFxcXFwyKS9wJyBcXFxcXFxuK1xcdFxcdCQoQEQpLyouYyB8IHNvcnQpIFxcdTAwM2UgJEBcXG4rZW5kZWZcXG4rXFxuK3Byb2dfdGVzdHMvdGVzdHMuaDogJCh3aWxkY2FyZCBwcm9nX3Rlc3RzLyouYylcXG4rXFx0JChnZW5fdGVzdHNfaGRyKVxcbitcXG4rbWFwX3Rlc3RzL3Rlc3RzLmg6ICQod2lsZGNhcmQgbWFwX3Rlc3RzLyouYylcXG4rXFx0JChnZW5fdGVzdHNfaGRyKVxcbitcXG4rdmVyaWZpZXIvdGVzdHMuaDogdmVyaWZpZXIvKi5jXFxuK1xcdCQoUSkoIGNkIHZlcmlmaWVyLzsgXFxcXFxcbitcXHQgICAgICBlY2hvICcvKiBHZW5lcmF0ZWQgaGVhZGVyLCBkbyBub3QgZWRpdCAqLyc7IFxcXFxcXG4rXFx0ICAgICAgZWNobyAnI2lmZGVmIEZJTExfQVJSQVknOyBcXFxcXFxuK1xcdCAgICAgIGxzICouYyAyXFx1MDAzZSAvZGV2L251bGwgfCBzZWQgLWUgJ3NAXFxcXCguKlxcXFwpQCNpbmNsdWRlIFxcXFxcXFwiXFxcXDFcXFxcXFxcIkAnOyBcXFxcXFxuK1xcdCAgICAgIGVjaG8gJyNlbmRpZicgXFxcXFxcbitcXHQgICAgKSBcXHUwMDNlIHZlcmlmaWVyL3Rlc3RzLmhcXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgU2hhcmVkIGhlbHBlciBvYmplY3RzLCB1c2VkIGJ5IHRoZSBzdGFuZGFsb25lIGJpbmFyaWVzIGJlbG93IGFuZCAoYXNcXG4rIyBwcmVidWlsdCBpbnB1dHMpIGJ5IHRoZSB1bmZsYXZvcmVkIHRlc3RfcHJvZ3MgcnVubmVyLlxcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbitcXG4rIyBTb21lIHV0aWxpdHkgZnVuY3Rpb25zIHVzZSBMTFZNIGxpYnJhcmllc1xcbiskKE9VVFBVVCkvaml0X2Rpc2FzbV9oZWxwZXJzLm86IENGTEFHUyArPSAkKExMVk1fQ0ZMQUdTKVxcbitcXG4rSEVMUEVSX09CSlMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyx0ZXN0aW5nX2hlbHBlcnMubyBjZ3JvdXBfaGVscGVycy5vIFxcXFxcXG4rXFx0ICAgICAgIHRyYWNlX2hlbHBlcnMubyBuZXR3b3JrX2hlbHBlcnMubyBqc29uX3dyaXRlci5vXFx0XFx0XFxcXFxcbitcXHQgICAgICAgY2FwX2hlbHBlcnMubyB1bnByaXZfaGVscGVycy5vIHVzZHRfMS5vIHVzZHRfMi5vIHhzay5vKVxcbitcXG4rIyAkKEJQRlRPT0wpIGlzIGEgcHJlcmVxdWlzaXRlIGJlY2F1c2UgaXRzIHN1Yi1tYWtlIGlzIHdoYXQgaW5zdGFsbHNcXG4rIyBsaWJicGYncyBpbnRlcm5hbCBoZWFkZXJzIChicGYvaGFzaG1hcC5oLCBicGYvbGliYnBmX2ludGVybmFsLmgpIGludG9cXG4rIyAkKElOQ0xVREVfRElSKTsgd2l0aG91dCBpdCwgaGVscGVycyBpbmNsdWRpbmcgdGhvc2UgaGVhZGVycyByYWNlIHRoZVxcbisjIGluc3RhbGwgYW5kIGNhbiBzaWxlbnRseSBwaWNrIHVwIHRoZSBzb3VyY2UtdHJlZSBjb3BpZXMgaW5zdGVhZC5cXG4rJChIRUxQRVJfT0JKUyk6IGZsb3dfZGlzc2VjdG9yX2xvYWQuaCBpcF9jaGVja19kZWZyYWdfZnJhZ3MuaFxcdFxcdFxcXFxcXG4rXFx0XFx0JChWRVJJRllfU0lHX0hEUikgcHJvZ190ZXN0cy90ZXN0cy5oICQoQlBGT0JKKSAkKEJQRlRPT0wpXFxuK1xcbiskKE9VVFBVVCkvdGVzdF9zb2NrbWFwOiAkKE9VVFBVVCkvY2dyb3VwX2hlbHBlcnMubyAkKE9VVFBVVCkvdGVzdGluZ19oZWxwZXJzLm9cXG4rJChPVVRQVVQpL3Rlc3RfdGNwbm90aWZ5X3VzZXI6ICQoT1VUUFVUKS9jZ3JvdXBfaGVscGVycy5vXFx0XFx0XFxcXFxcbitcXHRcXHRcXHQgICAgICAgJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vXFx0XFx0XFxcXFxcbitcXHRcXHRcXHQgICAgICAgJChPVVRQVVQpL3RyYWNlX2hlbHBlcnMub1xcbiskKE9VVFBVVCkvdGVzdF90YWc6ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xcbiskKE9VVFBVVCkvdGVzdF9saXJjX21vZGUyX3VzZXI6ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xcbiskKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZDogZmxvd19kaXNzZWN0b3JfbG9hZC5oICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xcbitcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rIyBUZXN0IHJ1bm5lciBpbnN0YW5jZXMsIG9uZSBzdWItbWFrZSBlYWNoIChzZWUgTWFrZWZpbGUucnVubmVyKS5cXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rXFxuKyMgVGhlIExMVk0gZmVhdHVyZS1wcm9iZSByZXN1bHRzIGFyZSBleHBvcnRlZCB0byB0aGUgcnVubmVyIHN1Yi1tYWtlcy5cXG4rIyBDQyBpcyBwYXNzZWQgZXhwbGljaXRseSBpbnN0ZWFkOiBleHBvcnRpbmcgaXQgd291bGQgYWxzbyBsZWFrIGxpYi5taydzXFxuKyMgQ0MgaW50byB0aGUgbGliYnBmL2JwZnRvb2wvcmVzb2x2ZV9idGZpZHMgc3ViLWJ1aWxkcywgd2hpY2ggY29tcHV0ZVxcbisjIHRoZWlyIG93bi5cXG4rZXhwb3J0IExMVk1fQ0ZMQUdTIExMVk1fTERMSUJTIExMVk1fTERGTEFHU1xcbitcXG4rUlVOTkVSX01BS0UgOj0gJChNQUtFKSAtZiBNYWtlZmlsZS5ydW5uZXIgT1VUUFVUPSQoT1VUUFVUKSBDQz0nJChDQyknXFxuK1xcbisjIEV2ZXJ5dGhpbmcgYSBydW5uZXIgaW5zdGFuY2UgcmVmZXJlbmNlcyBidXQgZG9lcyBub3Qga25vdyBob3cgdG8gYnVpbGQuXFxuK1JVTk5FUl9QUkVSRVFTIDo9ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChCUEZUT09MKVxcdFxcdFxcXFxcXG4rXFx0XFx0ICAkKFRSVU5ORVJfQlBGVE9PTCkgJChSRVNPTFZFX0JURklEUylcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgJChPVVRQVVQpL3ZlcmlzdGF0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICQoVkVSSUZZX1NJR19IRFIpICQoUFJJVkFURV9LRVkpICQoVkVSSUZJQ0FUSU9OX0NFUlQpXFx0XFxcXFxcbitcXHRcXHQgICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXFx0XFx0XFxcXFxcbitcXHRcXHQgIHByb2dfdGVzdHMvdGVzdHMuaFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAkKEhFTFBFUl9PQkpTKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAkKE9VVFBVVCkvdXJhbmRvbV9yZWFkICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc29cXHRcXFxcXFxuK1xcdFxcdCAgJChPVVRQVVQpL3hkcF9zeW5wcm94eSAkKE9VVFBVVCkvc2lnbi1maWxlXFx0XFx0XFxcXFxcbitcXHRcXHQgICQoT1VUUFVUKS91cHJvYmVfbXVsdGkgJChURVNUX0tNT0RfVEFSR0VUUylcXG4rXFxuK0ZPUkNFOlxcbitcXG4rIyBUaGUgZGVmYXVsdCBmbGF2b3IncyBza2VsZXRvbnMgYXJlIGFsc28gaW5wdXRzIG9mIGJlbmNoLCB0ZXN0X21hcHMsXFxuKyMgeHNreGNlaXZlciwgeGRwXyogYW5kIHRlc3RfY3BwOyBcXFwiZGVmYXVsdC1za2Vsc1xcXCIgYnVpbGRzIGp1c3QgdGhvc2VcXG4rIyB3aXRob3V0IHRoZSB0ZXN0X3Byb2dzIHRlc3Qgb2JqZWN0cyBhbmQgYmluYXJ5LlxcbisuUEhPTlk6IGRlZmF1bHQtc2tlbHNcXG4rZGVmYXVsdC1za2VsczogJChSVU5ORVJfUFJFUkVRUylcXG4rXFx0KyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9IFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXFxcXG4rXFx0XFx0QlBGX0JVSUxEPWNsYW5nIEJQRl9NQ1BVPXYzIEJQRl9ERUZJTkVTPS1ERU5BQkxFX0FUT01JQ1NfVEVTVFMgc2tlbHNcXG4rXFxuKyQoT1VUUFVUKS90ZXN0X3Byb2dzOiAkKFJVTk5FUl9QUkVSRVFTKSBkZWZhdWx0LXNrZWxzIEZPUkNFXFxuK1xcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPSBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxcXFxuK1xcdFxcdEJQRl9CVUlMRD1jbGFuZyBCUEZfTUNQVT12MyBCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTXFxuK1xcbiskKE9VVFBVVCkvdGVzdF9wcm9ncy1ub19hbHUzMjogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0VcXG4rXFx0KyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9bm9fYWx1MzIgVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcXFxcbitcXHRcXHRCUEZfQlVJTEQ9Y2xhbmcgQlBGX01DUFU9djJcXG4rXFxuIGlmbmVxICgkKENMQU5HX0NQVVY0KSwpXFxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfQ1BVVjRfQlBGX0JVSUxEX1JVTEVcXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxjcHV2NCkpXFxuKyQoT1VUUFVUKS90ZXN0X3Byb2dzLWNwdXY0OiAkKFJVTk5FUl9QUkVSRVFTKSBGT1JDRVxcbitcXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1jcHV2NCBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxcXFxuK1xcdFxcdEJQRl9CVUlMRD1jbGFuZyBCUEZfTUNQVT12NCBCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTXFxuIGVuZGlmXFxuIFxcbi0jIERlZmluZSB0ZXN0X3Byb2dzIEJQRi1HQ0MtZmxhdm9yZWQgdGVzdCBydW5uZXIuXFxuIGlmbmVxICgkKEJQRl9HQ0MpLClcXG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBHQ0NfQlBGX0JVSUxEX1JVTEVcXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsZ2NjLClcXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxicGZfZ2NjKSlcXG4tZW5kaWZcXG4tXFxuLSMgRGVmaW5lIHRlc3RfbWFwcyB0ZXN0IHJ1bm5lci5cXG4tVFJVTk5FUl9URVNUU19ESVIgOj0gbWFwX3Rlc3RzXFxuLVRSVU5ORVJfQlBGX1BST0dTX0RJUiA6PSBwcm9nc1xcbi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9tYXBzLmNcXG4tVFJVTk5FUl9MSUJfU09VUkNFUyA6PVxcbi1UUlVOTkVSX0VYVFJBX0ZJTEVTIDo9XFxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gJCQoZXJyb3Igbm8gQlBGIG9iamVjdHMgc2hvdWxkIGJlIGJ1aWx0KVxcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj1cXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9tYXBzKSlcXG4tXFxuLSMgRGVmaW5lIHRlc3RfdmVyaWZpZXIgdGVzdCBydW5uZXIuXFxuLSMgSXQgaXMgbXVjaCBzaW1wbGVyIHRoYW4gdGVzdF9tYXBzL3Rlc3RfcHJvZ3MgYW5kIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgZnJvbVxcbi0jIHRoZW0gKGUuZy4sIHRlc3QuaCBpcyB1c2luZyBjb21wbGV0ZWx5IHBhdHRlcm4pLCB0aGF0IGl0J3Mgd29ydGgganVzdFxcbi0jIGV4cGxpY2l0bHkgZGVmaW5pbmcgYWxsIHRoZSBydWxlcyBleHBsaWNpdGx5Llxcbi12ZXJpZmllci90ZXN0cy5oOiB2ZXJpZmllci8qLmNcXG4tXFx0JChzaGVsbCAoIGNkIHZlcmlmaWVyLzsgXFxcXFxcbi1cXHRcXHQgIGVjaG8gJy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJzsgXFxcXFxcbi1cXHRcXHQgIGVjaG8gJyNpZmRlZiBGSUxMX0FSUkFZJzsgXFxcXFxcbi1cXHRcXHQgIGxzICouYyAyXFx1MDAzZSAvZGV2L251bGwgfCBzZWQgLWUgJ3NAXFxcXCguKlxcXFwpQCNpbmNsdWRlIFxcXFxcXFwiXFxcXDFcXFxcXFxcIkAnOyBcXFxcXFxuLVxcdFxcdCAgZWNobyAnI2VuZGlmJyBcXFxcXFxuLVxcdFxcdCkgXFx1MDAzZSB2ZXJpZmllci90ZXN0cy5oKVxcbi0kKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogdGVzdF92ZXJpZmllci5jIHZlcmlmaWVyL3Rlc3RzLmggJChCUEZPQkopIHwgJChPVVRQVVQpXFxuKyQoT1VUUFVUKS90ZXN0X3Byb2dzLWJwZl9nY2M6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXFxuK1xcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPWJwZl9nY2MgVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcXFxcbitcXHRcXHRCUEZfQlVJTEQ9Z2NjXFxuK2VuZGlmXFxuK1xcbisjIHRlc3RfbWFwcyBjb21waWxlcyBtYXBfdGVzdHMvKi5jIGFnYWluc3QgdGhlIGRlZmF1bHQgZmxhdm9yJ3Mgc2tlbGV0b25zXFxuKyQoT1VUUFVUKS90ZXN0X21hcHM6ICQoUlVOTkVSX1BSRVJFUVMpIG1hcF90ZXN0cy90ZXN0cy5oIGRlZmF1bHQtc2tlbHMgRk9SQ0VcXG4rXFx0KyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9tYXBzIEZMQVZPUj0gVEVTVFNfRElSPW1hcF90ZXN0cyBcXFxcXFxuK1xcdFxcdEJQRl9CVUlMRD1ub25lXFxuK1xcbisjIERlZmF1bHQtZmxhdm9yIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnMgY29uc3VtZWQgYnkgdGFyZ2V0cyBpbiB0aGlzXFxuKyMgTWFrZWZpbGUgKGFuZCBieSBsaWIubWsncyBpbnN0YWxsIHJ1bGUpIGFyZSBwcm9kdWNlZCBieSB0aGUgcnVubmVyXFxuKyMgc3ViLW1ha2UgYWJvdmU7IHRoZSBlbXB0eSByZWNpcGUgcGx1cyB0aGUgb3JkZXItb25seSBwcmVyZXF1aXNpdGVcXG4rIyBtYWtlcyB0aGVtIGF2YWlsYWJsZSBoZXJlIHdpdGhvdXQgZHVwbGljYXRpbmcgdGhlIHJ1bm5lcidzIHJ1bGVzLlxcbitERUZBVUxUX0JQRl9PQkpTIDo9ICQocGF0c3Vic3QgcHJvZ3MvJS5jLCQoT1VUUFVUKS8lLmJwZi5vLCQod2lsZGNhcmQgcHJvZ3MvKi5jKSlcXG4rVEVTVF9HRU5fRklMRVMgKz0gJChERUZBVUxUX0JQRl9PQkpTKVxcbitcXG4rQkVOQ0hfU0tFTFMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyxcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgICB0ZXN0X292ZXJoZWFkLnNrZWwuaCB0cmlnZ2VyX2JlbmNoLnNrZWwuaFxcdFxcdFxcXFxcXG4rXFx0ICAgICAgIHJpbmdidWZfYmVuY2guc2tlbC5oIHBlcmZidWZfYmVuY2guc2tlbC5oXFx0XFx0XFxcXFxcbitcXHQgICAgICAgYmxvb21fZmlsdGVyX2JlbmNoLnNrZWwuaCBicGZfbG9vcF9iZW5jaC5za2VsLmhcXHRcXHRcXFxcXFxuK1xcdCAgICAgICBzdHJuY21wX2JlbmNoLnNrZWwuaCBicGZfaGFzaG1hcF9mdWxsX3VwZGF0ZV9iZW5jaC5za2VsLmhcXFxcXFxuK1xcdCAgICAgICBsb2NhbF9zdG9yYWdlX2JlbmNoLnNrZWwuaFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAgIGxvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlX2JlbmNoLnNrZWwuaFxcdFxcdFxcXFxcXG4rXFx0ICAgICAgIGJlbmNoX2xvY2FsX3N0b3JhZ2VfY3JlYXRlLnNrZWwuaFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAgIGJwZl9oYXNobWFwX2xvb2t1cC5za2VsLmggaHRhYl9tZW1fYmVuY2guc2tlbC5oXFx0XFx0XFxcXFxcbitcXHQgICAgICAgY3J5cHRvX2JlbmNoLnNrZWwuaCBiZW5jaF9zb2NrbWFwX3Byb2cuc2tlbC5oXFx0XFx0XFxcXFxcbitcXHQgICAgICAgbHBtX3RyaWVfYmVuY2guc2tlbC5oIGxwbV90cmllX21hcC5za2VsLmhcXHRcXHRcXFxcXFxuK1xcdCAgICAgICBicGZfbm9wX2JlbmNoLnNrZWwuaCB4ZHBfbGJfYmVuY2guc2tlbC5oKVxcbitUT1BfU0tFTFMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyx4c2tfeGRwX3Byb2dzLnNrZWwuaFxcdFxcdFxcXFxcXG4rXFx0ICAgICB4ZHBfaHdfbWV0YWRhdGEuc2tlbC5oIHhkcF9mZWF0dXJlcy5za2VsLmhcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgdGVzdF9jb3JlX2V4dGVybi5za2VsLmgpICQoQkVOQ0hfU0tFTFMpXFxuK1xcbisjIEVtcHR5LXJlY2lwZSBkZWxlZ2F0aW9uOiBcXFwiZGVmYXVsdC1za2Vsc1xcXCIgKHJlKWJ1aWxkcyB0aGUgZmlsZSB2aWEgdGhlXFxuKyMgcnVubmVyIHN1Yi1tYWtlLCBhZnRlciB3aGljaCBtYWtlIHJlLXN0YXRzIHRoZSB0YXJnZXQsIHNvIGRlcGVuZGVudHNcXG4rIyBzZWUgZnJlc2ggdGltZXN0YW1wcyB3aXRoaW4gdGhlIHNhbWUgaW52b2NhdGlvbi4gRGVwZW5kZW50cyBzdGlsbFxcbisjIHJlYnVpbGQgb24gbXRpbWUgb25seSAtIHRoZSBwaG9ueSBwcmVyZXF1aXNpdGUgZG9lcyBub3QgY2FzY2FkZS5cXG4rJChERUZBVUxUX0JQRl9PQkpTKSAkKFRPUF9TS0VMUyk6IGRlZmF1bHQtc2tlbHMgO1xcbitcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rIyBTdGFuZGFsb25lIHRlc3QgYmluYXJpZXNcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rXFxuKyMgdGVzdF92ZXJpZmllciBpcyBtdWNoIHNpbXBsZXIgdGhhbiB0ZXN0X21hcHMvdGVzdF9wcm9ncyBhbmRcXG4rIyBzdWZmaWNpZW50bHkgZGlmZmVyZW50IGZyb20gdGhlbSAoZS5nLiwgaXRzIHRlc3RzLmggdXNlcyBhIGNvbXBsZXRlbHlcXG4rIyBkaWZmZXJlbnQgcGF0dGVybiksIHRoYXQgaXQncyB3b3J0aCBqdXN0IGRlZmluaW5nIGl0cyBydWxlcyBleHBsaWNpdGx5LlxcbiskKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogdGVzdF92ZXJpZmllci5jIHZlcmlmaWVyL3Rlc3RzLmggJChCUEZPQkopXFx0XFxcXFxcbitcXHRcXHRcXHQgJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vXFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHQgJChPVVRQVVQpL2NhcF9oZWxwZXJzLm9cXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdCAkKE9VVFBVVCkvdW5wcml2X2hlbHBlcnMub1xcbiBcXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXFxuIFxcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxcbiBcXG4gIyBJbmNsdWRlIGZpbmRfYml0LmMgdG8gY29tcGlsZSB4c2t4Y2VpdmVyLlxcbiBFWFRSQV9TUkMgOj0gJChUT09MU0RJUikvbGliL2ZpbmRfYml0LmMgcHJvZ190ZXN0cy90ZXN0X3hzay5jIHByb2dfdGVzdHMvdGVzdF94c2suaFxcbi0kKE9VVFBVVCkveHNreGNlaXZlcjogJChFWFRSQV9TUkMpIHhza3hjZWl2ZXIuYyB4c2t4Y2VpdmVyLmggJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveHNrX3hkcF9wcm9ncy5za2VsLmggJChCUEZPQkopIHwgJChPVVRQVVQpXFxuKyQoT1VUUFVUKS94c2t4Y2VpdmVyOiAkKEVYVFJBX1NSQykgeHNreGNlaXZlci5jIHhza3hjZWl2ZXIuaCAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hzay5vICQoT1VUUFVUKS94c2tfeGRwX3Byb2dzLnNrZWwuaCAkKEJQRk9CSilcXG4gXFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxcbiBcXHQkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEBcXG4gXFxuLSQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGE6IHhkcF9od19tZXRhZGF0YS5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YS5za2VsLmggfCAkKE9VVFBVVClcXG4rJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YTogeGRwX2h3X21ldGFkYXRhLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveGRwX2h3X21ldGFkYXRhLnNrZWwuaFxcbiBcXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXFxuIFxcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxcbiBcXG4tJChPVVRQVVQpL3hkcF9mZWF0dXJlczogeGRwX2ZlYXR1cmVzLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94ZHBfZmVhdHVyZXMuc2tlbC5oIHwgJChPVVRQVVQpXFxuKyQoT1VUUFVUKS94ZHBfZmVhdHVyZXM6IHhkcF9mZWF0dXJlcy5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveGRwX2ZlYXR1cmVzLnNrZWwuaFxcbiBcXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXFxuIFxcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxcbiBcXG5AQCAtOTU2LDExICs1NTgsMTggQEAgJChPVVRQVVQpL3Rlc3RfY3BwOiB0ZXN0X2NwcC5jcHAgJChPVVRQVVQpL3Rlc3RfY29yZV9leHRlcm4uc2tlbC5oICQoQlBGT0JKKVxcbiBcXHQkKGNhbGwgbXNnLENYWCwsJEApXFxuIFxcdCQoUSkkKENYWCkgJChDWFhGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmNwcCwkXikgJChMRExJQlMpIC1vICRAXFxuIFxcbi0jIEJlbmNobWFyayBydW5uZXJcXG4tJChPVVRQVVQpL2JlbmNoXyUubzogYmVuY2hzL2JlbmNoXyUuYyBiZW5jaC5oICQoQlBGT0JKKVxcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbisjIEJlbmNobWFyayBydW5uZXIuIFRoZSBiZW5jaG1hcmsgbGlzdCBpcyBkZWZpbmVkIGJ5IHRoZSBmaWxlcyBpblxcbisjIGJlbmNocy86IGV2ZXJ5IGJlbmNocy9iZW5jaF8qLmMgaXMgY29tcGlsZWQgYW5kIGxpbmtlZCBpbi5cXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rXFxuK0JFTkNIX09CSlMgOj0gJChzb3J0ICQocGF0c3Vic3QgYmVuY2hzLyUuYywkKE9VVFBVVCkvJS5vLCQod2lsZGNhcmQgYmVuY2hzL2JlbmNoXyouYykpKVxcbitcXG4rJChPVVRQVVQpL2JlbmNoXyUubzogYmVuY2hzL2JlbmNoXyUuYyBiZW5jaC5oICQoQlBGT0JKKSB8IGRlZmF1bHQtc2tlbHNcXG4gXFx0JChjYWxsIG1zZyxDQywsJEApXFxuLVxcdCQoUSkkKENDKSAkKENGTEFHUykgLU8yIC1jICQoZmlsdGVyICUuYywkXikgJChMRExJQlMpIC1vICRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxcXFxuLVxcdFxcdCgkKFJNKSAkQDsgcHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdTS0lQLUJFTkNIJyAnJChub3RkaXIgJEApJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAtbyAkQCAkKGNhbGwgc2tpcF9vbl9mYWlsLEJFTkNIKVxcbitcXG4rIyBiZW5jaG1hcmstc3BlY2lmaWMgZ2VuZXJhdGVkLXNrZWxldG9uIGRlcGVuZGVuY2llc1xcbiAkKE9VVFBVVCkvYmVuY2hfcmVuYW1lLm86ICQoT1VUUFVUKS90ZXN0X292ZXJoZWFkLnNrZWwuaFxcbiAkKE9VVFBVVCkvYmVuY2hfdHJpZ2dlci5vOiAkKE9VVFBVVCkvdHJpZ2dlcl9iZW5jaC5za2VsLmhcXG4gJChPVVRQVVQpL2JlbmNoX3JpbmdidWZzLm86ICQoT1VUUFVUKS9yaW5nYnVmX2JlbmNoLnNrZWwuaCBcXFxcXFxuQEAgLTk4MCwzNyArNTg5LDE5IEBAICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubzogJChPVVRQVVQpL2xwbV90cmllX2JlbmNoLnNrZWwuaCAkKE9VVFBVVCkvbHBtX3RyXFxuICQoT1VUUFVUKS9iZW5jaF9icGZfbm9wLm86ICQoT1VUUFVUKS9icGZfbm9wX2JlbmNoLnNrZWwuaCBiZW5jaF9icGZfdGltaW5nLmhcXG4gJChPVVRQVVQpL2JlbmNoX3hkcF9sYi5vOiAkKE9VVFBVVCkveGRwX2xiX2JlbmNoLnNrZWwuaCBiZW5jaF9icGZfdGltaW5nLmhcXG4gJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubzogYmVuY2hfYnBmX3RpbWluZy5oXFxuK1xcbiAkKE9VVFBVVCkvYmVuY2gubzogYmVuY2guaCB0ZXN0aW5nX2hlbHBlcnMuaCAkKEJQRk9CSilcXG4gJChPVVRQVVQpL2JlbmNoOiBMRExJQlMgKz0gLWxtXFxuLSQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXFxcXFxcbi1cXHRcXHQgJChURVNUSU5HX0hFTFBFUlMpIFxcXFxcXG4tXFx0XFx0ICQoVFJBQ0VfSEVMUEVSUykgXFxcXFxcbi1cXHRcXHQgJChDR1JPVVBfSEVMUEVSUykgXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2NvdW50Lm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX3JlbmFtZS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF90cmlnZ2VyLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX3JpbmdidWZzLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2Jsb29tX2ZpbHRlcl9tYXAubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2xvb3AubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX2NyZWF0ZS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9odGFiX21lbS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfY3J5cHRvLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX3NvY2ttYXAubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfbHBtX3RyaWVfbWFwLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX25vcC5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF94ZHBfbGIubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvdXNkdF8xLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL3VzZHRfMi5vIFxcXFxcXG4tXFx0XFx0ICNcXG4rJChPVVRQVVQpL2JlbmNoOiAkKE9VVFBVVCkvYmVuY2gub1xcdFxcdFxcXFxcXG4rXFx0XFx0ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xcdFxcXFxcXG4rXFx0XFx0ICQoT1VUUFVUKS90cmFjZV9oZWxwZXJzLm9cXHRcXFxcXFxuK1xcdFxcdCAkKE9VVFBVVCkvY2dyb3VwX2hlbHBlcnMub1xcdFxcXFxcXG4rXFx0XFx0ICQoT1VUUFVUKS91c2R0XzEub1xcdFxcdFxcXFxcXG4rXFx0XFx0ICQoT1VUUFVUKS91c2R0XzIub1xcdFxcdFxcXFxcXG4rXFx0XFx0ICQoQkVOQ0hfT0JKUylcXG4gXFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxcbi1cXHQkKFEpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChmaWx0ZXIgJS5hICUubywkXikgJChMRExJQlMpIC1vICRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxcXFxuLVxcdFxcdCgkKFJNKSAkQDsgcHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdTS0lQLUxJTksnICckKG5vdGRpciAkQCkgKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQCBcXFxcXFxuK1xcdFxcdCQoY2FsbCBza2lwX29uX2ZhaWwsTElOSywsKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpKVxcbiBcXG4gIyBUaGlzIHdvcmtzIGFyb3VuZCBHQ0Mgd2FybmluZyBhYm91dCBzbnByaW50ZiB0cnVuY2F0aW5nIHN0cmluZ3MgbGlrZTpcXG4gI1xcbkBAIC0xMDIyLDEzICs2MTMsNiBAQCAkKE9VVFBVVCkvdmVyaXN0YXQ6ICQoT1VUUFVUKS92ZXJpc3RhdC5vXFxuIFxcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcXG4gXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQFxcbiBcXG4tIyBMaW5raW5nIHVwcm9iZV9tdWx0aSBjYW4gZmFpbCBkdWUgdG8gcmVsb2NhdGlvbiBvdmVyZmxvd3Mgb24gbWlwcy5cXG4tJChPVVRQVVQpL3Vwcm9iZV9tdWx0aTogQ0ZMQUdTICs9ICQoaWYgJChmaWx0ZXIgbWlwcywgJChBUkNIKSksLW14Z290KVxcbi0kKE9VVFBVVCkvdXByb2JlX211bHRpOiB1cHJvYmVfbXVsdGkuYyB1cHJvYmVfbXVsdGkubGRcXG4tXFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxcbi1cXHQkKFEpJChDQykgJChDRkxBR1MpIC1XbCwtVCx1cHJvYmVfbXVsdGkubGQgLU8wICQoTERGTEFHUykgXFx0XFxcXFxcbi1cXHRcXHQkKGZpbHRlci1vdXQgJS5sZCwkXikgJChMRExJQlMpIC1vICRAXFxuLVxcbiBFWFRSQV9DTEVBTiA6PSAkKFNDUkFUQ0hfRElSKSAkKEhPU1RfU0NSQVRDSF9ESVIpXFx0XFx0XFx0XFxcXFxcbiBcXHRwcm9nX3Rlc3RzL3Rlc3RzLmggbWFwX3Rlc3RzL3Rlc3RzLmggdmVyaWZpZXIvdGVzdHMuaFxcdFxcdFxcXFxcXG4gXFx0ZmVhdHVyZSBicGZ0b29sICQoVEVTVF9LTU9EX1RBUkdFVFMpXFx0XFx0XFx0XFx0XFxcXFxcbkBAIC0xMDM4LDcgKzYyMiw3IEBAIEVYVFJBX0NMRUFOIDo9ICQoU0NSQVRDSF9ESVIpICQoSE9TVF9TQ1JBVENIX0RJUilcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdCAgICAgICBsaWJ1cmFuZG9tX3JlYWQuc28pXFx0XFx0XFx0XFxcXFxcbiBcXHQkKE9VVFBVVCkvRkVBVFVSRS1EVU1QLnNlbGZ0ZXN0c1xcbiBcXG4tLlBIT05ZOiBkb2NzIGRvY3MtY2xlYW5cXG4rLlBIT05ZOiBkb2NzIGRvY3MtY2xlYW4gbGliYXJlbmEgbGliYXJlbmFfYXNhblxcbiBcXG4gIyBEZWxldGUgcGFydGlhbGx5IHVwZGF0ZWQgKGNvcnJ1cHRlZCkgZmlsZXMgb24gZXJyb3JcXG4gLkRFTEVURV9PTl9FUlJPUjpcXG5AQCAtMTA2Miw5ICs2NDYsMyBAQCBvdmVycmlkZSBkZWZpbmUgSU5TVEFMTF9SVUxFXFxuIFxcdFxcdFxcdCQoSU5TVEFMTF9QQVRIKS8kJERJUjtcXHRcXHRcXHRcXHQgIFxcXFxcXG4gXFx0ZG9uZVxcbiBlbmRlZlxcbi1cXG4tbGliYXJlbmE6ICQoTElCQVJFTkFfU0tFTClcXG4tXFxuLWlmbmVxICgkKENMQU5HX0hBU19BUkVOQV9BU0FOKSwpXFxuLWxpYmFyZW5hX2FzYW46ICQoTElCQVJFTkFfQVNBTl9TS0VMKVxcbi1lbmRpZlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFyc1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmVhOTc1ZmVlZjAxMzZmXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnNcXG5AQCAtMCwwICsxLDIwNCBAQFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNcXG4rIyBTaGFyZWQgdG9vbGNoYWluLCBwYXRoIGFuZCBmbGFnIGRlZmluaXRpb25zIGZvciB0aGUgQlBGIHNlbGZ0ZXN0cyBidWlsZC5cXG4rIyBJbmNsdWRlZCBieSBib3RoIE1ha2VmaWxlICh0aGUgdG9wIGxldmVsKSBhbmQgTWFrZWZpbGUucnVubmVyIChvbmVcXG4rIyB0ZXN0LXJ1bm5lciBpbnN0YW5jZSkuXFxuKyNcXG4rIyBSZXF1aXJlbWVudHMgYXQgaW5jbHVkZSB0aW1lOlxcbisjICAgLSAkKE9VVFBVVCkgaXMgc2V0IHRvIGFuIGFic29sdXRlIHBhdGhcXG4rIyAgIC0gdG9vbHMvYnVpbGQvQnVpbGQuaW5jbHVkZSwgdG9vbHMvc2NyaXB0cy9NYWtlZmlsZS5hcmNoIGFuZFxcbisjICAgICB0b29scy9zY3JpcHRzL01ha2VmaWxlLmluY2x1ZGUgaGF2ZSBiZWVuIGluY2x1ZGVkIChmb3IgU1JDQVJDSCBldGMuKVxcbitcXG4rQ1hYID89ICQoQ1JPU1NfQ09NUElMRSlnKytcXG4rUEtHX0NPTkZJRyA/PSAkKENST1NTX0NPTVBJTEUpcGtnLWNvbmZpZ1xcbitcXG4rVE9PTFNESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uKVxcbitMSUJESVIgOj0gJChUT09MU0RJUikvbGliXFxuK0JQRkRJUiA6PSAkKExJQkRJUikvYnBmXFxuK1RPT0xTSU5DRElSIDo9ICQoVE9PTFNESVIpL2luY2x1ZGVcXG4rVE9PTFNBUkNISU5DRElSIDo9ICQoVE9PTFNESVIpL2FyY2gvJChTUkNBUkNIKS9pbmNsdWRlXFxuK0JQRlRPT0xESVIgOj0gJChUT09MU0RJUikvYnBmL2JwZnRvb2xcXG4rQVBJRElSIDo9ICQoVE9PTFNJTkNESVIpL3VhcGlcXG4raWZuZXEgKCQoTyksKVxcbitHRU5ESVIgOj0gJChPKS9pbmNsdWRlL2dlbmVyYXRlZFxcbitlbHNlXFxuK0dFTkRJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4vaW5jbHVkZS9nZW5lcmF0ZWQpXFxuK2VuZGlmXFxuK0dFTkhEUiA6PSAkKEdFTkRJUikvYXV0b2NvbmYuaFxcbitcXG4raWZuZXEgKCQod2lsZGNhcmQgJChHRU5IRFIpKSwpXFxuKyAgR0VORkxBR1MgOj0gLURIQVZFX0dFTkhEUlxcbitlbmRpZlxcbitcXG4raWZlcSAoJChzcmN0cmVlKSwpXFxuK3NyY3RyZWUgOj0gJChhYnNwYXRoIC4uLy4uLy4uLy4uKVxcbitlbmRpZlxcbitcXG4rIyBJbW1lZGlhdGUgKHdpdGggYW4gb3ZlcnJpZGUtcHJlc2VydmluZyBndWFyZCk6IGEgcGxhaW4gPz0gc3RheXNcXG4rIyByZWN1cnNpdmVseSBleHBhbmRlZCBhbmQgd291bGQgcmUtcnVuICdjb21tYW5kIC12JyBvbiBldmVyeSBleHBhbnNpb24uXFxuK2lmZXEgKCQob3JpZ2luIEJQRl9HQ0MpLHVuZGVmaW5lZClcXG4rQlBGX0dDQ1xcdFxcdDo9ICQoc2hlbGwgY29tbWFuZCAtdiBicGYtZ2NjOylcXG4rZW5kaWZcXG4raWZkZWYgQVNBTlxcbitTQU5fQ0ZMQUdTXFx0Pz0gLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXFxuK2Vsc2VcXG4rU0FOX0NGTEFHU1xcdD89XFxuK2VuZGlmXFxuK1NBTl9MREZMQUdTXFx0Pz0gJChTQU5fQ0ZMQUdTKVxcbitSRUxFQVNFXFx0XFx0Pz1cXG4rT1BUX0ZMQUdTXFx0Pz0gJChpZiAkKFJFTEVBU0UpLC1PMiwtTzApXFxuK1xcbitMSUJFTEZfQ0ZMQUdTXFx0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWNmbGFncyAyXFx1MDAzZS9kZXYvbnVsbClcXG4rTElCRUxGX0xJQlNcXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyXFx1MDAzZS9kZXYvbnVsbCB8fCBlY2hvIC1sZWxmKVxcbitcXG4rU0tJUF9ET0NTXFx0Pz1cXG4rU0tJUF9MTFZNXFx0Pz1cXG4rU0tJUF9MSUJCRkRcXHQ/PVxcbitTS0lQX0NSWVBUT1xcdD89XFxuK1xcbisjIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxcbisjIGJlbmNobWFyayBjb21waWxhdGlvbiBmYWlsdXJlIGlzIGZhdGFsLiBTZXQgdG8gMCB0byB0b2xlcmF0ZSBmYWlsdXJlc1xcbisjIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLlxcbitCUEZfU1RSSUNUX0JVSUxEID89IDFcXG4rUEVSTUlTU0lWRSA6PSAkKGZpbHRlciAwLCQoQlBGX1NUUklDVF9CVUlMRCkpXFxuK1xcbisjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgc3VmZml4OiBvbiBmYWlsdXJlLCByZW1vdmUgdGhlIHRhcmdldCwgZW1pdCBhXFxuKyMgU0tJUCBtYXJrZXIgYW5kIHJlcG9ydCBzdWNjZXNzIHNvIHRoZSByZXN0IG9mIHRoZSBidWlsZCBjb250aW51ZXMuXFxuKyMgJCgxKSAtIFNLSVAgdGFnIChCUEYsIFRFU1QsIEJFTkNILCBTS0VMLCBMSU5LLCAuLi4pXFxuKyMgJCgyKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldFxcbisjICQoMykgLSBvcHRpb25hbCBub3RlIGFwcGVuZGVkIHRvIHRoZSBTS0lQIG1lc3NhZ2VcXG4rc2tpcF9vbl9mYWlsID0gJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgJChSTSkgJEAgJCgyKTsgXFxcXFxcbitcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtJCgxKScgJyQobm90ZGlyICRAKSQoaWYgJCgzKSwgJCgzKSknIDFcXHUwMDNlXFx1MDAyNjI7IH0pXFxuK1xcbisjIEtlcm5lbCB0ZXN0IG1vZHVsZXM7IFRFU1RfS01PRFM9IG9uIHRoZSBjb21tYW5kIGxpbmUgZGlzYWJsZXMgdGhlbS5cXG4rVEVTVF9LTU9EUyA/PSBicGZfdGVzdG1vZC5rbyBicGZfdGVzdF9ub19jZmkua28gYnBmX3Rlc3RfbW9kb3JkZXJfeC5rbyBcXFxcXFxuK1xcdGJwZl90ZXN0X21vZG9yZGVyX3kua28gYnBmX3Rlc3RfcnFzcGlubG9jay5rb1xcbitURVNUX0tNT0RfVEFSR0VUUyA9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sJChURVNUX0tNT0RTKSlcXG4rXFxuKyMgT3V0cHV0LXRyZWUgbGF5b3V0LiBEZWZpbmVkIGJlZm9yZSBDT01NT05fQ0ZMQUdTIG9uIHB1cnBvc2U6IENGTEFHU1xcbisjIGJlbG93IGlzIGV4cGFuZGVkIGltbWVkaWF0ZWx5IGFuZCByZWZlcmVuY2VzICQoSU5DTFVERV9ESVIpLlxcbitTQ1JBVENIX0RJUiA6PSAkKE9VVFBVVCkvdG9vbHNcXG4rQlVJTERfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2J1aWxkXFxuK0lOQ0xVREVfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2luY2x1ZGVcXG4rQlBGT0JKIDo9ICQoQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcXG4raWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxcbitIT1NUX0JVSUxEX0RJUlxcdFxcdDo9ICQoQlVJTERfRElSKS9ob3N0XFxuK0hPU1RfU0NSQVRDSF9ESVJcXHQ6PSAkKE9VVFBVVCkvaG9zdC10b29sc1xcbitIT1NUX0lOQ0xVREVfRElSXFx0Oj0gJChIT1NUX1NDUkFUQ0hfRElSKS9pbmNsdWRlXFxuK2Vsc2VcXG4rSE9TVF9CVUlMRF9ESVJcXHRcXHQ6PSAkKEJVSUxEX0RJUilcXG4rSE9TVF9TQ1JBVENIX0RJUlxcdDo9ICQoU0NSQVRDSF9ESVIpXFxuK0hPU1RfSU5DTFVERV9ESVJcXHQ6PSAkKElOQ0xVREVfRElSKVxcbitlbmRpZlxcbitIT1NUX0JQRk9CSiA6PSAkKEhPU1RfQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcXG4rUkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHNcXG4rXFxuK0RFRkFVTFRfQlBGVE9PTCA6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxcbitpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXFxuK0NST1NTX0JQRlRPT0wgOj0gJChTQ1JBVENIX0RJUikvc2Jpbi9icGZ0b29sXFxuK1RSVU5ORVJfQlBGVE9PTCA6PSAkKENST1NTX0JQRlRPT0wpXFxuK1VTRV9CT09UU1RSQVAgOj1cXG4rZWxzZVxcbitUUlVOTkVSX0JQRlRPT0wgOj0gJChERUZBVUxUX0JQRlRPT0wpXFxuK1VTRV9CT09UU1RSQVAgOj0gYm9vdHN0cmFwL1xcbitlbmRpZlxcbitCUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKVxcbitcXG4rQ09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMVxcdFxcdFxcdFxcXFxcXG4rXFx0ICAtV2FsbCAtV2Vycm9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGVcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgJChHRU5GTEFHUykgJChTQU5fQ0ZMQUdTKSAkKExJQkVMRl9DRkxBR1MpXFx0XFx0XFx0XFxcXFxcbitcXHQgIC1JJChDVVJESVIpIC1JJChJTkNMVURFX0RJUikgLUkkKEdFTkRJUikgLUkkKExJQkRJUilcXHRcXHRcXFxcXFxuK1xcdCAgLUkkKFRPT0xTSU5DRElSKSAtSSQoVE9PTFNBUkNISU5DRElSKSAtSSQoQVBJRElSKSAtSSQoT1VUUFVUKVxcdFxcXFxcXG4rXFx0ICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXFxuK0xERkxBR1MgKz0gJChTQU5fTERGTEFHUylcXG4rTERMSUJTICs9ICQoTElCRUxGX0xJQlMpIC1seiAtbHJ0IC1scHRocmVhZFxcbitcXG4rUENBUF9DRkxBR1NcXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlicGNhcCAyXFx1MDAzZS9kZXYvbnVsbCBcXHUwMDI2XFx1MDAyNiBlY2hvIFxcXCItRFRSQUZGSUNfTU9OSVRPUj0xXFxcIilcXG4rUENBUF9MSUJTXFx0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBsaWJwY2FwIDJcXHUwMDNlL2Rldi9udWxsKVxcbitMRExJQlMgKz0gJChQQ0FQX0xJQlMpXFxuKyMgUHJlcGVuZCByYXRoZXIgdGhhbiBhcHBlbmQ6IHRoZSBpbmNsdWRlLXNlYXJjaCBvcmRlciBtdXN0IHN0YXlcXG4rIyBcXFwiJChDT01NT05fQ0ZMQUdTKSBmaXJzdCwgbGliLm1rIGFkZGl0aW9ucyBhZnRlclxcXCIgcmVnYXJkbGVzcyBvZiB3aGV0aGVyXFxuKyMgbGliLm1rIHdhcyBpbmNsdWRlZCBiZWZvcmUgdGhpcyBmaWxlICh0b3AgbGV2ZWwpIG9yIG5vdCBhdCBhbGwgKHJ1bm5lcikuXFxuK0NGTEFHUyA6PSAkKENPTU1PTl9DRkxBR1MpICQoUENBUF9DRkxBR1MpICQoQ0ZMQUdTKVxcbitcXG4raWZuZXEgKCQoTExWTSksKVxcbisjIFNpbGVuY2Ugc29tZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHdpdGggY2xhbmdcXG4rQ0ZMQUdTICs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudFxcbitlbmRpZlxcbitcXG4rIyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMispXFxuK0NMQU5HX0hBU19BUkVOQV9BU0FOIDo9ICQoc2hlbGwgZWNobyAnaW50IHg7JyB8IFxcXFxcXG4rXFx0JChDTEFORykgLS10YXJnZXQ9YnBmIC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MgXFxcXFxcbitcXHQtbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcXFxcXFxuK1xcdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlxcdTAwM2UvZGV2L251bGwgXFx1MDAyNlxcdTAwMjYgZWNobyAxKVxcbitpZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKVxcbitDRkxBR1MgKz0gLURIQVNfQlBGX0FSRU5BX0FTQU5cXG4rZW5kaWZcXG4rXFxuK1ZNTElOVVhfQlRGX1BBVEhTID89ICQoaWYgJChPKSwkKE8pL3ZtbGludXgpXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICAgICQoaWYgJChLQlVJTERfT1VUUFVUKSwkKEtCVUlMRF9PVVRQVVQpL3ZtbGludXgpXFx0XFxcXFxcbitcXHRcXHQgICAgIC4uLy4uLy4uLy4uL3ZtbGludXhcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgL3N5cy9rZXJuZWwvYnRmL3ZtbGludXhcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgL2Jvb3Qvdm1saW51eC0kKHNoZWxsIHVuYW1lIC1yKVxcbitWTUxJTlVYX0JURiA/PSAkKGFic3BhdGggJChmaXJzdHdvcmQgJCh3aWxkY2FyZCAkKFZNTElOVVhfQlRGX1BBVEhTKSkpKVxcbitpZmVxICgkKFZNTElOVVhfQlRGKSwpXFxuKyQoZXJyb3IgQ2Fubm90IGZpbmQgYSB2bWxpbnV4IGZvciBWTUxJTlVYX0JURiBhdCBhbnkgb2YgXFxcIiQoVk1MSU5VWF9CVEZfUEFUSFMpXFxcIilcXG4rZW5kaWZcXG4rXFxuKyMgR2V0IENsYW5nJ3MgZGVmYXVsdCBpbmNsdWRlcyBvbiB0aGlzIHN5c3RlbSwgYXMgb3Bwb3NlZCB0byB0aG9zZSBzZWVuIGJ5XFxuKyMgJy0tdGFyZ2V0PWJwZicuIFRoaXMgZml4ZXMgXFxcIm1pc3NpbmdcXFwiIGZpbGVzIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcy9kaXN0cm9zLFxcbisjIHN1Y2ggYXMgYXNtL2J5dGVvcmRlci5oLCBhc20vc29ja2V0LmgsIGFzbS9zb2NraW9zLmgsIHN5cy9jZGVmcy5oIGV0Yy5cXG4rI1xcbisjIFVzZSAnLWlkaXJhZnRlcic6IERvbid0IGludGVyZmVyZSB3aXRoIGluY2x1ZGUgbWVjaGFuaWNzIGV4Y2VwdCB3aGVyZSB0aGVcXG4rIyBidWlsZCB3b3VsZCBoYXZlIGZhaWxlZCBhbnl3YXlzLlxcbitkZWZpbmUgZ2V0X3N5c19pbmNsdWRlc1xcbiskKHNoZWxsICQoMSkgJCgyKSAtdiAtRSAtIFxcdTAwM2MvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MSBcXFxcXFxuK1xcdHwgc2VkIC1uICcvXFx1MDAzYy4uLlxcdTAwM2Ugc2VhcmNoIHN0YXJ0cyBoZXJlOi8sL0VuZCBvZiBzZWFyY2ggbGlzdC4veyBzfCBcXFxcKC8uKlxcXFwpfC1pZGlyYWZ0ZXIgXFxcXDF8cCB9JykgXFxcXFxcbiskKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19yaXNjdl94bGVuICcgfCBhd2sgJ3twcmludGYoXFxcIi1EX19yaXNjdl94bGVuPSVkIC1EX19CSVRTX1BFUl9MT05HPSVkXFxcIiwgJCQzLCAkJDMpfScpIFxcXFxcXG4rJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJ19fbG9vbmdhcmNoX2dybGVuICcgfCBhd2sgJ3twcmludGYoXFxcIi1EX19CSVRTX1BFUl9MT05HPSVkXFxcIiwgJCQzKX0nKSBcXFxcXFxuKyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFxcdTAwM2MvZGV2L251bGwgfCBncmVwIC1FICdNSVBTKEVMfEVCKXxfTUlQU19TWihQVFJ8TE9ORykgfF9NSVBTX1NJTSB8X0FCSShPMzJ8TjMyfDY0KSAnIHwgYXdrICd7cHJpbnRmKFxcXCItRCVzPSVzIFxcXCIsICQkMiwgJCQzKX0nKVxcbitlbmRlZlxcbitcXG4rIyBEZXRlcm1pbmUgdGFyZ2V0IGVuZGlhbm5lc3MuXFxuK0lTX0xJVFRMRV9FTkRJQU4gOj0gJChzaGVsbCAkKENDKSAtZE0gLUUgLSBcXHUwMDNjL2Rldi9udWxsIHwgXFxcXFxcbitcXHRcXHRcXHRncmVwICdkZWZpbmUgX19CWVRFX09SREVSX18gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18nKVxcbitNRU5ESUFOIDo9ICQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKVxcbitCUEZfVEFSR0VUX0VORElBTiA6PSAkKGlmICQoSVNfTElUVExFX0VORElBTiksLS10YXJnZXQ9YnBmZWwsLS10YXJnZXQ9YnBmZWIpXFxuK1xcbitpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXFxuK0NMQU5HX1RBUkdFVF9BUkNIID0gLS10YXJnZXQ9JChub3RkaXIgJChDUk9TU19DT01QSUxFOiUtPSUpKVxcbitlbmRpZlxcbitcXG4rQ0xBTkdfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLCQoQ0xBTkcpLCQoQ0xBTkdfVEFSR0VUX0FSQ0gpKVxcbitCUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXFx0XFxcXFxcbitcXHQgICAgIC1JJChJTkNMVURFX0RJUikgLUkkKENVUkRJUikgLUkkKEFQSURJUilcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAtSSQoYWJzcGF0aCAkKE9VVFBVVCkvLi4vdXNyL2luY2x1ZGUpXFx0XFx0XFx0XFxcXFxcbitcXHQgICAgIC1zdGQ9Z251MTFcXHRcXHQgXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAtV25vLW1pY3Jvc29mdC1hbm9uLXRhZ1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAtZm1zLWV4dGVuc2lvbnNcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgLVduby1jb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXNcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXNcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgI1xcbisjIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZVxcbitcXG4rQ0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXFxuK1xcbisjIFNpZ25pbmcga2V5L2NlcnQgc2hhcmVkIGJ5IHRoZSBzaWduZWQgbGlnaHQgc2tlbGV0b25zIGFuZCB0ZXN0X3Byb2dzLlxcbitWRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXFxuK1ZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0LmhcXG4rVkVSSUZJQ0FUSU9OX0NFUlQgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LmRlclxcbitQUklWQVRFX0tFWSA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkucGVtXFxuK1xcbisjIGxpYmFyZW5hIHNrZWxldG9ucywgYnVpbHQgYnkgdGhlIGxpYmFyZW5hLyBzdWItbWFrZSAoZHJpdmVuIGJ5IHRoZSB0b3BcXG4rIyBsZXZlbCBNYWtlZmlsZSk7IHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzIGRlcGVuZCBvbiB0aGUgaGVhZGVycy5cXG4rTElCQVJFTkFfU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYS5za2VsLmhcXG4raWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcXG4rTElCQVJFTkFfQVNBTl9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hX2FzYW4uc2tlbC5oXFxuK2VuZGlmXFxuK1xcbitpZm5lcSAoJChWKSwxKVxcbitzdWJtYWtlX2V4dHJhcyA6PSBmZWF0dXJlX2Rpc3BsYXk9MFxcbitlbmRpZlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnJ1bm5lclxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjRjNThjYzUxZjI1MTRlXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXJcXG5AQCAtMCwwICsxLDMxMyBAQFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNcXG4rIyBCdWlsZCBvbmUgQlBGIHRlc3QtcnVubmVyIGluc3RhbmNlOiB0ZXN0X3Byb2dzLCBvbmUgb2YgaXRzIGZsYXZvcnNcXG4rIyAobm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjKSwgb3IgdGVzdF9tYXBzLlxcbisjXFxuKyMgRWFjaCBpbnN0YW5jZSBpcyBhbiBpbmRlcGVuZGVudCBzdWItbWFrZSB3aXRoIGl0cyBvd24gb3V0cHV0IGRpcmVjdG9yeSxcXG4rIyBzbyBldmVyeXRoaW5nIGhlcmUgaXMgd3JpdHRlbiBpbiBwbGFpbiBtYWtlIC0gbm8gJCQtZXNjYXBpbmcsIG5vIGV2YWwsXFxuKyMgbm8gcGVyLWZsYXZvciBndWFyZHMuIFRoaXMgZmlsZSBpcyBhbHdheXMgaW52b2tlZCBieSB0aGUgbWFpbiBNYWtlZmlsZSxcXG4rIyBuZXZlciBkaXJlY3RseTogYWxsIHNoYXJlZCBwcmVyZXF1aXNpdGVzIChsaWJicGYsIGJwZnRvb2wsIHZtbGludXguaCxcXG4rIyB2ZXJpc3RhdCwgaGVscGVyIG9iamVjdHMsIHNpZ25pbmcga2V5LCBnZW5lcmF0ZWQgdGVzdHMuaCwgZXh0cmFcXG4rIyBiaW5hcmllcykgYXJlIGJ1aWx0IGJ5IHRoZSBtYWluIE1ha2VmaWxlICpiZWZvcmUqIHRoaXMgb25lIHJ1bnMgYW5kIGFyZVxcbisjIHJlZmVyZW5jZWQgYmVsb3cgYXMgcGxhaW4gZmlsZXMuXFxuKyNcXG4rIyBQYXJhbWV0ZXJzIChhbGwgcGFzc2VkIG9uIHRoZSBzdWItbWFrZSBjb21tYW5kIGxpbmUpOlxcbisjICAgT1VUUFVUICAgICAgYWJzb2x1dGUgcGF0aCBvZiB0aGUgc2VsZnRlc3RzIG91dHB1dCBkaXJlY3RvcnlcXG4rIyAgIFJVTk5FUiAgICAgIGJhc2UgYmluYXJ5IG5hbWU6IHRlc3RfcHJvZ3MgfCB0ZXN0X21hcHNcXG4rIyAgIEZMQVZPUiAgICAgIGZsYXZvciBzdWZmaXg6IGVtcHR5IHwgbm9fYWx1MzIgfCBjcHV2NCB8IGJwZl9nY2NcXG4rIyAgIFRFU1RTX0RJUiAgIGRpcmVjdG9yeSB3aXRoIHRoZSB0ZXN0IHNvdXJjZXM6IHByb2dfdGVzdHMgfCBtYXBfdGVzdHNcXG4rIyAgIEJQRl9CVUlMRCAgIGhvdyB0byBidWlsZCBwcm9ncy8qLmMgQlBGIG9iamVjdHM6IGNsYW5nIHwgZ2NjIHwgbm9uZVxcbisjICAgQlBGX01DUFUgICAgY2xhbmcgLW1jcHU9IHZhbHVlOiB2MiB8IHYzIHwgdjRcXG4rIyAgIEJQRl9ERUZJTkVTIGV4dHJhIGRlZmluZXMgZm9yIEJQRiBvYmplY3RzIChlLmcuIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFMpXFxuKyMgICBDQyAgICAgICAgICBDIGNvbXBpbGVyIChhcyByZXNvbHZlZCBieSBsaWIubWsgaW4gdGhlIG1haW4gTWFrZWZpbGUpXFxuKyMgICBMTFZNX0NGTEFHUy9MTFZNX0xETElCUy9MTFZNX0xERkxBR1NcXG4rIyAgICAgICAgICAgICAgIHJlc3VsdHMgb2YgdGhlIHRvcC1sZXZlbCBMTFZNIGZlYXR1cmUgcHJvYmVcXG4rXFxuK2luY2x1ZGUgLi4vLi4vLi4vYnVpbGQvQnVpbGQuaW5jbHVkZVxcbitpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuYXJjaFxcbitpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZVxcbitcXG4rIyBTYW1lIG1lc3NhZ2UgaGVscGVycyBhcyAuLi9saWIubWssIHdoaWNoIG9ubHkgdGhlIHRvcCBsZXZlbCBpbmNsdWRlcy5cXG4raWZlcSAoJChWKSwxKVxcbitRID1cXG4rbXNnID1cXG4rZWxzZVxcbitRID0gQFxcbittc2cgPSBAcHJpbnRmICcgICUtOHMlcyAlcyVzXFxcXG4nIFxcXCIkKDEpXFxcIiBcXFwiJChpZiAkKDIpLCBbJCgyKV0pXFxcIiBcXFwiJChub3RkaXIgJCgzKSlcXFwiIFxcXCIkKGlmICQoNCksICQoNCkpXFxcIjtcXG4rTUFLRUZMQUdTICs9IC0tbm8tcHJpbnQtZGlyZWN0b3J5XFxuK2VuZGlmXFxuK1xcbitpbmNsdWRlIE1ha2VmaWxlLmJ1aWxkdmFyc1xcbitcXG4rIyBLZWVwIGluIHN5bmMgd2l0aCB0aGUgQ0ZMQUdTL0xERkxBR1MgYWRkaXRpb25zIGluIC4uL2xpYi5tay5cXG4rQ0ZMQUdTICs9IC1EX0dOVV9TT1VSQ0U9XFxuK0NGTEFHUyArPSAtSSQoc3JjdHJlZSkvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHNcXG4rQ0ZMQUdTICs9ICQoVVNFUkNGTEFHUylcXG4rTERGTEFHUyArPSAkKFVTRVJMREZMQUdTKVxcbitpZm5lcSAoJChMTFZNKSwpXFxuK0NGTEFHUyArPSAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlclxcbitDRkxBR1MgKz0gLVduby1nbnUtdmFyaWFibGUtc2l6ZWQtdHlwZS1ub3QtYXQtZW5kXFxuK2VuZGlmXFxuK1xcbitCSU5BUlkgOj0gJChSVU5ORVIpJChpZiAkKEZMQVZPUiksLSQoRkxBVk9SKSlcXG4rUkRJUiAgIDo9ICQoT1VUUFVUKSQoaWYgJChGTEFWT1IpLC8kKEZMQVZPUikpXFxuK1xcbithbGw6ICQoT1VUUFVUKS8kKEJJTkFSWSlcXG4rLlBIT05ZOiBhbGxcXG4rXFxuKyMgRGVsZXRlIHBhcnRpYWxseSB1cGRhdGVkIChjb3JydXB0ZWQpIGZpbGVzIG9uIGVycm9yXFxuKy5ERUxFVEVfT05fRVJST1I6XFxuK1xcbisjIFBlcm1pc3NpdmUgc2tpcC1vbi1mYWlsdXJlIG9mIGluZGl2aWR1YWwgdGVzdHMgYXBwbGllcyB0byB0ZXN0X3Byb2dzIGFuZFxcbisjIGl0cyBmbGF2b3JzIG9ubHk7IHRlc3RfbWFwcyB1c2VzIHN0cm9uZyBjcm9zcy1vYmplY3QgcmVmZXJlbmNlcyBhbmQga2VlcHNcXG4rIyBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBCUEZfU1RSSUNUX0JVSUxEPTAuXFxuK1BFUk1JU1NJVkVfVEVTVFMgOj0gJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzLCQoUlVOTkVSKSksJChQRVJNSVNTSVZFKSlcXG4rXFxuKyQoUkRJUik6XFxuK1xcdCQoY2FsbCBtc2csTUtESVIsLCRAKVxcbitcXHQkKFEpbWtkaXIgLXAgJEBcXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgUGVyLXJ1bm5lciBzb3VyY2VzXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK1xcbitpZmVxICgkKFJVTk5FUiksdGVzdF9wcm9ncylcXG4rRVhUUkFfU09VUkNFUyA6PSB0ZXN0X3Byb2dzLmMgY2dyb3VwX2hlbHBlcnMuYyB0cmFjZV9oZWxwZXJzLmNcXHRcXHRcXFxcXFxuK1xcdFxcdCBuZXR3b3JrX2hlbHBlcnMuYyB0ZXN0aW5nX2hlbHBlcnMuYyBidGZfaGVscGVycy5jXFx0XFxcXFxcbitcXHRcXHQgY2FwX2hlbHBlcnMuYyB1bnByaXZfaGVscGVycy5jIHN5c2N0bF9oZWxwZXJzLmNcXHRcXFxcXFxuK1xcdFxcdCBuZXRsaW5rX2hlbHBlcnMuYyBqaXRfZGlzYXNtX2hlbHBlcnMuYyBpb19oZWxwZXJzLmNcXHRcXFxcXFxuK1xcdFxcdCB0ZXN0X2xvYWRlci5jIHhzay5jIGRpc2FzbS5jIGRpc2FzbV9oZWxwZXJzLmNcXHRcXHRcXFxcXFxuK1xcdFxcdCBqc29uX3dyaXRlci5jIGJwZnRvb2xfaGVscGVycy5jIHVzZHRfMS5jIHVzZHRfMi5jXFxuK0xJQl9TT1VSQ0VTIDo9IGZpbmRfYml0LmNcXG4rRVhUUkFfSERSUyA6PSBmbG93X2Rpc3NlY3Rvcl9sb2FkLmggaXBfY2hlY2tfZGVmcmFnX2ZyYWdzLmhcXHRcXHRcXFxcXFxuK1xcdCAgICAgICQoVkVSSUZZX1NJR19IRFIpICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXFxuK0VYVFJBX0ZJTEVTIDo9ICQoT1VUUFVUKS91cmFuZG9tX3JlYWQgJChPVVRQVVQpL2xpYnVyYW5kb21fcmVhZC5zb1xcdFxcXFxcXG4rXFx0ICAgICAgICQoT1VUUFVUKS94ZHBfc3lucHJveHkgJChPVVRQVVQpL3NpZ24tZmlsZVxcdFxcdFxcXFxcXG4rXFx0ICAgICAgICQoT1VUUFVUKS91cHJvYmVfbXVsdGlcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgICAkKFRFU1RfS01PRF9UQVJHRVRTKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAgIGltYV9zZXR1cC5zaCAkKFZFUklGWV9TSUdfU0VUVVApXFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKVxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubylcXG4rZW5kaWZcXG4rXFxuK2lmZXEgKCQoUlVOTkVSKSx0ZXN0X21hcHMpXFxuK0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9tYXBzLmMgdGVzdGluZ19oZWxwZXJzLmNcXG4rZW5kaWZcXG4rXFxuKyMgTm90ZSBvbiB0aGUgdW5mbGF2b3JlZCBydW5uZXJzLCB3aGljaCBzaGFyZSAkKE9VVFBVVCkgd2l0aCB0aGUgbWFpblxcbisjIE1ha2VmaWxlOiBoZWxwZXIgb2JqZWN0cyB0aGUgbWFpbiBNYWtlZmlsZSBhbHNvIHVzZXMgKGFuZCBsaXN0cyBpbiB0aGVcXG4rIyBydW5uZXIgcHJlcmVxdWlzaXRlcykgYXJlIGFscmVhZHkgYnVpbHQgYW5kIGZyZXNoIHdoZW4gYSBydW5uZXIgc3RhcnRzLFxcbisjIHNvIHRoZSBydWxlcyBiZWxvdyBmaW5kIHRoZW0gdXAgdG8gZGF0ZSBhbmQgbmV2ZXIgd3JpdGUgdGhlbS5cXG4rXFxuK1RFU1RTX0hEUiA6PSAkKFRFU1RTX0RJUikvdGVzdHMuaFxcbitcXG4rVEVTVF9TUkNTICA6PSAkKG5vdGRpciAkKHdpbGRjYXJkICQoVEVTVFNfRElSKS8qLmMpKVxcbitURVNUX09CSlMgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS50ZXN0Lm8sJChURVNUX1NSQ1MpKVxcbitURVNUX0RFUFMgIDo9ICQoVEVTVF9PQkpTOi5vPS5kKVxcbitFWFRSQV9PQkpTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5vLCQoZmlsdGVyICUuYywkKEVYVFJBX1NPVVJDRVMpKSlcXG4rTElCX09CSlMgICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubywkKExJQl9TT1VSQ0VTKSlcXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9uc1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbitcXG4raWZuZXEgKCQoQlBGX0JVSUxEKSxub25lKVxcbitcXG4rQlBGX1NSQ1MgOj0gJChub3RkaXIgJCh3aWxkY2FyZCBwcm9ncy8qLmMpKVxcbitCUEZfT0JKUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUuYnBmLm8sJChCUEZfU1JDUykpXFxuK1xcbisjIFdoaWNoIHRlc3RzIHdhbnQgYSBsaWdodCBza2VsZXRvbiBpcyBkZXJpdmVkIGZyb20gdGhlIHRlc3Qgc291cmNlc1xcbisjIHRoZW1zZWx2ZXM6IGFuICcjaW5jbHVkZSBcXFwiZm9vLmxza2VsLmhcXFwiJyBsaW5lIGlzIHRoZSBzaW5nbGUgc291cmNlIG9mXFxuKyMgdHJ1dGguIFRlc3RzIHRoYXQgaW5jbHVkZSBib3RoIGZvby5za2VsLmggYW5kIGZvby5sc2tlbC5oIGdldCBib3RoLlxcbitza2VsX2luY2x1ZGVzID0gJChzaGVsbCBncmVwIC1yaG9FICdcXFwiW2EtekEtWjAtOV9dK1xcXFwuJCgxKVxcXCInIHByb2dfdGVzdHMgYmVuY2hzIG1hcF90ZXN0cyAqLmMgKi5jcHAgMlxcdTAwM2UvZGV2L251bGwpXFxuK0xTS0VMX0JBU0VTIDo9ICQoc29ydCAkKHBhdHN1YnN0IFxcXCIlLmxza2VsLmhcXFwiLCUsJChjYWxsIHNrZWxfaW5jbHVkZXMsbHNrZWwuaCkpKVxcbitTS0VMX0RFTUFOREVEIDo9ICQoc29ydCAkKHBhdHN1YnN0IFxcXCIlLnNrZWwuaFxcXCIsJSwkKGNhbGwgc2tlbF9pbmNsdWRlcyxza2VsLmgpKSlcXG4rXFxuKyMgU2lnbmluZyBpcyBub3QgZXhwcmVzc2VkIGluIHRoZSBpbmNsdWRlLCBzbyB0aGUgc2lnbmVkIHN1YnNldCBzdGF5c1xcbisjIGV4cGxpY2l0LlxcbitMU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0IGZleGl0X3Rlc3QgYXRvbWljc1xcbitcXG4rIyBCUEYgb2JqZWN0cyB0aGF0IGNhbm5vdCBoYXZlIGEgcmVndWxhciBza2VsZXRvbiwgcGx1cyBsc2tlbC1vbmx5IHRlc3RzXFxuKyMgKGxpZ2h0LXNrZWxldG9uIHVzZXJzIHdob3NlIHNvdXJjZXMgbmV2ZXIgaW5jbHVkZSB0aGUgLnNrZWwuaCBmb3JtKS5cXG4rU0tFTF9CTEFDS0xJU1QgOj0gYnRmX18lIHRlc3RfcGlubmluZ19pbnZhbGlkLmMgdGVzdF9za19hc3NpZ24uYyBcXFxcXFxuK1xcdFxcdCAgJChhZGRzdWZmaXggLmMsJChmaWx0ZXItb3V0ICQoU0tFTF9ERU1BTkRFRCksJChMU0tFTF9CQVNFUykpKVxcbitcXG4rIyBTa2VsZXRvbnMgbWFkZSBieSBsaW5raW5nIG11bHRpcGxlIEJQRiBvYmplY3RzIHRvZ2V0aGVyLiBUaGUgJS1kZXBzXFxuKyMgbWFwcGluZyBpcyB0aGUgb25seSBoYW5kLW1haW50YWluZWQgbWV0YWRhdGE6IGl0IGNhbm5vdCBiZSBkZXJpdmVkIGZyb21cXG4rIyB0aGUgc291cmNlcy5cXG4rdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3RhdGljX2xpbmtlZDEuYnBmLm8gdGVzdF9zdGF0aWNfbGlua2VkMi5icGYub1xcbitsaW5rZWRfZnVuY3Muc2tlbC5oLWRlcHMgOj0gbGlua2VkX2Z1bmNzMS5icGYubyBsaW5rZWRfZnVuY3MyLmJwZi5vXFxuK2xpbmtlZF92YXJzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF92YXJzMS5icGYubyBsaW5rZWRfdmFyczIuYnBmLm9cXG4rbGlua2VkX21hcHMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX21hcHMxLmJwZi5vIGxpbmtlZF9tYXBzMi5icGYub1xcbisjIEluIHRoZSBzdWJza2VsZXRvbiBjYXNlLCB3ZSB3YW50IHRoZSB0ZXN0X3N1YnNrZWxldG9uX2xpYi5zdWJza2VsLmggZmlsZVxcbisjIGJ1dCB0aGF0J3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi5cXG4rdGVzdF9zdWJza2VsZXRvbi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbi5icGYub1xcbit0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm9cXG4rdGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vXFxuK3RyYWNpbmdfbXVsdGkuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xcbit0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaF9tb2R1bGUuYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xcbit0cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xcbit0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9zZXNzaW9uX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXFxuK1xcbitMSU5LRURfU0tFTFMgOj0gdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaCBsaW5rZWRfZnVuY3Muc2tlbC5oXFx0XFx0XFxcXFxcbitcXHRcXHRsaW5rZWRfdmFycy5za2VsLmggbGlua2VkX21hcHMuc2tlbC5oXFx0XFx0XFx0XFxcXFxcbitcXHRcXHR0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmhcXHRcXFxcXFxuK1xcdFxcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHR0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oXFxuK0xJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoZm9yZWFjaCBza2VsLCQoTElOS0VEX1NLRUxTKSwkKCQoc2tlbCktZGVwcykpKVxcbitcXG4rU0tFTFMgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLnNrZWwuaCxcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICQoZmlsdGVyLW91dCAkKFNLRUxfQkxBQ0tMSVNUKSAkKExJTktFRF9CUEZfU1JDUyksJChCUEZfU1JDUykpKVxcbitMU0tFTFNfSCAgICAgICAgOj0gJChwYXRzdWJzdCAlLCQoUkRJUikvJS5sc2tlbC5oLCQoZmlsdGVyLW91dCAkKExTS0VMU19TSUdORUQpLCQoTFNLRUxfQkFTRVMpKSlcXG4rTFNLRUxTX1NJR05FRF9IIDo9ICQocGF0c3Vic3QgJSwkKFJESVIpLyUubHNrZWwuaCwkKExTS0VMU19TSUdORUQpKVxcbitMSU5LRURfU0tFTFNfSCAgOj0gJChhZGRwcmVmaXggJChSRElSKS8sJChMSU5LRURfU0tFTFMpKVxcbitBTExfU0tFTFMgOj0gJChTS0VMUykgJChMU0tFTFNfSCkgJChMU0tFTFNfU0lHTkVEX0gpICQoTElOS0VEX1NLRUxTX0gpXFxuK1xcbitIRUFERVJTX0ZPUl9CUEZfT0JKUyA6PSAkKHdpbGRjYXJkICQoQlBGRElSKS8qLmJwZi5oKVxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0JCh3aWxkY2FyZCAkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZS8qLltjaF0pXFx0XFxcXFxcbitcXHRcXHRcXHQkKGFkZHByZWZpeCAkKEJQRkRJUikvLFxcdGJwZl9jb3JlX3JlYWQuaFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0YnBmX2VuZGlhbi5oXFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRicGZfaGVscGVycy5oXFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRicGZfdHJhY2luZy5oKVxcbitcXG4rIyBQZXItc291cmNlIEJQRiBjb21waWxhdGlvbiBmbGFnIG92ZXJyaWRlcyAoJFxcdTAwM2MtQ0ZMQUdTIC8gJFxcdTAwM2MtJChGTEFWT1IpLUNGTEFHUykuXFxuKyMgR0NDIGNhbm5vdCBkaXNhYmxlIFxcXCJkZWNsYXJhdGlvbiBvZiBhbm9ueW1vdXMgc3RydWN0IGluIHBhcmFtZXRlciBsaXN0XFxcIlxcbisjIHdhcm5pbmdzIHRyaWdnZXJlZCBieSB0aGVzZSAodGVjaG5pY2FsbHkgbGVnYWwpIHRlc3QgcHJvZ3JhbXMuXFxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9uYW1lc3BhY2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcXG4rcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhY2tpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbitwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2Vfc3ludGF4LmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbitcXG4raWZlcSAoJChCUEZfQlVJTEQpLGdjYylcXG4rQlBGX0NDX01TRyA6PSBHQ0MtQlBGXFxuKyMgTm90ZTogc3lzIGluY2x1ZGVzIGNvbWUgZnJvbSB0aGUgKmhvc3QqIGdjYywgbm90ICQoQlBGX0dDQykgLSBicGYtZ2NjJ3NcXG4rIyBvd24gc2VhcmNoIHBhdGggbGFja3MgdGhlIGhvc3QncyBhc20tZ2VuZXJpYy8gaGVhZGVycy4gQ29tcHV0ZWQgb25jZVxcbisjIGhlcmU6IGJwZl9jYyBiZWxvdyBpcyBkZWZlcnJlZCBhbmQgZXhwYW5kcyBwZXIgY29tcGlsZWQgb2JqZWN0LlxcbitHQ0NfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLGdjYywpXFxuK2JwZl9jYyA9ICQoQlBGX0dDQykgJChCUEZfQ0ZMQUdTKSAkKEdDQ19TWVNfSU5DTFVERVMpXFx0XFx0XFx0XFxcXFxcbitcXHQgJChCUEZfREVGSU5FUykgJCgkXFx1MDAzYy1DRkxBR1MpICQoJFxcdTAwM2MtJChGTEFWT1IpLUNGTEFHUylcXHRcXHRcXFxcXFxuK1xcdCAtREJQRl9OT19QUkVTRVJWRV9BQ0NFU1NfSU5ERVggLVduby1hdHRyaWJ1dGVzIC1PMiAtYyAkXFx1MDAzYyAtbyAkQFxcbitlbHNlXFxuK0JQRl9DQ19NU0cgOj0gQ0xORy1CUEZcXG4rYnBmX2NjID0gJChDTEFORykgJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykgJChCUEZfREVGSU5FUylcXHRcXHRcXFxcXFxuK1xcdCAkKCRcXHUwMDNjLUNGTEFHUykgJCgkXFx1MDAzYy0kKEZMQVZPUiktQ0ZMQUdTKVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0IC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkXFx1MDAzYyAtbWNwdT0kKEJQRl9NQ1BVKSAtbyAkQFxcbitlbmRpZlxcbitcXG4rJChCUEZfT0JKUyk6ICQoUkRJUikvJS5icGYubzogcHJvZ3MvJS5jIHByb2dzLyouaFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChIRUFERVJTX0ZPUl9CUEZfT0JKUylcXHRcXHRcXFxcXFxuK1xcdCAgICAgfCAkKFJESVIpICQoQlBGT0JKKVxcbitcXHQkKGNhbGwgbXNnLCQoQlBGX0NDX01TRyksJChCSU5BUlkpLCRAKVxcbitcXHQkKFEpJChicGZfY2MpICQoY2FsbCBza2lwX29uX2ZhaWwsQlBGKVxcbitcXG4rIyBnZW5fYnBmX3NrZWwuc2ggcGlja3MgdGhlIGJwZnRvb2wgYmluYXJ5IHVwIGZyb20gdGhlIGVudmlyb25tZW50LlxcbitleHBvcnQgQlBGVE9PTFxcbitHRU5fU0tFTCA6PSAuL2dlbl9icGZfc2tlbC5zaFxcbitcXG4rJChTS0VMUyk6ICQoUkRJUikvJS5za2VsLmg6ICQoUkRJUikvJS5icGYubyAkKEJQRlRPT0wpIHwgJChSRElSKVxcbitcXHQkKFEpJChHRU5fU0tFTCkgLS10YWcgJyQoQklOQVJZKScgLS1uYW1lICQqIC0taW5maXggbGlua2VkXFx0XFxcXFxcbitcXHRcXHQtLXNrZWwgJEAgLS1zdWJza2VsICQoQDouc2tlbC5oPS5zdWJza2VsLmgpICRcXHUwMDNjXFx0XFx0XFxcXFxcbitcXHRcXHQkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpXFxuK1xcbiskKExTS0VMU19IKTogJChSRElSKS8lLmxza2VsLmg6ICQoUkRJUikvJS5icGYubyAkKEJQRlRPT0wpIHwgJChSRElSKVxcbitcXHQkKFEpJChHRU5fU0tFTCkgLS10YWcgJyQoQklOQVJZKScgLS1uYW1lICQqX2xza2VsIC0taW5maXggbGxpbmtlZCBcXFxcXFxuK1xcdFxcdC0tbHNrZWwgLS1za2VsICRAICRcXHUwMDNjICQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTClcXG4rXFxuKyQoTFNLRUxTX1NJR05FRF9IKTogJChSRElSKS8lLmxza2VsLmg6ICQoUkRJUikvJS5icGYubyAkKEJQRlRPT0wpXFx0XFxcXFxcbitcXHRcXHQgICAgJChQUklWQVRFX0tFWSkgJChWRVJJRklDQVRJT05fQ0VSVCkgfCAkKFJESVIpXFxuK1xcdCQoUSkkKEdFTl9TS0VMKSAtLXRhZyAnJChCSU5BUlkpIChzaWduZWQpJyAtLW5hbWUgJCpfbHNrZWxcXHRcXFxcXFxuK1xcdFxcdC0taW5maXggbGxpbmtlZFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0LS1zaWduICctUyAtayAkKFBSSVZBVEVfS0VZKSAtaSAkKFZFUklGSUNBVElPTl9DRVJUKSdcXHRcXFxcXFxuK1xcdFxcdC0tc2tlbCAkQCAkXFx1MDAzYyAkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwpXFxuK1xcbisuU0VDT05ERVhQQU5TSU9OOlxcbiskKExJTktFRF9TS0VMU19IKTogJChSRElSKS8lLnNrZWwuaDogJCQoYWRkcHJlZml4ICQoUkRJUikvLCQkKCQkKi5za2VsLmgtZGVwcykpIFxcXFxcXG4rXFx0XFx0ICAgJChCUEZUT09MKSB8ICQoUkRJUilcXG4rXFx0JChRKSQoR0VOX1NLRUwpIC0tdGFnICckKEJJTkFSWSknIC0tbmFtZSAkKiAtLWluZml4IGxpbmtlZFxcdFxcXFxcXG4rXFx0XFx0LS1za2VsICRAIC0tc3Vic2tlbCAkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKVxcdFxcdFxcXFxcXG4rXFx0XFx0JChhZGRwcmVmaXggJChSRElSKS8sJCgkKi5za2VsLmgtZGVwcykpXFx0XFx0XFx0XFxcXFxcbitcXHRcXHQkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpXFxuK1xcbitlbmRpZiAjIEJQRl9CVUlMRCAhPSBub25lXFxuK1xcbisuUEhPTlk6IHNrZWxzXFxuK3NrZWxzOiAkKEFMTF9TS0VMUylcXG4rXFxuKyMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdCBmdWxsXFxuKyMgcGF0aHMpIGFyZSBzcGVjaWZpZWQgYXMgcHJlcmVxdWlzaXRlcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgJS5vIGZpbGUuXFxuKyMgVGhlIHZwYXRoIGRpcmVjdGl2ZXMgaW5zdHJ1Y3QgbWFrZSB0byBhbHNvIHNlYXJjaCBmb3Igc2tlbCBmaWxlcyBpblxcbisjICQoUkRJUikgaWYgdGhleSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5Llxcbit2cGF0aCAlLnNrZWwuaCAkKFJESVIpXFxuK3ZwYXRoICUubHNrZWwuaCAkKFJESVIpXFxuK3ZwYXRoICUuc3Vic2tlbC5oICQoUkRJUilcXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgVGVzdCBvYmplY3RzIGFuZCBydW5uZXIgYmluYXJ5XFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK1xcbiskKFJESVIpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogJChSRVNPTFZFX0JURklEUykgJChSRElSKS9idGZfZGF0YS5icGYub1xcbiskKFJESVIpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogcHJpdmF0ZSBURVNUX05FRURTX0JURklEUyA9IDFcXG4rXFxuKyMgQ29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXMuXFxuKyMgTm90ZTogd2UgY2QgaW50byB0aGUgb3V0cHV0IGRpcmVjdG9yeSB0byBlbnN1cmUgZW1iZWRkZWQgQlBGIG9iamVjdHNcXG4rIyBhcmUgZm91bmQuIFRoZSAlLnRlc3QuZCBkZXBlbmRlbmN5IGZpbGVzIGFyZSBhIHNpZGUgZWZmZWN0IG9mIHRoZSAtTU1EXFxuKyMgYmVsb3c7IHRoZSBzZXBhcmF0ZSBuby1yZWNpcGUgcnVsZSBmb3IgdGhlbSBvcmRlcnMgdGhlIGZpcnN0XFxuKyMgY29tcGlsYXRpb24gYWZ0ZXIgc2tlbGV0b24gZ2VuZXJhdGlvbiBhbmQgcmUtb3JkZXJzIHRlc3Qgb2JqZWN0XFxuKyMgY29tcGlsYXRpb24gd2hlbiBoZWFkZXJzIGNoYW5nZS5cXG4rJChURVNUX09CSlMpOiAkKFJESVIpLyUudGVzdC5vOiAkKFRFU1RTX0RJUikvJS5jIHwgJChSRElSKS8lLnRlc3QuZFxcbitcXHQkKGNhbGwgbXNnLFRFU1QtT0JKLCQoQklOQVJZKSwkQClcXG4rXFx0JChRKShjZCAkKEBEKSBcXHUwMDI2XFx1MDAyNiAkKENDKSAtSS4gJChDRkxBR1MpIC1NTUQgLU1UICRAIC1jICQoQ1VSRElSKS8kXFx1MDAzYyAtbyAkKEBGKSkgXFxcXFxcbitcXHRcXHQkKGlmICQoUEVSTUlTU0lWRV9URVNUUyksJChjYWxsIHNraXBfb25fZmFpbCxURVNUKSlcXG4rXFx0JChpZiAkKFRFU1RfTkVFRFNfQlRGSURTKSxcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCQoUSlpZiBbIC1mICRAIF07IHRoZW5cXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCQoaWYgJChmaWx0ZXIgMSwkKFYpKSx0cnVlLHByaW50ZiAnICAlLThzJXMgJXNcXFxcbicgXFxcIkJURklEU1xcXCIgXFxcIiBbJChCSU5BUlkpXVxcXCIgXFxcIiQobm90ZGlyICRAKVxcXCIpOyBcXFxcXFxuK1xcdFxcdCQoUkVTT0xWRV9CVEZJRFMpIC0tYnRmICQoUkRJUikvYnRmX2RhdGEuYnBmLm8gJEA7XFx0XFxcXFxcbitcXHRcXHQkKFJFU09MVkVfQlRGSURTKSAtLXBhdGNoX2J0ZmlkcyAkQC5CVEZfaWRzICRAO1xcdFxcdFxcXFxcXG4rXFx0XFx0ZmkpXFxuK1xcbiskKFRFU1RfREVQUyk6ICQoUkRJUikvJS50ZXN0LmQ6ICQoVEVTVFNfRElSKS8lLmMgJChFWFRSQV9IRFJTKSAkKEJQRk9CSikgXFxcXFxcbitcXHQgICAgICB8ICQoUkRJUikgJChBTExfU0tFTFMpXFxuK1xcbitpbmNsdWRlICQod2lsZGNhcmQgJChURVNUX0RFUFMpKVxcbitcXG4rJChSRElSKS9qaXRfZGlzYXNtX2hlbHBlcnMubzogQ0ZMQUdTICs9ICQoTExWTV9DRkxBR1MpXFxuK1xcbiskKEVYVFJBX09CSlMpOiAkKFJESVIpLyUubzogJS5jICQoRVhUUkFfSERSUykgJChURVNUU19IRFIpICQoQlBGT0JKKSB8ICQoUkRJUilcXG4rXFx0JChjYWxsIG1zZyxFWFQtT0JKLCQoQklOQVJZKSwkQClcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkXFx1MDAzYyAtbyAkQFxcbitcXG4rJChMSUJfT0JKUyk6ICQoUkRJUikvJS5vOiAkKFRPT0xTRElSKS9saWIvJS5jIHwgJChSRElSKVxcbitcXHQkKGNhbGwgbXNnLExJQi1PQkosJChCSU5BUlkpLCRAKVxcbitcXHQkKFEpJChDQykgJChDRkxBR1MpIC1jICRcXHUwMDNjIC1vICRAXFxuK1xcbisjIE5vbi1mbGF2b3JlZCBpbi1zcmN0cmVlIGJ1aWxkcyByZWNlaXZlIHNwZWNpYWwgdHJlYXRtZW50LCBpbiBwYXJ0aWN1bGFyXFxuKyMgd2UgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKS5cXG4rLlBIT05ZOiBleHRyYXNcXG4rZXh0cmFzOiAkKGlmICQoUEVSTUlTU0lWRSksJCh3aWxkY2FyZCAkKEVYVFJBX0ZJTEVTKSksJChFWFRSQV9GSUxFUykpIHwgJChSRElSKVxcbitpZm5lcSAoJChGTEFWT1IpOiQoT1VUUFVUKSw6JChDVVJESVIpKVxcbitpZm5lcSAoJChzdHJpcCAkKEVYVFJBX0ZJTEVTKSksKVxcbitcXHQkKGNhbGwgbXNnLEVYVC1DT1BZLCQoQklOQVJZKSwkKG5vdGRpciAkKEVYVFJBX0ZJTEVTKSkpXFxuK1xcdCQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJChFWFRSQV9GSUxFUykgJChSRElSKS9cXG4rZW5kaWZcXG4rZW5kaWZcXG4rXFxuKyMgSW4gcGVybWlzc2l2ZSBtb2RlLCBsaW5rIHdoYXRldmVyIHRlc3Qgb2JqZWN0cyB3ZXJlIHN1Y2Nlc3NmdWxseSBidWlsdFxcbisjICh0aGVpciBjb21waWxhdGlvbiBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpOyB0aGUgd2lsZGNhcmQgaW4gdGhlIHJlY2lwZVxcbisjIHBpY2tzIHVwIHRoZSBzdXJ2aXZvcnMgYXQgbGluayB0aW1lLlxcbisjIFByZXJlcXVpc2l0ZSBvcmRlciBpcyBhbHNvIGxpbmsgb3JkZXIgKHRlc3Qgb2JqZWN0cywgZXh0cmEgb2JqZWN0cyxcXG4rIyBsaWJicGYsIGxpYiBvYmplY3RzKS5cXG4rJChPVVRQVVQpLyQoQklOQVJZKTogJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCwkKFRFU1RfT0JKUykpXFx0XFx0XFxcXFxcbitcXHRcXHQgICAgICQoRVhUUkFfT0JKUykgJChCUEZPQkopICQoTElCX09CSlMpXFx0XFx0XFxcXFxcbitcXHRcXHQgICAgICQoVFJVTk5FUl9CUEZUT09MKSAkKE9VVFBVVCkvdmVyaXN0YXRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgfCBleHRyYXMgJChCUEZfT0JKUylcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQoVEVTVF9PQkpTKSlcXG4rXFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxcbitcXHQkKFEpJChDQykgJChDRkxBR1MpXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQkKGlmICQoUEVSTUlTU0lWRV9URVNUUyksJCh3aWxkY2FyZCAkKFRFU1RfT0JKUykpKVxcdFxcXFxcXG4rXFx0XFx0JChmaWx0ZXIgJS5hICUubywkXilcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCQoTERMSUJTKSAkKExMVk1fTERMSUJTKSAkKExERkxBR1MpICQoTExWTV9MREZMQUdTKSAtbyAkQFxcbitcXHQkKFEpbG4gLXNmICQoaWYgJChGTEFWT1IpLC4uLC4pL3Rvb2xzL2J1aWxkL2JwZnRvb2wvJChVU0VfQk9PVFNUUkFQKWJwZnRvb2wgXFxcXFxcbitcXHRcXHQgICAkKFJESVIpL2JwZnRvb2xcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2hcXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4wYjIzN2Y2Mzk2N2RkNlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoXFxuQEAgLTAsMCArMSw5NyBAQFxcbisjIS9iaW4vYmFzaFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNcXG4rIyBMaW5rIEJQRiBvYmplY3QgZmlsZShzKSB3aXRoIFxcXCJicGZ0b29sIGdlbiBvYmplY3RcXFwiIGFuZCBnZW5lcmF0ZSBhXFxuKyMgc2tlbGV0b24gKG9yIGxpZ2h0IHNrZWxldG9uKSBoZWFkZXIgZnJvbSB0aGUgcmVzdWx0LlxcbisjXFxuKyMgVXNhZ2U6XFxuKyMgICBCUEZUT09MPVxcdTAwM2NicGZ0b29sXFx1MDAzZSBnZW5fYnBmX3NrZWwuc2ggLS1uYW1lIE5BTUUgLS1za2VsIE9VVCBbb3B0aW9uc10gT0JKLi4uXFxuKyNcXG4rIyAgIC0tbmFtZSBOQU1FICAgICAgIHNrZWxldG9uIG9iamVjdCBuYW1lIChcXFwibmFtZSBOQU1FXFxcIiBmb3IgYnBmdG9vbClcXG4rIyAgIC0tc2tlbCBPVVQgICAgICAgIG91dHB1dCBoZWFkZXIgKFxcXCJmb28uc2tlbC5oXFxcIiBvciBcXFwiZm9vLmxza2VsLmhcXFwiKVxcbisjICAgLS1zdWJza2VsIE9VVCAgICAgYWxzbyBnZW5lcmF0ZSBhIHN1YnNrZWxldG9uIGhlYWRlciBpbnRvIE9VVFxcbisjICAgLS1sc2tlbCAgICAgICAgICAgZ2VuZXJhdGUgYSBsaWdodCBza2VsZXRvbiAoYnBmdG9vbCBnZW4gc2tlbGV0b24gLUwpXFxuKyMgICAtLXNpZ24gJ0FSR1MnICAgICBleHRyYSBcXFwiZ2VuIHNrZWxldG9uXFxcIiBhcmdzIGZvciBzaWduaW5nICgtUyAtayAuLiAtaSAuLilcXG4rIyAgIC0tdGFnIFRBRyAgICAgICAgIGJ1aWxkLWxvZyB0YWcsIGUuZy4gXFxcInRlc3RfcHJvZ3Mtbm9fYWx1MzJcXFwiXFxuKyMgICAtLWluZml4IFNUUiAgICAgICBpbnRlcm1lZGlhdGUgZmlsZSBpbmZpeCAoZGVmYXVsdDogbGlua2VkKS4gQ2FsbGVyc1xcbisjICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGluZyBib3RoIGEgLnNrZWwuaCBhbmQgYSAubHNrZWwuaCBmcm9tIHRoZVxcbisjICAgICAgICAgICAgICAgICAgICAgc2FtZSAuYnBmLm8gTVVTVCB1c2UgZGlzdGluY3QgaW5maXhlcywgb3IgcGFyYWxsZWxcXG4rIyAgICAgICAgICAgICAgICAgICAgIGJ1aWxkcyByYWNlIG9uIHRoZSBpbnRlcm1lZGlhdGUgZmlsZXMuXFxuKyMgICAtLW5vLWRldGVybWluaXNtLWNoZWNrXFxuKyMgICAgICAgICAgICAgICAgICAgICBsaW5rIHRoZSBpbnB1dHMgb25jZSBpbnN0ZWFkIG9mIHRocmVlIHRpbWVzLlxcbisjICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCB0aGUgb2JqZWN0IGlzIHJlLWxpbmtlZCB0d2ljZSBtb3JlIGFuZFxcbisjICAgICAgICAgICAgICAgICAgICAgdGhlIDJuZCBhbmQgM3JkIHJlc3VsdHMgY29tcGFyZWQsIGFzIGEgcmVncmVzc2lvblxcbisjICAgICAgICAgICAgICAgICAgICAgdGVzdCBmb3IgdGhlIGRldGVybWluaXNtIG9mIFxcXCJicGZ0b29sIGdlbiBvYmplY3RcXFwiLlxcbisjXFxuKyMgVGhlIGJwZnRvb2wgYmluYXJ5IGlzIHRha2VuIGZyb20gJEJQRlRPT0wgKGRlZmF1bHQ6IGJwZnRvb2wgZnJvbSBQQVRIKS5cXG4rIyBPbiBmYWlsdXJlIGFsbCBvdXRwdXRzIGFuZCBpbnRlcm1lZGlhdGVzIGFyZSByZW1vdmVkIGFuZCB0aGUgc2NyaXB0XFxuKyMgZXhpdHMgbm9uLXplcm87IHBlcm1pc3NpdmUtbW9kZSBza2lwcGluZyBpcyB0aGUgY2FsbGVyJ3MgYnVzaW5lc3NcXG4rIyAoc2VlIHNraXBfb25fZmFpbCBpbiBNYWtlZmlsZS5idWlsZHZhcnMpLlxcbitcXG4rc2V0IC11XFxuK1xcbiticGZ0b29sPSR7QlBGVE9PTDotYnBmdG9vbH1cXG4rbmFtZT0nJyBza2VsPScnIHN1YnNrZWw9JycgdGFnPScnIHNpZ25fYXJncz0nJyBpbmZpeD1saW5rZWRcXG4rbHNrZWw9MCBkZXRfY2hlY2s9MVxcbitcXG4rd2hpbGUgWyAkIyAtZ3QgMCBdOyBkb1xcbitcXHRjYXNlIFxcXCIkMVxcXCIgaW5cXG4rXFx0LS1uYW1lKVxcdFxcdG5hbWU9JDI7IHNoaWZ0IDIgOztcXG4rXFx0LS1za2VsKVxcdFxcdHNrZWw9JDI7IHNoaWZ0IDIgOztcXG4rXFx0LS1zdWJza2VsKVxcdHN1YnNrZWw9JDI7IHNoaWZ0IDIgOztcXG4rXFx0LS10YWcpXFx0XFx0dGFnPSQyOyBzaGlmdCAyIDs7XFxuK1xcdC0taW5maXgpXFx0aW5maXg9JDI7IHNoaWZ0IDIgOztcXG4rXFx0LS1zaWduKVxcdFxcdHNpZ25fYXJncz0kMjsgc2hpZnQgMiA7O1xcbitcXHQtLWxza2VsKVxcdGxza2VsPTE7IHNoaWZ0IDs7XFxuK1xcdC0tbm8tZGV0ZXJtaW5pc20tY2hlY2spIGRldF9jaGVjaz0wOyBzaGlmdCA7O1xcbitcXHQtLSlcXHRcXHRzaGlmdDsgYnJlYWsgOztcXG4rXFx0LSopXFx0XFx0ZWNobyBcXFwiJDA6IHVua25vd24gb3B0aW9uOiAkMVxcXCIgXFx1MDAzZVxcdTAwMjYyOyBleGl0IDEgOztcXG4rXFx0KilcXHRcXHRicmVhayA7O1xcbitcXHRlc2FjXFxuK2RvbmVcXG4rXFxuK2lmIFsgLXogXFxcIiRuYW1lXFxcIiBdIHx8IFsgLXogXFxcIiRza2VsXFxcIiBdIHx8IFsgJCMgLWVxIDAgXTsgdGhlblxcbitcXHRlY2hvIFxcXCJ1c2FnZTogJDAgLS1uYW1lIE5BTUUgLS1za2VsIE9VVCBbb3B0aW9uc10gT0JKLi4uXFxcIiBcXHUwMDNlXFx1MDAyNjJcXG4rXFx0ZXhpdCAxXFxuK2ZpXFxuK1xcbitiYXNlPSR7c2tlbCUuc2tlbC5ofVxcbitiYXNlPSR7YmFzZSUubHNrZWwuaH1cXG4rdDE9JGJhc2UuJHtpbmZpeH0xLm9cXG4rdDI9JGJhc2UuJHtpbmZpeH0yLm9cXG4rdDM9JGJhc2UuJHtpbmZpeH0zLm9cXG4rXFxuK2ZhaWwoKSB7XFxuK1xcdHJtIC1mIFxcXCIkc2tlbFxcXCIgJHtzdWJza2VsOitcXFwiJHN1YnNrZWxcXFwifSBcXFwiJHQxXFxcIiBcXFwiJHQyXFxcIiBcXFwiJHQzXFxcIlxcbitcXHRleGl0IDFcXG4rfVxcbitcXG4raWYgWyAkIyAtZ3QgMSBdOyB0aGVuXFxuK1xcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnTElOSy1CUEYnIFxcXCIke3RhZzorWyR0YWddIH0kKGJhc2VuYW1lIFxcXCIkYmFzZVxcXCIpLmJwZi5vXFxcIiBcXHUwMDNlXFx1MDAyNjJcXG4rZmlcXG4rcHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdHRU4tU0tFTCcgXFxcIiR7dGFnOitbJHRhZ10gfSQoYmFzZW5hbWUgXFxcIiRza2VsXFxcIilcXFwiIFxcdTAwM2VcXHUwMDI2MlxcbitcXG4rXFxcIiRicGZ0b29sXFxcIiBnZW4gb2JqZWN0IFxcXCIkdDFcXFwiIFxcXCIkQFxcXCIgfHwgZmFpbFxcbitmaW5hbD0kdDFcXG4raWYgWyBcXFwiJGRldF9jaGVja1xcXCIgLWVxIDEgXTsgdGhlblxcbitcXHRcXFwiJGJwZnRvb2xcXFwiIGdlbiBvYmplY3QgXFxcIiR0MlxcXCIgXFxcIiR0MVxcXCIgfHwgZmFpbFxcbitcXHRcXFwiJGJwZnRvb2xcXFwiIGdlbiBvYmplY3QgXFxcIiR0M1xcXCIgXFxcIiR0MlxcXCIgfHwgZmFpbFxcbitcXHRpZiAhIGNtcCAtcyBcXFwiJHQyXFxcIiBcXFwiJHQzXFxcIjsgdGhlblxcbitcXHRcXHRlY2hvIFxcXCIkMDogYnBmdG9vbCBnZW4gb2JqZWN0IGlzIG5vdCBkZXRlcm1pbmlzdGljIGZvciAkc2tlbFxcXCIgXFx1MDAzZVxcdTAwMjYyXFxuK1xcdFxcdGZhaWxcXG4rXFx0ZmlcXG4rXFx0ZmluYWw9JHQzXFxuK2ZpXFxuK1xcbitmbGFncz1cXG4rWyBcXFwiJGxza2VsXFxcIiAtZXEgMSBdIFxcdTAwMjZcXHUwMDI2IGZsYWdzPS1MXFxuKyMgJHNpZ25fYXJncyBpbnRlbnRpb25hbGx5IHVucXVvdGVkOiBpdCBpcyBhIGxpc3Qgb2YgYnBmdG9vbCBhcmd1bWVudHNcXG4rIyBzaGVsbGNoZWNrIGRpc2FibGU9U0MyMDg2XFxuK1xcXCIkYnBmdG9vbFxcXCIgZ2VuIHNrZWxldG9uICRzaWduX2FyZ3MgJGZsYWdzIFxcXCIkZmluYWxcXFwiIG5hbWUgXFxcIiRuYW1lXFxcIiBcXHUwMDNlIFxcXCIkc2tlbFxcXCIgfHwgZmFpbFxcbitcXG4raWYgWyAtbiBcXFwiJHN1YnNrZWxcXFwiIF07IHRoZW5cXG4rXFx0XFxcIiRicGZ0b29sXFxcIiBnZW4gc3Vic2tlbGV0b24gXFxcIiRmaW5hbFxcXCIgbmFtZSBcXFwiJG5hbWVcXFwiIFxcdTAwM2UgXFxcIiRzdWJza2VsXFxcIiB8fCBmYWlsXFxuK2ZpXFxuK1xcbitybSAtZiBcXFwiJHQxXFxcIiBcXFwiJHQyXFxcIiBcXFwiJHQzXFxcIlxcbitleGl0IDBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTM6Mjk6MjQuMzYwMDY1MjEyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTY2OTE3MjE2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgYnVpbGQgc3lzdGVtIGZvciBCUEYgc2VsZnRlc3RzIChNYWtlZmlsZXMgYW5kIGEgc2hlbGwgc2NyaXB0KS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGUwY2E5MGJiN2ZhMzczZWM4ZjdlNGZmMTc2NGY4MWVhYmNjYTk2NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDIyIDEzOjI5OjIxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXG5pbmRleCBiNjQyZWU0ODllYTY0MC4uYTNhYjUyNWY3ZGZhYmIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZVxuQEAgLTEsOTYgKzEsNDQgQEBcbiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI1xuKyMgQlBGIHNlbGZ0ZXN0cyBidWlsZC5cbisjXG4rIyBUaGUgYnVpbGQgaXMgc3BsaXQgaW4gdHdvIGxheWVyczpcbisjXG4rIyAgIE1ha2VmaWxlICh0aGlzIGZpbGUpXG4rIyAgICAgICBFdmVyeXRoaW5nIHRoYXQgZXhpc3RzIG9uY2U6IGtub2JzIGFuZCB0b29sY2hhaW4gc2V0dXAsIGxpYmJwZiAvXG4rIyAgICAgICBicGZ0b29sIC8gcmVzb2x2ZV9idGZpZHMgc3ViLWJ1aWxkcywgdm1saW51eC5oLCBzaWduaW5nIGtleXMsXG4rIyAgICAgICBnZW5lcmF0ZWQgdGVzdHMuaCBoZWFkZXJzLCBzaGFyZWQgaGVscGVyIG9iamVjdHMsIHN0YW5kYWxvbmUgdGVzdFxuKyMgICAgICAgYmluYXJpZXMgKGJlbmNoLCB2ZXJpc3RhdCwgdGVzdF92ZXJpZmllciwgeHNrKiwgLi4uKSwga2VybmVsIHRlc3RcbisjICAgICAgIG1vZHVsZXMsIGRvY3MsIGFuZCB0aGUga3NlbGZ0ZXN0IGxpYi5tayBydW4vaW5zdGFsbC9jbGVhblxuKyMgICAgICAgY29udHJhY3QuXG4rI1xuKyMgICBNYWtlZmlsZS5ydW5uZXJcbisjICAgICAgIE9uZSB0ZXN0LXJ1bm5lciBpbnN0YW5jZSAodGVzdF9wcm9ncywgdGVzdF9wcm9ncy1cdTAwM2NmbGF2b3JcdTAwM2UsXG4rIyAgICAgICB0ZXN0X21hcHMpOiBCUEYgb2JqZWN0cywgc2tlbGV0b24gaGVhZGVycywgdGVzdCBvYmplY3RzIGFuZCB0aGVcbisjICAgICAgIGZpbmFsIHJ1bm5lciBiaW5hcnkuIEludm9rZWQgZnJvbSBoZXJlIG9uY2UgcGVyIGluc3RhbmNlOyBlYWNoXG4rIyAgICAgICBpbnZvY2F0aW9uIGlzIGFuIGluZGVwZW5kZW50IHNpbmdsZS1mbGF2b3IgbmFtZXNwYWNlLCBzbyB0aGVcbisjICAgICAgIHJ1bm5lciBpcyBwbGFpbiBtYWtlIHdpdGhvdXQgJCQtZXNjYXBpbmcgb3IgZXZhbC5cbisjXG4rIyAgIGdlbl9icGZfc2tlbC5zaFxuKyMgICAgICAgTGlua3MgQlBGIG9iamVjdHMgdmlhIGJwZnRvb2wgYW5kIGdlbmVyYXRlcyAobGlnaHQpIHNrZWxldG9ucztcbisjICAgICAgIG9uZSBzY3JpcHQgaW5zdGVhZCBvZiBmb3VyIG5lYXItaWRlbnRpY2FsIG1ha2UgcmVjaXBlcy5cbisjXG4rIyBTaGFyZWQgZGVmaW5pdGlvbnMgKHBhdGhzLCBmbGFncywgcGVybWlzc2l2ZS1tb2RlIGhlbHBlcnMpIGxpdmUgaW5cbisjIE1ha2VmaWxlLmJ1aWxkdmFycywgaW5jbHVkZWQgYnkgYm90aCBsYXllcnMuXG4rXG4gaW5jbHVkZSAuLi8uLi8uLi9idWlsZC9CdWlsZC5pbmNsdWRlXG4gaW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2hcbiBpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZVxuIFxuLUNYWCA/PSAkKENST1NTX0NPTVBJTEUpZysrXG4tT0JKQ09QWSA/PSAkKENST1NTX0NPTVBJTEUpb2JqY29weVxuLVxuLUNVUkRJUiA6PSAkKGFic3BhdGggLilcbi1UT09MU0RJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4pXG4tTElCRElSIDo9ICQoVE9PTFNESVIpL2xpYlxuLUJQRkRJUiA6PSAkKExJQkRJUikvYnBmXG4tVE9PTFNJTkNESVIgOj0gJChUT09MU0RJUikvaW5jbHVkZVxuLVRPT0xTQVJDSElOQ0RJUiA6PSAkKFRPT0xTRElSKS9hcmNoLyQoU1JDQVJDSCkvaW5jbHVkZVxuLUJQRlRPT0xESVIgOj0gJChUT09MU0RJUikvYnBmL2JwZnRvb2xcbi1BUElESVIgOj0gJChUT09MU0lOQ0RJUikvdWFwaVxuLWlmbmVxICgkKE8pLClcbi1HRU5ESVIgOj0gJChPKS9pbmNsdWRlL2dlbmVyYXRlZFxuLWVsc2Vcbi1HRU5ESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uLy4uL2luY2x1ZGUvZ2VuZXJhdGVkKVxuLWVuZGlmXG4tR0VOSERSIDo9ICQoR0VORElSKS9hdXRvY29uZi5oXG4tUEtHX0NPTkZJRyA/PSAkKENST1NTX0NPTVBJTEUpcGtnLWNvbmZpZ1xuLVxuLWlmbmVxICgkKHdpbGRjYXJkICQoR0VOSERSKSksKVxuLSAgR0VORkxBR1MgOj0gLURIQVZFX0dFTkhEUlxuKyMgVGhlc2UgcHJvYmVzIGdhdGUgdGhlIGZsYXZvciBsaXN0LCB3aGljaCBtdXN0IGJlIGZpbmFsIGJlZm9yZSBsaWIubWsgaXNcbisjIGluY2x1ZGVkOyBrZWVwIHZhbHVlcyBjb25zaXN0ZW50IHdpdGggTWFrZWZpbGUuYnVpbGR2YXJzLlxuK2lmZXEgKCQob3JpZ2luIEJQRl9HQ0MpLHVuZGVmaW5lZClcbitCUEZfR0NDIDo9ICQoc2hlbGwgY29tbWFuZCAtdiBicGYtZ2NjOylcbiBlbmRpZlxuLVxuLUJQRl9HQ0NcdFx0Pz0gJChzaGVsbCBjb21tYW5kIC12IGJwZi1nY2M7KVxuLWlmZGVmIEFTQU5cbi1TQU5fQ0ZMQUdTIFx0Pz0gLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXG4tZWxzZVxuLVNBTl9DRkxBR1NcdD89XG4tZW5kaWZcbi1TQU5fTERGTEFHU1x0Pz0gJChTQU5fQ0ZMQUdTKVxuLVJFTEVBU0VcdFx0Pz1cbi1PUFRfRkxBR1NcdD89ICQoaWYgJChSRUxFQVNFKSwtTzIsLU8wKVxuLVxuLUxJQkVMRl9DRkxBR1NcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1jZmxhZ3MgMlx1MDAzZS9kZXYvbnVsbClcbi1MSUJFTEZfTElCU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWxpYnMgMlx1MDAzZS9kZXYvbnVsbCB8fCBlY2hvIC1sZWxmKVxuLVxuLVNLSVBfRE9DU1x0Pz1cbi1TS0lQX0xMVk1cdD89XG4tU0tJUF9MSUJCRkRcdD89XG4tU0tJUF9DUllQVE9cdD89XG4tXG4tIyBXaGVuIEJQRl9TVFJJQ1RfQlVJTEQgaXMgMSwgYW55IEJQRiBvYmplY3QsIHNrZWxldG9uLCB0ZXN0IG9iamVjdCwgb3Jcbi0jIGJlbmNobWFyayBjb21waWxhdGlvbiBmYWlsdXJlIGlzIGZhdGFsLiBTZXQgdG8gMCB0byB0b2xlcmF0ZSBmYWlsdXJlc1xuLSMgYW5kIGNvbnRpbnVlIGJ1aWxkaW5nIHRoZSByZW1haW5pbmcgdGVzdHMuXG4tQlBGX1NUUklDVF9CVUlMRCA/PSAxXG4tUEVSTUlTU0lWRSA6PSAkKGZpbHRlciAwLCQoQlBGX1NUUklDVF9CVUlMRCkpXG4tXG4taWZlcSAoJChzcmN0cmVlKSwpXG4tc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChDVVJESVIpKSlcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcbi1lbmRpZlxuLVxuLUNPTU1PTl9DRkxBR1MgPSAtZyAkKE9QVF9GTEFHUykgLXJkeW5hbWljIC1zdGQ9Z251MTFcdFx0XHRcdFxcXG4tXHQgIC1XYWxsIC1XZXJyb3IgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcdFx0XHRcdFxcXG4tXHQgIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGVcdFx0XHRcdFx0XFxcbi1cdCAgJChHRU5GTEFHUykgJChTQU5fQ0ZMQUdTKSAkKExJQkVMRl9DRkxBR1MpXHRcdFx0XFxcbi1cdCAgLUkkKENVUkRJUikgLUkkKElOQ0xVREVfRElSKSAtSSQoR0VORElSKSAtSSQoTElCRElSKVx0XHRcXFxuLVx0ICAtSSQoVE9PTFNJTkNESVIpIC1JJChUT09MU0FSQ0hJTkNESVIpIC1JJChBUElESVIpIC1JJChPVVRQVVQpXHRcXFxuLVx0ICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXG4tTERGTEFHUyArPSAkKFNBTl9MREZMQUdTKVxuLUxETElCUyArPSAkKExJQkVMRl9MSUJTKSAtbHogLWxydCAtbHB0aHJlYWRcbi1cbi1QQ0FQX0NGTEFHU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGxpYnBjYXAgMlx1MDAzZS9kZXYvbnVsbCBcdTAwMjZcdTAwMjYgZWNobyBcIi1EVFJBRkZJQ19NT05JVE9SPTFcIilcbi1QQ0FQX0xJQlNcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGlicGNhcCAyXHUwMDNlL2Rldi9udWxsKVxuLUxETElCUyArPSAkKFBDQVBfTElCUylcbi1DRkxBR1MgKz0gJChDT01NT05fQ0ZMQUdTKSAkKFBDQVBfQ0ZMQUdTKVxuLVxuLSMgU29tZSB1dGlsaXR5IGZ1bmN0aW9ucyB1c2UgTExWTSBsaWJyYXJpZXNcbi1qaXRfZGlzYXNtX2hlbHBlcnMuYy1DRkxBR1MgPSAkKExMVk1fQ0ZMQUdTKVxuLVxuLWlmbmVxICgkKExMVk0pLClcbi0jIFNpbGVuY2Ugc29tZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHdpdGggY2xhbmdcbi1DRkxBR1MgKz0gLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50XG4tZW5kaWZcbi1cbi0jIENoZWNrIHdoZXRoZXIgYnBmIGNwdT12NCBpcyBzdXBwb3J0ZWQgb3Igbm90IGJ5IGNsYW5nXG4gaWZuZXEgKCQoc2hlbGwgJChDTEFORykgLS10YXJnZXQ9YnBmIC1tY3B1PWhlbHAgMlx1MDAzZVx1MDAyNjEgfCBncmVwICd2NCcpLClcbiBDTEFOR19DUFVWNCA6PSAxXG4gZW5kaWZcbiBcbi0jIENoZWNrIHdoZXRoZXIgY2xhbmcgc3VwcG9ydHMgQlBGIGFkZHJlc3Mgc2FuaXRpemVyIChyZXF1aXJlcyBMTFZNIDIyKylcbi1DTEFOR19IQVNfQVJFTkFfQVNBTiA6PSAkKHNoZWxsIGVjaG8gJ2ludCB4OycgfCBcXFxuLVx0JChDTEFORykgLS10YXJnZXQ9YnBmIC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MgXFxcbi1cdC1tbGx2bSAtYXNhbi1zaGFkb3ctYWRkci1zcGFjZT0xIFxcXG4tXHQteCBjIC1jIC0gLW8gL2Rldi9udWxsIDJcdTAwM2UvZGV2L251bGwgXHUwMDI2XHUwMDI2IGVjaG8gMSlcbi1cbiAjIE9yZGVyIGNvcnJlc3BvbmQgdG8gJ21ha2UgcnVuX3Rlc3RzJyBvcmRlclxuIFRFU1RfR0VOX1BST0dTID0gdGVzdF92ZXJpZmllciB0ZXN0X3RhZyB0ZXN0X21hcHMgdGVzdF9scnVfbWFwIHRlc3RfcHJvZ3MgXFxcbiBcdHRlc3Rfc29ja21hcCBcXFxuQEAgLTEwMiwxNiArNTAsNiBAQCBURVNUX0lOU1RfU1VCRElSUyA6PSBub19hbHUzMlxuIGlmbmVxICgkKEJQRl9HQ0MpLClcbiBURVNUX0dFTl9QUk9HUyArPSB0ZXN0X3Byb2dzLWJwZl9nY2NcbiBURVNUX0lOU1RfU1VCRElSUyArPSBicGZfZ2NjXG4tXG4tIyBUaGUgZm9sbG93aW5nIHRlc3RzIGNvbnRhaW4gQyBjb2RlIHRoYXQsIGFsdGhvdWdoIHRlY2huaWNhbGx5IGxlZ2FsLFxuLSMgdHJpZ2dlcnMgR0NDIHdhcm5pbmdzIHRoYXQgY2Fubm90IGJlIGRpc2FibGVkOiBkZWNsYXJhdGlvbiBvZlxuLSMgYW5vbnltb3VzIHN0cnVjdCB0eXBlcyBpbiBmdW5jdGlvbiBwYXJhbWV0ZXIgbGlzdHMuXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX2JpdGZpZWxkcy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3Jcbi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfbmFtZXNwYWNpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhY2tpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhZGRpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3N5bnRheC5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3Jcbi1cbiBlbmRpZlxuIFxuIGlmbmVxICgkKENMQU5HX0NQVVY0KSwpXG5AQCAtMTMyLDEwICs3MCw2IEBAIFRFU1RfUFJPR1MgOj0gdGVzdF9rbW9kLnNoIFxcXG4gVEVTVF9QUk9HU19FWFRFTkRFRCA6PSBcXFxuIFx0aW1hX3NldHVwLnNoIHZlcmlmeV9zaWdfc2V0dXAuc2hcbiBcbi1URVNUX0tNT0RTIDo9IGJwZl90ZXN0bW9kLmtvIGJwZl90ZXN0X25vX2NmaS5rbyBicGZfdGVzdF9tb2RvcmRlcl94LmtvIFxcXG4tXHRicGZfdGVzdF9tb2RvcmRlcl95LmtvIGJwZl90ZXN0X3Jxc3BpbmxvY2sua29cbi1URVNUX0tNT0RfVEFSR0VUUyA9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sJChURVNUX0tNT0RTKSlcbi1cbiAjIENvbXBpbGUgYnV0IG5vdCBwYXJ0IG9mICdtYWtlIHJ1bl90ZXN0cydcbiBURVNUX0dFTl9QUk9HU19FWFRFTkRFRCA9IFxcXG4gXHRiZW5jaCBcXFxuQEAgLTE0OCwxMSArODIsMTAgQEAgVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQgPSBcXFxuIFx0eGRwX3N5bnByb3h5IFxcXG4gXHR4c2t4Y2VpdmVyXG4gXG4tVEVTVF9HRU5fRklMRVMgKz0gJChURVNUX0tNT0RTKSBsaWJ1cmFuZG9tX3JlYWQuc28gdXJhbmRvbV9yZWFkIHNpZ24tZmlsZSB1cHJvYmVfbXVsdGlcbitURVNUX0tNT0RTID89IGJwZl90ZXN0bW9kLmtvIGJwZl90ZXN0X25vX2NmaS5rbyBicGZfdGVzdF9tb2RvcmRlcl94LmtvIFxcXG4rXHRicGZfdGVzdF9tb2RvcmRlcl95LmtvIGJwZl90ZXN0X3Jxc3BpbmxvY2sua29cbiBcbi1pZm5lcSAoJChWKSwxKVxuLXN1Ym1ha2VfZXh0cmFzIDo9IGZlYXR1cmVfZGlzcGxheT0wXG4tZW5kaWZcbitURVNUX0dFTl9GSUxFUyArPSAkKFRFU1RfS01PRFMpIGxpYnVyYW5kb21fcmVhZC5zbyB1cmFuZG9tX3JlYWQgc2lnbi1maWxlIHVwcm9iZV9tdWx0aVxuIFxuICMgb3ZlcnJpZGUgbGliLm1rJ3MgZGVmYXVsdCBydWxlc1xuIE9WRVJSSURFX1RBUkdFVFMgOj0gMVxuQEAgLTE3MSw3ICsxMDQsNyBAQCBlbmRlZlxuIGluY2x1ZGUgLi4vbGliLm1rXG4gXG4gTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyA6PSBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHNcbi1DSEVDS19GRUFUIDo9ICQoZmlsdGVyLW91dCAkKE5PTl9DSEVDS19GRUFUX1RBUkdFVFMpLCQob3IgJChNQUtFQ01ER09BTFMpLCBcIm5vbmVcIikpXG4rQ0hFQ0tfRkVBVCA6PSAkKGZpbHRlci1vdXQgJChOT05fQ0hFQ0tfRkVBVF9UQVJHRVRTKSwkKG9yICQoTUFLRUNNREdPQUxTKSxhbGwpKVxuIGlmbmVxICgkKENIRUNLX0ZFQVQpLClcbiBGRUFUVVJFX1VTRVIgOj0gLnNlbGZ0ZXN0c1xuIEZFQVRVUkVfVEVTVFMgOj0gbGx2bVxuQEAgLTE4OCw2ICsxMjEsOCBAQCBvdmVycmlkZSBPVVRQVVQgOj0gJChwYXRzdWJzdCAlLywlLCQoT1VUUFVUKSlcbiBlbmRpZlxuIGVuZGlmXG4gXG4raW5jbHVkZSBNYWtlZmlsZS5idWlsZHZhcnNcbitcbiBpZm5lcSAoJChTS0lQX0xMVk0pLDEpXG4gaWZlcSAoJChmZWF0dXJlLWxsdm0pLDEpXG4gICBMTFZNX0NGTEFHUyAgKz0gLURIQVZFX0xMVk1fU1VQUE9SVFxuQEAgLTIxMywzNiArMTQ4LDExIEBAIGlmZXEgKCQoZmVhdHVyZS1sbHZtKSwxKVxuIGVuZGlmXG4gZW5kaWZcbiBcbi1TQ1JBVENIX0RJUiA6PSAkKE9VVFBVVCkvdG9vbHNcbi1CVUlMRF9ESVIgOj0gJChTQ1JBVENIX0RJUikvYnVpbGRcbi1JTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlXG4tQlBGT0JKIDo9ICQoQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tSE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpL2hvc3Rcbi1IT1NUX1NDUkFUQ0hfRElSXHQ6PSAkKE9VVFBVVCkvaG9zdC10b29sc1xuLUhPU1RfSU5DTFVERV9ESVJcdDo9ICQoSE9TVF9TQ1JBVENIX0RJUikvaW5jbHVkZVxuLWVsc2Vcbi1IT1NUX0JVSUxEX0RJUlx0XHQ6PSAkKEJVSUxEX0RJUilcbi1IT1NUX1NDUkFUQ0hfRElSXHQ6PSAkKFNDUkFUQ0hfRElSKVxuLUhPU1RfSU5DTFVERV9ESVJcdDo9ICQoSU5DTFVERV9ESVIpXG4tZW5kaWZcbi1IT1NUX0JQRk9CSiA6PSAkKEhPU1RfQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcbi1SRVNPTFZFX0JURklEUyA6PSAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkcy9yZXNvbHZlX2J0Zmlkc1xuLVZNTElOVVhfQlRGX1BBVEhTID89ICQoaWYgJChPKSwkKE8pL3ZtbGludXgpXHRcdFx0XHRcXFxuLVx0XHQgICAgICQoaWYgJChLQlVJTERfT1VUUFVUKSwkKEtCVUlMRF9PVVRQVVQpL3ZtbGludXgpXHRcXFxuLVx0XHQgICAgIC4uLy4uLy4uLy4uL3ZtbGludXhcdFx0XHRcdFxcXG4tXHRcdCAgICAgL3N5cy9rZXJuZWwvYnRmL3ZtbGludXhcdFx0XHRcdFxcXG4tXHRcdCAgICAgL2Jvb3Qvdm1saW51eC0kKHNoZWxsIHVuYW1lIC1yKVxuLVZNTElOVVhfQlRGID89ICQoYWJzcGF0aCAkKGZpcnN0d29yZCAkKHdpbGRjYXJkICQoVk1MSU5VWF9CVEZfUEFUSFMpKSkpXG4taWZlcSAoJChWTUxJTlVYX0JURiksKVxuLSQoZXJyb3IgQ2Fubm90IGZpbmQgYSB2bWxpbnV4IGZvciBWTUxJTlVYX0JURiBhdCBhbnkgb2YgXCIkKFZNTElOVVhfQlRGX1BBVEhTKVwiKVxuLWVuZGlmXG4tXG4gIyBEZWZpbmUgc2ltcGxlIGFuZCBzaG9ydCBgbWFrZSB0ZXN0X3Byb2dzYCwgYG1ha2UgdGVzdF9tYXBzYCwgZXRjIHRhcmdldHNcbiAjIHRvIGJ1aWxkIGluZGl2aWR1YWwgdGVzdHMuXG4gIyBOT1RFOiBTZW1pY29sb24gYXQgdGhlIGVuZCBpcyBjcml0aWNhbCB0byBvdmVycmlkZSBsaWIubWsncyBkZWZhdWx0IHN0YXRpY1xuICMgcnVsZSBmb3IgYmluYXJpZXMuXG4tJChub3RkaXIgJChURVNUX0dFTl9QUk9HUykgJChURVNUX0tNT0RTKVx0XHRcdFx0XFxcbiskKG5vdGRpciAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfS01PRF9UQVJHRVRTKVx0XHRcdFx0XFxcbiBcdCAkKFRFU1RfR0VOX1BST0dTX0VYVEVOREVEKSk6ICU6ICQoT1VUUFVUKS8lIDtcbiBcbiAjIHNvcnQgcmVtb3ZlcyBsaWJicGYgZHVwbGljYXRlcyB3aGVuIG5vdCBjcm9zcy1idWlsZGluZ1xuQEAgLTI1NiwxMSArMTY2LDE0IEBAICQoTUFLRV9ESVJTKTpcbiBcbiAkKE9VVFBVVCkvJS5vOiAlLmNcbiBcdCQoY2FsbCBtc2csQ0MsLCRAKVxuLVx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkKGZpbHRlciAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxuK1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkKGZpbHRlciAlLmMsJF4pIC1vICRAXG4gXG4rIyBIZWFkZXJzIG1heSBhcHBlYXIgYW1vbmcgdGhlIHByZXJlcXVpc2l0ZXMgZm9yIGRlcGVuZGVuY3kgdHJhY2tpbmc7XG4rIyB0aGV5IG11c3Qgbm90IHJlYWNoIHRoZSBjbGFuZy9nY2MgY29tbWFuZCBsaW5lIChjbGFuZyB0cmVhdHMgYSBiYXJlIC5oXG4rIyBhcmd1bWVudCBhcyBhIHByZWNvbXBpbGVkLWhlYWRlciBqb2IgYW5kIHJlZnVzZXMgLW8pLlxuICQoT1VUUFVUKS8lOiUuY1xuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuLVx0JChRKSQoTElOSy5jKSAkXiAkKExETElCUykgLW8gJEBcbitcdCQoUSkkKExJTksuYykgJChmaWx0ZXItb3V0ICUuaCwkXikgJChMRExJQlMpIC1vICRAXG4gXG4gIyBMTFZNJ3MgbGQubGxkIGRvZXNuJ3Qgc3VwcG9ydCBhbGwgdGhlIGFyY2hpdGVjdHVyZXMsIHNvIHVzZSBpdCBvbmx5IG9uIHg4NlxuIGlmZXEgKCQoU1JDQVJDSCksJChmaWx0ZXIgJChTUkNBUkNIKSx4ODYgcmlzY3YpKVxuQEAgLTI5Nyw2ICsyMTAsMTMgQEAgJChPVVRQVVQpL3NpZ24tZmlsZTogLi4vLi4vLi4vLi4vc2NyaXB0cy9zaWduLWZpbGUuY1xuIFx0XHQgICRcdTAwM2MgLW8gJEAgXFxcbiBcdFx0ICAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYmNyeXB0byAyXHUwMDNlIC9kZXYvbnVsbCB8fCBlY2hvIC1sY3J5cHRvKVxuIFxuKyMgTGlua2luZyB1cHJvYmVfbXVsdGkgY2FuIGZhaWwgZHVlIHRvIHJlbG9jYXRpb24gb3ZlcmZsb3dzIG9uIG1pcHMuXG4rJChPVVRQVVQpL3Vwcm9iZV9tdWx0aTogQ0ZMQUdTICs9ICQoaWYgJChmaWx0ZXIgbWlwcywgJChBUkNIKSksLW14Z290KVxuKyQoT1VUUFVUKS91cHJvYmVfbXVsdGk6IHVwcm9iZV9tdWx0aS5jIHVwcm9iZV9tdWx0aS5sZFxuK1x0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuK1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtV2wsLVQsdXByb2JlX211bHRpLmxkIC1PMCAkKExERkxBR1MpIFx0XFxcbitcdFx0JChmaWx0ZXItb3V0ICUubGQsJF4pICQoTERMSUJTKSAtbyAkQFxuK1xuICMgVGhpcyBzaG91bGQgcmVhbGx5IGJlIGEgZ3JvdXBlZCB0YXJnZXQsIGJ1dCBtYWtlIHZlcnNpb25zIGJlZm9yZSA0LjMgZG9uJ3RcbiAjIHN1cHBvcnQgdGhhdCBmb3IgcmVndWxhciBydWxlcy4gSG93ZXZlciwgcGF0dGVybiBtYXRjaGluZyBydWxlcyBhcmUgaW1wbGljaXRseVxuICMgdHJlYXRlZCBhcyBncm91cGVkIGV2ZW4gd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBtYWtlLCBzbyBhcyBhIHdvcmthcm91bmQsIHRoZVxuQEAgLTMxMyw0MCArMjMzLDE4IEBAICQoVEVTVF9LTU9EX1RBUkdFVFMpOiAkKGFkZHByZWZpeCB0ZXN0X2ttb2RzLywkKFRFU1RfS01PRFMpKVxuIFx0JChjYWxsIG1zZyxNT0QsLCRAKVxuIFx0JChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbIC1mIHRlc3Rfa21vZHMvJChARikgXTsgdGhlbiApY3AgdGVzdF9rbW9kcy8kKEBGKSAkQCQoaWYgJChQRVJNSVNTSVZFKSw7IGZpKVxuIFxuLVxuLURFRkFVTFRfQlBGVE9PTCA6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxuLWlmbmVxICgkKENST1NTX0NPTVBJTEUpLClcbi1DUk9TU19CUEZUT09MIDo9ICQoU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxuLVRSVU5ORVJfQlBGVE9PTCA6PSAkKENST1NTX0JQRlRPT0wpXG4tVVNFX0JPT1RTVFJBUCA6PSBcIlwiXG4tZWxzZVxuLVRSVU5ORVJfQlBGVE9PTCA6PSAkKERFRkFVTFRfQlBGVE9PTClcbi1VU0VfQk9PVFNUUkFQIDo9IFwiYm9vdHN0cmFwL1wiXG4tZW5kaWZcbi1cbiBURVNUX0dFTl9QUk9HU19FWFRFTkRFRCArPSAkKFRSVU5ORVJfQlBGVE9PTClcbiBcbiAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfR0VOX1BST0dTX0VYVEVOREVEKTogJChCUEZPQkopXG4gXG4tVEVTVElOR19IRUxQRVJTXHQ6PSAkKE9VVFBVVCkvdGVzdGluZ19oZWxwZXJzLm9cbi1DR1JPVVBfSEVMUEVSU1x0Oj0gJChPVVRQVVQpL2Nncm91cF9oZWxwZXJzLm9cbi1VTlBSSVZfSEVMUEVSUyAgOj0gJChPVVRQVVQpL3VucHJpdl9oZWxwZXJzLm9cbi1UUkFDRV9IRUxQRVJTXHQ6PSAkKE9VVFBVVCkvdHJhY2VfaGVscGVycy5vXG4tSlNPTl9XUklURVJcdFx0Oj0gJChPVVRQVVQpL2pzb25fd3JpdGVyLm9cbi1DQVBfSEVMUEVSU1x0Oj0gJChPVVRQVVQpL2NhcF9oZWxwZXJzLm9cbi1ORVRXT1JLX0hFTFBFUlMgOj0gJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vXG4tXG4tJChPVVRQVVQpL3Rlc3Rfc29ja21hcDogJChDR1JPVVBfSEVMUEVSUykgJChURVNUSU5HX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3RfdGNwbm90aWZ5X3VzZXI6ICQoQ0dST1VQX0hFTFBFUlMpICQoVEVTVElOR19IRUxQRVJTKSAkKFRSQUNFX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3Rfc29ja19maWVsZHM6ICQoQ0dST1VQX0hFTFBFUlMpICQoVEVTVElOR19IRUxQRVJTKVxuLSQoT1VUUFVUKS90ZXN0X3RhZzogJChURVNUSU5HX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3RfbGlyY19tb2RlMl91c2VyOiAkKFRFU1RJTkdfSEVMUEVSUylcbi0kKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZDogJChURVNUSU5HX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3RfbWFwczogJChURVNUSU5HX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6ICQoVEVTVElOR19IRUxQRVJTKSAkKENBUF9IRUxQRVJTKSAkKFVOUFJJVl9IRUxQRVJTKVxuLSQoT1VUUFVUKS94c2subzogJChCUEZPQkopXG4tXG4tQlBGVE9PTCA/PSAkKERFRkFVTFRfQlBGVE9PTClcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgVG9vbCBzdWItYnVpbGRzOiBicGZ0b29sIGFuZCBsaWJicGYgKGhvc3QgYW5kLCB3aGVuIGNyb3NzLWNvbXBpbGluZyxcbisjIHRhcmdldCB2YXJpYW50cykgYW5kIHJlc29sdmVfYnRmaWRzLlxuKyNcbisjIE5vdGUgdGhlIGRlbGliZXJhdGUgYXN5bW1ldHJ5OiB0aGUgaG9zdCBsaWJicGYgYnVpbGRzIHdpdGhvdXRcbisjIHNhbml0aXplcnMgYW5kIHdpdGggdGhlIGhvc3QgdG9vbGNoYWluLlxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4gJChERUZBVUxUX0JQRlRPT0wpOiAkKHdpbGRjYXJkICQoQlBGVE9PTERJUikvKi5bY2hdICQoQlBGVE9PTERJUikvTWFrZWZpbGUpICAgIFxcXG4gXHRcdCAgICAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL2JwZnRvb2xcbiBcdCQoUSkkKE1BS0UpICQoc3VibWFrZV9leHRyYXMpICAtQyAkKEJQRlRPT0xESVIpXHRcdFx0ICAgICAgIFxcXG5AQCAtMzc3LDIwICsyNzUsNiBAQCAkKENST1NTX0JQRlRPT0wpOiAkKHdpbGRjYXJkICQoQlBGVE9PTERJUikvKi5bY2hdICQoQlBGVE9PTERJUikvTWFrZWZpbGUpXHRcXFxuIFx0XHQgICAgcHJlZml4PSBERVNURElSPSQoU0NSQVRDSF9ESVIpLyBpbnN0YWxsLWJpblxuIGVuZGlmXG4gXG4taWZuZXEgKCQoU0tJUF9ET0NTKSwxKVxuLWFsbDogZG9jc1xuLWVuZGlmXG4tXG4tZG9jczpcbi1cdCQoUSlSU1QyTUFOX09QVFM9XCItLWV4aXQtc3RhdHVzPTFcIiAkKE1BS0UpICQoc3VibWFrZV9leHRyYXMpXHRcXFxuLVx0ICAgICAgICAgICAgLWYgTWFrZWZpbGUuZG9jc1x0XHRcdFx0XHRcXFxuLVx0ICAgICAgICAgICAgcHJlZml4PSBPVVRQVVQ9JChPVVRQVVQpLyBERVNURElSPSQoT1VUUFVUKS8gJEBcbi1cbi1kb2NzLWNsZWFuOlxuLVx0JChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcylcdFx0XHRcdFx0XFxcbi1cdCAgICAgICAgICAgIC1mIE1ha2VmaWxlLmRvY3NcdFx0XHRcdFx0XFxcbi1cdCAgICAgICAgICAgIHByZWZpeD0gT1VUUFVUPSQoT1VUUFVUKS8gREVTVERJUj0kKE9VVFBVVCkvICRAXG4tXG4gJChCUEZPQkopOiAkKHdpbGRjYXJkICQoQlBGRElSKS8qLltjaF0gJChCUEZESVIpL01ha2VmaWxlKVx0XHQgICAgICAgXFxcbiBcdCAgICQoQVBJRElSKS9saW51eC9icGYuaFx0XHRcdFx0XHQgICAgICAgXFxcbiBcdCAgIHwgJChCVUlMRF9ESVIpL2xpYmJwZlxuQEAgLTQxMiwxOSArMjk2LDYgQEAgJChIT1NUX0JQRk9CSik6ICQod2lsZGNhcmQgJChCUEZESVIpLyouW2NoXSAkKEJQRkRJUikvTWFrZWZpbGUpXHRcdCAgICAgICBcXFxuIFx0XHQgICAgREVTVERJUj0kKEhPU1RfU0NSQVRDSF9ESVIpLyBwcmVmaXg9IGFsbCBpbnN0YWxsX2hlYWRlcnNcbiBlbmRpZlxuIFxuLSMgdm1saW51eC5oIGlzIGZpcnN0IGR1bXBlZCB0byBhIHRlbXBvcmFyeSBmaWxlIGFuZCB0aGVuIGNvbXBhcmVkIHRvXG4tIyB0aGUgcHJldmlvdXMgdmVyc2lvbi4gVGhpcyBoZWxwcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZS1idWlsZHMgb2Zcbi0jICQoVFJVTk5FUl9CUEZfT0JKUylcbi0kKElOQ0xVREVfRElSKS92bWxpbnV4Lmg6ICQoVk1MSU5VWF9CVEYpICQoQlBGVE9PTCkgfCAkKElOQ0xVREVfRElSKVxuLWlmZXEgKCQoVk1MSU5VWF9IKSwpXG4tXHQkKGNhbGwgbXNnLEdFTiwsJEApXG4tXHQkKFEpJChCUEZUT09MKSBidGYgZHVtcCBmaWxlICQoVk1MSU5VWF9CVEYpIGZvcm1hdCBjIFx1MDAzZSAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcFxuLVx0JChRKWNtcCAtcyAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcCAkQCB8fCBtdiAkKElOQ0xVREVfRElSKS8udm1saW51eC5oLnRtcCAkQFxuLWVsc2Vcbi1cdCQoY2FsbCBtc2csQ1AsLCRAKVxuLVx0JChRKWNwIFwiJChWTUxJTlVYX0gpXCIgJEBcbi1lbmRpZlxuLVxuICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzXHRcXFxuIFx0XHQgICAgICAgJChUT09MU0RJUikvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uY1x0XFxcbiBcdFx0ICAgICAgICQoVE9PTFNESVIpL2xpYi9yYnRyZWUuY1x0XHRcdFxcXG5AQCAtNDM5LDM3NCArMzEwLDM4IEBAICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzXHRcXFxuIFx0XHRIT1NUUEtHX0NPTkZJRz0nJChQS0dfQ09ORklHKScgXFxcbiBcdFx0T1VUUFVUPSQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzLyBCUEZPQko9JChIT1NUX0JQRk9CSilcbiBcbi0jIEdldCBDbGFuZydzIGRlZmF1bHQgaW5jbHVkZXMgb24gdGhpcyBzeXN0ZW0sIGFzIG9wcG9zZWQgdG8gdGhvc2Ugc2VlbiBieVxuLSMgJy0tdGFyZ2V0PWJwZicuIFRoaXMgZml4ZXMgXCJtaXNzaW5nXCIgZmlsZXMgb24gc29tZSBhcmNoaXRlY3R1cmVzL2Rpc3Ryb3MsXG4tIyBzdWNoIGFzIGFzbS9ieXRlb3JkZXIuaCwgYXNtL3NvY2tldC5oLCBhc20vc29ja2lvcy5oLCBzeXMvY2RlZnMuaCBldGMuXG4tI1xuLSMgVXNlICctaWRpcmFmdGVyJzogRG9uJ3QgaW50ZXJmZXJlIHdpdGggaW5jbHVkZSBtZWNoYW5pY3MgZXhjZXB0IHdoZXJlIHRoZVxuLSMgYnVpbGQgd291bGQgaGF2ZSBmYWlsZWQgYW55d2F5cy5cbi1kZWZpbmUgZ2V0X3N5c19pbmNsdWRlc1xuLSQoc2hlbGwgJCgxKSAkKDIpIC12IC1FIC0gXHUwMDNjL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxIFxcXG4tXHR8IHNlZCAtbiAnL1x1MDAzYy4uLlx1MDAzZSBzZWFyY2ggc3RhcnRzIGhlcmU6LywvRW5kIG9mIHNlYXJjaCBsaXN0Li97IHN8IFxcKC8uKlxcKXwtaWRpcmFmdGVyIFxcMXxwIH0nKSBcXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJ19fcmlzY3ZfeGxlbiAnIHwgYXdrICd7cHJpbnRmKFwiLURfX3Jpc2N2X3hsZW49JWQgLURfX0JJVFNfUEVSX0xPTkc9JWRcIiwgJCQzLCAkJDMpfScpIFxcXG4tJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19sb29uZ2FyY2hfZ3JsZW4gJyB8IGF3ayAne3ByaW50ZihcIi1EX19CSVRTX1BFUl9MT05HPSVkXCIsICQkMyl9JykgXFxcbi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBncmVwIC1FICdNSVBTKEVMfEVCKXxfTUlQU19TWihQVFJ8TE9ORykgfF9NSVBTX1NJTSB8X0FCSShPMzJ8TjMyfDY0KSAnIHwgYXdrICd7cHJpbnRmKFwiLUQlcz0lcyBcIiwgJCQyLCAkJDMpfScpXG4tZW5kZWZcbi1cbi0jIERldGVybWluZSB0YXJnZXQgZW5kaWFubmVzcy5cbi1JU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgXFxcbi1cdFx0XHRncmVwICdkZWZpbmUgX19CWVRFX09SREVSX18gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18nKVxuLU1FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKVxuLUJQRl9UQVJHRVRfRU5ESUFOOj0kKGlmICQoSVNfTElUVExFX0VORElBTiksLS10YXJnZXQ9YnBmZWwsLS10YXJnZXQ9YnBmZWIpXG4tXG4taWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxuLUNMQU5HX1RBUkdFVF9BUkNIID0gLS10YXJnZXQ9JChub3RkaXIgJChDUk9TU19DT01QSUxFOiUtPSUpKVxuLWVuZGlmXG4tXG4tQ0xBTkdfU1lTX0lOQ0xVREVTID0gJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsJChDTEFORyksJChDTEFOR19UQVJHRVRfQVJDSCkpXG4tQlBGX0NGTEFHUyA9IC1nIC1XYWxsIC1XZXJyb3IgLURfX1RBUkdFVF9BUkNIXyQoU1JDQVJDSCkgJChNRU5ESUFOKVx0XFxcbi1cdCAgICAgLUkkKElOQ0xVREVfRElSKSAtSSQoQ1VSRElSKSAtSSQoQVBJRElSKVx0XHRcdFxcXG4tXHQgICAgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcdFx0XHRcdFxcXG4tXHQgICAgIC1JJChhYnNwYXRoICQoT1VUUFVUKS8uLi91c3IvaW5jbHVkZSlcdFx0XHRcXFxuLVx0ICAgICAtc3RkPWdudTExXHRcdCBcdFx0XHRcdFx0XFxcbi1cdCAgICAgLWZuby1zdHJpY3QtYWxpYXNpbmcgXHRcdFx0XHRcdFxcXG4tXHQgICAgIC1Xbm8tbWljcm9zb2Z0LWFub24tdGFnXHRcdFx0XHRcdFxcXG4tXHQgICAgIC1mbXMtZXh0ZW5zaW9uc1x0XHRcdFx0XHRcdFxcXG4tXHQgICAgIC1Xbm8tY29tcGFyZS1kaXN0aW5jdC1wb2ludGVyLXR5cGVzXHRcdFx0XFxcbi1cdCAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXNcdFx0XHRcdFx0XFxcbi1cdCAgICAgI1xuLSMgVE9ETzogZW5hYmxlIG1lIC1Xc2lnbi1jb21wYXJlXG4tXG4tQ0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXG4tXG4tJChPVVRQVVQpL3Rlc3RfbDRsYl9ub2lubGluZS5vOiBCUEZfQ0ZMQUdTICs9IC1mbm8taW5saW5lXG4tJChPVVRQVVQpL3Rlc3RfeGRwX25vaW5saW5lLm86IEJQRl9DRkxBR1MgKz0gLWZuby1pbmxpbmVcbi1cbi0kKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZC5vOiBmbG93X2Rpc3NlY3Rvcl9sb2FkLmhcbi0kKE9VVFBVVCkvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MubzogY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFxuLVxuLSMgQnVpbGQgQlBGIG9iamVjdCB1c2luZyBDbGFuZ1xuLSMgJDEgLSBpbnB1dCAuYyBmaWxlXG4tIyAkMiAtIG91dHB1dCAubyBmaWxlXG4tIyAkMyAtIENGTEFHU1xuLSMgJDQgLSBiaW5hcnkgbmFtZVxuLWRlZmluZSBDTEFOR19CUEZfQlVJTERfUlVMRVxuLVx0JChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMilcbi1cdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djMgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkMjsgcHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1CUEYnICckKG5vdGRpciAkMiknIDFcdTAwM2VcdTAwMjYyKSlcbi1lbmRlZlxuLSMgU2ltaWxhciB0byBDTEFOR19CUEZfQlVJTERfUlVMRSwgYnV0IHdpdGggZGlzYWJsZWQgYWx1MzJcbi1kZWZpbmUgQ0xBTkdfTk9BTFUzMl9CUEZfQlVJTERfUlVMRVxuLVx0JChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMilcbi1cdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djIgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkMjsgcHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1CUEYnICckKG5vdGRpciAkMiknIDFcdTAwM2VcdTAwMjYyKSlcbi1lbmRlZlxuLSMgU2ltaWxhciB0byBDTEFOR19CUEZfQlVJTERfUlVMRSwgYnV0IHdpdGggY3B1LXY0XG4tZGVmaW5lIENMQU5HX0NQVVY0X0JQRl9CVUlMRF9SVUxFXG4tXHQkKGNhbGwgbXNnLENMTkctQlBGLCQ0LCQyKVxuLVx0JChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12NCAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLUJQRicgJyQobm90ZGlyICQyKScgMVx1MDAzZVx1MDAyNjIpKVxuLWVuZGVmXG4tIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIEdDQ1xuLWRlZmluZSBHQ0NfQlBGX0JVSUxEX1JVTEVcbi1cdCQoY2FsbCBtc2csR0NDLUJQRiwkNCwkMilcbi1cdCQoUSkkKEJQRl9HQ0MpICQzIC1EQlBGX05PX1BSRVNFUlZFX0FDQ0VTU19JTkRFWCAtV25vLWF0dHJpYnV0ZXMgLU8yIC1jICQxIC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJDI7IHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXHUwMDNlXHUwMDI2MikpXG4tZW5kZWZcbi1cbi1TS0VMX0JMQUNLTElTVCA6PSBidGZfXyUgdGVzdF9waW5uaW5nX2ludmFsaWQuYyB0ZXN0X3NrX2Fzc2lnbi5jXG4tXG4tTElOS0VEX1NLRUxTIDo9IHRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmggbGlua2VkX2Z1bmNzLnNrZWwuaFx0XHRcXFxuLVx0XHRsaW5rZWRfdmFycy5za2VsLmggbGlua2VkX21hcHMuc2tlbC5oIFx0XHRcdFxcXG4tXHRcdHRlc3Rfc3Vic2tlbGV0b24uc2tlbC5oIHRlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaFx0XFxcbi1cdFx0dGVzdF91c2R0LnNrZWwuaCB0cmFjaW5nX211bHRpLnNrZWwuaFx0XHRcdFxcXG4tXHRcdHRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaFx0XHRcdFx0XFxcbi1cdFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oXHRcdFx0XHRcXFxuLVx0XHR0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oXG4tXG4tTFNLRUxTIDo9IGZleGl0X3NsZWVwLmMgdHJhY2VfcHJpbnRrLmMgdHJhY2VfdnByaW50ay5jIG1hcF9wdHJfa2Vybi5jIFx0XFxcbi1cdGNvcmVfa2Vybi5jIGNvcmVfa2Vybl9vdmVyZmxvdy5jIHRlc3RfcmluZ2J1Zi5jXHRcdFx0XFxcbi1cdHRlc3RfcmluZ2J1Zl9uLmMgdGVzdF9yaW5nYnVmX21hcF9rZXkuYyB0ZXN0X3JpbmdidWZfd3JpdGUuYyAgICBcXFxuLVx0dGVzdF9yaW5nYnVmX292ZXJ3cml0ZS5jXG4tXG4tTFNLRUxTX1NJR05FRCA6PSBmZW50cnlfdGVzdC5jIGZleGl0X3Rlc3QuYyBhdG9taWNzLmNcbi1cbi0jIEdlbmVyYXRlIGJvdGggbGlnaHQgc2tlbGV0b24gYW5kIGxpYmJwZiBza2VsZXRvbiBmb3IgdGhlc2Vcbi1MU0tFTFNfRVhUUkEgOj0gdGVzdF9rc3ltc19tb2R1bGUuYyB0ZXN0X2tzeW1zX3dlYWsuYyBrZnVuY19jYWxsX3Rlc3QuYyBcXFxuLVx0a2Z1bmNfY2FsbF90ZXN0X3N1YnByb2cuY1xuLVNLRUxfQkxBQ0tMSVNUICs9ICQkKExTS0VMUykgJCQoTFNLRUxTX1NJR05FRClcbi1cbi10ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vXG4tbGlua2VkX2Z1bmNzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9mdW5jczEuYnBmLm8gbGlua2VkX2Z1bmNzMi5icGYub1xuLWxpbmtlZF92YXJzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF92YXJzMS5icGYubyBsaW5rZWRfdmFyczIuYnBmLm9cbi1saW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vXG4tIyBJbiB0aGUgc3Vic2tlbGV0b24gY2FzZSwgd2Ugd2FudCB0aGUgdGVzdF9zdWJza2VsZXRvbl9saWIuc3Vic2tlbC5oIGZpbGVcbi0jIGJ1dCB0aGF0J3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi5cbi10ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXG4tdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vXG4tdGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vXG4teHNrX3hkcF9wcm9ncy5za2VsLmgtZGVwcyA6PSB4c2tfeGRwX3Byb2dzLmJwZi5vXG4teGRwX2h3X21ldGFkYXRhLnNrZWwuaC1kZXBzIDo9IHhkcF9od19tZXRhZGF0YS5icGYub1xuLXhkcF9mZWF0dXJlcy5za2VsLmgtZGVwcyA6PSB4ZHBfZmVhdHVyZXMuYnBmLm9cbi10cmFjaW5nX211bHRpLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbi10cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaF9tb2R1bGUuYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuLXRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4tdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfc2Vzc2lvbl9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuLVxuLUxJTktFRF9CUEZfT0JKUyA6PSAkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKVxuLUxJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoTElOS0VEX0JQRl9PQkpTKSlcbi1cbi1IRUFERVJTX0ZPUl9CUEZfT0JKUyA6PSAkKHdpbGRjYXJkICQoQlBGRElSKS8qLmJwZi5oKVx0XHRcXFxuLVx0XHRcdCQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKVx0XFxcbi1cdFx0XHQkKGFkZHByZWZpeCAkKEJQRkRJUikvLFx0YnBmX2NvcmVfcmVhZC5oXHRcXFxuLVx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl9lbmRpYW4uaFx0XFxcbi1cdFx0XHRcdFx0XHRicGZfaGVscGVycy5oXHRcXFxuLVx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl90cmFjaW5nLmgpXG4tXG4tIyBTZXQgdXAgZXh0cmEgVFJVTk5FUl9YWFggXCJ0ZW1wb3JhcnlcIiB2YXJpYWJsZXMgaW4gdGhlIGVudmlyb25tZW50IChyZWxpZXMgb25cbi0jICRldmFsKCkpIGFuZCBwYXNzIGNvbnRyb2wgdG8gREVGSU5FX1RFU1RfUlVOTkVSX1JVTEVTLlxuLSMgUGFyYW1ldGVyczpcbi0jICQxIC0gdGVzdCBydW5uZXIgYmFzZSBiaW5hcnkgbmFtZSAoZS5nLiwgdGVzdF9wcm9ncylcbi0jICQyIC0gdGVzdCBydW5uZXIgZXh0cmEgXCJmbGF2b3JcIiAoZS5nLiwgbm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjLCBldGMpXG4tZGVmaW5lIERFRklORV9URVNUX1JVTk5FUlxuLVxuLUxTS0VMX1NJR04gOj0gLVMgLWsgJChQUklWQVRFX0tFWSkgLWkgJChWRVJJRklDQVRJT05fQ0VSVClcbi1UUlVOTkVSX09VVFBVVCA6PSAkKE9VVFBVVCkkKGlmICQyLC8pJDJcbi1UUlVOTkVSX0JJTkFSWSA6PSAkMSQoaWYgJDIsLSkkMlxuLVRSVU5ORVJfVEVTVF9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0Lm8sXHRcXFxuLVx0XHRcdFx0ICQkKG5vdGRpciAkJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVFNfRElSKS8qLmMpKSlcbi1UUlVOTkVSX0VYVFJBX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLm8sXHRcdFxcXG4tXHRcdFx0XHQgJCQoZmlsdGVyICUuYywkKFRSVU5ORVJfRVhUUkFfU09VUkNFUykpKVxuLVRSVU5ORVJfTElCX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLm8sXHRcdFxcXG4tXHRcdFx0XHQgJCQoZmlsdGVyICUuYywkKFRSVU5ORVJfTElCX1NPVVJDRVMpKSlcbi1UUlVOTkVSX0VYVFJBX0hEUlMgOj0gJCQoZmlsdGVyICUuaCwkKFRSVU5ORVJfRVhUUkFfU09VUkNFUykpXG4tVFJVTk5FUl9URVNUU19IRFIgOj0gJChUUlVOTkVSX1RFU1RTX0RJUikvdGVzdHMuaFxuLVRSVU5ORVJfQlBGX1NSQ1MgOj0gJCQobm90ZGlyICQkKHdpbGRjYXJkICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8qLmMpKVxuLVRSVU5ORVJfQlBGX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmJwZi5vLCAkJChUUlVOTkVSX0JQRl9TUkNTKSlcbi1UUlVOTkVSX0JQRl9TS0VMUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUuc2tlbC5oLFx0XFxcbi1cdFx0XHRcdCAkJChmaWx0ZXItb3V0ICQoU0tFTF9CTEFDS0xJU1QpICQoTElOS0VEX0JQRl9TUkNTKSxcXFxuLVx0XHRcdFx0XHQgICAgICAgJCQoVFJVTk5FUl9CUEZfU1JDUykpKVxuLVRSVU5ORVJfQlBGX0xTS0VMUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubHNrZWwuaCwgJCQoTFNLRUxTKSAkJChMU0tFTFNfRVhUUkEpKVxuLVRSVU5ORVJfQlBGX1NLRUxTX0xJTktFRCA6PSAkJChhZGRwcmVmaXggJCQoVFJVTk5FUl9PVVRQVVQpLywkKExJTktFRF9TS0VMUykpXG4tVFJVTk5FUl9CUEZfTFNLRUxTX1NJR05FRCA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubHNrZWwuaCwgJCQoTFNLRUxTX1NJR05FRCkpXG4tVEVTVF9HRU5fRklMRVMgKz0gJCQoVFJVTk5FUl9CUEZfT0JKUylcbi1cbi0jIEV2YWx1YXRlIHJ1bGVzIG5vdyB3aXRoIGV4dHJhIFRSVU5ORVJfWFhYIHZhcmlhYmxlcyBhYm92ZSBhbHJlYWR5IGRlZmluZWRcbi0kJChldmFsICQkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSX1JVTEVTLCQxLCQyKSlcbi1cbi1lbmRlZlxuLVxuLSMgVXNpbmcgVFJVTk5FUl9YWFggdmFyaWFibGVzLCBwcm92aWRlZCBieSBjYWxsZXJzIG9mIERFRklORV9URVNUX1JVTk5FUiBhbmRcbi0jIHNldCB1cCBieSBERUZJTkVfVEVTVF9SVU5ORVIgaXRzZWxmLCBjcmVhdGUgdGVzdCBydW5uZXIgYnVpbGQgcnVsZXMgd2l0aDpcbi0jICQxIC0gdGVzdCBydW5uZXIgYmFzZSBiaW5hcnkgbmFtZSAoZS5nLiwgdGVzdF9wcm9ncylcbi0jICQyIC0gdGVzdCBydW5uZXIgZXh0cmEgXCJmbGF2b3JcIiAoZS5nLiwgbm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjLCBldGMpXG4tZGVmaW5lIERFRklORV9URVNUX1JVTk5FUl9SVUxFU1xuLVxuLSMgUGVybWlzc2l2ZSBidWlsZCBiZWhhdmlvdXIgKHNraXAtb24tZmFpbHVyZSBjb21waWxlLCBwYXJ0aWFsLWxpbmspIG9ubHlcbi0jIGFwcGxpZXMgdG8gdGVzdF9wcm9ncyBhbmQgaXRzIGZsYXZvcnM7IHJ1bm5lcnMgdGhhdCB1c2Ugc3Ryb25nIGNyb3NzLW9iamVjdFxuLSMgcmVmZXJlbmNlcyAoZS5nLiB0ZXN0X21hcHMpIGtlZXAgc3RyaWN0IHNlbWFudGljcyBldmVuIHdoZW4gcGVybWlzc2l2ZS5cbi0jIFRoZSBjaGVjayBpcyBpbmxpbmVkIHBlci1ydW5uZXIgc28gJDEgaXMgc3Vic3RpdHV0ZWQgYXQgJChjYWxsKSB0aW1lIGFuZFxuLSMgdGhlIHJlc3VsdCBpcyBiYWtlZCBpbnRvIGVhY2ggcnVsZSdzIHJlY2lwZS5cbi1cbi1pZmVxICgkKCQoVFJVTk5FUl9PVVRQVVQpLWRpciksKVxuLSQoVFJVTk5FUl9PVVRQVVQpLWRpciA6PSB5XG4tJChUUlVOTkVSX09VVFBVVCk6XG4tXHQkJChjYWxsIG1zZyxNS0RJUiwsJCRAKVxuLVx0JChRKW1rZGlyIC1wICQkQFxuLWVuZGlmXG4tXG4tIyBlbnN1cmUgd2Ugc2V0IHVwIEJQRiBvYmplY3RzIGdlbmVyYXRpb24gcnVsZSBqdXN0IG9uY2UgZm9yIGEgZ2l2ZW5cbi0jIGlucHV0L291dHB1dCBkaXJlY3RvcnkgY29tYmluYXRpb25cbi1pZmVxICgkKCQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKSQoaWYgJDIsLSkkMi1icGZvYmpzKSwpXG4tJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMgOj0geVxuLSQoVFJVTk5FUl9CUEZfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUuYnBmLm86XHRcdFx0XHRcXFxuLVx0XHQgICAgICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8lLmNcdFx0XHRcXFxuLVx0XHQgICAgICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8qLmhcdFx0XHRcXFxuLVx0XHQgICAgICQkKElOQ0xVREVfRElSKS92bWxpbnV4LmhcdFx0XHRcdFxcXG4tXHRcdCAgICAgJChIRUFERVJTX0ZPUl9CUEZfT0JKUylcdFx0XHRcdFxcXG4tXHRcdCAgICAgfCAkKFRSVU5ORVJfT1VUUFVUKSAkJChCUEZPQkopXG4tXHQkJChjYWxsICQoVFJVTk5FUl9CUEZfQlVJTERfUlVMRSksJCRcdTAwM2MsJCRALFx0XHRcdFxcXG4tXHRcdFx0XHRcdCAgJChUUlVOTkVSX0JQRl9DRkxBR1MpICAgICAgICAgXFxcbi1cdFx0XHRcdFx0ICAkJCgkJFx1MDAzYy1DRkxBR1MpXHRcdFxcXG4tXHRcdFx0XHRcdCAgJCQoJCRcdTAwM2MtJDItQ0ZMQUdTKSwkKFRSVU5ORVJfQklOQVJZKSlcbi1cbi0kKFRSVU5ORVJfQlBGX1NLRUxTKTogJS5za2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQCAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCk7XHRcdFx0XFxcbi1cdFx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0XHRleGl0IDA7XHRcdFx0XHRcdFx0XHRcXFxuLVx0Zmk7KVx0XHRcdFx0XHRcdFx0XHRcXFxuLVx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnR0VOLVNLRUwnICdbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXHUwMDNjOi5vPS5saW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5saW5rZWQxLm8pIFx1MDAyNlx1MDAyNiBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5saW5rZWQyLm8pIFx1MDAyNlx1MDAyNiBcXFxuLVx0ZGlmZiAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQkKFx1MDAzYzoubz0ubGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChcdTAwM2M6LmJwZi5vPSkpIFx1MDAzZSAkJEAgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc3Vic2tlbGV0b24gJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFx1MDAzYzouYnBmLm89KSkgXHUwMDNlICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSAkKGlmICQoUEVSTUlTU0lWRSksfHwgeyBcXFxuLVx0XHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTsgXFxcbi1cdFx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0fSkgXHUwMDI2XHUwMDI2IFxcXG4tXHRybSAtZiAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgJCQoXHUwMDNjOi5vPS5saW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGlua2VkMy5vKVxuLVxuLSQoVFJVTk5FUl9CUEZfTFNLRUxTKTogJS5sc2tlbC5oOiAlLmJwZi5vICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKVxuLVx0JChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbICEgLWYgJCRcdTAwM2MgXTsgdGhlblx0XHRcdFxcXG4tXHRcdCQkKFJNKSAkJEA7XHRcdFx0XHRcdFx0XFxcbi1cdFx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0XHRleGl0IDA7XHRcdFx0XHRcdFx0XHRcXFxuLVx0Zmk7KVx0XHRcdFx0XHRcdFx0XHRcXFxuLVx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnR0VOLVNLRUwnICdbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJFx1MDAzYyBcdTAwMjZcdTAwMjZcdFx0XFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pIFx1MDAyNlx1MDAyNiBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKSBcdTAwMjZcdTAwMjZcdFx0XFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAtTCAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFx1MDAzYzouYnBmLm89X2xza2VsKSkgXHUwMDNlICQkQCAkKGlmICQoUEVSTUlTU0lWRSksfHwgeyBcXFxuLVx0XHQkJChSTSkgJCRAOyBcXFxuLVx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHR9KSBcdTAwMjZcdTAwMjYgXFxcbi1cdHJtIC1mICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pXG4tXG4tJChUUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEKTogJS5sc2tlbC5oOiAlLmJwZi5vICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKVxuLVx0JChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbICEgLWYgJCRcdTAwM2MgXTsgdGhlblx0XHRcdFxcXG4tXHRcdCQkKFJNKSAkJEA7XHRcdFx0XHRcdFx0XFxcbi1cdFx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0XHRleGl0IDA7XHRcdFx0XHRcdFx0XHRcXFxuLVx0Zmk7KVx0XHRcdFx0XHRcdFx0XHRcXFxuLVx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnR0VOLVNLRUwnICdbJChUUlVOTkVSX0JJTkFSWSkgKHNpZ25lZCldICQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJFx1MDAzYyBcdTAwMjZcdTAwMjZcdFx0XFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pIFx1MDAyNlx1MDAyNiBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKSBcdTAwMjZcdTAwMjZcdFx0XFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkKExTS0VMX1NJR04pICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz1fbHNrZWwpKSBcdTAwM2UgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEA7IFxcXG4tXHRcdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNiBcXFxuLVx0cm0gLWYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubylcbi1cbi0kKExJTktFRF9CUEZfT0JKUyk6ICU6ICQoVFJVTk5FUl9PVVRQVVQpLyVcbi1cbi0jIC5TRUNPTkRFWFBBTlNJT04gaGVyZSBhbGxvd3MgdG8gY29ycmVjdGx5IGV4cGFuZCAlLWRlcHMgdmFyaWFibGVzIGFzIHByZXJlcXVpc2l0ZXNcbi0uU0VDT05ERVhQQU5TSU9OOlxuLSQoVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEKTogJChUUlVOTkVSX09VVFBVVCkvJTogJCQkJCglLWRlcHMpICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKVxuLVx0JChRKSQoaWYgJChQRVJNSVNTSVZFKSxmb3IgZiBpbiAkJChhZGRwcmVmaXggJChUUlVOTkVSX09VVFBVVCkvLCQkKCQkKEBGKS1kZXBzKSk7IGRvIFxcXG4tXHRcdGlmIFsgISAtZiAkJCQkZiBdOyB0aGVuXHRcdFx0XHRcdFx0XFxcbi1cdFx0XHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTtcdFx0XFxcbi1cdFx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdFx0ZXhpdCAwO1x0XHRcdFx0XHRcdFx0XFxcbi1cdFx0Zmk7XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRkb25lOylcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLVx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnTElOSy1CUEYnICdbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJChAOi5za2VsLmg9LmJwZi5vKSknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoYWRkcHJlZml4ICQoVFJVTk5FUl9PVVRQVVQpLywkJCgkJChARiktZGVwcykpIFx1MDAyNlx1MDAyNiBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgJCQoQDouc2tlbC5oPS5saW5rZWQxLm8pIFx1MDAyNlx1MDAyNiBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pIFx1MDAyNlx1MDAyNiBcXFxuLVx0ZGlmZiAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XFxcbi1cdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ0dFTi1TS0VMJyAnWyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjIgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKEA6LnNrZWwuaD0pKSBcdTAwM2UgJCRAIFx1MDAyNlx1MDAyNiBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHN1YnNrZWxldG9uICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChAOi5za2VsLmg9KSkgXHUwMDNlICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSAkKGlmICQoUEVSTUlTU0lWRSksfHwgeyBcXFxuLVx0XHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTtcdFx0XHRcXFxuLVx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHR9KSBcdTAwMjZcdTAwMjZcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLVx0cm0gLWYgJCQoQDouc2tlbC5oPS5saW5rZWQxLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDMubylcbi1cbi0jIFdoZW4gdGhlIGNvbXBpbGVyIGdlbmVyYXRlcyBhICUuZCBmaWxlLCBvbmx5IHNrZWwgYmFzZW5hbWVzIChub3Rcbi0jIGZ1bGwgcGF0aHMpIGFyZSBzcGVjaWZpZWQgYXMgcHJlcmVxdWlzaXRlcyBmb3IgY29ycmVzcG9uZGluZyAlLm9cbi0jIGZpbGUuIHZwYXRoIGRpcmVjdGl2ZXMgYmVsb3cgaW5zdHJ1Y3QgbWFrZSB0byBzZWFyY2ggZm9yIHNrZWwgZmlsZXNcbi0jIGluIFRSVU5ORVJfT1VUUFVULCBpZiB0aGV5IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkuXG4tdnBhdGggJS5za2VsLmggJChUUlVOTkVSX09VVFBVVClcbi12cGF0aCAlLmxza2VsLmggJChUUlVOTkVSX09VVFBVVClcbi12cGF0aCAlLnN1YnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLVxuK2lmbmVxICgkKFNLSVBfRE9DUyksMSlcbithbGw6IGRvY3NcbiBlbmRpZlxuIFxuLSMgZW5zdXJlIHdlIHNldCB1cCB0ZXN0cy5oIGhlYWRlciBnZW5lcmF0aW9uIHJ1bGUganVzdCBvbmNlXG4taWZlcSAoJCgkKFRSVU5ORVJfVEVTVFNfRElSKS10ZXN0cy1oZHIpLClcbi0kKFRSVU5ORVJfVEVTVFNfRElSKS10ZXN0cy1oZHIgOj0geVxuLSQoVFJVTk5FUl9URVNUU19IRFIpOiAkKFRSVU5ORVJfVEVTVFNfRElSKS8qLmNcbi1cdCQkKGNhbGwgbXNnLFRFU1QtSERSLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcbi1cdCQkKHNoZWxsIChlY2hvICcvKiBHZW5lcmF0ZWQgaGVhZGVyLCBkbyBub3QgZWRpdCAqLyc7XHRcdFx0XHRcdFxcXG4tXHRcdCAgc2VkIC1uIC1FICdzL152b2lkIChzZXJpYWxfKT90ZXN0XyhbYS16QS1aMC05X10rKVxcKCh2b2lkKT9cXCkuKi9ERUZJTkVfVEVTVChcXDIpL3AnXHRcXFxuLVx0XHRcdCQoVFJVTk5FUl9URVNUU19ESVIpLyouYyB8IHNvcnQgO1x0XFxcbi1cdFx0ICkgXHUwMDNlICQkQClcbi1lbmRpZlxuK2RvY3M6XG4rXHQkKFEpUlNUMk1BTl9PUFRTPVwiLS1leGl0LXN0YXR1cz0xXCIgJChNQUtFKSAkKHN1Ym1ha2VfZXh0cmFzKVx0XFxcbitcdCAgICAgICAgICAgIC1mIE1ha2VmaWxlLmRvY3NcdFx0XHRcdFx0XFxcbitcdCAgICAgICAgICAgIHByZWZpeD0gT1VUUFVUPSQoT1VUUFVUKS8gREVTVERJUj0kKE9VVFBVVCkvICRAXG4gXG4tJChUUlVOTkVSX09VVFBVVCkvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiAkKFJFU09MVkVfQlRGSURTKSAkKFRSVU5ORVJfT1VUUFVUKS9idGZfZGF0YS5icGYub1xuLSQoVFJVTk5FUl9PVVRQVVQpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogcHJpdmF0ZSBURVNUX05FRURTX0JURklEUyA9IDFcbi1cbi0jIGNvbXBpbGUgaW5kaXZpZHVhbCB0ZXN0IGZpbGVzXG4tIyBOb3RlOiB3ZSBjZCBpbnRvIG91dHB1dCBkaXJlY3RvcnkgdG8gZW5zdXJlIGVtYmVkZGVkIEJQRiBvYmplY3QgaXMgZm91bmRcbi0kKFRSVU5ORVJfVEVTVF9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0Lm86XHRcdFx0XFxcbi1cdFx0ICAgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jXHRcdFx0XHRcXFxuLVx0XHQgICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kXG4tXHQkJChjYWxsIG1zZyxURVNULU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkKFEpKGNkICQkKEBEKSBcdTAwMjZcdTAwMjYgJCQoQ0MpIC1JLiAkJChDRkxBR1MpIC1NTUQgLU1UICQkQCAtYyAkKENVUkRJUikvJCRcdTAwM2MgJCQoTERMSUJTKSAtbyAkJChARikpICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJCRAOyBwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVRFU1QnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjIpKSlcbi1cdCQkKGlmICQkKFRFU1RfTkVFRFNfQlRGSURTKSxcdFx0XHRcdFx0XHRcXFxuLVx0XHQkKFEpaWYgWyAtZiAkJEAgXTsgdGhlblx0XHRcdFx0XHRcdFxcXG4tXHRcdCQoaWYgJChmaWx0ZXIgMSwkKFYpKSx0cnVlLHByaW50ZiAnICAlLThzJXMgJXNcXG4nIFwiQlRGSURTXCIgXCIgWyQoVFJVTk5FUl9CSU5BUlkpXVwiIFwiJCQobm90ZGlyICQkQClcIik7IFxcXG4tXHRcdCQoUkVTT0xWRV9CVEZJRFMpIC0tYnRmICQoVFJVTk5FUl9PVVRQVVQpL2J0Zl9kYXRhLmJwZi5vICQkQDtcdFxcXG4tXHRcdCQoUkVTT0xWRV9CVEZJRFMpIC0tcGF0Y2hfYnRmaWRzICQkQC5CVEZfaWRzICQkQDtcdFx0XFxcbi1cdFx0ZmkpXG4tXG4tJChUUlVOTkVSX1RFU1RfT0JKUzoubz0uZCk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kOlx0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9URVNUU19ESVIpLyUuY1x0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9FWFRSQV9IRFJTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKVx0XHRcXFxuLVx0XHRcdCAgICAkKFRSVU5ORVJfQlBGX1NLRUxTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9CUEZfTFNLRUxTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9CUEZfTFNLRUxTX1NJR05FRClcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpXG4tXG4taWZlcSAoJChmaWx0ZXIgY2xlYW4gZG9jcy1jbGVhbiBlbWl0X3Rlc3RzLCQoTUFLRUNNREdPQUxTKSksKVxuLWluY2x1ZGUgJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKSlcbi1lbmRpZlxuK2RvY3MtY2xlYW46XG4rXHQkKFEpJChNQUtFKSAkKHN1Ym1ha2VfZXh0cmFzKVx0XHRcdFx0XHRcXFxuK1x0ICAgICAgICAgICAgLWYgTWFrZWZpbGUuZG9jc1x0XHRcdFx0XHRcXFxuK1x0ICAgICAgICAgICAgcHJlZml4PSBPVVRQVVQ9JChPVVRQVVQpLyBERVNURElSPSQoT1VUUFVUKS8gJEBcbiBcbi0jIGFkZCBwZXIgZXh0cmEgb2JqIENGR0xBR1MgZGVmaW5pdGlvbnNcbi0kKGZvcmVhY2ggTiwkKHBhdHN1YnN0ICQoVFJVTk5FUl9PVVRQVVQpLyUubywlLCQoVFJVTk5FUl9FWFRSQV9PQkpTKSksXHRcXFxuLVx0JChldmFsICQoVFJVTk5FUl9PVVRQVVQpLyQoTikubzogQ0ZMQUdTICs9ICQoJChOKS5jLUNGTEFHUykpKVxuLVxuLSQoVFJVTk5FUl9FWFRSQV9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5vOlx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICUuY1x0XHRcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFRSVU5ORVJfRVhUUkFfSERSUylcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFZFUklGWV9TSUdfSERSKVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoVFJVTk5FUl9URVNUU19IRFIpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkJChjYWxsIG1zZyxFWFQtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcbi1cdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAtYyAkJFx1MDAzYyAkJChMRExJQlMpIC1vICQkQFxuLVxuLSQoVFJVTk5FUl9MSUJfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUubzokKFRPT0xTRElSKS9saWIvJS5jXG4tXHQkJChjYWxsIG1zZyxMSUItT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcbi1cdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAtYyAkJFx1MDAzYyAkJChMRExJQlMpIC1vICQkQFxuLVxuLSMgbm9uLWZsYXZvcmVkIGluLXNyY3RyZWUgYnVpbGRzIHJlY2VpdmUgc3BlY2lhbCB0cmVhdG1lbnQsIGluIHBhcnRpY3VsYXIsIHdlXG4tIyBkbyBub3QgbmVlZCB0byBjb3B5IGV4dHJhIHJlc291cmNlcyAoc2VlIGUuZy4gdGVzdF9idGZfZHVtcF9jYXNlKCkpXG4tJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzOiAkKFRSVU5ORVJfRVhUUkFfRklMRVMpIHwgJChUUlVOTkVSX09VVFBVVClcbi1pZm5lcSAoJDI6JChPVVRQVVQpLDokKHNoZWxsIHB3ZCkpXG4tXHQkJChjYWxsIG1zZyxFWFQtQ09QWSwkKFRSVU5ORVJfQklOQVJZKSwkKFRSVU5ORVJfRVhUUkFfRklMRVMpKVxuLVx0JChRKXJzeW5jIC1hcSAkKGlmICQoUEVSTUlTU0lWRSksLS1pZ25vcmUtbWlzc2luZy1hcmdzKSAkJF4gJChUUlVOTkVSX09VVFBVVCkvXG4rIyB2bWxpbnV4LmggaXMgZmlyc3QgZHVtcGVkIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kIHRoZW4gY29tcGFyZWQgdG9cbisjIHRoZSBwcmV2aW91cyB2ZXJzaW9uLiBUaGlzIGhlbHBzIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHJlLWJ1aWxkcyBvZlxuKyMgQlBGIG9iamVjdHMuXG4rJChJTkNMVURFX0RJUikvdm1saW51eC5oOiAkKFZNTElOVVhfQlRGKSAkKEJQRlRPT0wpIHwgJChJTkNMVURFX0RJUilcbitpZmVxICgkKFZNTElOVVhfSCksKVxuK1x0JChjYWxsIG1zZyxHRU4sLCRAKVxuK1x0JChRKSQoQlBGVE9PTCkgYnRmIGR1bXAgZmlsZSAkKFZNTElOVVhfQlRGKSBmb3JtYXQgYyBcdTAwM2UgJChJTkNMVURFX0RJUikvLnZtbGludXguaC50bXBcbitcdCQoUSljbXAgLXMgJChJTkNMVURFX0RJUikvLnZtbGludXguaC50bXAgJEAgfHwgbXYgJChJTkNMVURFX0RJUikvLnZtbGludXguaC50bXAgJEBcbitlbHNlXG4rXHQkKGNhbGwgbXNnLENQLCwkQClcbitcdCQoUSljcCBcIiQoVk1MSU5VWF9IKVwiICRAXG4gZW5kaWZcbiBcbi0jIHNvbWUgWC50ZXN0Lm8gZmlsZXMgaGF2ZSBydW50aW1lIGRlcGVuZGVuY2llcyBvbiBZLmJwZi5vIGZpbGVzXG4tJChPVVRQVVQpLyQoVFJVTk5FUl9CSU5BUlkpOiB8ICQoVFJVTk5FUl9CUEZfT0JKUylcbi1cbi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6ICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTKSksJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKVx0XFxcbi1cdFx0XHQgICAgICQoVFJVTk5FUl9FWFRSQV9PQkpTKSAkJChCUEZPQkopXHRcdFxcXG4tXHRcdFx0ICAgICAkKFRSVU5ORVJfTElCX09CSlMpXHRcdFx0XFxcbi1cdFx0XHQgICAgICQoVFJVTk5FUl9CUEZUT09MKVx0XHRcdFx0XFxcbi1cdFx0XHQgICAgICQoT1VUUFVUKS92ZXJpc3RhdFx0XHRcdFx0XFxcbi1cdFx0XHQgICAgIHwgJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzXHRcdFx0XFxcbi1cdFx0XHQgICAgICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSkpXG4tXHQkJChjYWxsIG1zZyxCSU5BUlksLCQkQClcbi1cdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQoZmlsdGVyICUuYSAlLm8sJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpICQkKGZpbHRlci1vdXQgJChUUlVOTkVSX1RFU1RfT0JKUyksJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSkgJCQoTERMSUJTKSAkJChMTFZNX0xETElCUykgJCQoTERGTEFHUykgJCQoTExWTV9MREZMQUdTKSAtbyAkJEBcbi1cdCQoUSlsbiAtc2YgJChpZiAkMiwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFxcXG4tXHRcdCAgICQoT1VUUFVUKS8kKGlmICQyLCQyLylicGZ0b29sXG4tXG4tZW5kZWZcbi1cbi1WRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXG4tVkVSSUZZX1NJR19IRFIgOj0gdmVyaWZpY2F0aW9uX2NlcnQuaFxuLVZFUklGSUNBVElPTl9DRVJUICAgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LmRlclxuLVBSSVZBVEVfS0VZIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5wZW1cbi1cbi0kKFZFUklGSUNBVElPTl9DRVJUKSAkKFBSSVZBVEVfS0VZKTogJChWRVJJRllfU0lHX1NFVFVQKVxuKyMgT25lIGdlbmtleSBydW4gcHJvZHVjZXMgYm90aCBmaWxlcy4gQSBwbGFpbiB0d28tdGFyZ2V0IHJ1bGUgaXMgbm90XG4rIyBncm91cGVkIC0gdW5kZXIgLWogbWFrZSB3b3VsZCBydW4gZ2Vua2V5IHR3aWNlIGNvbmN1cnJlbnRseSBhbmQgdGhlXG4rIyBvcGVuc3NsIGludm9jYXRpb25zIHJhY2U7IHRoZSBwYXR0ZXJuIGZvcm0gaXMgaW1wbGljaXRseSBncm91cGVkIGV2ZW5cbisjIHdpdGggbWFrZSBcdTAwM2MgNC4zIChzYW1lIHdvcmthcm91bmQgYXMgdGhlIHRlc3Rfa21vZHMgcnVsZSkuXG4rJChCVUlMRF9ESVIpLyUucGVtICQoQlVJTERfRElSKS8lLmRlcjogJChWRVJJRllfU0lHX1NFVFVQKVxuIFx0JChRKW1rZGlyIC1wICQoQlVJTERfRElSKVxuIFx0JChRKSQoVkVSSUZZX1NJR19TRVRVUCkgZ2Vua2V5ICQoQlVJTERfRElSKVxuIFxuQEAgLTgzNSwxMTYgKzM3MCwxODMgQEAgTElCQVJFTkFfQlBGX0RFUFMgOj0gJCh3aWxkY2FyZCBsaWJhcmVuYS9NYWtlZmlsZVx0XHRcXFxuIFx0XHRcdFx0IGxpYmFyZW5hL3NlbGZ0ZXN0cy8qXHRcdFxcXG4gXHRcdFx0XHQgbGliYXJlbmEvKi5icGYubylcbiBcbi1MSUJBUkVOQV9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hLnNrZWwuaFxuLVxuICQoTElCQVJFTkFfU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CUEZfREVQUylcbiBcdCskKE1BS0UpIC1DIGxpYmFyZW5hIGxpYmFyZW5hLnNrZWwuaCAkKExJQkFSRU5BX01BS0VfQVJHUylcbiBcbi1pZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKVxuLUxJQkFSRU5BX0FTQU5fU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYV9hc2FuLnNrZWwuaFxuLUNGTEFHUyArPSAtREhBU19CUEZfQVJFTkFfQVNBTlxuK2xpYmFyZW5hOiAkKExJQkFSRU5BX1NLRUwpXG4gXG4raWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcbiAkKExJQkFSRU5BX0FTQU5fU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CUEZfREVQUylcbiBcdCskKE1BS0UpIC1DIGxpYmFyZW5hIGxpYmFyZW5hX2FzYW4uc2tlbC5oICQoTElCQVJFTkFfTUFLRV9BUkdTKVxuK1xuK2xpYmFyZW5hX2FzYW46ICQoTElCQVJFTkFfQVNBTl9TS0VMKVxuIGVuZGlmXG4gXG4tIyBEZWZpbmUgdGVzdF9wcm9ncyB0ZXN0IHJ1bm5lci5cbi1UUlVOTkVSX1RFU1RTX0RJUiA6PSBwcm9nX3Rlc3RzXG4tVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzXG4tVFJVTk5FUl9FWFRSQV9TT1VSQ0VTIDo9IHRlc3RfcHJvZ3MuY1x0XHRcXFxuLVx0XHRcdCBjZ3JvdXBfaGVscGVycy5jXHRcXFxuLVx0XHRcdCB0cmFjZV9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IG5ldHdvcmtfaGVscGVycy5jXHRcXFxuLVx0XHRcdCB0ZXN0aW5nX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgYnRmX2hlbHBlcnMuY1x0XHRcXFxuLVx0XHRcdCBjYXBfaGVscGVycy5jXHRcdFxcXG4tXHRcdFx0IHVucHJpdl9oZWxwZXJzLmMgXHRcXFxuLVx0XHRcdCBzeXNjdGxfaGVscGVycy5jXHRcXFxuLVx0XHRcdCBuZXRsaW5rX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgaml0X2Rpc2FzbV9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IGlvX2hlbHBlcnMuY1x0XHRcXFxuLVx0XHRcdCB0ZXN0X2xvYWRlci5jXHRcdFxcXG4tXHRcdFx0IHhzay5jXHRcdFx0XFxcbi1cdFx0XHQgZGlzYXNtLmNcdFx0XFxcbi1cdFx0XHQgZGlzYXNtX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQganNvbl93cml0ZXIuYyBcdFx0XFxcbi1cdFx0XHQgJChWRVJJRllfU0lHX0hEUilcdFx0XFxcbi1cdFx0XHQgZmxvd19kaXNzZWN0b3JfbG9hZC5oXHRcXFxuLVx0XHRcdCBpcF9jaGVja19kZWZyYWdfZnJhZ3MuaFx0XFxcbi1cdFx0XHQgYnBmdG9vbF9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IHVzZHRfMS5jIHVzZHRfMi5jXHRcXFxuLVx0XHRcdCAkKExJQkFSRU5BX1NLRUwpXHRcXFxuLVx0XHRcdCAkKExJQkFSRU5BX0FTQU5fU0tFTClcbi1UUlVOTkVSX0xJQl9TT1VSQ0VTIDo9IGZpbmRfYml0LmNcbi1UUlVOTkVSX0VYVFJBX0ZJTEVTIDo9ICQoT1VUUFVUKS91cmFuZG9tX3JlYWRcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvXHRcdFx0XFxcbi1cdFx0ICAgICAgICQoT1VUUFVUKS94ZHBfc3lucHJveHlcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKE9VVFBVVCkvc2lnbi1maWxlXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChPVVRQVVQpL3Vwcm9iZV9tdWx0aVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoVEVTVF9LTU9EX1RBUkdFVFMpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgaW1hX3NldHVwLnNoIFx0XHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChWRVJJRllfU0lHX1NFVFVQKVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlXyouYylcdFx0XFxcbi1cdFx0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubylcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzKSlcbi1cbi0jIERlZmluZSB0ZXN0X3Byb2dzLW5vX2FsdTMyIHRlc3QgcnVubmVyLlxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfTk9BTFUzMl9CUEZfQlVJTERfUlVMRVxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKVxuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3Msbm9fYWx1MzIpKVxuLVxuLSMgRGVmaW5lIHRlc3RfcHJvZ3MtY3B1djQgdGVzdCBydW5uZXIuXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIEdlbmVyYXRlZCB0ZXN0IGxpc3QgaGVhZGVyc1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4rZGVmaW5lIGdlbl90ZXN0c19oZHJcbitcdCQoY2FsbCBtc2csVEVTVC1IRFIsLCRAKVxuK1x0JChRKShlY2hvICcvKiBHZW5lcmF0ZWQgaGVhZGVyLCBkbyBub3QgZWRpdCAqLyc7XHRcdFxcXG4rXHQgICAgIHNlZCAtbiAtRSAncy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dKylcXCgodm9pZCk/XFwpLiovREVGSU5FX1RFU1QoXFwyKS9wJyBcXFxuK1x0XHQkKEBEKS8qLmMgfCBzb3J0KSBcdTAwM2UgJEBcbitlbmRlZlxuK1xuK3Byb2dfdGVzdHMvdGVzdHMuaDogJCh3aWxkY2FyZCBwcm9nX3Rlc3RzLyouYylcbitcdCQoZ2VuX3Rlc3RzX2hkcilcbitcbittYXBfdGVzdHMvdGVzdHMuaDogJCh3aWxkY2FyZCBtYXBfdGVzdHMvKi5jKVxuK1x0JChnZW5fdGVzdHNfaGRyKVxuK1xuK3ZlcmlmaWVyL3Rlc3RzLmg6IHZlcmlmaWVyLyouY1xuK1x0JChRKSggY2QgdmVyaWZpZXIvOyBcXFxuK1x0ICAgICAgZWNobyAnLyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8nOyBcXFxuK1x0ICAgICAgZWNobyAnI2lmZGVmIEZJTExfQVJSQVknOyBcXFxuK1x0ICAgICAgbHMgKi5jIDJcdTAwM2UgL2Rldi9udWxsIHwgc2VkIC1lICdzQFxcKC4qXFwpQCNpbmNsdWRlIFxcXCJcXDFcXFwiQCc7IFxcXG4rXHQgICAgICBlY2hvICcjZW5kaWYnIFxcXG4rXHQgICAgKSBcdTAwM2UgdmVyaWZpZXIvdGVzdHMuaFxuK1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rIyBTaGFyZWQgaGVscGVyIG9iamVjdHMsIHVzZWQgYnkgdGhlIHN0YW5kYWxvbmUgYmluYXJpZXMgYmVsb3cgYW5kIChhc1xuKyMgcHJlYnVpbHQgaW5wdXRzKSBieSB0aGUgdW5mbGF2b3JlZCB0ZXN0X3Byb2dzIHJ1bm5lci5cbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuK1xuKyMgU29tZSB1dGlsaXR5IGZ1bmN0aW9ucyB1c2UgTExWTSBsaWJyYXJpZXNcbiskKE9VVFBVVCkvaml0X2Rpc2FzbV9oZWxwZXJzLm86IENGTEFHUyArPSAkKExMVk1fQ0ZMQUdTKVxuK1xuK0hFTFBFUl9PQkpTIDo9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sdGVzdGluZ19oZWxwZXJzLm8gY2dyb3VwX2hlbHBlcnMubyBcXFxuK1x0ICAgICAgIHRyYWNlX2hlbHBlcnMubyBuZXR3b3JrX2hlbHBlcnMubyBqc29uX3dyaXRlci5vXHRcdFxcXG4rXHQgICAgICAgY2FwX2hlbHBlcnMubyB1bnByaXZfaGVscGVycy5vIHVzZHRfMS5vIHVzZHRfMi5vIHhzay5vKVxuK1xuKyMgJChCUEZUT09MKSBpcyBhIHByZXJlcXVpc2l0ZSBiZWNhdXNlIGl0cyBzdWItbWFrZSBpcyB3aGF0IGluc3RhbGxzXG4rIyBsaWJicGYncyBpbnRlcm5hbCBoZWFkZXJzIChicGYvaGFzaG1hcC5oLCBicGYvbGliYnBmX2ludGVybmFsLmgpIGludG9cbisjICQoSU5DTFVERV9ESVIpOyB3aXRob3V0IGl0LCBoZWxwZXJzIGluY2x1ZGluZyB0aG9zZSBoZWFkZXJzIHJhY2UgdGhlXG4rIyBpbnN0YWxsIGFuZCBjYW4gc2lsZW50bHkgcGljayB1cCB0aGUgc291cmNlLXRyZWUgY29waWVzIGluc3RlYWQuXG4rJChIRUxQRVJfT0JKUyk6IGZsb3dfZGlzc2VjdG9yX2xvYWQuaCBpcF9jaGVja19kZWZyYWdfZnJhZ3MuaFx0XHRcXFxuK1x0XHQkKFZFUklGWV9TSUdfSERSKSBwcm9nX3Rlc3RzL3Rlc3RzLmggJChCUEZPQkopICQoQlBGVE9PTClcbitcbiskKE9VVFBVVCkvdGVzdF9zb2NrbWFwOiAkKE9VVFBVVCkvY2dyb3VwX2hlbHBlcnMubyAkKE9VVFBVVCkvdGVzdGluZ19oZWxwZXJzLm9cbiskKE9VVFBVVCkvdGVzdF90Y3Bub3RpZnlfdXNlcjogJChPVVRQVVQpL2Nncm91cF9oZWxwZXJzLm9cdFx0XFxcbitcdFx0XHQgICAgICAgJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vXHRcdFxcXG4rXHRcdFx0ICAgICAgICQoT1VUUFVUKS90cmFjZV9oZWxwZXJzLm9cbiskKE9VVFBVVCkvdGVzdF90YWc6ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xuKyQoT1VUUFVUKS90ZXN0X2xpcmNfbW9kZTJfdXNlcjogJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vXG4rJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQ6IGZsb3dfZGlzc2VjdG9yX2xvYWQuaCAkKE9VVFBVVCkvdGVzdGluZ19oZWxwZXJzLm9cbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgVGVzdCBydW5uZXIgaW5zdGFuY2VzLCBvbmUgc3ViLW1ha2UgZWFjaCAoc2VlIE1ha2VmaWxlLnJ1bm5lcikuXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbitcbisjIFRoZSBMTFZNIGZlYXR1cmUtcHJvYmUgcmVzdWx0cyBhcmUgZXhwb3J0ZWQgdG8gdGhlIHJ1bm5lciBzdWItbWFrZXMuXG4rIyBDQyBpcyBwYXNzZWQgZXhwbGljaXRseSBpbnN0ZWFkOiBleHBvcnRpbmcgaXQgd291bGQgYWxzbyBsZWFrIGxpYi5taydzXG4rIyBDQyBpbnRvIHRoZSBsaWJicGYvYnBmdG9vbC9yZXNvbHZlX2J0ZmlkcyBzdWItYnVpbGRzLCB3aGljaCBjb21wdXRlXG4rIyB0aGVpciBvd24uXG4rZXhwb3J0IExMVk1fQ0ZMQUdTIExMVk1fTERMSUJTIExMVk1fTERGTEFHU1xuK1xuK1JVTk5FUl9NQUtFIDo9ICQoTUFLRSkgLWYgTWFrZWZpbGUucnVubmVyIE9VVFBVVD0kKE9VVFBVVCkgQ0M9JyQoQ0MpJ1xuK1xuKyMgRXZlcnl0aGluZyBhIHJ1bm5lciBpbnN0YW5jZSByZWZlcmVuY2VzIGJ1dCBkb2VzIG5vdCBrbm93IGhvdyB0byBidWlsZC5cbitSVU5ORVJfUFJFUkVRUyA6PSAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoQlBGVE9PTClcdFx0XFxcbitcdFx0ICAkKFRSVU5ORVJfQlBGVE9PTCkgJChSRVNPTFZFX0JURklEUylcdFx0XHRcXFxuK1x0XHQgICQoT1VUUFVUKS92ZXJpc3RhdFx0XHRcdFx0XHRcXFxuK1x0XHQgICQoVkVSSUZZX1NJR19IRFIpICQoUFJJVkFURV9LRVkpICQoVkVSSUZJQ0FUSU9OX0NFUlQpXHRcXFxuK1x0XHQgICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXHRcdFxcXG4rXHRcdCAgcHJvZ190ZXN0cy90ZXN0cy5oXHRcdFx0XHRcdFxcXG4rXHRcdCAgJChIRUxQRVJfT0JKUylcdFx0XHRcdFx0XFxcbitcdFx0ICAkKE9VVFBVVCkvdXJhbmRvbV9yZWFkICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc29cdFxcXG4rXHRcdCAgJChPVVRQVVQpL3hkcF9zeW5wcm94eSAkKE9VVFBVVCkvc2lnbi1maWxlXHRcdFxcXG4rXHRcdCAgJChPVVRQVVQpL3Vwcm9iZV9tdWx0aSAkKFRFU1RfS01PRF9UQVJHRVRTKVxuK1xuK0ZPUkNFOlxuK1xuKyMgVGhlIGRlZmF1bHQgZmxhdm9yJ3Mgc2tlbGV0b25zIGFyZSBhbHNvIGlucHV0cyBvZiBiZW5jaCwgdGVzdF9tYXBzLFxuKyMgeHNreGNlaXZlciwgeGRwXyogYW5kIHRlc3RfY3BwOyBcImRlZmF1bHQtc2tlbHNcIiBidWlsZHMganVzdCB0aG9zZVxuKyMgd2l0aG91dCB0aGUgdGVzdF9wcm9ncyB0ZXN0IG9iamVjdHMgYW5kIGJpbmFyeS5cbisuUEhPTlk6IGRlZmF1bHQtc2tlbHNcbitkZWZhdWx0LXNrZWxzOiAkKFJVTk5FUl9QUkVSRVFTKVxuK1x0KyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9IFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXG4rXHRcdEJQRl9CVUlMRD1jbGFuZyBCUEZfTUNQVT12MyBCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTIHNrZWxzXG4rXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3M6ICQoUlVOTkVSX1BSRVJFUVMpIGRlZmF1bHQtc2tlbHMgRk9SQ0VcbitcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPSBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxuK1x0XHRCUEZfQlVJTEQ9Y2xhbmcgQlBGX01DUFU9djMgQlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUU1xuK1xuKyQoT1VUUFVUKS90ZXN0X3Byb2dzLW5vX2FsdTMyOiAkKFJVTk5FUl9QUkVSRVFTKSBGT1JDRVxuK1x0KyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9bm9fYWx1MzIgVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcbitcdFx0QlBGX0JVSUxEPWNsYW5nIEJQRl9NQ1BVPXYyXG4rXG4gaWZuZXEgKCQoQ0xBTkdfQ1BVVjQpLClcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX0NQVVY0X0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzLGNwdXY0KSlcbiskKE9VVFBVVCkvdGVzdF9wcm9ncy1jcHV2NDogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0VcbitcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPWNwdXY0IFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXG4rXHRcdEJQRl9CVUlMRD1jbGFuZyBCUEZfTUNQVT12NCBCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTXG4gZW5kaWZcbiBcbi0jIERlZmluZSB0ZXN0X3Byb2dzIEJQRi1HQ0MtZmxhdm9yZWQgdGVzdCBydW5uZXIuXG4gaWZuZXEgKCQoQlBGX0dDQyksKVxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gR0NDX0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsZ2NjLClcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzLGJwZl9nY2MpKVxuLWVuZGlmXG4tXG4tIyBEZWZpbmUgdGVzdF9tYXBzIHRlc3QgcnVubmVyLlxuLVRSVU5ORVJfVEVTVFNfRElSIDo9IG1hcF90ZXN0c1xuLVRSVU5ORVJfQlBGX1BST0dTX0RJUiA6PSBwcm9nc1xuLVRSVU5ORVJfRVhUUkFfU09VUkNFUyA6PSB0ZXN0X21hcHMuY1xuLVRSVU5ORVJfTElCX1NPVVJDRVMgOj1cbi1UUlVOTkVSX0VYVFJBX0ZJTEVTIDo9XG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSAkJChlcnJvciBubyBCUEYgb2JqZWN0cyBzaG91bGQgYmUgYnVpbHQpXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9XG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9tYXBzKSlcbi1cbi0jIERlZmluZSB0ZXN0X3ZlcmlmaWVyIHRlc3QgcnVubmVyLlxuLSMgSXQgaXMgbXVjaCBzaW1wbGVyIHRoYW4gdGVzdF9tYXBzL3Rlc3RfcHJvZ3MgYW5kIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgZnJvbVxuLSMgdGhlbSAoZS5nLiwgdGVzdC5oIGlzIHVzaW5nIGNvbXBsZXRlbHkgcGF0dGVybiksIHRoYXQgaXQncyB3b3J0aCBqdXN0XG4tIyBleHBsaWNpdGx5IGRlZmluaW5nIGFsbCB0aGUgcnVsZXMgZXhwbGljaXRseS5cbi12ZXJpZmllci90ZXN0cy5oOiB2ZXJpZmllci8qLmNcbi1cdCQoc2hlbGwgKCBjZCB2ZXJpZmllci87IFxcXG4tXHRcdCAgZWNobyAnLyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8nOyBcXFxuLVx0XHQgIGVjaG8gJyNpZmRlZiBGSUxMX0FSUkFZJzsgXFxcbi1cdFx0ICBscyAqLmMgMlx1MDAzZSAvZGV2L251bGwgfCBzZWQgLWUgJ3NAXFwoLipcXClAI2luY2x1ZGUgXFxcIlxcMVxcXCJAJzsgXFxcbi1cdFx0ICBlY2hvICcjZW5kaWYnIFxcXG4tXHRcdCkgXHUwMDNlIHZlcmlmaWVyL3Rlc3RzLmgpXG4tJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6IHRlc3RfdmVyaWZpZXIuYyB2ZXJpZmllci90ZXN0cy5oICQoQlBGT0JKKSB8ICQoT1VUUFVUKVxuKyQoT1VUUFVUKS90ZXN0X3Byb2dzLWJwZl9nY2M6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXG4rXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1icGZfZ2NjIFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXG4rXHRcdEJQRl9CVUlMRD1nY2NcbitlbmRpZlxuK1xuKyMgdGVzdF9tYXBzIGNvbXBpbGVzIG1hcF90ZXN0cy8qLmMgYWdhaW5zdCB0aGUgZGVmYXVsdCBmbGF2b3IncyBza2VsZXRvbnNcbiskKE9VVFBVVCkvdGVzdF9tYXBzOiAkKFJVTk5FUl9QUkVSRVFTKSBtYXBfdGVzdHMvdGVzdHMuaCBkZWZhdWx0LXNrZWxzIEZPUkNFXG4rXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X21hcHMgRkxBVk9SPSBURVNUU19ESVI9bWFwX3Rlc3RzIFxcXG4rXHRcdEJQRl9CVUlMRD1ub25lXG4rXG4rIyBEZWZhdWx0LWZsYXZvciBCUEYgb2JqZWN0cyBhbmQgc2tlbGV0b25zIGNvbnN1bWVkIGJ5IHRhcmdldHMgaW4gdGhpc1xuKyMgTWFrZWZpbGUgKGFuZCBieSBsaWIubWsncyBpbnN0YWxsIHJ1bGUpIGFyZSBwcm9kdWNlZCBieSB0aGUgcnVubmVyXG4rIyBzdWItbWFrZSBhYm92ZTsgdGhlIGVtcHR5IHJlY2lwZSBwbHVzIHRoZSBvcmRlci1vbmx5IHByZXJlcXVpc2l0ZVxuKyMgbWFrZXMgdGhlbSBhdmFpbGFibGUgaGVyZSB3aXRob3V0IGR1cGxpY2F0aW5nIHRoZSBydW5uZXIncyBydWxlcy5cbitERUZBVUxUX0JQRl9PQkpTIDo9ICQocGF0c3Vic3QgcHJvZ3MvJS5jLCQoT1VUUFVUKS8lLmJwZi5vLCQod2lsZGNhcmQgcHJvZ3MvKi5jKSlcbitURVNUX0dFTl9GSUxFUyArPSAkKERFRkFVTFRfQlBGX09CSlMpXG4rXG4rQkVOQ0hfU0tFTFMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyxcdFx0XHRcdFx0XFxcbitcdCAgICAgICB0ZXN0X292ZXJoZWFkLnNrZWwuaCB0cmlnZ2VyX2JlbmNoLnNrZWwuaFx0XHRcXFxuK1x0ICAgICAgIHJpbmdidWZfYmVuY2guc2tlbC5oIHBlcmZidWZfYmVuY2guc2tlbC5oXHRcdFxcXG4rXHQgICAgICAgYmxvb21fZmlsdGVyX2JlbmNoLnNrZWwuaCBicGZfbG9vcF9iZW5jaC5za2VsLmhcdFx0XFxcbitcdCAgICAgICBzdHJuY21wX2JlbmNoLnNrZWwuaCBicGZfaGFzaG1hcF9mdWxsX3VwZGF0ZV9iZW5jaC5za2VsLmhcXFxuK1x0ICAgICAgIGxvY2FsX3N0b3JhZ2VfYmVuY2guc2tlbC5oXHRcdFx0XHRcXFxuK1x0ICAgICAgIGxvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlX2JlbmNoLnNrZWwuaFx0XHRcXFxuK1x0ICAgICAgIGJlbmNoX2xvY2FsX3N0b3JhZ2VfY3JlYXRlLnNrZWwuaFx0XHRcdFxcXG4rXHQgICAgICAgYnBmX2hhc2htYXBfbG9va3VwLnNrZWwuaCBodGFiX21lbV9iZW5jaC5za2VsLmhcdFx0XFxcbitcdCAgICAgICBjcnlwdG9fYmVuY2guc2tlbC5oIGJlbmNoX3NvY2ttYXBfcHJvZy5za2VsLmhcdFx0XFxcbitcdCAgICAgICBscG1fdHJpZV9iZW5jaC5za2VsLmggbHBtX3RyaWVfbWFwLnNrZWwuaFx0XHRcXFxuK1x0ICAgICAgIGJwZl9ub3BfYmVuY2guc2tlbC5oIHhkcF9sYl9iZW5jaC5za2VsLmgpXG4rVE9QX1NLRUxTIDo9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8seHNrX3hkcF9wcm9ncy5za2VsLmhcdFx0XFxcbitcdCAgICAgeGRwX2h3X21ldGFkYXRhLnNrZWwuaCB4ZHBfZmVhdHVyZXMuc2tlbC5oXHRcdFx0XFxcbitcdCAgICAgdGVzdF9jb3JlX2V4dGVybi5za2VsLmgpICQoQkVOQ0hfU0tFTFMpXG4rXG4rIyBFbXB0eS1yZWNpcGUgZGVsZWdhdGlvbjogXCJkZWZhdWx0LXNrZWxzXCIgKHJlKWJ1aWxkcyB0aGUgZmlsZSB2aWEgdGhlXG4rIyBydW5uZXIgc3ViLW1ha2UsIGFmdGVyIHdoaWNoIG1ha2UgcmUtc3RhdHMgdGhlIHRhcmdldCwgc28gZGVwZW5kZW50c1xuKyMgc2VlIGZyZXNoIHRpbWVzdGFtcHMgd2l0aGluIHRoZSBzYW1lIGludm9jYXRpb24uIERlcGVuZGVudHMgc3RpbGxcbisjIHJlYnVpbGQgb24gbXRpbWUgb25seSAtIHRoZSBwaG9ueSBwcmVyZXF1aXNpdGUgZG9lcyBub3QgY2FzY2FkZS5cbiskKERFRkFVTFRfQlBGX09CSlMpICQoVE9QX1NLRUxTKTogZGVmYXVsdC1za2VscyA7XG4rXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIFN0YW5kYWxvbmUgdGVzdCBiaW5hcmllc1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4rIyB0ZXN0X3ZlcmlmaWVyIGlzIG11Y2ggc2ltcGxlciB0aGFuIHRlc3RfbWFwcy90ZXN0X3Byb2dzIGFuZFxuKyMgc3VmZmljaWVudGx5IGRpZmZlcmVudCBmcm9tIHRoZW0gKGUuZy4sIGl0cyB0ZXN0cy5oIHVzZXMgYSBjb21wbGV0ZWx5XG4rIyBkaWZmZXJlbnQgcGF0dGVybiksIHRoYXQgaXQncyB3b3J0aCBqdXN0IGRlZmluaW5nIGl0cyBydWxlcyBleHBsaWNpdGx5LlxuKyQoT1VUUFVUKS90ZXN0X3ZlcmlmaWVyOiB0ZXN0X3ZlcmlmaWVyLmMgdmVyaWZpZXIvdGVzdHMuaCAkKEJQRk9CSilcdFxcXG4rXHRcdFx0ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1x0XHRcdFxcXG4rXHRcdFx0ICQoT1VUUFVUKS9jYXBfaGVscGVycy5vXHRcdFx0XFxcbitcdFx0XHQgJChPVVRQVVQpL3VucHJpdl9oZWxwZXJzLm9cbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbiBcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxuIFxuICMgSW5jbHVkZSBmaW5kX2JpdC5jIHRvIGNvbXBpbGUgeHNreGNlaXZlci5cbiBFWFRSQV9TUkMgOj0gJChUT09MU0RJUikvbGliL2ZpbmRfYml0LmMgcHJvZ190ZXN0cy90ZXN0X3hzay5jIHByb2dfdGVzdHMvdGVzdF94c2suaFxuLSQoT1VUUFVUKS94c2t4Y2VpdmVyOiAkKEVYVFJBX1NSQykgeHNreGNlaXZlci5jIHhza3hjZWl2ZXIuaCAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hzay5vICQoT1VUUFVUKS94c2tfeGRwX3Byb2dzLnNrZWwuaCAkKEJQRk9CSikgfCAkKE9VVFBVVClcbiskKE9VVFBVVCkveHNreGNlaXZlcjogJChFWFRSQV9TUkMpIHhza3hjZWl2ZXIuYyB4c2t4Y2VpdmVyLmggJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveHNrX3hkcF9wcm9ncy5za2VsLmggJChCUEZPQkopXG4gXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4gXHQkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEBcbiBcbi0kKE9VVFBVVCkveGRwX2h3X21ldGFkYXRhOiB4ZHBfaHdfbWV0YWRhdGEuYyAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hzay5vICQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGEuc2tlbC5oIHwgJChPVVRQVVQpXG4rJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YTogeGRwX2h3X21ldGFkYXRhLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveGRwX2h3X21ldGFkYXRhLnNrZWwuaFxuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuIFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuYywkXikgJChMRExJQlMpIC1vICRAXG4gXG4tJChPVVRQVVQpL3hkcF9mZWF0dXJlczogeGRwX2ZlYXR1cmVzLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94ZHBfZmVhdHVyZXMuc2tlbC5oIHwgJChPVVRQVVQpXG4rJChPVVRQVVQpL3hkcF9mZWF0dXJlczogeGRwX2ZlYXR1cmVzLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94ZHBfZmVhdHVyZXMuc2tlbC5oXG4gXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4gXHQkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEBcbiBcbkBAIC05NTYsMTEgKzU1OCwxOCBAQCAkKE9VVFBVVCkvdGVzdF9jcHA6IHRlc3RfY3BwLmNwcCAkKE9VVFBVVCkvdGVzdF9jb3JlX2V4dGVybi5za2VsLmggJChCUEZPQkopXG4gXHQkKGNhbGwgbXNnLENYWCwsJEApXG4gXHQkKFEpJChDWFgpICQoQ1hYRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jcHAsJF4pICQoTERMSUJTKSAtbyAkQFxuIFxuLSMgQmVuY2htYXJrIHJ1bm5lclxuLSQoT1VUUFVUKS9iZW5jaF8lLm86IGJlbmNocy9iZW5jaF8lLmMgYmVuY2guaCAkKEJQRk9CSilcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgQmVuY2htYXJrIHJ1bm5lci4gVGhlIGJlbmNobWFyayBsaXN0IGlzIGRlZmluZWQgYnkgdGhlIGZpbGVzIGluXG4rIyBiZW5jaHMvOiBldmVyeSBiZW5jaHMvYmVuY2hfKi5jIGlzIGNvbXBpbGVkIGFuZCBsaW5rZWQgaW4uXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbitcbitCRU5DSF9PQkpTIDo9ICQoc29ydCAkKHBhdHN1YnN0IGJlbmNocy8lLmMsJChPVVRQVVQpLyUubywkKHdpbGRjYXJkIGJlbmNocy9iZW5jaF8qLmMpKSlcbitcbiskKE9VVFBVVCkvYmVuY2hfJS5vOiBiZW5jaHMvYmVuY2hfJS5jIGJlbmNoLmggJChCUEZPQkopIHwgZGVmYXVsdC1za2Vsc1xuIFx0JChjYWxsIG1zZyxDQywsJEApXG4tXHQkKFEpJChDQykgJChDRkxBR1MpIC1PMiAtYyAkKGZpbHRlciAlLmMsJF4pICQoTERMSUJTKSAtbyAkQCAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICRAOyBwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLUJFTkNIJyAnJChub3RkaXIgJEApJyAxXHUwMDNlXHUwMDI2MikpXG4rXHQkKFEpJChDQykgJChDRkxBR1MpIC1PMiAtYyAkKGZpbHRlciAlLmMsJF4pIC1vICRAICQoY2FsbCBza2lwX29uX2ZhaWwsQkVOQ0gpXG4rXG4rIyBiZW5jaG1hcmstc3BlY2lmaWMgZ2VuZXJhdGVkLXNrZWxldG9uIGRlcGVuZGVuY2llc1xuICQoT1VUUFVUKS9iZW5jaF9yZW5hbWUubzogJChPVVRQVVQpL3Rlc3Rfb3ZlcmhlYWQuc2tlbC5oXG4gJChPVVRQVVQpL2JlbmNoX3RyaWdnZXIubzogJChPVVRQVVQpL3RyaWdnZXJfYmVuY2guc2tlbC5oXG4gJChPVVRQVVQpL2JlbmNoX3JpbmdidWZzLm86ICQoT1VUUFVUKS9yaW5nYnVmX2JlbmNoLnNrZWwuaCBcXFxuQEAgLTk4MCwzNyArNTg5LDE5IEBAICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubzogJChPVVRQVVQpL2xwbV90cmllX2JlbmNoLnNrZWwuaCAkKE9VVFBVVCkvbHBtX3RyXG4gJChPVVRQVVQpL2JlbmNoX2JwZl9ub3AubzogJChPVVRQVVQpL2JwZl9ub3BfYmVuY2guc2tlbC5oIGJlbmNoX2JwZl90aW1pbmcuaFxuICQoT1VUUFVUKS9iZW5jaF94ZHBfbGIubzogJChPVVRQVVQpL3hkcF9sYl9iZW5jaC5za2VsLmggYmVuY2hfYnBmX3RpbWluZy5oXG4gJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubzogYmVuY2hfYnBmX3RpbWluZy5oXG4rXG4gJChPVVRQVVQpL2JlbmNoLm86IGJlbmNoLmggdGVzdGluZ19oZWxwZXJzLmggJChCUEZPQkopXG4gJChPVVRQVVQpL2JlbmNoOiBMRExJQlMgKz0gLWxtXG4tJChPVVRQVVQpL2JlbmNoOiAkKE9VVFBVVCkvYmVuY2gubyBcXFxuLVx0XHQgJChURVNUSU5HX0hFTFBFUlMpIFxcXG4tXHRcdCAkKFRSQUNFX0hFTFBFUlMpIFxcXG4tXHRcdCAkKENHUk9VUF9IRUxQRVJTKSBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2NvdW50Lm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9yZW5hbWUubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3RyaWdnZXIubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3JpbmdidWZzLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9ibG9vbV9maWx0ZXJfbWFwLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfbG9vcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2UubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9sb29rdXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2VfY3JlYXRlLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9odGFiX21lbS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2NyeXB0by5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfc29ja21hcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfbHBtX3RyaWVfbWFwLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfdGltaW5nLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfbm9wLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF94ZHBfbGIubyBcXFxuLVx0XHQgJChPVVRQVVQpL3VzZHRfMS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvdXNkdF8yLm8gXFxcbi1cdFx0ICNcbiskKE9VVFBVVCkvYmVuY2g6ICQoT1VUUFVUKS9iZW5jaC5vXHRcdFxcXG4rXHRcdCAkKE9VVFBVVCkvdGVzdGluZ19oZWxwZXJzLm9cdFxcXG4rXHRcdCAkKE9VVFBVVCkvdHJhY2VfaGVscGVycy5vXHRcXFxuK1x0XHQgJChPVVRQVVQpL2Nncm91cF9oZWxwZXJzLm9cdFxcXG4rXHRcdCAkKE9VVFBVVCkvdXNkdF8xLm9cdFx0XFxcbitcdFx0ICQoT1VUUFVUKS91c2R0XzIub1x0XHRcXFxuK1x0XHQgJChCRU5DSF9PQkpTKVxuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuLVx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQCAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICRAOyBwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLUxJTksnICckKG5vdGRpciAkQCkgKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpJyAxXHUwMDNlXHUwMDI2MikpXG4rXHQkKFEpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChmaWx0ZXIgJS5hICUubywkXikgJChMRExJQlMpIC1vICRAIFxcXG4rXHRcdCQoY2FsbCBza2lwX29uX2ZhaWwsTElOSywsKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpKVxuIFxuICMgVGhpcyB3b3JrcyBhcm91bmQgR0NDIHdhcm5pbmcgYWJvdXQgc25wcmludGYgdHJ1bmNhdGluZyBzdHJpbmdzIGxpa2U6XG4gI1xuQEAgLTEwMjIsMTMgKzYxMyw2IEBAICQoT1VUUFVUKS92ZXJpc3RhdDogJChPVVRQVVQpL3ZlcmlzdGF0Lm9cbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbiBcdCQoUSkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKGZpbHRlciAlLmEgJS5vLCReKSAkKExETElCUykgLW8gJEBcbiBcbi0jIExpbmtpbmcgdXByb2JlX211bHRpIGNhbiBmYWlsIGR1ZSB0byByZWxvY2F0aW9uIG92ZXJmbG93cyBvbiBtaXBzLlxuLSQoT1VUUFVUKS91cHJvYmVfbXVsdGk6IENGTEFHUyArPSAkKGlmICQoZmlsdGVyIG1pcHMsICQoQVJDSCkpLC1teGdvdClcbi0kKE9VVFBVVCkvdXByb2JlX211bHRpOiB1cHJvYmVfbXVsdGkuYyB1cHJvYmVfbXVsdGkubGRcbi1cdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbi1cdCQoUSkkKENDKSAkKENGTEFHUykgLVdsLC1ULHVwcm9iZV9tdWx0aS5sZCAtTzAgJChMREZMQUdTKSBcdFxcXG4tXHRcdCQoZmlsdGVyLW91dCAlLmxkLCReKSAkKExETElCUykgLW8gJEBcbi1cbiBFWFRSQV9DTEVBTiA6PSAkKFNDUkFUQ0hfRElSKSAkKEhPU1RfU0NSQVRDSF9ESVIpXHRcdFx0XFxcbiBcdHByb2dfdGVzdHMvdGVzdHMuaCBtYXBfdGVzdHMvdGVzdHMuaCB2ZXJpZmllci90ZXN0cy5oXHRcdFxcXG4gXHRmZWF0dXJlIGJwZnRvb2wgJChURVNUX0tNT0RfVEFSR0VUUylcdFx0XHRcdFxcXG5AQCAtMTAzOCw3ICs2MjIsNyBAQCBFWFRSQV9DTEVBTiA6PSAkKFNDUkFUQ0hfRElSKSAkKEhPU1RfU0NSQVRDSF9ESVIpXHRcdFx0XFxcbiBcdFx0XHQgICAgICAgbGlidXJhbmRvbV9yZWFkLnNvKVx0XHRcdFxcXG4gXHQkKE9VVFBVVCkvRkVBVFVSRS1EVU1QLnNlbGZ0ZXN0c1xuIFxuLS5QSE9OWTogZG9jcyBkb2NzLWNsZWFuXG4rLlBIT05ZOiBkb2NzIGRvY3MtY2xlYW4gbGliYXJlbmEgbGliYXJlbmFfYXNhblxuIFxuICMgRGVsZXRlIHBhcnRpYWxseSB1cGRhdGVkIChjb3JydXB0ZWQpIGZpbGVzIG9uIGVycm9yXG4gLkRFTEVURV9PTl9FUlJPUjpcbkBAIC0xMDYyLDkgKzY0NiwzIEBAIG92ZXJyaWRlIGRlZmluZSBJTlNUQUxMX1JVTEVcbiBcdFx0XHQkKElOU1RBTExfUEFUSCkvJCRESVI7XHRcdFx0XHQgIFxcXG4gXHRkb25lXG4gZW5kZWZcbi1cbi1saWJhcmVuYTogJChMSUJBUkVOQV9TS0VMKVxuLVxuLWlmbmVxICgkKENMQU5HX0hBU19BUkVOQV9BU0FOKSwpXG4tbGliYXJlbmFfYXNhbjogJChMSUJBUkVOQV9BU0FOX1NLRUwpXG4tZW5kaWZcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFyc1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lYTk3NWZlZWYwMTM2ZlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFyc1xuQEAgLTAsMCArMSwyMDQgQEBcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI1xuKyMgU2hhcmVkIHRvb2xjaGFpbiwgcGF0aCBhbmQgZmxhZyBkZWZpbml0aW9ucyBmb3IgdGhlIEJQRiBzZWxmdGVzdHMgYnVpbGQuXG4rIyBJbmNsdWRlZCBieSBib3RoIE1ha2VmaWxlICh0aGUgdG9wIGxldmVsKSBhbmQgTWFrZWZpbGUucnVubmVyIChvbmVcbisjIHRlc3QtcnVubmVyIGluc3RhbmNlKS5cbisjXG4rIyBSZXF1aXJlbWVudHMgYXQgaW5jbHVkZSB0aW1lOlxuKyMgICAtICQoT1VUUFVUKSBpcyBzZXQgdG8gYW4gYWJzb2x1dGUgcGF0aFxuKyMgICAtIHRvb2xzL2J1aWxkL0J1aWxkLmluY2x1ZGUsIHRvb2xzL3NjcmlwdHMvTWFrZWZpbGUuYXJjaCBhbmRcbisjICAgICB0b29scy9zY3JpcHRzL01ha2VmaWxlLmluY2x1ZGUgaGF2ZSBiZWVuIGluY2x1ZGVkIChmb3IgU1JDQVJDSCBldGMuKVxuK1xuK0NYWCA/PSAkKENST1NTX0NPTVBJTEUpZysrXG4rUEtHX0NPTkZJRyA/PSAkKENST1NTX0NPTVBJTEUpcGtnLWNvbmZpZ1xuK1xuK1RPT0xTRElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLilcbitMSUJESVIgOj0gJChUT09MU0RJUikvbGliXG4rQlBGRElSIDo9ICQoTElCRElSKS9icGZcbitUT09MU0lOQ0RJUiA6PSAkKFRPT0xTRElSKS9pbmNsdWRlXG4rVE9PTFNBUkNISU5DRElSIDo9ICQoVE9PTFNESVIpL2FyY2gvJChTUkNBUkNIKS9pbmNsdWRlXG4rQlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbFxuK0FQSURJUiA6PSAkKFRPT0xTSU5DRElSKS91YXBpXG4raWZuZXEgKCQoTyksKVxuK0dFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkXG4rZWxzZVxuK0dFTkRJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4vaW5jbHVkZS9nZW5lcmF0ZWQpXG4rZW5kaWZcbitHRU5IRFIgOj0gJChHRU5ESVIpL2F1dG9jb25mLmhcbitcbitpZm5lcSAoJCh3aWxkY2FyZCAkKEdFTkhEUikpLClcbisgIEdFTkZMQUdTIDo9IC1ESEFWRV9HRU5IRFJcbitlbmRpZlxuK1xuK2lmZXEgKCQoc3JjdHJlZSksKVxuK3NyY3RyZWUgOj0gJChhYnNwYXRoIC4uLy4uLy4uLy4uKVxuK2VuZGlmXG4rXG4rIyBJbW1lZGlhdGUgKHdpdGggYW4gb3ZlcnJpZGUtcHJlc2VydmluZyBndWFyZCk6IGEgcGxhaW4gPz0gc3RheXNcbisjIHJlY3Vyc2l2ZWx5IGV4cGFuZGVkIGFuZCB3b3VsZCByZS1ydW4gJ2NvbW1hbmQgLXYnIG9uIGV2ZXJ5IGV4cGFuc2lvbi5cbitpZmVxICgkKG9yaWdpbiBCUEZfR0NDKSx1bmRlZmluZWQpXG4rQlBGX0dDQ1x0XHQ6PSAkKHNoZWxsIGNvbW1hbmQgLXYgYnBmLWdjYzspXG4rZW5kaWZcbitpZmRlZiBBU0FOXG4rU0FOX0NGTEFHU1x0Pz0gLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXG4rZWxzZVxuK1NBTl9DRkxBR1NcdD89XG4rZW5kaWZcbitTQU5fTERGTEFHU1x0Pz0gJChTQU5fQ0ZMQUdTKVxuK1JFTEVBU0VcdFx0Pz1cbitPUFRfRkxBR1NcdD89ICQoaWYgJChSRUxFQVNFKSwtTzIsLU8wKVxuK1xuK0xJQkVMRl9DRkxBR1NcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1jZmxhZ3MgMlx1MDAzZS9kZXYvbnVsbClcbitMSUJFTEZfTElCU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWxpYnMgMlx1MDAzZS9kZXYvbnVsbCB8fCBlY2hvIC1sZWxmKVxuK1xuK1NLSVBfRE9DU1x0Pz1cbitTS0lQX0xMVk1cdD89XG4rU0tJUF9MSUJCRkRcdD89XG4rU0tJUF9DUllQVE9cdD89XG4rXG4rIyBXaGVuIEJQRl9TVFJJQ1RfQlVJTEQgaXMgMSwgYW55IEJQRiBvYmplY3QsIHNrZWxldG9uLCB0ZXN0IG9iamVjdCwgb3JcbisjIGJlbmNobWFyayBjb21waWxhdGlvbiBmYWlsdXJlIGlzIGZhdGFsLiBTZXQgdG8gMCB0byB0b2xlcmF0ZSBmYWlsdXJlc1xuKyMgYW5kIGNvbnRpbnVlIGJ1aWxkaW5nIHRoZSByZW1haW5pbmcgdGVzdHMuXG4rQlBGX1NUUklDVF9CVUlMRCA/PSAxXG4rUEVSTUlTU0lWRSA6PSAkKGZpbHRlciAwLCQoQlBGX1NUUklDVF9CVUlMRCkpXG4rXG4rIyBQZXJtaXNzaXZlLW1vZGUgcmVjaXBlIHN1ZmZpeDogb24gZmFpbHVyZSwgcmVtb3ZlIHRoZSB0YXJnZXQsIGVtaXQgYVxuKyMgU0tJUCBtYXJrZXIgYW5kIHJlcG9ydCBzdWNjZXNzIHNvIHRoZSByZXN0IG9mIHRoZSBidWlsZCBjb250aW51ZXMuXG4rIyAkKDEpIC0gU0tJUCB0YWcgKEJQRiwgVEVTVCwgQkVOQ0gsIFNLRUwsIExJTkssIC4uLilcbisjICQoMikgLSBvcHRpb25hbCBleHRyYSBmaWxlcyB0byByZW1vdmUgYWxvbmdzaWRlIHRoZSB0YXJnZXRcbisjICQoMykgLSBvcHRpb25hbCBub3RlIGFwcGVuZGVkIHRvIHRoZSBTS0lQIG1lc3NhZ2Vcbitza2lwX29uX2ZhaWwgPSAkKGlmICQoUEVSTUlTU0lWRSksfHwgeyAkKFJNKSAkQCAkKDIpOyBcXFxuK1x0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC0kKDEpJyAnJChub3RkaXIgJEApJChpZiAkKDMpLCAkKDMpKScgMVx1MDAzZVx1MDAyNjI7IH0pXG4rXG4rIyBLZXJuZWwgdGVzdCBtb2R1bGVzOyBURVNUX0tNT0RTPSBvbiB0aGUgY29tbWFuZCBsaW5lIGRpc2FibGVzIHRoZW0uXG4rVEVTVF9LTU9EUyA/PSBicGZfdGVzdG1vZC5rbyBicGZfdGVzdF9ub19jZmkua28gYnBmX3Rlc3RfbW9kb3JkZXJfeC5rbyBcXFxuK1x0YnBmX3Rlc3RfbW9kb3JkZXJfeS5rbyBicGZfdGVzdF9ycXNwaW5sb2NrLmtvXG4rVEVTVF9LTU9EX1RBUkdFVFMgPSAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLCQoVEVTVF9LTU9EUykpXG4rXG4rIyBPdXRwdXQtdHJlZSBsYXlvdXQuIERlZmluZWQgYmVmb3JlIENPTU1PTl9DRkxBR1Mgb24gcHVycG9zZTogQ0ZMQUdTXG4rIyBiZWxvdyBpcyBleHBhbmRlZCBpbW1lZGlhdGVseSBhbmQgcmVmZXJlbmNlcyAkKElOQ0xVREVfRElSKS5cbitTQ1JBVENIX0RJUiA6PSAkKE9VVFBVVCkvdG9vbHNcbitCVUlMRF9ESVIgOj0gJChTQ1JBVENIX0RJUikvYnVpbGRcbitJTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlXG4rQlBGT0JKIDo9ICQoQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcbitpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4rSE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpL2hvc3RcbitIT1NUX1NDUkFUQ0hfRElSXHQ6PSAkKE9VVFBVVCkvaG9zdC10b29sc1xuK0hPU1RfSU5DTFVERV9ESVJcdDo9ICQoSE9TVF9TQ1JBVENIX0RJUikvaW5jbHVkZVxuK2Vsc2VcbitIT1NUX0JVSUxEX0RJUlx0XHQ6PSAkKEJVSUxEX0RJUilcbitIT1NUX1NDUkFUQ0hfRElSXHQ6PSAkKFNDUkFUQ0hfRElSKVxuK0hPU1RfSU5DTFVERV9ESVJcdDo9ICQoSU5DTFVERV9ESVIpXG4rZW5kaWZcbitIT1NUX0JQRk9CSiA6PSAkKEhPU1RfQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcbitSRVNPTFZFX0JURklEUyA6PSAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkcy9yZXNvbHZlX2J0Zmlkc1xuK1xuK0RFRkFVTFRfQlBGVE9PTCA6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxuK2lmbmVxICgkKENST1NTX0NPTVBJTEUpLClcbitDUk9TU19CUEZUT09MIDo9ICQoU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxuK1RSVU5ORVJfQlBGVE9PTCA6PSAkKENST1NTX0JQRlRPT0wpXG4rVVNFX0JPT1RTVFJBUCA6PVxuK2Vsc2VcbitUUlVOTkVSX0JQRlRPT0wgOj0gJChERUZBVUxUX0JQRlRPT0wpXG4rVVNFX0JPT1RTVFJBUCA6PSBib290c3RyYXAvXG4rZW5kaWZcbitCUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKVxuK1xuK0NPTU1PTl9DRkxBR1MgPSAtZyAkKE9QVF9GTEFHUykgLXJkeW5hbWljIC1zdGQ9Z251MTFcdFx0XHRcXFxuK1x0ICAtV2FsbCAtV2Vycm9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXHRcdFx0XHRcXFxuK1x0ICAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlXHRcdFx0XHRcdFxcXG4rXHQgICQoR0VORkxBR1MpICQoU0FOX0NGTEFHUykgJChMSUJFTEZfQ0ZMQUdTKVx0XHRcdFxcXG4rXHQgIC1JJChDVVJESVIpIC1JJChJTkNMVURFX0RJUikgLUkkKEdFTkRJUikgLUkkKExJQkRJUilcdFx0XFxcbitcdCAgLUkkKFRPT0xTSU5DRElSKSAtSSQoVE9PTFNBUkNISU5DRElSKSAtSSQoQVBJRElSKSAtSSQoT1VUUFVUKVx0XFxcbitcdCAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVxuK0xERkxBR1MgKz0gJChTQU5fTERGTEFHUylcbitMRExJQlMgKz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkXG4rXG4rUENBUF9DRkxBR1NcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJwY2FwIDJcdTAwM2UvZGV2L251bGwgXHUwMDI2XHUwMDI2IGVjaG8gXCItRFRSQUZGSUNfTU9OSVRPUj0xXCIpXG4rUENBUF9MSUJTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYnBjYXAgMlx1MDAzZS9kZXYvbnVsbClcbitMRExJQlMgKz0gJChQQ0FQX0xJQlMpXG4rIyBQcmVwZW5kIHJhdGhlciB0aGFuIGFwcGVuZDogdGhlIGluY2x1ZGUtc2VhcmNoIG9yZGVyIG11c3Qgc3RheVxuKyMgXCIkKENPTU1PTl9DRkxBR1MpIGZpcnN0LCBsaWIubWsgYWRkaXRpb25zIGFmdGVyXCIgcmVnYXJkbGVzcyBvZiB3aGV0aGVyXG4rIyBsaWIubWsgd2FzIGluY2x1ZGVkIGJlZm9yZSB0aGlzIGZpbGUgKHRvcCBsZXZlbCkgb3Igbm90IGF0IGFsbCAocnVubmVyKS5cbitDRkxBR1MgOj0gJChDT01NT05fQ0ZMQUdTKSAkKFBDQVBfQ0ZMQUdTKSAkKENGTEFHUylcbitcbitpZm5lcSAoJChMTFZNKSwpXG4rIyBTaWxlbmNlIHNvbWUgd2FybmluZ3Mgd2hlbiBjb21waWxlZCB3aXRoIGNsYW5nXG4rQ0ZMQUdTICs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudFxuK2VuZGlmXG4rXG4rIyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMispXG4rQ0xBTkdfSEFTX0FSRU5BX0FTQU4gOj0gJChzaGVsbCBlY2hvICdpbnQgeDsnIHwgXFxcbitcdCQoQ0xBTkcpIC0tdGFyZ2V0PWJwZiAtZnNhbml0aXplPWtlcm5lbC1hZGRyZXNzIFxcXG4rXHQtbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcXFxuK1x0LXggYyAtYyAtIC1vIC9kZXYvbnVsbCAyXHUwMDNlL2Rldi9udWxsIFx1MDAyNlx1MDAyNiBlY2hvIDEpXG4raWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcbitDRkxBR1MgKz0gLURIQVNfQlBGX0FSRU5BX0FTQU5cbitlbmRpZlxuK1xuK1ZNTElOVVhfQlRGX1BBVEhTID89ICQoaWYgJChPKSwkKE8pL3ZtbGludXgpXHRcdFx0XHRcXFxuK1x0XHQgICAgICQoaWYgJChLQlVJTERfT1VUUFVUKSwkKEtCVUlMRF9PVVRQVVQpL3ZtbGludXgpXHRcXFxuK1x0XHQgICAgIC4uLy4uLy4uLy4uL3ZtbGludXhcdFx0XHRcdFxcXG4rXHRcdCAgICAgL3N5cy9rZXJuZWwvYnRmL3ZtbGludXhcdFx0XHRcdFxcXG4rXHRcdCAgICAgL2Jvb3Qvdm1saW51eC0kKHNoZWxsIHVuYW1lIC1yKVxuK1ZNTElOVVhfQlRGID89ICQoYWJzcGF0aCAkKGZpcnN0d29yZCAkKHdpbGRjYXJkICQoVk1MSU5VWF9CVEZfUEFUSFMpKSkpXG4raWZlcSAoJChWTUxJTlVYX0JURiksKVxuKyQoZXJyb3IgQ2Fubm90IGZpbmQgYSB2bWxpbnV4IGZvciBWTUxJTlVYX0JURiBhdCBhbnkgb2YgXCIkKFZNTElOVVhfQlRGX1BBVEhTKVwiKVxuK2VuZGlmXG4rXG4rIyBHZXQgQ2xhbmcncyBkZWZhdWx0IGluY2x1ZGVzIG9uIHRoaXMgc3lzdGVtLCBhcyBvcHBvc2VkIHRvIHRob3NlIHNlZW4gYnlcbisjICctLXRhcmdldD1icGYnLiBUaGlzIGZpeGVzIFwibWlzc2luZ1wiIGZpbGVzIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcy9kaXN0cm9zLFxuKyMgc3VjaCBhcyBhc20vYnl0ZW9yZGVyLmgsIGFzbS9zb2NrZXQuaCwgYXNtL3NvY2tpb3MuaCwgc3lzL2NkZWZzLmggZXRjLlxuKyNcbisjIFVzZSAnLWlkaXJhZnRlcic6IERvbid0IGludGVyZmVyZSB3aXRoIGluY2x1ZGUgbWVjaGFuaWNzIGV4Y2VwdCB3aGVyZSB0aGVcbisjIGJ1aWxkIHdvdWxkIGhhdmUgZmFpbGVkIGFueXdheXMuXG4rZGVmaW5lIGdldF9zeXNfaW5jbHVkZXNcbiskKHNoZWxsICQoMSkgJCgyKSAtdiAtRSAtIFx1MDAzYy9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MSBcXFxuK1x0fCBzZWQgLW4gJy9cdTAwM2MuLi5cdTAwM2Ugc2VhcmNoIHN0YXJ0cyBoZXJlOi8sL0VuZCBvZiBzZWFyY2ggbGlzdC4veyBzfCBcXCgvLipcXCl8LWlkaXJhZnRlciBcXDF8cCB9JykgXFxcbiskKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBncmVwICdfX3Jpc2N2X3hsZW4gJyB8IGF3ayAne3ByaW50ZihcIi1EX19yaXNjdl94bGVuPSVkIC1EX19CSVRTX1BFUl9MT05HPSVkXCIsICQkMywgJCQzKX0nKSBcXFxuKyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJ19fbG9vbmdhcmNoX2dybGVuICcgfCBhd2sgJ3twcmludGYoXCItRF9fQklUU19QRVJfTE9ORz0lZFwiLCAkJDMpfScpIFxcXG4rJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAtRSAnTUlQUyhFTHxFQil8X01JUFNfU1ooUFRSfExPTkcpIHxfTUlQU19TSU0gfF9BQkkoTzMyfE4zMnw2NCkgJyB8IGF3ayAne3ByaW50ZihcIi1EJXM9JXMgXCIsICQkMiwgJCQzKX0nKVxuK2VuZGVmXG4rXG4rIyBEZXRlcm1pbmUgdGFyZ2V0IGVuZGlhbm5lc3MuXG4rSVNfTElUVExFX0VORElBTiA6PSAkKHNoZWxsICQoQ0MpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IFxcXG4rXHRcdFx0Z3JlcCAnZGVmaW5lIF9fQllURV9PUkRFUl9fIF9fT1JERVJfTElUVExFX0VORElBTl9fJylcbitNRU5ESUFOIDo9ICQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKVxuK0JQRl9UQVJHRVRfRU5ESUFOIDo9ICQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYilcbitcbitpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4rQ0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpXG4rZW5kaWZcbitcbitDTEFOR19TWVNfSU5DTFVERVMgOj0gJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsJChDTEFORyksJChDTEFOR19UQVJHRVRfQVJDSCkpXG4rQlBGX0NGTEFHUyA9IC1nIC1XYWxsIC1XZXJyb3IgLURfX1RBUkdFVF9BUkNIXyQoU1JDQVJDSCkgJChNRU5ESUFOKVx0XFxcbitcdCAgICAgLUkkKElOQ0xVREVfRElSKSAtSSQoQ1VSRElSKSAtSSQoQVBJRElSKVx0XHRcdFxcXG4rXHQgICAgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcdFx0XHRcdFxcXG4rXHQgICAgIC1JJChhYnNwYXRoICQoT1VUUFVUKS8uLi91c3IvaW5jbHVkZSlcdFx0XHRcXFxuK1x0ICAgICAtc3RkPWdudTExXHRcdCBcdFx0XHRcdFx0XFxcbitcdCAgICAgLWZuby1zdHJpY3QtYWxpYXNpbmcgXHRcdFx0XHRcdFxcXG4rXHQgICAgIC1Xbm8tbWljcm9zb2Z0LWFub24tdGFnXHRcdFx0XHRcdFxcXG4rXHQgICAgIC1mbXMtZXh0ZW5zaW9uc1x0XHRcdFx0XHRcdFxcXG4rXHQgICAgIC1Xbm8tY29tcGFyZS1kaXN0aW5jdC1wb2ludGVyLXR5cGVzXHRcdFx0XFxcbitcdCAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXNcdFx0XHRcdFx0XFxcbitcdCAgICAgI1xuKyMgVE9ETzogZW5hYmxlIG1lIC1Xc2lnbi1jb21wYXJlXG4rXG4rQ0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXG4rXG4rIyBTaWduaW5nIGtleS9jZXJ0IHNoYXJlZCBieSB0aGUgc2lnbmVkIGxpZ2h0IHNrZWxldG9ucyBhbmQgdGVzdF9wcm9ncy5cbitWRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXG4rVkVSSUZZX1NJR19IRFIgOj0gdmVyaWZpY2F0aW9uX2NlcnQuaFxuK1ZFUklGSUNBVElPTl9DRVJUIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5kZXJcbitQUklWQVRFX0tFWSA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkucGVtXG4rXG4rIyBsaWJhcmVuYSBza2VsZXRvbnMsIGJ1aWx0IGJ5IHRoZSBsaWJhcmVuYS8gc3ViLW1ha2UgKGRyaXZlbiBieSB0aGUgdG9wXG4rIyBsZXZlbCBNYWtlZmlsZSk7IHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzIGRlcGVuZCBvbiB0aGUgaGVhZGVycy5cbitMSUJBUkVOQV9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hLnNrZWwuaFxuK2lmbmVxICgkKENMQU5HX0hBU19BUkVOQV9BU0FOKSwpXG4rTElCQVJFTkFfQVNBTl9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hX2FzYW4uc2tlbC5oXG4rZW5kaWZcbitcbitpZm5lcSAoJChWKSwxKVxuK3N1Ym1ha2VfZXh0cmFzIDo9IGZlYXR1cmVfZGlzcGxheT0wXG4rZW5kaWZcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnJ1bm5lclxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi40YzU4Y2M1MWYyNTE0ZVxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnJ1bm5lclxuQEAgLTAsMCArMSwzMTMgQEBcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI1xuKyMgQnVpbGQgb25lIEJQRiB0ZXN0LXJ1bm5lciBpbnN0YW5jZTogdGVzdF9wcm9ncywgb25lIG9mIGl0cyBmbGF2b3JzXG4rIyAobm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjKSwgb3IgdGVzdF9tYXBzLlxuKyNcbisjIEVhY2ggaW5zdGFuY2UgaXMgYW4gaW5kZXBlbmRlbnQgc3ViLW1ha2Ugd2l0aCBpdHMgb3duIG91dHB1dCBkaXJlY3RvcnksXG4rIyBzbyBldmVyeXRoaW5nIGhlcmUgaXMgd3JpdHRlbiBpbiBwbGFpbiBtYWtlIC0gbm8gJCQtZXNjYXBpbmcsIG5vIGV2YWwsXG4rIyBubyBwZXItZmxhdm9yIGd1YXJkcy4gVGhpcyBmaWxlIGlzIGFsd2F5cyBpbnZva2VkIGJ5IHRoZSBtYWluIE1ha2VmaWxlLFxuKyMgbmV2ZXIgZGlyZWN0bHk6IGFsbCBzaGFyZWQgcHJlcmVxdWlzaXRlcyAobGliYnBmLCBicGZ0b29sLCB2bWxpbnV4LmgsXG4rIyB2ZXJpc3RhdCwgaGVscGVyIG9iamVjdHMsIHNpZ25pbmcga2V5LCBnZW5lcmF0ZWQgdGVzdHMuaCwgZXh0cmFcbisjIGJpbmFyaWVzKSBhcmUgYnVpbHQgYnkgdGhlIG1haW4gTWFrZWZpbGUgKmJlZm9yZSogdGhpcyBvbmUgcnVucyBhbmQgYXJlXG4rIyByZWZlcmVuY2VkIGJlbG93IGFzIHBsYWluIGZpbGVzLlxuKyNcbisjIFBhcmFtZXRlcnMgKGFsbCBwYXNzZWQgb24gdGhlIHN1Yi1tYWtlIGNvbW1hbmQgbGluZSk6XG4rIyAgIE9VVFBVVCAgICAgIGFic29sdXRlIHBhdGggb2YgdGhlIHNlbGZ0ZXN0cyBvdXRwdXQgZGlyZWN0b3J5XG4rIyAgIFJVTk5FUiAgICAgIGJhc2UgYmluYXJ5IG5hbWU6IHRlc3RfcHJvZ3MgfCB0ZXN0X21hcHNcbisjICAgRkxBVk9SICAgICAgZmxhdm9yIHN1ZmZpeDogZW1wdHkgfCBub19hbHUzMiB8IGNwdXY0IHwgYnBmX2djY1xuKyMgICBURVNUU19ESVIgICBkaXJlY3Rvcnkgd2l0aCB0aGUgdGVzdCBzb3VyY2VzOiBwcm9nX3Rlc3RzIHwgbWFwX3Rlc3RzXG4rIyAgIEJQRl9CVUlMRCAgIGhvdyB0byBidWlsZCBwcm9ncy8qLmMgQlBGIG9iamVjdHM6IGNsYW5nIHwgZ2NjIHwgbm9uZVxuKyMgICBCUEZfTUNQVSAgICBjbGFuZyAtbWNwdT0gdmFsdWU6IHYyIHwgdjMgfCB2NFxuKyMgICBCUEZfREVGSU5FUyBleHRyYSBkZWZpbmVzIGZvciBCUEYgb2JqZWN0cyAoZS5nLiAtREVOQUJMRV9BVE9NSUNTX1RFU1RTKVxuKyMgICBDQyAgICAgICAgICBDIGNvbXBpbGVyIChhcyByZXNvbHZlZCBieSBsaWIubWsgaW4gdGhlIG1haW4gTWFrZWZpbGUpXG4rIyAgIExMVk1fQ0ZMQUdTL0xMVk1fTERMSUJTL0xMVk1fTERGTEFHU1xuKyMgICAgICAgICAgICAgICByZXN1bHRzIG9mIHRoZSB0b3AtbGV2ZWwgTExWTSBmZWF0dXJlIHByb2JlXG4rXG4raW5jbHVkZSAuLi8uLi8uLi9idWlsZC9CdWlsZC5pbmNsdWRlXG4raW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2hcbitpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZVxuK1xuKyMgU2FtZSBtZXNzYWdlIGhlbHBlcnMgYXMgLi4vbGliLm1rLCB3aGljaCBvbmx5IHRoZSB0b3AgbGV2ZWwgaW5jbHVkZXMuXG4raWZlcSAoJChWKSwxKVxuK1EgPVxuK21zZyA9XG4rZWxzZVxuK1EgPSBAXG4rbXNnID0gQHByaW50ZiAnICAlLThzJXMgJXMlc1xcbicgXCIkKDEpXCIgXCIkKGlmICQoMiksIFskKDIpXSlcIiBcIiQobm90ZGlyICQoMykpXCIgXCIkKGlmICQoNCksICQoNCkpXCI7XG4rTUFLRUZMQUdTICs9IC0tbm8tcHJpbnQtZGlyZWN0b3J5XG4rZW5kaWZcbitcbitpbmNsdWRlIE1ha2VmaWxlLmJ1aWxkdmFyc1xuK1xuKyMgS2VlcCBpbiBzeW5jIHdpdGggdGhlIENGTEFHUy9MREZMQUdTIGFkZGl0aW9ucyBpbiAuLi9saWIubWsuXG4rQ0ZMQUdTICs9IC1EX0dOVV9TT1VSQ0U9XG4rQ0ZMQUdTICs9IC1JJChzcmN0cmVlKS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0c1xuK0NGTEFHUyArPSAkKFVTRVJDRkxBR1MpXG4rTERGTEFHUyArPSAkKFVTRVJMREZMQUdTKVxuK2lmbmVxICgkKExMVk0pLClcbitDRkxBR1MgKz0gLVduby1hZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXJcbitDRkxBR1MgKz0gLVduby1nbnUtdmFyaWFibGUtc2l6ZWQtdHlwZS1ub3QtYXQtZW5kXG4rZW5kaWZcbitcbitCSU5BUlkgOj0gJChSVU5ORVIpJChpZiAkKEZMQVZPUiksLSQoRkxBVk9SKSlcbitSRElSICAgOj0gJChPVVRQVVQpJChpZiAkKEZMQVZPUiksLyQoRkxBVk9SKSlcbitcbithbGw6ICQoT1VUUFVUKS8kKEJJTkFSWSlcbisuUEhPTlk6IGFsbFxuK1xuKyMgRGVsZXRlIHBhcnRpYWxseSB1cGRhdGVkIChjb3JydXB0ZWQpIGZpbGVzIG9uIGVycm9yXG4rLkRFTEVURV9PTl9FUlJPUjpcbitcbisjIFBlcm1pc3NpdmUgc2tpcC1vbi1mYWlsdXJlIG9mIGluZGl2aWR1YWwgdGVzdHMgYXBwbGllcyB0byB0ZXN0X3Byb2dzIGFuZFxuKyMgaXRzIGZsYXZvcnMgb25seTsgdGVzdF9tYXBzIHVzZXMgc3Ryb25nIGNyb3NzLW9iamVjdCByZWZlcmVuY2VzIGFuZCBrZWVwc1xuKyMgc3RyaWN0IHNlbWFudGljcyBldmVuIHdoZW4gQlBGX1NUUklDVF9CVUlMRD0wLlxuK1BFUk1JU1NJVkVfVEVTVFMgOj0gJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzLCQoUlVOTkVSKSksJChQRVJNSVNTSVZFKSlcbitcbiskKFJESVIpOlxuK1x0JChjYWxsIG1zZyxNS0RJUiwsJEApXG4rXHQkKFEpbWtkaXIgLXAgJEBcbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgUGVyLXJ1bm5lciBzb3VyY2VzXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbitcbitpZmVxICgkKFJVTk5FUiksdGVzdF9wcm9ncylcbitFWFRSQV9TT1VSQ0VTIDo9IHRlc3RfcHJvZ3MuYyBjZ3JvdXBfaGVscGVycy5jIHRyYWNlX2hlbHBlcnMuY1x0XHRcXFxuK1x0XHQgbmV0d29ya19oZWxwZXJzLmMgdGVzdGluZ19oZWxwZXJzLmMgYnRmX2hlbHBlcnMuY1x0XFxcbitcdFx0IGNhcF9oZWxwZXJzLmMgdW5wcml2X2hlbHBlcnMuYyBzeXNjdGxfaGVscGVycy5jXHRcXFxuK1x0XHQgbmV0bGlua19oZWxwZXJzLmMgaml0X2Rpc2FzbV9oZWxwZXJzLmMgaW9faGVscGVycy5jXHRcXFxuK1x0XHQgdGVzdF9sb2FkZXIuYyB4c2suYyBkaXNhc20uYyBkaXNhc21faGVscGVycy5jXHRcdFxcXG4rXHRcdCBqc29uX3dyaXRlci5jIGJwZnRvb2xfaGVscGVycy5jIHVzZHRfMS5jIHVzZHRfMi5jXG4rTElCX1NPVVJDRVMgOj0gZmluZF9iaXQuY1xuK0VYVFJBX0hEUlMgOj0gZmxvd19kaXNzZWN0b3JfbG9hZC5oIGlwX2NoZWNrX2RlZnJhZ19mcmFncy5oXHRcdFxcXG4rXHQgICAgICAkKFZFUklGWV9TSUdfSERSKSAkKExJQkFSRU5BX1NLRUwpICQoTElCQVJFTkFfQVNBTl9TS0VMKVxuK0VYVFJBX0ZJTEVTIDo9ICQoT1VUUFVUKS91cmFuZG9tX3JlYWQgJChPVVRQVVQpL2xpYnVyYW5kb21fcmVhZC5zb1x0XFxcbitcdCAgICAgICAkKE9VVFBVVCkveGRwX3N5bnByb3h5ICQoT1VUUFVUKS9zaWduLWZpbGVcdFx0XFxcbitcdCAgICAgICAkKE9VVFBVVCkvdXByb2JlX211bHRpXHRcdFx0XHRcdFxcXG4rXHQgICAgICAgJChURVNUX0tNT0RfVEFSR0VUUylcdFx0XHRcdFx0XFxcbitcdCAgICAgICBpbWFfc2V0dXAuc2ggJChWRVJJRllfU0lHX1NFVFVQKVx0XHRcdFx0XFxcbitcdCAgICAgICAkKHdpbGRjYXJkIHByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV8qLmMpXHRcdFx0XFxcbitcdCAgICAgICAkKHdpbGRjYXJkIHByb2dzLyouYnBmLm8pXG4rZW5kaWZcbitcbitpZmVxICgkKFJVTk5FUiksdGVzdF9tYXBzKVxuK0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9tYXBzLmMgdGVzdGluZ19oZWxwZXJzLmNcbitlbmRpZlxuK1xuKyMgTm90ZSBvbiB0aGUgdW5mbGF2b3JlZCBydW5uZXJzLCB3aGljaCBzaGFyZSAkKE9VVFBVVCkgd2l0aCB0aGUgbWFpblxuKyMgTWFrZWZpbGU6IGhlbHBlciBvYmplY3RzIHRoZSBtYWluIE1ha2VmaWxlIGFsc28gdXNlcyAoYW5kIGxpc3RzIGluIHRoZVxuKyMgcnVubmVyIHByZXJlcXVpc2l0ZXMpIGFyZSBhbHJlYWR5IGJ1aWx0IGFuZCBmcmVzaCB3aGVuIGEgcnVubmVyIHN0YXJ0cyxcbisjIHNvIHRoZSBydWxlcyBiZWxvdyBmaW5kIHRoZW0gdXAgdG8gZGF0ZSBhbmQgbmV2ZXIgd3JpdGUgdGhlbS5cbitcbitURVNUU19IRFIgOj0gJChURVNUU19ESVIpL3Rlc3RzLmhcbitcbitURVNUX1NSQ1MgIDo9ICQobm90ZGlyICQod2lsZGNhcmQgJChURVNUU19ESVIpLyouYykpXG4rVEVTVF9PQkpTICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUudGVzdC5vLCQoVEVTVF9TUkNTKSlcbitURVNUX0RFUFMgIDo9ICQoVEVTVF9PQkpTOi5vPS5kKVxuK0VYVFJBX09CSlMgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLm8sJChmaWx0ZXIgJS5jLCQoRVhUUkFfU09VUkNFUykpKVxuK0xJQl9PQkpTICAgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLm8sJChMSUJfU09VUkNFUykpXG4rXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnNcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuK1xuK2lmbmVxICgkKEJQRl9CVUlMRCksbm9uZSlcbitcbitCUEZfU1JDUyA6PSAkKG5vdGRpciAkKHdpbGRjYXJkIHByb2dzLyouYykpXG4rQlBGX09CSlMgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLmJwZi5vLCQoQlBGX1NSQ1MpKVxuK1xuKyMgV2hpY2ggdGVzdHMgd2FudCBhIGxpZ2h0IHNrZWxldG9uIGlzIGRlcml2ZWQgZnJvbSB0aGUgdGVzdCBzb3VyY2VzXG4rIyB0aGVtc2VsdmVzOiBhbiAnI2luY2x1ZGUgXCJmb28ubHNrZWwuaFwiJyBsaW5lIGlzIHRoZSBzaW5nbGUgc291cmNlIG9mXG4rIyB0cnV0aC4gVGVzdHMgdGhhdCBpbmNsdWRlIGJvdGggZm9vLnNrZWwuaCBhbmQgZm9vLmxza2VsLmggZ2V0IGJvdGguXG4rc2tlbF9pbmNsdWRlcyA9ICQoc2hlbGwgZ3JlcCAtcmhvRSAnXCJbYS16QS1aMC05X10rXFwuJCgxKVwiJyBwcm9nX3Rlc3RzIGJlbmNocyBtYXBfdGVzdHMgKi5jICouY3BwIDJcdTAwM2UvZGV2L251bGwpXG4rTFNLRUxfQkFTRVMgOj0gJChzb3J0ICQocGF0c3Vic3QgXCIlLmxza2VsLmhcIiwlLCQoY2FsbCBza2VsX2luY2x1ZGVzLGxza2VsLmgpKSlcbitTS0VMX0RFTUFOREVEIDo9ICQoc29ydCAkKHBhdHN1YnN0IFwiJS5za2VsLmhcIiwlLCQoY2FsbCBza2VsX2luY2x1ZGVzLHNrZWwuaCkpKVxuK1xuKyMgU2lnbmluZyBpcyBub3QgZXhwcmVzc2VkIGluIHRoZSBpbmNsdWRlLCBzbyB0aGUgc2lnbmVkIHN1YnNldCBzdGF5c1xuKyMgZXhwbGljaXQuXG4rTFNLRUxTX1NJR05FRCA6PSBmZW50cnlfdGVzdCBmZXhpdF90ZXN0IGF0b21pY3NcbitcbisjIEJQRiBvYmplY3RzIHRoYXQgY2Fubm90IGhhdmUgYSByZWd1bGFyIHNrZWxldG9uLCBwbHVzIGxza2VsLW9ubHkgdGVzdHNcbisjIChsaWdodC1za2VsZXRvbiB1c2VycyB3aG9zZSBzb3VyY2VzIG5ldmVyIGluY2x1ZGUgdGhlIC5za2VsLmggZm9ybSkuXG4rU0tFTF9CTEFDS0xJU1QgOj0gYnRmX18lIHRlc3RfcGlubmluZ19pbnZhbGlkLmMgdGVzdF9za19hc3NpZ24uYyBcXFxuK1x0XHQgICQoYWRkc3VmZml4IC5jLCQoZmlsdGVyLW91dCAkKFNLRUxfREVNQU5ERUQpLCQoTFNLRUxfQkFTRVMpKSlcbitcbisjIFNrZWxldG9ucyBtYWRlIGJ5IGxpbmtpbmcgbXVsdGlwbGUgQlBGIG9iamVjdHMgdG9nZXRoZXIuIFRoZSAlLWRlcHNcbisjIG1hcHBpbmcgaXMgdGhlIG9ubHkgaGFuZC1tYWludGFpbmVkIG1ldGFkYXRhOiBpdCBjYW5ub3QgYmUgZGVyaXZlZCBmcm9tXG4rIyB0aGUgc291cmNlcy5cbit0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vXG4rbGlua2VkX2Z1bmNzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9mdW5jczEuYnBmLm8gbGlua2VkX2Z1bmNzMi5icGYub1xuK2xpbmtlZF92YXJzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF92YXJzMS5icGYubyBsaW5rZWRfdmFyczIuYnBmLm9cbitsaW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vXG4rIyBJbiB0aGUgc3Vic2tlbGV0b24gY2FzZSwgd2Ugd2FudCB0aGUgdGVzdF9zdWJza2VsZXRvbl9saWIuc3Vic2tlbC5oIGZpbGVcbisjIGJ1dCB0aGF0J3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi5cbit0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXG4rdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vXG4rdGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vXG4rdHJhY2luZ19tdWx0aS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4rdHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2hfbW9kdWxlLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbit0cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuK3RyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX3Nlc3Npb25fYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbitcbitMSU5LRURfU0tFTFMgOj0gdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaCBsaW5rZWRfZnVuY3Muc2tlbC5oXHRcdFxcXG4rXHRcdGxpbmtlZF92YXJzLnNrZWwuaCBsaW5rZWRfbWFwcy5za2VsLmhcdFx0XHRcXFxuK1x0XHR0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmhcdFxcXG4rXHRcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcdFx0XHRcXFxuK1x0XHR0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmhcdFx0XHRcdFxcXG4rXHRcdHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaFx0XHRcdFx0XFxcbitcdFx0dHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaFxuK0xJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoZm9yZWFjaCBza2VsLCQoTElOS0VEX1NLRUxTKSwkKCQoc2tlbCktZGVwcykpKVxuK1xuK1NLRUxTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5za2VsLmgsXHRcdFx0XHRcXFxuK1x0ICAgJChmaWx0ZXItb3V0ICQoU0tFTF9CTEFDS0xJU1QpICQoTElOS0VEX0JQRl9TUkNTKSwkKEJQRl9TUkNTKSkpXG4rTFNLRUxTX0ggICAgICAgIDo9ICQocGF0c3Vic3QgJSwkKFJESVIpLyUubHNrZWwuaCwkKGZpbHRlci1vdXQgJChMU0tFTFNfU0lHTkVEKSwkKExTS0VMX0JBU0VTKSkpXG4rTFNLRUxTX1NJR05FRF9IIDo9ICQocGF0c3Vic3QgJSwkKFJESVIpLyUubHNrZWwuaCwkKExTS0VMU19TSUdORUQpKVxuK0xJTktFRF9TS0VMU19IICA6PSAkKGFkZHByZWZpeCAkKFJESVIpLywkKExJTktFRF9TS0VMUykpXG4rQUxMX1NLRUxTIDo9ICQoU0tFTFMpICQoTFNLRUxTX0gpICQoTFNLRUxTX1NJR05FRF9IKSAkKExJTktFRF9TS0VMU19IKVxuK1xuK0hFQURFUlNfRk9SX0JQRl9PQkpTIDo9ICQod2lsZGNhcmQgJChCUEZESVIpLyouYnBmLmgpXHRcdFx0XFxcbitcdFx0XHQkKHdpbGRjYXJkICQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlLyouW2NoXSlcdFxcXG4rXHRcdFx0JChhZGRwcmVmaXggJChCUEZESVIpLyxcdGJwZl9jb3JlX3JlYWQuaFx0XHRcXFxuK1x0XHRcdFx0XHRcdGJwZl9lbmRpYW4uaFx0XHRcXFxuK1x0XHRcdFx0XHRcdGJwZl9oZWxwZXJzLmhcdFx0XFxcbitcdFx0XHRcdFx0XHRicGZfdHJhY2luZy5oKVxuK1xuKyMgUGVyLXNvdXJjZSBCUEYgY29tcGlsYXRpb24gZmxhZyBvdmVycmlkZXMgKCRcdTAwM2MtQ0ZMQUdTIC8gJFx1MDAzYy0kKEZMQVZPUiktQ0ZMQUdTKS5cbisjIEdDQyBjYW5ub3QgZGlzYWJsZSBcImRlY2xhcmF0aW9uIG9mIGFub255bW91cyBzdHJ1Y3QgaW4gcGFyYW1ldGVyIGxpc3RcIlxuKyMgd2FybmluZ3MgdHJpZ2dlcmVkIGJ5IHRoZXNlICh0ZWNobmljYWxseSBsZWdhbCkgdGVzdCBwcm9ncmFtcy5cbitwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfYml0ZmllbGRzLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9uYW1lc3BhY2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3Jcbitwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfcGFja2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3Jcbitwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfcGFkZGluZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3Jcbitwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2Vfc3ludGF4LmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuK1xuK2lmZXEgKCQoQlBGX0JVSUxEKSxnY2MpXG4rQlBGX0NDX01TRyA6PSBHQ0MtQlBGXG4rIyBOb3RlOiBzeXMgaW5jbHVkZXMgY29tZSBmcm9tIHRoZSAqaG9zdCogZ2NjLCBub3QgJChCUEZfR0NDKSAtIGJwZi1nY2Mnc1xuKyMgb3duIHNlYXJjaCBwYXRoIGxhY2tzIHRoZSBob3N0J3MgYXNtLWdlbmVyaWMvIGhlYWRlcnMuIENvbXB1dGVkIG9uY2VcbisjIGhlcmU6IGJwZl9jYyBiZWxvdyBpcyBkZWZlcnJlZCBhbmQgZXhwYW5kcyBwZXIgY29tcGlsZWQgb2JqZWN0LlxuK0dDQ19TWVNfSU5DTFVERVMgOj0gJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsZ2NjLClcbiticGZfY2MgPSAkKEJQRl9HQ0MpICQoQlBGX0NGTEFHUykgJChHQ0NfU1lTX0lOQ0xVREVTKVx0XHRcdFxcXG4rXHQgJChCUEZfREVGSU5FUykgJCgkXHUwMDNjLUNGTEFHUykgJCgkXHUwMDNjLSQoRkxBVk9SKS1DRkxBR1MpXHRcdFxcXG4rXHQgLURCUEZfTk9fUFJFU0VSVkVfQUNDRVNTX0lOREVYIC1Xbm8tYXR0cmlidXRlcyAtTzIgLWMgJFx1MDAzYyAtbyAkQFxuK2Vsc2VcbitCUEZfQ0NfTVNHIDo9IENMTkctQlBGXG4rYnBmX2NjID0gJChDTEFORykgJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykgJChCUEZfREVGSU5FUylcdFx0XFxcbitcdCAkKCRcdTAwM2MtQ0ZMQUdTKSAkKCRcdTAwM2MtJChGTEFWT1IpLUNGTEFHUylcdFx0XHRcdFxcXG4rXHQgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICRcdTAwM2MgLW1jcHU9JChCUEZfTUNQVSkgLW8gJEBcbitlbmRpZlxuK1xuKyQoQlBGX09CSlMpOiAkKFJESVIpLyUuYnBmLm86IHByb2dzLyUuYyBwcm9ncy8qLmhcdFx0XHRcXFxuK1x0ICAgICAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChIRUFERVJTX0ZPUl9CUEZfT0JKUylcdFx0XFxcbitcdCAgICAgfCAkKFJESVIpICQoQlBGT0JKKVxuK1x0JChjYWxsIG1zZywkKEJQRl9DQ19NU0cpLCQoQklOQVJZKSwkQClcbitcdCQoUSkkKGJwZl9jYykgJChjYWxsIHNraXBfb25fZmFpbCxCUEYpXG4rXG4rIyBnZW5fYnBmX3NrZWwuc2ggcGlja3MgdGhlIGJwZnRvb2wgYmluYXJ5IHVwIGZyb20gdGhlIGVudmlyb25tZW50LlxuK2V4cG9ydCBCUEZUT09MXG4rR0VOX1NLRUwgOj0gLi9nZW5fYnBmX3NrZWwuc2hcbitcbiskKFNLRUxTKTogJChSRElSKS8lLnNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkgfCAkKFJESVIpXG4rXHQkKFEpJChHRU5fU0tFTCkgLS10YWcgJyQoQklOQVJZKScgLS1uYW1lICQqIC0taW5maXggbGlua2VkXHRcXFxuK1x0XHQtLXNrZWwgJEAgLS1zdWJza2VsICQoQDouc2tlbC5oPS5zdWJza2VsLmgpICRcdTAwM2NcdFx0XFxcbitcdFx0JChjYWxsIHNraXBfb25fZmFpbCxTS0VMLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKVxuK1xuKyQoTFNLRUxTX0gpOiAkKFJESVIpLyUubHNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkgfCAkKFJESVIpXG4rXHQkKFEpJChHRU5fU0tFTCkgLS10YWcgJyQoQklOQVJZKScgLS1uYW1lICQqX2xza2VsIC0taW5maXggbGxpbmtlZCBcXFxuK1x0XHQtLWxza2VsIC0tc2tlbCAkQCAkXHUwMDNjICQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTClcbitcbiskKExTS0VMU19TSUdORURfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKVx0XFxcbitcdFx0ICAgICQoUFJJVkFURV9LRVkpICQoVkVSSUZJQ0FUSU9OX0NFUlQpIHwgJChSRElSKVxuK1x0JChRKSQoR0VOX1NLRUwpIC0tdGFnICckKEJJTkFSWSkgKHNpZ25lZCknIC0tbmFtZSAkKl9sc2tlbFx0XFxcbitcdFx0LS1pbmZpeCBsbGlua2VkXHRcdFx0XHRcdFx0XFxcbitcdFx0LS1zaWduICctUyAtayAkKFBSSVZBVEVfS0VZKSAtaSAkKFZFUklGSUNBVElPTl9DRVJUKSdcdFxcXG4rXHRcdC0tc2tlbCAkQCAkXHUwMDNjICQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTClcbitcbisuU0VDT05ERVhQQU5TSU9OOlxuKyQoTElOS0VEX1NLRUxTX0gpOiAkKFJESVIpLyUuc2tlbC5oOiAkJChhZGRwcmVmaXggJChSRElSKS8sJCQoJCQqLnNrZWwuaC1kZXBzKSkgXFxcbitcdFx0ICAgJChCUEZUT09MKSB8ICQoUkRJUilcbitcdCQoUSkkKEdFTl9TS0VMKSAtLXRhZyAnJChCSU5BUlkpJyAtLW5hbWUgJCogLS1pbmZpeCBsaW5rZWRcdFxcXG4rXHRcdC0tc2tlbCAkQCAtLXN1YnNrZWwgJChAOi5za2VsLmg9LnN1YnNrZWwuaClcdFx0XFxcbitcdFx0JChhZGRwcmVmaXggJChSRElSKS8sJCgkKi5za2VsLmgtZGVwcykpXHRcdFx0XFxcbitcdFx0JChjYWxsIHNraXBfb25fZmFpbCxTS0VMLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKVxuK1xuK2VuZGlmICMgQlBGX0JVSUxEICE9IG5vbmVcbitcbisuUEhPTlk6IHNrZWxzXG4rc2tlbHM6ICQoQUxMX1NLRUxTKVxuK1xuKyMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdCBmdWxsXG4rIyBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciB0aGUgY29ycmVzcG9uZGluZyAlLm8gZmlsZS5cbisjIFRoZSB2cGF0aCBkaXJlY3RpdmVzIGluc3RydWN0IG1ha2UgdG8gYWxzbyBzZWFyY2ggZm9yIHNrZWwgZmlsZXMgaW5cbisjICQoUkRJUikgaWYgdGhleSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LlxuK3ZwYXRoICUuc2tlbC5oICQoUkRJUilcbit2cGF0aCAlLmxza2VsLmggJChSRElSKVxuK3ZwYXRoICUuc3Vic2tlbC5oICQoUkRJUilcbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgVGVzdCBvYmplY3RzIGFuZCBydW5uZXIgYmluYXJ5XG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbitcbiskKFJESVIpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogJChSRVNPTFZFX0JURklEUykgJChSRElSKS9idGZfZGF0YS5icGYub1xuKyQoUkRJUikvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiBwcml2YXRlIFRFU1RfTkVFRFNfQlRGSURTID0gMVxuK1xuKyMgQ29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXMuXG4rIyBOb3RlOiB3ZSBjZCBpbnRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0c1xuKyMgYXJlIGZvdW5kLiBUaGUgJS50ZXN0LmQgZGVwZW5kZW5jeSBmaWxlcyBhcmUgYSBzaWRlIGVmZmVjdCBvZiB0aGUgLU1NRFxuKyMgYmVsb3c7IHRoZSBzZXBhcmF0ZSBuby1yZWNpcGUgcnVsZSBmb3IgdGhlbSBvcmRlcnMgdGhlIGZpcnN0XG4rIyBjb21waWxhdGlvbiBhZnRlciBza2VsZXRvbiBnZW5lcmF0aW9uIGFuZCByZS1vcmRlcnMgdGVzdCBvYmplY3RcbisjIGNvbXBpbGF0aW9uIHdoZW4gaGVhZGVycyBjaGFuZ2UuXG4rJChURVNUX09CSlMpOiAkKFJESVIpLyUudGVzdC5vOiAkKFRFU1RTX0RJUikvJS5jIHwgJChSRElSKS8lLnRlc3QuZFxuK1x0JChjYWxsIG1zZyxURVNULU9CSiwkKEJJTkFSWSksJEApXG4rXHQkKFEpKGNkICQoQEQpIFx1MDAyNlx1MDAyNiAkKENDKSAtSS4gJChDRkxBR1MpIC1NTUQgLU1UICRAIC1jICQoQ1VSRElSKS8kXHUwMDNjIC1vICQoQEYpKSBcXFxuK1x0XHQkKGlmICQoUEVSTUlTU0lWRV9URVNUUyksJChjYWxsIHNraXBfb25fZmFpbCxURVNUKSlcbitcdCQoaWYgJChURVNUX05FRURTX0JURklEUyksXHRcdFx0XHRcdFxcXG4rXHRcdCQoUSlpZiBbIC1mICRAIF07IHRoZW5cdFx0XHRcdFx0XFxcbitcdFx0JChpZiAkKGZpbHRlciAxLCQoVikpLHRydWUscHJpbnRmICcgICUtOHMlcyAlc1xcbicgXCJCVEZJRFNcIiBcIiBbJChCSU5BUlkpXVwiIFwiJChub3RkaXIgJEApXCIpOyBcXFxuK1x0XHQkKFJFU09MVkVfQlRGSURTKSAtLWJ0ZiAkKFJESVIpL2J0Zl9kYXRhLmJwZi5vICRAO1x0XFxcbitcdFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJEAuQlRGX2lkcyAkQDtcdFx0XFxcbitcdFx0ZmkpXG4rXG4rJChURVNUX0RFUFMpOiAkKFJESVIpLyUudGVzdC5kOiAkKFRFU1RTX0RJUikvJS5jICQoRVhUUkFfSERSUykgJChCUEZPQkopIFxcXG4rXHQgICAgICB8ICQoUkRJUikgJChBTExfU0tFTFMpXG4rXG4raW5jbHVkZSAkKHdpbGRjYXJkICQoVEVTVF9ERVBTKSlcbitcbiskKFJESVIpL2ppdF9kaXNhc21faGVscGVycy5vOiBDRkxBR1MgKz0gJChMTFZNX0NGTEFHUylcbitcbiskKEVYVFJBX09CSlMpOiAkKFJESVIpLyUubzogJS5jICQoRVhUUkFfSERSUykgJChURVNUU19IRFIpICQoQlBGT0JKKSB8ICQoUkRJUilcbitcdCQoY2FsbCBtc2csRVhULU9CSiwkKEJJTkFSWSksJEApXG4rXHQkKFEpJChDQykgJChDRkxBR1MpIC1jICRcdTAwM2MgLW8gJEBcbitcbiskKExJQl9PQkpTKTogJChSRElSKS8lLm86ICQoVE9PTFNESVIpL2xpYi8lLmMgfCAkKFJESVIpXG4rXHQkKGNhbGwgbXNnLExJQi1PQkosJChCSU5BUlkpLCRAKVxuK1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkXHUwMDNjIC1vICRAXG4rXG4rIyBOb24tZmxhdm9yZWQgaW4tc3JjdHJlZSBidWlsZHMgcmVjZWl2ZSBzcGVjaWFsIHRyZWF0bWVudCwgaW4gcGFydGljdWxhclxuKyMgd2UgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKS5cbisuUEhPTlk6IGV4dHJhc1xuK2V4dHJhczogJChpZiAkKFBFUk1JU1NJVkUpLCQod2lsZGNhcmQgJChFWFRSQV9GSUxFUykpLCQoRVhUUkFfRklMRVMpKSB8ICQoUkRJUilcbitpZm5lcSAoJChGTEFWT1IpOiQoT1VUUFVUKSw6JChDVVJESVIpKVxuK2lmbmVxICgkKHN0cmlwICQoRVhUUkFfRklMRVMpKSwpXG4rXHQkKGNhbGwgbXNnLEVYVC1DT1BZLCQoQklOQVJZKSwkKG5vdGRpciAkKEVYVFJBX0ZJTEVTKSkpXG4rXHQkKFEpcnN5bmMgLWFxICQoaWYgJChQRVJNSVNTSVZFKSwtLWlnbm9yZS1taXNzaW5nLWFyZ3MpICQoRVhUUkFfRklMRVMpICQoUkRJUikvXG4rZW5kaWZcbitlbmRpZlxuK1xuKyMgSW4gcGVybWlzc2l2ZSBtb2RlLCBsaW5rIHdoYXRldmVyIHRlc3Qgb2JqZWN0cyB3ZXJlIHN1Y2Nlc3NmdWxseSBidWlsdFxuKyMgKHRoZWlyIGNvbXBpbGF0aW9uIG1heSBoYXZlIGJlZW4gc2tpcHBlZCk7IHRoZSB3aWxkY2FyZCBpbiB0aGUgcmVjaXBlXG4rIyBwaWNrcyB1cCB0aGUgc3Vydml2b3JzIGF0IGxpbmsgdGltZS5cbisjIFByZXJlcXVpc2l0ZSBvcmRlciBpcyBhbHNvIGxpbmsgb3JkZXIgKHRlc3Qgb2JqZWN0cywgZXh0cmEgb2JqZWN0cyxcbisjIGxpYmJwZiwgbGliIG9iamVjdHMpLlxuKyQoT1VUUFVUKS8kKEJJTkFSWSk6ICQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwsJChURVNUX09CSlMpKVx0XHRcXFxuK1x0XHQgICAgICQoRVhUUkFfT0JKUykgJChCUEZPQkopICQoTElCX09CSlMpXHRcdFxcXG4rXHRcdCAgICAgJChUUlVOTkVSX0JQRlRPT0wpICQoT1VUUFVUKS92ZXJpc3RhdFx0XHRcXFxuK1x0XHQgICAgIHwgZXh0cmFzICQoQlBGX09CSlMpXHRcdFx0XHRcXFxuK1x0XHQgICAgICQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKFRFU1RfT0JKUykpXG4rXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4rXHQkKFEpJChDQykgJChDRkxBR1MpXHRcdFx0XHRcdFx0XFxcbitcdFx0JChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKSlcdFxcXG4rXHRcdCQoZmlsdGVyICUuYSAlLm8sJF4pXHRcdFx0XHRcdFxcXG4rXHRcdCQoTERMSUJTKSAkKExMVk1fTERMSUJTKSAkKExERkxBR1MpICQoTExWTV9MREZMQUdTKSAtbyAkQFxuK1x0JChRKWxuIC1zZiAkKGlmICQoRkxBVk9SKSwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFxcXG4rXHRcdCAgICQoUkRJUikvYnBmdG9vbFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjBiMjM3ZjYzOTY3ZGQ2XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoXG5AQCAtMCwwICsxLDk3IEBAXG4rIyEvYmluL2Jhc2hcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI1xuKyMgTGluayBCUEYgb2JqZWN0IGZpbGUocykgd2l0aCBcImJwZnRvb2wgZ2VuIG9iamVjdFwiIGFuZCBnZW5lcmF0ZSBhXG4rIyBza2VsZXRvbiAob3IgbGlnaHQgc2tlbGV0b24pIGhlYWRlciBmcm9tIHRoZSByZXN1bHQuXG4rI1xuKyMgVXNhZ2U6XG4rIyAgIEJQRlRPT0w9XHUwMDNjYnBmdG9vbFx1MDAzZSBnZW5fYnBmX3NrZWwuc2ggLS1uYW1lIE5BTUUgLS1za2VsIE9VVCBbb3B0aW9uc10gT0JKLi4uXG4rI1xuKyMgICAtLW5hbWUgTkFNRSAgICAgICBza2VsZXRvbiBvYmplY3QgbmFtZSAoXCJuYW1lIE5BTUVcIiBmb3IgYnBmdG9vbClcbisjICAgLS1za2VsIE9VVCAgICAgICAgb3V0cHV0IGhlYWRlciAoXCJmb28uc2tlbC5oXCIgb3IgXCJmb28ubHNrZWwuaFwiKVxuKyMgICAtLXN1YnNrZWwgT1VUICAgICBhbHNvIGdlbmVyYXRlIGEgc3Vic2tlbGV0b24gaGVhZGVyIGludG8gT1VUXG4rIyAgIC0tbHNrZWwgICAgICAgICAgIGdlbmVyYXRlIGEgbGlnaHQgc2tlbGV0b24gKGJwZnRvb2wgZ2VuIHNrZWxldG9uIC1MKVxuKyMgICAtLXNpZ24gJ0FSR1MnICAgICBleHRyYSBcImdlbiBza2VsZXRvblwiIGFyZ3MgZm9yIHNpZ25pbmcgKC1TIC1rIC4uIC1pIC4uKVxuKyMgICAtLXRhZyBUQUcgICAgICAgICBidWlsZC1sb2cgdGFnLCBlLmcuIFwidGVzdF9wcm9ncy1ub19hbHUzMlwiXG4rIyAgIC0taW5maXggU1RSICAgICAgIGludGVybWVkaWF0ZSBmaWxlIGluZml4IChkZWZhdWx0OiBsaW5rZWQpLiBDYWxsZXJzXG4rIyAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRpbmcgYm90aCBhIC5za2VsLmggYW5kIGEgLmxza2VsLmggZnJvbSB0aGVcbisjICAgICAgICAgICAgICAgICAgICAgc2FtZSAuYnBmLm8gTVVTVCB1c2UgZGlzdGluY3QgaW5maXhlcywgb3IgcGFyYWxsZWxcbisjICAgICAgICAgICAgICAgICAgICAgYnVpbGRzIHJhY2Ugb24gdGhlIGludGVybWVkaWF0ZSBmaWxlcy5cbisjICAgLS1uby1kZXRlcm1pbmlzbS1jaGVja1xuKyMgICAgICAgICAgICAgICAgICAgICBsaW5rIHRoZSBpbnB1dHMgb25jZSBpbnN0ZWFkIG9mIHRocmVlIHRpbWVzLlxuKyMgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0IHRoZSBvYmplY3QgaXMgcmUtbGlua2VkIHR3aWNlIG1vcmUgYW5kXG4rIyAgICAgICAgICAgICAgICAgICAgIHRoZSAybmQgYW5kIDNyZCByZXN1bHRzIGNvbXBhcmVkLCBhcyBhIHJlZ3Jlc3Npb25cbisjICAgICAgICAgICAgICAgICAgICAgdGVzdCBmb3IgdGhlIGRldGVybWluaXNtIG9mIFwiYnBmdG9vbCBnZW4gb2JqZWN0XCIuXG4rI1xuKyMgVGhlIGJwZnRvb2wgYmluYXJ5IGlzIHRha2VuIGZyb20gJEJQRlRPT0wgKGRlZmF1bHQ6IGJwZnRvb2wgZnJvbSBQQVRIKS5cbisjIE9uIGZhaWx1cmUgYWxsIG91dHB1dHMgYW5kIGludGVybWVkaWF0ZXMgYXJlIHJlbW92ZWQgYW5kIHRoZSBzY3JpcHRcbisjIGV4aXRzIG5vbi16ZXJvOyBwZXJtaXNzaXZlLW1vZGUgc2tpcHBpbmcgaXMgdGhlIGNhbGxlcidzIGJ1c2luZXNzXG4rIyAoc2VlIHNraXBfb25fZmFpbCBpbiBNYWtlZmlsZS5idWlsZHZhcnMpLlxuK1xuK3NldCAtdVxuK1xuK2JwZnRvb2w9JHtCUEZUT09MOi1icGZ0b29sfVxuK25hbWU9Jycgc2tlbD0nJyBzdWJza2VsPScnIHRhZz0nJyBzaWduX2FyZ3M9JycgaW5maXg9bGlua2VkXG4rbHNrZWw9MCBkZXRfY2hlY2s9MVxuK1xuK3doaWxlIFsgJCMgLWd0IDAgXTsgZG9cbitcdGNhc2UgXCIkMVwiIGluXG4rXHQtLW5hbWUpXHRcdG5hbWU9JDI7IHNoaWZ0IDIgOztcbitcdC0tc2tlbClcdFx0c2tlbD0kMjsgc2hpZnQgMiA7O1xuK1x0LS1zdWJza2VsKVx0c3Vic2tlbD0kMjsgc2hpZnQgMiA7O1xuK1x0LS10YWcpXHRcdHRhZz0kMjsgc2hpZnQgMiA7O1xuK1x0LS1pbmZpeClcdGluZml4PSQyOyBzaGlmdCAyIDs7XG4rXHQtLXNpZ24pXHRcdHNpZ25fYXJncz0kMjsgc2hpZnQgMiA7O1xuK1x0LS1sc2tlbClcdGxza2VsPTE7IHNoaWZ0IDs7XG4rXHQtLW5vLWRldGVybWluaXNtLWNoZWNrKSBkZXRfY2hlY2s9MDsgc2hpZnQgOztcbitcdC0tKVx0XHRzaGlmdDsgYnJlYWsgOztcbitcdC0qKVx0XHRlY2hvIFwiJDA6IHVua25vd24gb3B0aW9uOiAkMVwiIFx1MDAzZVx1MDAyNjI7IGV4aXQgMSA7O1xuK1x0KilcdFx0YnJlYWsgOztcbitcdGVzYWNcbitkb25lXG4rXG4raWYgWyAteiBcIiRuYW1lXCIgXSB8fCBbIC16IFwiJHNrZWxcIiBdIHx8IFsgJCMgLWVxIDAgXTsgdGhlblxuK1x0ZWNobyBcInVzYWdlOiAkMCAtLW5hbWUgTkFNRSAtLXNrZWwgT1VUIFtvcHRpb25zXSBPQkouLi5cIiBcdTAwM2VcdTAwMjYyXG4rXHRleGl0IDFcbitmaVxuK1xuK2Jhc2U9JHtza2VsJS5za2VsLmh9XG4rYmFzZT0ke2Jhc2UlLmxza2VsLmh9XG4rdDE9JGJhc2UuJHtpbmZpeH0xLm9cbit0Mj0kYmFzZS4ke2luZml4fTIub1xuK3QzPSRiYXNlLiR7aW5maXh9My5vXG4rXG4rZmFpbCgpIHtcbitcdHJtIC1mIFwiJHNrZWxcIiAke3N1YnNrZWw6K1wiJHN1YnNrZWxcIn0gXCIkdDFcIiBcIiR0MlwiIFwiJHQzXCJcbitcdGV4aXQgMVxuK31cbitcbitpZiBbICQjIC1ndCAxIF07IHRoZW5cbitcdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ0xJTkstQlBGJyBcIiR7dGFnOitbJHRhZ10gfSQoYmFzZW5hbWUgXCIkYmFzZVwiKS5icGYub1wiIFx1MDAzZVx1MDAyNjJcbitmaVxuK3ByaW50ZiAnICAlLTEycyAlc1xcbicgJ0dFTi1TS0VMJyBcIiR7dGFnOitbJHRhZ10gfSQoYmFzZW5hbWUgXCIkc2tlbFwiKVwiIFx1MDAzZVx1MDAyNjJcbitcbitcIiRicGZ0b29sXCIgZ2VuIG9iamVjdCBcIiR0MVwiIFwiJEBcIiB8fCBmYWlsXG4rZmluYWw9JHQxXG4raWYgWyBcIiRkZXRfY2hlY2tcIiAtZXEgMSBdOyB0aGVuXG4rXHRcIiRicGZ0b29sXCIgZ2VuIG9iamVjdCBcIiR0MlwiIFwiJHQxXCIgfHwgZmFpbFxuK1x0XCIkYnBmdG9vbFwiIGdlbiBvYmplY3QgXCIkdDNcIiBcIiR0MlwiIHx8IGZhaWxcbitcdGlmICEgY21wIC1zIFwiJHQyXCIgXCIkdDNcIjsgdGhlblxuK1x0XHRlY2hvIFwiJDA6IGJwZnRvb2wgZ2VuIG9iamVjdCBpcyBub3QgZGV0ZXJtaW5pc3RpYyBmb3IgJHNrZWxcIiBcdTAwM2VcdTAwMjYyXG4rXHRcdGZhaWxcbitcdGZpXG4rXHRmaW5hbD0kdDNcbitmaVxuK1xuK2ZsYWdzPVxuK1sgXCIkbHNrZWxcIiAtZXEgMSBdIFx1MDAyNlx1MDAyNiBmbGFncz0tTFxuKyMgJHNpZ25fYXJncyBpbnRlbnRpb25hbGx5IHVucXVvdGVkOiBpdCBpcyBhIGxpc3Qgb2YgYnBmdG9vbCBhcmd1bWVudHNcbisjIHNoZWxsY2hlY2sgZGlzYWJsZT1TQzIwODZcbitcIiRicGZ0b29sXCIgZ2VuIHNrZWxldG9uICRzaWduX2FyZ3MgJGZsYWdzIFwiJGZpbmFsXCIgbmFtZSBcIiRuYW1lXCIgXHUwMDNlIFwiJHNrZWxcIiB8fCBmYWlsXG4rXG4raWYgWyAtbiBcIiRzdWJza2VsXCIgXTsgdGhlblxuK1x0XCIkYnBmdG9vbFwiIGdlbiBzdWJza2VsZXRvbiBcIiRmaW5hbFwiIG5hbWUgXCIkbmFtZVwiIFx1MDAzZSBcIiRzdWJza2VsXCIgfHwgZmFpbFxuK2ZpXG4rXG4rcm0gLWYgXCIkdDFcIiBcIiR0MlwiIFwiJHQzXCJcbitleGl0IDBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEzOjI5OjI0LjM2MDA2ODMyMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NjkxMTg2MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBUaGlzIEJQRiBTZWxmdGVzdHMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIGhlcmUsIGFuZCBpdCdzIGFsbCBhYm91dCByZWZhY3RvcmluZyB0aGUgYnVpbGQgc3lzdGVtIGZvciB0aGUgQlBGIHNlbGZ0ZXN0cy4gU3BlY2lmaWNhbGx5LCBpdCdzIG1lc3Npbmcgd2l0aCB0aGUgYE1ha2VmaWxlYCBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuIFRoZXkncmUgc3BsaXR0aW5nIGl0IHVwIGludG8gYE1ha2VmaWxlLmJ1aWxkdmFyc2AsIGBNYWtlZmlsZS5ydW5uZXJgLCBhbmQgYWRkaW5nIGBnZW5fYnBmX3NrZWwuc2hgLiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIGFwcHJvYWNoIGZvciBjb21wbGV4IGJ1aWxkIHN5c3RlbXM7IGl0IG1ha2VzIHRoaW5ncyBtb3JlIG9yZ2FuaXplZCBhbmQgcG90ZW50aWFsbHkgc3BlZWRzIHVwIHBhcmFsbGVsIGJ1aWxkcywgd2hpY2ggSSBhcHByZWNpYXRlLlxuXG5JJ3ZlIHRha2VuIGEgY2xvc2UgbG9vaywgYW5kIGNvbmZpcm1lZCB0aGF0IHRoZSBjaGFuZ2VzIGFyZSBpc29sYXRlZCB0byB0aGlzIHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUuIEl0IGRvZXNuJ3QgdG91Y2ggYW55IGNvcmUga2VybmVsIGNvZGUsIGFueSBkcml2ZXJzLCBvciBhbnl0aGluZyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMuIEl0J3Mgc3RyaWN0bHkgYWJvdXQgaG93IHRoZSB0ZXN0cyB0aGVtc2VsdmVzIGFyZSBidWlsdCBhbmQgcnVuLlxuXG5UaGVyZWZvcmUsIGdpdmVuIHRoYXQgaXQncyBqdXN0IGJ1aWxkIHN5c3RlbSBjaGFuZ2VzIGZvciBzZWxmdGVzdHMsIEknbSBnb2luZyB0byBmbGFnIHRoaXMgYXMgbm90IGJlaW5nIHJlbGV2YW50IGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTM2OCwiT3V0cHV0VG9rZW5zIjo2NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDEzOjI5OjMwLjAyOTE5MTE5NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMyNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgYnVpbGQgc3lzdGVtIGZvciBCUEYgc2VsZnRlc3RzIChNYWtlZmlsZXMgYW5kIGEgc2hlbGwgc2NyaXB0KS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGJ1aWxkIHN5c3RlbSBmb3IgQlBGIHNlbGZ0ZXN0cyAoTWFrZWZpbGVzIGFuZCBhIHNoZWxsIHNjcmlwdCkuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflown44pd[1] Phase: Running StartedAt: 2026-07-22 13:29:41 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflown44pd[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-22 13:29:41 +0000 UTC FinishedAt: 2026-07-22 13:29:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}